Commit c9669ae8 authored by Barnabas Busa's avatar Barnabas Busa Committed by GitHub

feat: json to yaml everything (#332)

Co-authored-by: default avatarGyanendra Mishra <anomaly.the@gmail.com>
parent 4bac0424
...@@ -117,7 +117,7 @@ jobs: ...@@ -117,7 +117,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/besu-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/besu-all.yaml)"
erigon-all: erigon-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -125,7 +125,7 @@ jobs: ...@@ -125,7 +125,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/erigon-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/erigon-all.yaml)"
ethereumjs-all: ethereumjs-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -134,7 +134,7 @@ jobs: ...@@ -134,7 +134,7 @@ jobs:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/ethereumjs-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/ethereumjs-all.yaml)"
geth-all: geth-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -142,7 +142,7 @@ jobs: ...@@ -142,7 +142,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/geth-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/geth-all.yaml)"
lighthouse-all: lighthouse-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -150,7 +150,7 @@ jobs: ...@@ -150,7 +150,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/lighthouse-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/lighthouse-all.yaml)"
lodestar-all: lodestar-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -158,7 +158,7 @@ jobs: ...@@ -158,7 +158,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/lodestar-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/lodestar-all.yaml)"
mix: mix:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -166,7 +166,7 @@ jobs: ...@@ -166,7 +166,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mix.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mix.yaml)"
nethermind-all: nethermind-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -174,7 +174,7 @@ jobs: ...@@ -174,7 +174,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/nethermind-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/nethermind-all.yaml)"
nimbus-all: nimbus-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -182,7 +182,7 @@ jobs: ...@@ -182,7 +182,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/nimbus-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/nimbus-all.yaml)"
prysm-all: prysm-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -190,7 +190,7 @@ jobs: ...@@ -190,7 +190,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/prysm-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/prysm-all.yaml)"
reth-all: reth-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -198,7 +198,7 @@ jobs: ...@@ -198,7 +198,7 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/reth-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/reth-all.yaml)"
teku-all: teku-all:
executor: ubuntu_vm executor: ubuntu_vm
...@@ -206,78 +206,78 @@ jobs: ...@@ -206,78 +206,78 @@ jobs:
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/teku-all.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/teku-all.yaml)"
mev: mev:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mev.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mev.yaml)"
mev_mock: mev_mock:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mev-mock.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mev-mock.yaml)"
mev_k8s: mev_k8s:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mev.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mev.yaml)"
nimbus_mev: nimbus_mev:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/nimbus-mev.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/nimbus-mev.yaml)"
mix_with_tools_k8s: mix_with_tools_k8s:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mix-with-tools.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mix-with-tools.yaml)"
mix_with_tools_docker: mix_with_tools_docker:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mix-with-tools.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/mix-with-tools.yaml)"
parallel_key_store_generation_1: parallel_key_store_generation_1:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/parallel-keystores-1.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/parallel-keystores-1.yaml)"
parallel_key_store_generation_2: parallel_key_store_generation_2:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/parallel-keystores-2.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/parallel-keystores-2.yaml)"
parallel_key_store_generation_3: parallel_key_store_generation_3:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/parallel-keystores-3.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/parallel-keystores-3.yaml)"
disable_peer_scoring: disable_peer_scoring:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/disable-peer-scoring.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/disable-peer-scoring.yaml)"
petra: petra:
executor: ubuntu_vm executor: ubuntu_vm
steps: steps:
- <<: *setup_kurtosis - <<: *setup_kurtosis
- checkout - checkout
- run: kurtosis run ${PWD} "$(cat ./.circleci/tests/petra.json)" - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/petra.yaml)"
workflows: workflows:
nightly_tests: nightly_tests:
......
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "besu",
"cl_client_type": "prysm"
},
{
"el_client_type": "besu",
"cl_client_type": "nimbus"
},
{
"el_client_type": "besu",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "besu",
"cl_client_type": "lodestar"
}
],
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: geth
cl_client_type: teku
- el_client_type: besu
cl_client_type: prysm
- el_client_type: besu
cl_client_type: nimbus
- el_client_type: besu
cl_client_type: lighthouse
- el_client_type: besu
cl_client_type: lodestar
additional_services: []
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "besu",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "reth",
"cl_client_type": "lodestar"
},
{
"el_client_type": "erigon",
"cl_client_type": "nimbus"
},
{
"el_client_type": "nethermind",
"cl_client_type": "prysm"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "teku"
}
],
"additional_services": [],
"disable_peer_scoring": true
}
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: besu
cl_client_type: lighthouse
- el_client_type: reth
cl_client_type: lodestar
- el_client_type: erigon
cl_client_type: nimbus
- el_client_type: nethermind
cl_client_type: prysm
- el_client_type: ethereumjs
cl_client_type: teku
additional_services: []
disable_peer_scoring: true
{
"participants": [
{
"el_client_type": "erigon",
"cl_client_type": "teku"
},
{
"el_client_type": "erigon",
"cl_client_type": "prysm"
},
{
"el_client_type": "erigon",
"cl_client_type": "nimbus"
},
{
"el_client_type": "erigon",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "erigon",
"cl_client_type": "lodestar"
}
],
"additional_services": []
}
participants:
- el_client_type: erigon
cl_client_type: teku
- el_client_type: erigon
cl_client_type: prysm
- el_client_type: erigon
cl_client_type: nimbus
- el_client_type: erigon
cl_client_type: lighthouse
- el_client_type: erigon
cl_client_type: lodestar
additional_services: []
{
"participants": [
{
"el_client_type": "ethereumjs",
"cl_client_type": "teku"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "prysm"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "nimbus"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "lodestar"
}
],
"additional_services": []
}
participants:
- el_client_type: ethereumjs
cl_client_type: teku
- el_client_type: ethereumjs
cl_client_type: prysm
- el_client_type: ethereumjs
cl_client_type: nimbus
- el_client_type: ethereumjs
cl_client_type: lighthouse
- el_client_type: ethereumjs
cl_client_type: lodestar
additional_services: []
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "geth",
"cl_client_type": "prysm"
},
{
"el_client_type": "geth",
"cl_client_type": "nimbus"
},
{
"el_client_type": "geth",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "geth",
"cl_client_type": "lodestar"
}
],
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: geth
cl_client_type: prysm
- el_client_type: geth
cl_client_type: nimbus
- el_client_type: geth
cl_client_type: lighthouse
- el_client_type: geth
cl_client_type: lodestar
additional_services: []
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "nethermind",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "erigon",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "besu",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "reth",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "lighthouse"
}
],
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: lighthouse
- el_client_type: nethermind
cl_client_type: lighthouse
- el_client_type: erigon
cl_client_type: lighthouse
- el_client_type: besu
cl_client_type: lighthouse
- el_client_type: reth
cl_client_type: lighthouse
- el_client_type: ethereumjs
cl_client_type: lighthouse
additional_services: []
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "lodestar"
},
{
"el_client_type": "nethermind",
"cl_client_type": "lodestar"
},
{
"el_client_type": "erigon",
"cl_client_type": "lodestar"
},
{
"el_client_type": "besu",
"cl_client_type": "lodestar"
},
{
"el_client_type": "reth",
"cl_client_type": "lodestar"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "lodestar"
}
],
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: lodestar
- el_client_type: nethermind
cl_client_type: lodestar
- el_client_type: erigon
cl_client_type: lodestar
- el_client_type: besu
cl_client_type: lodestar
- el_client_type: reth
cl_client_type: lodestar
- el_client_type: ethereumjs
cl_client_type: lodestar
additional_services: []
{
"network_params": {
"seconds_per_slot": 3
},
"additional_services": [
],
"mev_type": "mock"
}
network_params:
seconds_per_slot: 3
additional_services: []
mev_type: mock
{
"mev_type": "full",
"additional_services": [
"tx_spammer",
"blob_spammer",
"custom_flood",
"el_forkmon",
"beacon_metrics_gazer",
"dora",
"prometheus_grafana"
],
"mev_params": {
"launch_custom_flood": true,
"mev_relay_image": "flashbots/mev-boost-relay:0.28.0a2"
},
"network_params": {
"seconds_per_slot": 3
}
}
mev_type: full
additional_services:
- tx_spammer
- blob_spammer
- custom_flood
- el_forkmon
- beacon_metrics_gazer
- dora
- prometheus_grafana
mev_params:
launch_custom_flood: true
mev_relay_image: flashbots/mev-boost-relay:0.28.0a2
network_params:
seconds_per_slot: 3
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "nethermind",
"cl_client_type": "prysm"
},
{
"el_client_type": "erigon",
"cl_client_type": "nimbus"
},
{
"el_client_type": "besu",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "reth",
"cl_client_type": "lodestar"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "teku"
}
],
"network_params": {
"capella_fork_epoch": 1
},
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: nethermind
cl_client_type: prysm
- el_client_type: erigon
cl_client_type: nimbus
- el_client_type: besu
cl_client_type: lighthouse
- el_client_type: reth
cl_client_type: lodestar
- el_client_type: ethereumjs
cl_client_type: teku
network_params:
capella_fork_epoch: 1
additional_services: []
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "nethermind",
"cl_client_type": "prysm"
},
{
"el_client_type": "erigon",
"cl_client_type": "nimbus"
},
{
"el_client_type": "besu",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "reth",
"cl_client_type": "lodestar"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "teku"
}
],
"additional_services": [
"tx_spammer",
"blob_spammer",
"el_forkmon",
"beacon_metrics_gazer",
"dora",
"prometheus_grafana",
"goomy_blob",
"full_beaconchain_explorer",
"custom_flood"
],
"mev_type": "full",
"mev_params": {
"mev_relay_image": "flashbots/mev-boost-relay:0.27"
}
}
\ No newline at end of file
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: nethermind
cl_client_type: prysm
- el_client_type: erigon
cl_client_type: nimbus
- el_client_type: besu
cl_client_type: lighthouse
- el_client_type: reth
cl_client_type: lodestar
- el_client_type: ethereumjs
cl_client_type: teku
additional_services:
- tx_spammer
- blob_spammer
- el_forkmon
- beacon_metrics_gazer
- dora
- prometheus_grafana
- goomy_blob
- full_beaconchain_explorer
- custom_flood
mev_type: full
mev_params:
mev_relay_image: flashbots/mev-boost-relay:0.27
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "nethermind",
"cl_client_type": "prysm"
},
{
"el_client_type": "erigon",
"cl_client_type": "nimbus"
},
{
"el_client_type": "besu",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "reth",
"cl_client_type": "lodestar"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "teku"
}
],
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: nethermind
cl_client_type: prysm
- el_client_type: erigon
cl_client_type: nimbus
- el_client_type: besu
cl_client_type: lighthouse
- el_client_type: reth
cl_client_type: lodestar
- el_client_type: ethereumjs
cl_client_type: teku
additional_services: []
{
"participants": [
{
"el_client_type": "nethermind",
"cl_client_type": "teku"
},
{
"el_client_type": "nethermind",
"cl_client_type": "prysm"
},
{
"el_client_type": "nethermind",
"cl_client_type": "nimbus"
},
{
"el_client_type": "nethermind",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "nethermind",
"cl_client_type": "lodestar"
}
],
"additional_services": []
}
participants:
- el_client_type: nethermind
cl_client_type: teku
- el_client_type: nethermind
cl_client_type: prysm
- el_client_type: nethermind
cl_client_type: nimbus
- el_client_type: nethermind
cl_client_type: lighthouse
- el_client_type: nethermind
cl_client_type: lodestar
additional_services: []
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "nimbus"
},
{
"el_client_type": "nethermind",
"cl_client_type": "nimbus"
},
{
"el_client_type": "erigon",
"cl_client_type": "nimbus"
},
{
"el_client_type": "besu",
"cl_client_type": "nimbus"
},
{
"el_client_type": "reth",
"cl_client_type": "nimbus"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "nimbus"
}
],
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: nimbus
- el_client_type: nethermind
cl_client_type: nimbus
- el_client_type: erigon
cl_client_type: nimbus
- el_client_type: besu
cl_client_type: nimbus
- el_client_type: reth
cl_client_type: nimbus
- el_client_type: ethereumjs
cl_client_type: nimbus
additional_services: []
{
"participants": [{
"el_client_type": "geth",
"cl_client_type": "nimbus"
}],
"mev_type": "full"
}
participants:
- el_client_type: geth
cl_client_type: nimbus
mev_type: full
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "geth",
"cl_client_type": "teku",
"validator_count": 0
}
],
"parallel_keystore_generation": true
}
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: geth
cl_client_type: teku
validator_count: 0
parallel_keystore_generation: true
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku",
"validator_count": 0
},
{
"el_client_type": "geth",
"cl_client_type": "teku"
}
],
"parallel_keystore_generation": true
}
participants:
- el_client_type: geth
cl_client_type: teku
validator_count: 0
- el_client_type: geth
cl_client_type: teku
parallel_keystore_generation: true
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "geth",
"cl_client_type": "teku",
"validator_count": 0
},
{
"el_client_type": "geth",
"cl_client_type": "teku"
}
],
"parallel_keystore_generation": true
}
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: geth
cl_client_type: teku
validator_count: 0
- el_client_type: geth
cl_client_type: teku
parallel_keystore_generation: true
{
"participants": [
{
"el_client_type": "geth",
"el_client_image": "ethpandaops/geth:gballet-kaustinen-with-shapella-a45a9f2",
"cl_client_type": "lodestar",
"cl_client_image": "ethpandaops/lodestar:g11tech-verge",
"count": 2
}
],
"network_params": {
"electra_fork_epoch": 0,
"deneb_fork_epoch": 1000
},
"additional_services": []
}
participants:
- el_client_type: geth
el_client_image: ethpandaops/geth:gballet-kaustinen-with-shapella-a45a9f2
cl_client_type: lodestar
cl_client_image: ethpandaops/lodestar:g11tech-verge
count: 2
network_params:
electra_fork_epoch: 0
deneb_fork_epoch: 1000
additional_services: []
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "prysm"
},
{
"el_client_type": "nethermind",
"cl_client_type": "prysm"
},
{
"el_client_type": "erigon",
"cl_client_type": "prysm"
},
{
"el_client_type": "besu",
"cl_client_type": "prysm"
},
{
"el_client_type": "reth",
"cl_client_type": "prysm"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "prysm"
}
],
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: prysm
- el_client_type: nethermind
cl_client_type: prysm
- el_client_type: erigon
cl_client_type: prysm
- el_client_type: besu
cl_client_type: prysm
- el_client_type: reth
cl_client_type: prysm
- el_client_type: ethereumjs
cl_client_type: prysm
additional_services: []
{
"participants": [
{
"el_client_type": "reth",
"cl_client_type": "teku"
},
{
"el_client_type": "reth",
"cl_client_type": "prysm"
},
{
"el_client_type": "reth",
"cl_client_type": "nimbus"
},
{
"el_client_type": "reth",
"cl_client_type": "lighthouse"
},
{
"el_client_type": "reth",
"cl_client_type": "lodestar"
}
],
"additional_services": []
}
participants:
- el_client_type: reth
cl_client_type: teku
- el_client_type: reth
cl_client_type: prysm
- el_client_type: reth
cl_client_type: nimbus
- el_client_type: reth
cl_client_type: lighthouse
- el_client_type: reth
cl_client_type: lodestar
additional_services: []
{
"participants": [
{
"el_client_type": "geth",
"cl_client_type": "teku"
},
{
"el_client_type": "nethermind",
"cl_client_type": "teku"
},
{
"el_client_type": "erigon",
"cl_client_type": "teku"
},
{
"el_client_type": "besu",
"cl_client_type": "teku"
},
{
"el_client_type": "reth",
"cl_client_type": "teku"
},
{
"el_client_type": "ethereumjs",
"cl_client_type": "teku"
}
],
"additional_services": []
}
participants:
- el_client_type: geth
cl_client_type: teku
- el_client_type: nethermind
cl_client_type: teku
- el_client_type: erigon
cl_client_type: teku
- el_client_type: besu
cl_client_type: teku
- el_client_type: reth
cl_client_type: teku
- el_client_type: ethereumjs
cl_client_type: teku
additional_services: []
...@@ -31,3 +31,7 @@ indent_size = 2 ...@@ -31,3 +31,7 @@ indent_size = 2
[*.json] [*.json]
indent_style = space indent_style = space
indent_size = 2 indent_size = 2
[*.yaml]
indent_style = space
indent_size = 2
...@@ -37,10 +37,10 @@ Optional features (enabled via flags or parameter files at runtime): ...@@ -37,10 +37,10 @@ Optional features (enabled via flags or parameter files at runtime):
Kurtosis packages are parameterizable, meaning you can customize your network and its behavior to suit your needs by storing parameters in a file that you can pass in at runtime like so: Kurtosis packages are parameterizable, meaning you can customize your network and its behavior to suit your needs by storing parameters in a file that you can pass in at runtime like so:
```bash ```bash
kurtosis run --enclave my-testnet github.com/kurtosis-tech/ethereum-package "$(cat ~/network_params.json)" kurtosis run --enclave my-testnet github.com/kurtosis-tech/ethereum-package "$(cat ~/network_params.yaml)"
``` ```
Where `network_params.json` contains the parameters for your network in your home directory. Where `network_params.yaml` contains the parameters for your network in your home directory.
#### Run on Kubernetes #### Run on Kubernetes
...@@ -88,250 +88,242 @@ kurtosis files download my-testnet el-genesis-data ~/Downloads ...@@ -88,250 +88,242 @@ kurtosis files download my-testnet el-genesis-data ~/Downloads
## Configuration ## Configuration
To configure the package behaviour, you can modify your `network_params.json` file. The full JSON schema that can be passed in is as follows with the defaults provided: To configure the package behaviour, you can modify your `network_params.yaml` file. The full YAML schema that can be passed in is as follows with the defaults provided:
<details> <details>
<summary>Click to show all configuration options</summary> <summary>Click to show all configuration options</summary>
<!-- Yes, it's weird that none of this is indented but it's intentional - indenting anything inside this "details" expandable will cause it to render weird" --> <!-- Yes, it's weird that none of this is indented but it's intentional - indenting anything inside this "details" expandable will cause it to render weird" -->
```json ```yaml
{ # Specification of the participants in the network
// Specification of the participants in the network participants:
"participants": [ # The type of EL client that should be started
{ # Valid values are geth, nethermind, erigon, besu, ethereumjs, reth
// The type of EL client that should be started - el_client_type: geth
// Valid values are "geth", "nethermind", "erigon", "besu" and "reth"
"el_client_type": "geth", # The Docker image that should be used for the EL client; leave blank to use the default for the client type
# Defaults by client:
// The Docker image that should be used for the EL client; leave blank to use the default for the client type # - geth: ethereum/client-go:latest
// Defaults by client: # - erigon: thorax/erigon:devel
// - geth: ethereum/client-go:latest # - nethermind: nethermind/nethermind:latest
// - erigon: thorax/erigon:devel # - besu: hyperledger/besu:develop
// - nethermind: nethermind/nethermind:latest # - reth: ghcr.io/paradigmxyz/reth
// - besu: hyperledger/besu:develop # - ethereumjs: ethpandaops/ethereumjs:master
// - reth: ghcr.io/paradigmxyz/reth el_client_image: ""
"el_client_image": "",
# The log level string that this participant's EL client should log at
// The log level string that this participant's EL client should log at # If this is emptystring then the global `logLevel` parameter's value will be translated into a string appropriate for the client (e.g. if
// If this is emptystring then the global `logLevel` parameter's value will be translated into a string appropriate for the client (e.g. if # global `logLevel` = `info` then Geth would receive `3`, Besu would receive `INFO`, etc.)
// global `logLevel` = `info` then Geth would receive `3`, Besu would receive `INFO`, etc.) # If this is not emptystring, then this value will override the global `logLevel` setting to allow for fine-grained control
// If this is not emptystring, then this value will override the global `logLevel` setting to allow for fine-grained control # over a specific participant's logging
// over a specific participant's logging el_client_log_level: ""
"el_client_log_level": "",
# A list of optional extra params that will be passed to the EL client container for modifying its behaviour
// A list of optional extra params that will be passed to the EL client container for modifying its behaviour el_extra_params: []
"el_extra_params": [],
# A list of optional extra env_vars the el container should spin up with
// A list of optional extra env_vars the el container should spin up with el_extra_env_vars: {}
"el_extra_env_vars": {},
# The type of CL client that should be started
// The type of CL client that should be started # Valid values are nimbus, lighthouse, lodestar, teku, and prysm
// Valid values are "nimbus", "lighthouse", "lodestar", "teku", and "prysm" cl_client_type: lighthouse
"cl_client_type": "lighthouse",
# The Docker image that should be used for the EL client; leave blank to use the default for the client type
// The Docker image that should be used for the EL client; leave blank to use the default for the client type # Defaults by client (note that Prysm is different in that it requires two images - a Beacon and a validator - separated by a comma):
// Defaults by client (note that Prysm is different in that it requires two images - a Beacon and a validator - separated by a comma): # - lighthouse: sigp/lighthouse:latest
// - lighthouse: sigp/lighthouse:latest # - teku: consensys/teku:latest
// - teku: consensys/teku:latest # - nimbus: statusim/nimbus-eth2:multiarch-latest
// - nimbus: statusim/nimbus-eth2:multiarch-latest # - prysm: gcr.io/prysmaticlabs/prysm/beacon-chain:latest,gcr.io/prysmaticlabs/prysm/validator:latest
// - prysm: gcr.io/prysmaticlabs/prysm/beacon-chain:latest,gcr.io/prysmaticlabs/prysm/validator:latest # - lodestar: chainsafe/lodestar:next
// - lodestar: chainsafe/lodestar:next cl_client_image: ""
"cl_client_image": "",
# The log level string that this participant's EL client should log at
// The log level string that this participant's EL client should log at # If this is emptystring then the global `logLevel` parameter's value will be translated into a string appropriate for the client (e.g. if
// If this is emptystring then the global `logLevel` parameter's value will be translated into a string appropriate for the client (e.g. if # global `logLevel` = `info` then Teku would receive `INFO`, Prysm would receive `info`, etc.)
// global `logLevel` = `info` then Teku would receive `INFO`, Prysm would receive `info`, etc.) # If this is not emptystring, then this value will override the global `logLevel` setting to allow for fine-grained control
// If this is not emptystring, then this value will override the global `logLevel` setting to allow for fine-grained control # over a specific participant's logging
// over a specific participant's logging cl_client_log_level: ""
"cl_client_log_level": "",
# A list of optional extra params that will be passed to the CL client Beacon container for modifying its behaviour
// A list of optional extra params that will be passed to the CL client Beacon container for modifying its behaviour # If the client combines the Beacon & validator nodes (e.g. Teku, Nimbus), then this list will be passed to the combined Beacon-validator node
// If the client combines the Beacon & validator nodes (e.g. Teku, Nimbus), then this list will be passed to the combined Beacon-validator node beacon_extra_params: []
"beacon_extra_params": [],
# A list of optional extra params that will be passed to the CL client validator container for modifying its behaviour
// A list of optional extra params that will be passed to the CL client validator container for modifying its behaviour # If the client combines the Beacon & validator nodes (e.g. Teku, Nimbus), then this list will also be passed to the combined Beacon-validator node
// If the client combines the Beacon & validator nodes (e.g. Teku, Nimbus), then this list will also be passed to the combined Beacon-validator node validator_extra_params: []
"validator_extra_params": [],
# A set of parameters the node needs to reach an external block building network
// A set of parameters the node needs to reach an external block building network # If `null` then the builder infrastructure will not be instantiated
// If `null` then the builder infrastructure will not be instantiated # Example:
// Example: #
// # "relay_endpoints": [
// "relay_endpoints": [ # "https:#0xdeadbeefcafa@relay.example.com",
// "https://0xdeadbeefcafa@relay.example.com", # "https:#0xdeadbeefcafb@relay.example.com",
// "https://0xdeadbeefcafb@relay.example.com", # "https:#0xdeadbeefcafc@relay.example.com",
// "https://0xdeadbeefcafc@relay.example.com", # "https:#0xdeadbeefcafd@relay.example.com"
// "https://0xdeadbeefcafd@relay.example.com" # ]
// ] builder_network_params: null
"builder_network_params": null,
# Resource management for el/beacon/validator containers
// Resource management for el/beacon/validator containers # CPU is milicores
// CPU is milicores # RAM is in MB
// RAM is in MB # Defaults are set per client
// Defaults are set per client el_min_cpu: ''
"el_min_cpu": "", el_max_cpu: ''
"el_max_cpu": "", el_min_mem: ''
"el_min_mem": "", el_max_mem: ''
"el_max_mem": "", bn_min_cpu: ''
"bn_min_cpu": "", bn_max_cpu: ''
"bn_max_cpu": "", bn_min_mem: ''
"bn_min_mem": "", bn_max_mem: ''
"bn_max_mem": "", v_min_cpu: ''
"v_min_cpu": "", v_max_cpu: ''
"v_max_cpu": "", v_min_mem: ''
"v_min_mem": "", v_max_mem: ''
"v_max_mem": "",
# Snooper can be enabled with the `snooper_enabled` flag per client or globally
// Snooper can be enabled with the `snooper_enabled` flag per client or globally # Defaults to false
// Defaults to false snooper_enabled: false
"snooper_enabled": false,
# Enables Ethereum Metrics Exporter for this participant. Can be set globally.
// Enables Ethereum Metrics Exporter for this participant. Can be set globally. # Defaults to false
// Defaults to false ethereum_metrics_exporter_enabled: false
"ethereum_metrics_exporter_enabled": false,
# Count of nodes to spin up for this participant
// Count of nodes to spin up for this participant # Default to 1
// Default to 1 count: 1
"count": 1,
# Count of the number of validators you want to run for a given participant
// Count of the number of validators you want to run for a given participant # Default to null, which means that the number of validators will be using the
// Default to null, which means that the number of validators will be using the network parameter num_validator_keys_per_node # network parameter num_validator_keys_per_node
"validator_count": null validator_count: null
}
], # Default configuration parameters for the Eth network
network_params:
// Default configuration parameters for the Eth network # The network ID of the network.
"network_params": { network_id: 3151908
// The network ID of the network.
"network_id": "3151908", # The address of the staking contract address on the Eth1 chain
deposit_contract_address: "0x4242424242424242424242424242424242424242"
// The address of the staking contract address on the Eth1 chain
"deposit_contract_address": "0x4242424242424242424242424242424242424242", # Number of seconds per slot on the Beacon chain
seconds_per_slot: 12
// Number of seconds per slot on the Beacon chain
"seconds_per_slot": 12, # The number of validator keys that each CL validator node should get
num_validator_keys_per_node: 64
// The number of validator keys that each CL validator node should get
"num_validator_keys_per_node": 64, # This mnemonic will a) be used to create keystores for all the types of validators that we have and b) be used to generate a CL genesis.ssz that has the children
# validator keys already preregistered as validators
// This mnemonic will a) be used to create keystores for all the types of validators that we have and b) be used to generate a CL genesis.ssz that has the children preregistered_validator_keys_mnemonic: "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete"
// validator keys already preregistered as validators # How long you want the network to wait before starting up
"preregistered_validator_keys_mnemonic": "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete", genesis_delay: 120
// How long you want the network to wait before starting up
"genesis_delay": 120, # Max churn rate for the network introduced by
# EIP-7514 https:#eips.ethereum.org/EIPS/eip-7514
// Max churn rate for the network introduced by # Defaults to 8
// EIP-7514 https://eips.ethereum.org/EIPS/eip-7514 max_churn: 8
// Defaults to 8
"max_churn": 8, # Ejection balance
# Defaults to 16ETH
// Ejection balance # 16000000000 gwei
// Defaults to 16ETH ejection_balance: 16000000000,
// 16000000000 gwei
"ejection_balance": 16000000000, # The epoch at which the capella and deneb forks are set to occur.
capella_fork_epoch: 0
// The epoch at which the capella and deneb forks are set to occur. deneb_fork_epoch: 500
"capella_fork_epoch": 0, electra_fork_epoch: null
"deneb_fork_epoch": 500,
"electra_fork_epoch": null # Configuration place for transaction spammer - https:#github.com/MariusVanDerWijden/tx-fuzz
}, tx_spammer_params:
# A list of optional extra params that will be passed to the TX Spammer container for modifying its behaviour
// Configuration place for transaction spammer - https://github.com/MariusVanDerWijden/tx-fuzz tx_spammer_extra_args: []
"tx_spammer_params": {
// A list of optional extra params that will be passed to the TX Spammer container for modifying its behaviour # Configuration place for goomy the blob spammer - https:#github.com/ethpandaops/goomy-blob
"tx_spammer_extra_args": [] goomy_blob_params:
}, # A list of optional params that will be passed to the blob-spammer comamnd for modifying its behaviour
goomy_blob_args: []
// Configuration place for goomy the blob spammer - https://github.com/ethpandaops/goomy-blob
"goomy_blob_params": { # By default includes
// A list of optional params that will be passed to the blob-spammer comamnd for modifying its behaviour # - A transaction spammer & blob spammer is launched to fake transactions sent to the network
"goomy_blob_args": [] # - Forkmon for EL will be launched
}, # - A prometheus will be started, coupled with grafana
# - A beacon metrics gazer will be launched
// By default includes # - A light beacon chain explorer will be launched
// - A transaction spammer & blob spammer is launched to fake transactions sent to the network # - Default: ["tx_spammer", "blob_spammer", "el_forkmon", "beacon_metrics_gazer", "dora"," "prometheus_grafana"]
// - Forkmon for EL will be launched additional_services:
// - A prometheus will be started, coupled with grafana - tx_spammer
// - A beacon metrics gazer will be launched - blob_spammer
// - A light beacon chain explorer will be launched - custom_flood
// - Default: ["tx_spammer", "blob_spammer", "el_forkmon", "beacon_metrics_gazer", "dora"," "prometheus_grafana"] - goomy_blob
"additional_services": [ - el_forkmon
"tx_spammer", - beacon_metrics_gazer
"blob_spammer", - dora
"custom_flood", - full_beaconchain_explorer
"goomy_blob", - prometheus_grafana
"el_forkmon",
"beacon_metrics_gazer", # If set, the package will block until a finalized epoch has occurred.
"dora", wait_for_finalization: false
"full_beaconchain_explorer",
"prometheus_grafana" # The global log level that all clients should log at
], # Valid values are "error", "warn", "info", "debug", and "trace"
# This value will be overridden by participant-specific values
// If set, the package will block until a finalized epoch has occurred. global_client_log_level: "info"
"wait_for_finalization": false,
# EngineAPI Snooper global flags for all participants
// The global log level that all clients should log at # Default to false
// Valid values are "error", "warn", "info", "debug", and "trace" snooper_enabled: false
// This value will be overridden by participant-specific values
"global_client_log_level": "info", # Enables Ethereum Metrics Exporter for all participants
# Defaults to false
// EngineAPI Snooper global flags for all participants ethereum_metrics_exporter_enabled: false
// Default to false
"snooper_enabled": false, # Parallelizes keystore generation so that each node has keystores being generated in their own container
# This will result in a large number of containers being spun up than normal. We advise users to only enable this on a sufficiently large machine or in the cloud as it can be resource consuming on a single machine.
// Enables Ethereum Metrics Exporter for all participants parallel_keystore_generation: false
// Defaults to false
"ethereum_metrics_exporter_enabled": false, # Disable peer scoring to prevent nodes impacted by faults from being permanently ejected from the network
# Default to false
// Parallelizes keystore generation so that each node has keystores being generated in their own container disable_peer_scoring: false
// This will result in a large number of containers being spun up than normal. We advise users to only enable this on a sufficiently large machine or in the cloud as it can be resource consuming on a single machine.
"parallel_keystore_generation": false, # A list of locators for grafana dashboards to be loaded be the grafana service
grafana_additional_dashboards: []
// Disable peer scoring to prevent nodes impacted by faults from being permanently ejected from the network
// Default to false # Supports three valeus
"disable_peer_scoring": false, # Default: "null" - no mev boost, mev builder, mev flood or relays are spun up
# "mock" - mock-builder & mev-boost are spun up
// Supports three valeus # "full" - mev-boost, relays, flooder and builder are all spun up
// Default: "None" - no mev boost, mev builder, mev flood or relays are spun up # Users are recommended to set network_params.capella_fork_epoch to non zero when testing MEV
// "mock" - mock-builder & mev-boost are spun up # We have seen instances of multibuilder instances failing to start mev-relay-api with non zero epochs
// "full" - mev-boost, relays, flooder and builder are all spun up mev_type: null
// Users are recommended to set network_params.capella_fork_epoch to non zero when testing MEV
// We have seen instances of multibuilder instances failing to start mev-relay-api with non zero epochs # Parameters if MEV is used
"mev_type": "None", mev_params:
# The image to use for MEV boot relay
// Parameters if MEV is used mev_relay_image: flashbots/mev-boost-relay
"mev_params": { # The image to use for the builder
// The image to use for MEV boot relay mev_builder_image: ethpandaops/flashbots-builder:main
"mev_relay_image": "flashbots/mev-boost-relay", # The image to use for the CL builder
// The image to use for the builder mev_builder_cl_image: sigp/lighthouse:latest
"mev_builder_image": "ethpandaops/flashbots-builder:main", # The image to use for mev-boost
// The image to use for the CL builder mev_boost_image: flashbots/mev-boost
"mev_builder_cl_image": "sigp/lighthouse:latest", # Extra parameters to send to the API
// The image to use for mev-boost mev_relay_api_extra_args: []
"mev_boost_image": "flashbots/mev-boost", # Extra parameters to send to the housekeeper
// Extra parameters to send to the API mev_relay_housekeeper_extra_args: []
"mev_relay_api_extra_args": [], # Extra parameters to send to the website
// Extra parameters to send to the housekeeper mev_relay_website_extra_args: []
"mev_relay_housekeeper_extra_args": [], # Extra parameters to send to the builder
// Extra parameters to send to the website mev_builder_extra_args: []
"mev_relay_website_extra_args": [], # Image to use for mev-flood
// Extra parameters to send to the builder mev_flood_image: flashbots/mev-flood
"mev_builder_extra_args": [], # Extra parameters to send to mev-flood
// Image to use for mev-flood mev_flood_extra_args: []
"mev_flood_image": "flashbots/mev-flood", # Number of seconds between bundles for mev-flood
// Extra parameters to send to mev-flood mev_flood_seconds_per_bundle: 15
"mev_flood_extra_args": [], # Optional parameters to send to the custom_flood script that sends reliable payloads
// Number of seconds between bundles for mev-flood custom_flood_params:
"mev_flood_seconds_per_bundle": 15, interval_between_transactions: 1
// Optional parameters to send to the custom_flood script that sends reliable payloads
"custom_flood_params": {
"interval_between_transactions": 1
}
},
// A list of locators for grafana dashboards to be loaded be the grafana service
"grafana_additional_dashboards": []
}
``` ```
</details> </details>
...@@ -341,40 +333,34 @@ To configure the package behaviour, you can modify your `network_params.json` fi ...@@ -341,40 +333,34 @@ To configure the package behaviour, you can modify your `network_params.json` fi
<details> <details>
<summary>Verkle configuration example</summary> <summary>Verkle configuration example</summary>
```json ```yaml
{ participants:
"participants": [ - el_client_type: geth
{ el_client_image: ethpandaops/geth:<VERKLE_IMAGE>
"el_client_type": "geth", elExtraParams:
"el_client_image": "ethpandaops/geth:<VERKLE_IMAGE>", - "--override.verkle=<UNIXTIMESTAMP>"
"elExtraParams": ["--override.verkle=<UNIXTIMESTAMP>"], cl_client_type: lighthouse
"cl_client_type": "lighthouse", cl_client_image: sigp/lighthouse:latest
"cl_client_image": "sigp/lighthouse:latest" - el_client_type: geth
}, el_client_image: ethpandaops/geth:<VERKLE_IMAGE>
{ elExtraParams:
"el_client_type": "geth", - "--override.verkle=<UNIXTIMESTAMP>"
"el_client_image": "ethpandaops/geth:<VERKLE_IMAGE>", cl_client_type: lighthouse
"elExtraParams": ["--override.verkle=<UNIXTIMESTAMP>"], cl_client_image: sigp/lighthouse:latest
"cl_client_type": "lighthouse", - el_client_type: geth
"cl_client_image": "sigp/lighthouse:latest" el_client_image: ethpandaops/geth:<VERKLE_IMAGE>
}, elExtraParams:
{ - "--override.verkle=<UNIXTIMESTAMP>"
"el_client_type": "geth", cl_client_type: lighthouse
"el_client_image": "ethpandaops/geth:<VERKLE_IMAGE>", cl_client_image: sigp/lighthouse:latest
"elExtraParams": ["--override.verkle=<UNIXTIMESTAMP>"], network_params:
"cl_client_type": "lighthouse", capella_fork_epoch: 2
"cl_client_image": "sigp/lighthouse:latest" deneb_fork_epoch: 5
} additional_services: []
], wait_for_finalization: false
"network_params": { wait_for_verifications: false
"capella_fork_epoch": 2, global_client_log_level: info
"deneb_fork_epoch": 5
},
"additional_services": [],
"wait_for_finalization": false,
"wait_for_verifications": false,
"global_client_log_level": "info"
}
``` ```
</details> </details>
...@@ -383,34 +369,25 @@ To configure the package behaviour, you can modify your `network_params.json` fi ...@@ -383,34 +369,25 @@ To configure the package behaviour, you can modify your `network_params.json` fi
<summary>A 3-node Ethereum network with "mock" MEV mode.</summary> <summary>A 3-node Ethereum network with "mock" MEV mode.</summary>
Useful for testing mev-boost and the client implimentations without adding the complexity of the relay. This can be enabled by a single config command and would deploy the [mock-builder](https://github.com/marioevz/mock-builder), instead of the relay infrastructure. Useful for testing mev-boost and the client implimentations without adding the complexity of the relay. This can be enabled by a single config command and would deploy the [mock-builder](https://github.com/marioevz/mock-builder), instead of the relay infrastructure.
```json ```yaml
{ participants:
"participants": [ - el_client_type: geth
{ el_client_image: ''
"el_client_type": "geth", cl_client_type: lighthouse
"el_client_image": "", cl_client_image: ''
"cl_client_type": "lighthouse", count: 2
"cl_client_image": "", - el_client_type: nethermind
"count": 2 el_client_image: ''
}, cl_client_type: teku
{ cl_client_image: ''
"el_client_type": "nethermind", count: 1
"el_client_image": "", - el_client_type: besu
"cl_client_type": "teku", el_client_image: ''
"cl_client_image": "", cl_client_type: prysm
"count": 1 cl_client_image: ''
}, count: 2
{ mev_type: mock
"el_client_type": "besu", additional_services: []
"el_client_image": "",
"cl_client_type": "prysm",
"cl_client_image": "",
"count": 2
},
],
"mev_type": "mock",
"additional_services": []
}
``` ```
</details> </details>
...@@ -418,37 +395,21 @@ To configure the package behaviour, you can modify your `network_params.json` fi ...@@ -418,37 +395,21 @@ To configure the package behaviour, you can modify your `network_params.json` fi
<details> <details>
<summary>A 5-node Ethereum network with three different CL and EL client combinations and mev-boost infrastructure in "full" mode.</summary> <summary>A 5-node Ethereum network with three different CL and EL client combinations and mev-boost infrastructure in "full" mode.</summary>
```json ```yaml
{ participants:
"participants": [ - el_client_type: geth
{ cl_client_type: lighthouse
"el_client_type": "geth", count: 2
"el_client_image": "", - el_client_type: nethermind
"cl_client_type": "lighthouse", cl_client_type: teku
"cl_client_image": "", - el_client_type: besu
"count": 2 cl_client_type: prysm
}, count: 2
{ mev_type: full
"el_client_type": "nethermind", network_params:
"el_client_image": "", capella_fork_epoch: 1
"cl_client_type": "teku", additional_services: []
"cl_client_image": "",
"count": 1
},
{
"el_client_type": "besu",
"el_client_image": "",
"cl_client_type": "prysm",
"cl_client_image": "",
"count": 2
},
],
"mev_type": "full",
"network_params": {
"capella_fork_epoch": 1
},
"additional_services": []
}
``` ```
</details> </details>
...@@ -456,19 +417,12 @@ To configure the package behaviour, you can modify your `network_params.json` fi ...@@ -456,19 +417,12 @@ To configure the package behaviour, you can modify your `network_params.json` fi
<details> <details>
<summary>A 2-node geth/lighthouse network with optional services (Grafana, Prometheus, transaction-spammer, EngineAPI snooper, and a testnet verifier)</summary> <summary>A 2-node geth/lighthouse network with optional services (Grafana, Prometheus, transaction-spammer, EngineAPI snooper, and a testnet verifier)</summary>
```json ```yaml
{ participants:
"participants": [ - el_client_type: geth
{ cl_client_type: lighthouse
"el_client_type": "geth", count: 2
"el_client_image": "", snooper_enabled: true
"cl_client_type": "lighthouse",
"cl_client_image": "",
"count": 2
}
],
"snooper_enabled": true
}
``` ```
</details> </details>
...@@ -515,7 +469,7 @@ This note is from 2023-10-05 ...@@ -515,7 +469,7 @@ This note is from 2023-10-05
`flashbots/mev-boost-relay:0.27` and later support `capella_fork_epoch` at `0` but this seems to require a few flags enabled `flashbots/mev-boost-relay:0.27` and later support `capella_fork_epoch` at `0` but this seems to require a few flags enabled
on the `lighthouse` beacon client including `--always-prefer-builder-payload` and `--disable-peer-scoring` on the `lighthouse` beacon client including `--always-prefer-builder-payload` and `--disable-peer-scoring`
Users are recommended to use [`examples/capella-mev.json`](./examples/capella-mev.json); as inspiration for reliable payload Users are recommended to use [`examples/capella-mev.yaml`](./examples/capella-mev.yaml); as inspiration for reliable payload
delivery. delivery.
## Pre-funded accounts at Genesis ## Pre-funded accounts at Genesis
......
...@@ -31,7 +31,7 @@ The main function is the package's entrypoint, where parameters are received fro ...@@ -31,7 +31,7 @@ The main function is the package's entrypoint, where parameters are received fro
## [Package I/O][package-io] ## [Package I/O][package-io]
This particular package has many configuration options (see the "Configuration" section in the README for the full list of values). These are passed in as a JSON-serialized string, and arrive to the package's main function via the `input_args` variable. The process of setting defaults, overriding them with the user's desired options, and validating the resulting config object requires some space in the codebase. All this logic happens inside the `package_io` directory, so you'll want to visit this directory if you want to: This particular package has many configuration options (see the "Configuration" section in the README for the full list of values). These are passed in as a YAML or JSON-serialized string, and arrive to the package's main function via the `input_args` variable. The process of setting defaults, overriding them with the user's desired options, and validating the resulting config object requires some space in the codebase. All this logic happens inside the `package_io` directory, so you'll want to visit this directory if you want to:
- View or change parameters that the package can receive - View or change parameters that the package can receive
- Change the default values of package parameters - Change the default values of package parameters
......
{
"mev_type": "full",
"participants": [{
"el_client_type": "geth",
"el_client_image": "ethereum/client-go:latest",
"el_client_log_level": "",
"cl_client_type": "lighthouse",
"cl_client_log_level": "",
"cl_client_image": "sigp/lighthouse",
"el_extra_params": [
],
"beacon_extra_params": [
"--always-prefer-builder-payload",
"--disable-peer-scoring"
]
}],
"network_params": {
"capella_fork_epoch": 0,
"seconds_per_slot": 12
},
"mev_params": {
"mev_flood_seconds_per_bundle": 12,
"mev_flood_extra_args": [ "--txsPerBundle=300" ],
"mev_flood_image": "flashbots/mev-flood:0.0.9",
"mev_relay_image": "flashbots/mev-boost-relay:0.27.0"
}
}
\ No newline at end of file
mev_type: full
participants:
- el_client_type: geth
el_client_image: ethereum/client-go:latest
el_client_log_level: ''
cl_client_type: lighthouse
cl_client_log_level: ''
cl_client_image: sigp/lighthouse
el_extra_params: []
beacon_extra_params:
- "--always-prefer-builder-payload"
- "--disable-peer-scoring"
network_params:
capella_fork_epoch: 0
seconds_per_slot: 12
mev_params:
mev_flood_seconds_per_bundle: 12
mev_flood_extra_args:
- "--txsPerBundle=300"
mev_flood_image: flashbots/mev-flood:0.0.9
mev_relay_image: flashbots/mev-boost-relay:0.27.0
{
"participants": [
{
"el_client_type": "geth",
"el_client_image": "ethereum/client-go:latest",
"el_client_log_level": "",
"el_extra_params": [],
"cl_client_type": "lighthouse",
"cl_client_image": "sigp/lighthouse:latest",
"cl_client_log_level": "",
"beacon_extra_params": [],
"validator_extra_params": [],
"builder_network_params": null,
"validator_count": null,
"ethereum_metrics_exporter_enabled": false,
"count": 2
}
],
"network_params": {
"network_id": "3151908",
"deposit_contract_address": "0x4242424242424242424242424242424242424242",
"seconds_per_slot": 12,
"num_validator_keys_per_node": 64,
"preregistered_validator_keys_mnemonic": "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete",
"genesis_delay": 120,
"capella_fork_epoch": 0,
"deneb_fork_epoch": 4,
"electra_fork_epoch": null
},
"additional_services": [
"tx_spammer",
"blob_spammer",
"el_forkmon",
"beacon_metrics_gazer",
"dora",
"prometheus_grafana"
],
"wait_for_finalization": false,
"global_client_log_level": "info",
"snooper_enabled": false,
"ethereum_metrics_exporter_enabled": false,
"parallel_keystore_generation": false,
"mev_type": null,
"mev_params": {
"mev_relay_image": "flashbots/mev-boost-relay",
"mev_relay_api_extra_args": [],
"mev_relay_housekeeper_extra_args": [],
"mev_relay_website_extra_args": [],
"mev_builder_extra_args": [],
"mev_flood_image": "flashbots/mev-flood",
"mev_flood_extra_args": [],
"mev_flood_seconds_per_bundle": 15
},
"grafana_additional_dashboards": []
}
participants:
- el_client_type: geth
el_client_image: ethereum/client-go:latest
el_client_log_level: ''
el_extra_params: []
cl_client_type: lighthouse
cl_client_image: sigp/lighthouse:latest
cl_client_log_level: ''
beacon_extra_params: []
validator_extra_params: []
builder_network_params: null
validator_count: null
snooper_enabled: false
ethereum_metrics_exporter_enabled: false
el_min_cpu: ''
el_max_cpu: ''
el_min_mem: ''
el_max_mem: ''
bn_min_cpu: ''
bn_max_cpu: ''
bn_min_mem: ''
bn_max_mem: ''
v_min_cpu: ''
v_max_cpu: ''
v_min_mem: ''
v_max_mem: ''
count: 2
network_params:
network_id: '3151908'
deposit_contract_address: '0x4242424242424242424242424242424242424242'
seconds_per_slot: 12
num_validator_keys_per_node: 64
preregistered_validator_keys_mnemonic: 'giant issue aisle success illegal bike spike
question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy
very lucky have athlete'
genesis_delay: 120
max_churn: 8
ejection_balance: 16000000000
capella_fork_epoch: 0
deneb_fork_epoch: 4
electra_fork_epoch: null
additional_services:
- tx_spammer
- blob_spammer
- el_forkmon
- beacon_metrics_gazer
- dora
- prometheus_grafana
wait_for_finalization: false
global_client_log_level: info
snooper_enabled: false
ethereum_metrics_exporter_enabled: false
parallel_keystore_generation: false
mev_type: null
mev_params:
mev_relay_image: flashbots/mev-boost-relay
mev_relay_api_extra_args: []
mev_relay_housekeeper_extra_args: []
mev_relay_website_extra_args: []
mev_builder_extra_args: []
mev_flood_image: flashbots/mev-flood
mev_flood_extra_args: []
mev_flood_seconds_per_bundle: 15
grafana_additional_dashboards: []
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment