Commit d3e6b15b authored by luxq's avatar luxq

Merge remote-tracking branch 'refs/remotes/origin/main' into bf-test

# Conflicts:
#	main.star
#	network_params.yaml
#	src/package_io/input_parser.star
#	src/package_io/sanity_check.star
parents c436f1fa 2ab3246f
Pipeline #839 canceled with stages
name: Docker login name: Docker login
descritpion: Log in to Docker Hub description: Log in to Docker Hub
inputs: inputs:
username: username:
required: true required: true
...@@ -24,7 +24,7 @@ runs: ...@@ -24,7 +24,7 @@ runs:
- name: Login to Docker Hub - name: Login to Docker Hub
if: env.AUTH_EXISTS == 'true' if: env.AUTH_EXISTS == 'true'
uses: docker/login-action@v3 uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with: with:
username: ${{ inputs.username }} username: ${{ inputs.username }}
password: ${{ inputs.password }} password: ${{ inputs.password }}
......
...@@ -13,4 +13,4 @@ participants: ...@@ -13,4 +13,4 @@ participants:
count: 1 count: 1
additional_services: additional_services:
- dora - dora
- blob_spammer - spamoor_blob
participants:
- el_type: nethermind
el_image: ethpandaops/nethermind:feature-evm-eof
cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:develop-557c5be
- el_type: reth
el_image: ethpandaops/reth:main
cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:develop-557c5be
- el_type: besu
el_image: ethpandaops/besu:main
cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:develop-557c5be
global_log_level: info
network_params:
electra_fork_epoch: 1
fulu_fork_epoch: 2
seconds_per_slot: 4
additional_services:
- dora
- tx_fuzz
- spamoor_blob
snooper_enabled: true
participants: participants:
- el_type: geth - el_type: geth
cl_type: teku cl_type: teku
- el_type: reth
cl_type: prysm
- el_type: nethermind
cl_type: nimbus
- el_type: besu
cl_type: lighthouse
- el_type: nimbus
cl_type: lodestar
- el_type: erigon
cl_type: grandine
additional_services:
- dora
network_params: network_params:
altair_fork_epoch: 0 altair_fork_epoch: 0
bellatrix_fork_epoch: 0 bellatrix_fork_epoch: 0
capella_fork_epoch: 0 capella_fork_epoch: 0
deneb_fork_epoch: 0 deneb_fork_epoch: 0
electra_fork_epoch: 0 electra_fork_epoch: 1
fulu_fork_epoch: 1 fulu_fork_epoch: 2
preset: minimal eip7732_fork_epoch: 3
eip7805_fork_epoch: 4
...@@ -12,5 +12,5 @@ participants: ...@@ -12,5 +12,5 @@ participants:
- el_type: geth - el_type: geth
cl_type: grandine cl_type: grandine
additional_services: additional_services:
- goomy_blob - spamoor_blob
- dora - dora
participants: participants:
- el_type: geth - el_type: geth
el_image: ethereum/client-go:v1.13.14 el_image: ethpandaops/geth:prague-devnet-5-f85cde7
cl_type: teku cl_type: teku
cl_image: consensys/teku:24.2.0 cl_image: consensys/teku:develop
network_params: network_params:
dencun_fork_epoch: 0 electra_fork_epoch: 4
network: holesky-shadowfork network: holesky-shadowfork
additional_services: additional_services:
- dora - dora
......
participants:
# Prysm nodes (33%)
- el_type: geth
cl_type: prysm
- el_type: geth
cl_type: prysm
- el_type: nethermind
cl_type: prysm
- el_type: nethermind
cl_type: prysm
- el_type: besu
cl_type: prysm
# Lighthouse nodes (32%)
- el_type: geth
cl_type: lighthouse
- el_type: geth
cl_type: lighthouse
- el_type: nethermind
cl_type: lighthouse
- el_type: nethermind
cl_type: lighthouse
- el_type: besu
cl_type: lighthouse
# Teku nodes (27%)
- el_type: geth
cl_type: teku
- el_type: nethermind
cl_type: teku
- el_type: nethermind
cl_type: teku
- el_type: besu
cl_type: teku
# Nimbus nodes (4%)
- el_type: geth
cl_type: nimbus
# One each of Lodestar and Grandine
- el_type: reth
cl_type: lodestar
- el_type: erigon
cl_type: grandine
# Enable MEV via the flashbots stack
mev_type: flashbots
additional_services:
- dora
- spamoor_blob
- tx_fuzz
- assertoor
global_log_level: debug
...@@ -3,11 +3,10 @@ participants: ...@@ -3,11 +3,10 @@ participants:
cl_type: lighthouse cl_type: lighthouse
mev_type: commit-boost mev_type: commit-boost
additional_services: additional_services:
- tx_spammer - tx_fuzz
- blob_spammer - spamoor_blob
- custom_flood - custom_flood
- el_forkmon - forkmon
- beacon_metrics_gazer
- dora - dora
- prometheus_grafana - prometheus_grafana
mev_params: mev_params:
......
participants: participants:
- el_type: geth - el_type: geth
cl_type: lighthouse cl_type: lighthouse
network_params: count: 3
seconds_per_slot: 3
mev_type: mock mev_type: mock
additional_services:
- dora
- spamoor_blob
- tx_fuzz
mev_params:
mock_mev_image: "ethpandaops/rustic-builder:main"
participants: participants:
- el_type: reth - el_type: geth
el_image: ethereum/client-go:v1.15.5
el_extra_params: ["--miner.extradata=pawanRocks"]
cl_type: lighthouse
cl_image: sigp/lighthouse:v7.0.0-beta.0
- el_type: geth
el_image: ethereum/client-go:v1.15.5
el_extra_params: ["--miner.extradata=TekuFromLocal"]
cl_type: teku cl_type: teku
cl_image: consensys/teku:25.2
- el_type: geth
el_image: ethereum/client-go:v1.15.5
el_extra_params: ["--miner.extradata=lodestarFromLocal"]
cl_type: lodestar
cl_image: chainsafe/lodestar:v1.27.1
- el_type: geth
el_image: ethereum/client-go:v1.15.5
el_extra_params: ["--miner.extradata=prysmFromLocal"]
cl_type: prysm
cl_image: prysmaticlabs/prysm-beacon-chain:v5.3.0
vc_image: prysmaticlabs/prysm-validator:v5.3.0
- el_type: geth
el_image: ethereum/client-go:v1.15.5
el_extra_params: ["--miner.extradata=nimbusFromLocal"]
cl_type: nimbus
cl_image: statusim/nimbus-eth2:multiarch-v25.3.0
- el_type: geth
el_image: ethereum/client-go:v1.15.5
el_extra_params: ["--miner.extradata=grandineFromLocal"]
cl_type: grandine
cl_image: sifrai/grandine:1.0.0
additional_services: additional_services:
- dora - dora
- tx_spammer - tx_fuzz
- spamoor_blob
mev_type: flashbots mev_type: flashbots
mev_params: mev_params:
mev_relay_image: jtraglia/mev-boost-relay:electra mev_relay_image: flashbots/mev-boost-relay:0.30.0rc1
mev_boost_image: jtraglia/mev-boost:electra mev_boost_image: flashbots/mev-boost:1.9rc2
mev_builder_image: ethpandaops/rbuilder:develop-1b578f5 mev_builder_cl_image: sigp/lighthouse:v7.0.0-beta.0
mev_builder_cl_image: ethpandaops/lighthouse:pawan-electra-alpha7-0dd215c mev_builder_image: ethpandaops/reth-rbuilder:develop-42872ec
network_params: network_params:
electra_fork_epoch: 1 electra_fork_epoch: 1
min_validator_withdrawability_delay: 1
shard_committee_period: 1
churn_limit_quotient: 16
genesis_delay: 120
spamoor_blob_params:
throughput: 10
max_blobs: 2
max_pending: 40
participants: participants:
- el_type: geth - el_type: geth
el_extra_params: ["--miner.extradata=localGeth"]
cl_type: lighthouse cl_type: lighthouse
mev_type: flashbots mev_type: flashbots
mev_params:
mev_builder_extra_args: ["--engine.persistence-threshold=0", "--engine.memory-block-buffer-target=0"]
mev_builder_image: ethpandaops/reth-rbuilder:devnet6-fdeb4d6
mev_relay_image: ethpandaops/mev-boost-relay:electra
mev_boost_image: ethpandaops/mev-boost:electra
additional_services: additional_services:
- tx_spammer - tx_fuzz
- blob_spammer
- custom_flood - custom_flood
- goomy_blob - spamoor_blob
- beacon_metrics_gazer
- dora - dora
- prometheus_grafana - prometheus_grafana
network_params: network_params:
......
...@@ -16,7 +16,7 @@ network_params: ...@@ -16,7 +16,7 @@ network_params:
seconds_per_slot: 6 seconds_per_slot: 6
additional_services: additional_services:
- dora - dora
- tx_spammer - tx_fuzz
- apache - apache
mev_type: mev-rs mev_type: mev-rs
......
participants_matrix:
el:
- el_type: geth
el_image: ethpandaops/geth:prague-devnet-5-a193537
cl:
- cl_type: teku
cl_image: consensys/teku:develop
- cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:unstable-minimal-046c379
- cl_type: lodestar
cl_image: ethpandaops/lodestar:devnet-5-1c2b5ed
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:devnet5-minimal-ae44429
vc_image: ethpandaops/prysm-validator:devnet5-minimal-ae44429
network_params:
preset: minimal
electra_fork_epoch: 1
min_validator_withdrawability_delay: 1
shard_committee_period: 1
churn_limit_quotient: 16
genesis_delay: 240
additional_services:
- dora
- spamoor_blob
- tx_fuzz
- assertoor
dora_params:
image: "ethpandaops/dora:master-latest"
spamoor_blob_params:
throughput: 10
max_blobs: 2
max_pending: 40
assertoor_params:
image: "ethpandaops/assertoor:master"
tests:
- file: https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/pectra-dev/kurtosis/all.yaml
...@@ -5,11 +5,13 @@ participants: ...@@ -5,11 +5,13 @@ participants:
cl_type: prysm cl_type: prysm
- el_type: erigon - el_type: erigon
cl_type: nimbus cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:unstable-minimal
- el_type: besu - el_type: besu
cl_type: lighthouse cl_type: lighthouse
- el_type: reth - el_type: reth
cl_type: lodestar cl_type: lodestar
- el_type: geth # TODO: Re-add grandine once its working with minimal preset
cl_type: grandine # - el_type: geth
# cl_type: grandine
network_params: network_params:
preset: minimal preset: minimal
...@@ -12,13 +12,11 @@ participants: ...@@ -12,13 +12,11 @@ participants:
- el_type: ethereumjs - el_type: ethereumjs
cl_type: teku cl_type: teku
additional_services: additional_services:
- tx_spammer - tx_fuzz
- blob_spammer - forkmon
- el_forkmon
- beacon_metrics_gazer
- dora - dora
- prometheus_grafana - prometheus_grafana
- goomy_blob - spamoor_blob
- custom_flood - custom_flood
- blobscan - blobscan
- blockscout - blockscout
...@@ -31,5 +29,5 @@ ethereum_metrics_exporter_enabled: true ...@@ -31,5 +29,5 @@ ethereum_metrics_exporter_enabled: true
snooper_enabled: true snooper_enabled: true
mev_type: flashbots mev_type: flashbots
mev_params: mev_params:
mev_relay_image: flashbots/mev-boost-relay:latest mev_relay_image: ethpandaops/mev-boost-relay:main
persistent: True persistent: True
...@@ -14,13 +14,11 @@ participants: ...@@ -14,13 +14,11 @@ participants:
network_params: network_params:
preset: minimal preset: minimal
additional_services: additional_services:
- tx_spammer - tx_fuzz
- blob_spammer - forkmon
- el_forkmon
- beacon_metrics_gazer
- dora - dora
- prometheus_grafana - prometheus_grafana
- goomy_blob - spamoor_blob
- custom_flood - custom_flood
- blobscan - blobscan
- blockscout - blockscout
......
...@@ -14,16 +14,12 @@ participants: ...@@ -14,16 +14,12 @@ participants:
- el_type: geth - el_type: geth
cl_type: grandine cl_type: grandine
additional_services: additional_services:
- tx_spammer - tx_fuzz
- blob_spammer - forkmon
- el_forkmon
- beacon_metrics_gazer
- dora - dora
- prometheus_grafana - prometheus_grafana
- goomy_blob - spamoor_blob
- custom_flood - custom_flood
- blobscan
- blockscout
- dugtrio - dugtrio
- blutgang - blutgang
- apache - apache
......
participants:
- el_type: geth
el_image: ethpandaops/geth:prague-devnet-5-f85cde7
el_extra_params: ["--miner.extradata=pawanRocks"]
cl_type: lighthouse
cl_image: pawanjay176/lighthouse:latest
- el_type: reth
el_image: ethpandaops/reth:main-11bd9dd
cl_type: lighthouse
cl_image: pawanjay176/lighthouse:latest
- el_type: geth
el_image: ethpandaops/geth:prague-devnet-5-f85cde7
el_extra_params: ["--miner.extradata=TekuFromLocal"]
cl_type: teku
cl_image: consensys/teku:develop
mev_type: mock
mev_params:
mock_mev_image: "pawanjay176/rustic-builder:latest"
mev_boost_image: "jtraglia/mev-boost:electra"
network_params:
electra_fork_epoch: 1
min_validator_withdrawability_delay: 1
shard_committee_period: 1
churn_limit_quotient: 16
# genesis_delay: 240
seconds_per_slot: 6
additional_services:
- dora
- spamoor_blob
- tx_fuzz
- assertoor
dora_params:
image: "ethpandaops/dora:master-latest"
spamoor_blob_params:
throughput: 10
max_blobs: 2
max_pending: 40
global_log_level: debug
participants_matrix:
el:
- el_type: nethermind
el_image: nethermindeth/nethermind:pectra-fix
- el_type: geth
el_image: ethpandaops/geth:lightclient-prague-devnet-1-37c4b03
- el_type: ethereumjs
el_image: ethpandaops/ethereumjs:master-b543d2f
- el_type: erigon
el_image: ethpandaops/erigon:main-faa564e
- el_type: reth
el_image: ethpandaops/reth:onbjerg-devnet-2-36bc13d
- el_type: besu
el_image: ethpandaops/besu:main-ec8429f
cl:
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:electra-devnet-1-ba28217
- cl_type: teku
cl_image: ethpandaops/teku:master-2d2d17b
- cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:unstable-ae0a148
- cl_type: lodestar
cl_image: ethpandaops/lodestar:electra-fork-rebasejul30
- cl_type: grandine
cl_image: ethpandaops/grandine:electra-bdd3997
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:develop-4d823ac
network_params:
network: pectra-devnet-2
additional_services:
- dora
- assertoor
snooper_enabled: true
assertoor_params:
run_stability_check: false
run_block_proposal_check: false
tests:
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/wait-for-slot.yaml", id: "wait1", config: { slot: 34 }}
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/bls-changes.yaml", config: { validatorCount: 300 }}
# EIP-6110
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/wait-for-slot.yaml", id: "wait2", config: { slot: 38 }}
- https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/massive-deposit-0x02.yaml
# EIP-2935
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/wait-for-slot.yaml", id: "wait3", config: { slot: 42 }}
- https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/blockhash-test.yaml
# EIP-7002
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/wait-for-slot.yaml", id: "wait4", config: { slot: 46 }}
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/voluntary-exits.yaml", config: { validatorCount: 10 }}
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/wait-for-slot.yaml", id: "wait5", config: { slot: 50 }}
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/el-triggered-exit.yaml", config: { validatorIndex: 20 }}
# EIP-7251
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/wait-for-slot.yaml", id: "wait6", config: { slot: 54 }}
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/pectra-dev/el-triggered-consolidation.yaml", config: { sourceValidatorIndex: 21, targetValidatorIndex: 25 }}
# Final check
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/block-proposal-check.yaml" }
participants_matrix:
el:
- el_type: geth
el_image: ethereum/client-go:v1.15.5
- el_type: reth
el_image: ghcr.io/paradigmxyz/reth:v1.2.2
- el_type: nethermind
el_image: nethermind/nethermind:1.31.4
- el_type: erigon
el_image: erigontech/erigon:v3.0.0-rc3
- el_type: besu
el_image: hyperledger/besu:25.2.2
- el_type: ethereumjs
el_image: ethpandaops/ethereumjs:eip7840
cl:
- cl_type: lighthouse
cl_image: sigp/lighthouse:v7.0.0-beta.0
- cl_type: teku
cl_image: consensys/teku:25.2
- cl_type: nimbus
cl_image: statusim/nimbus-eth2:multiarch-v25.3.0
- cl_type: lodestar
cl_image: chainsafe/lodestar:v1.27.1
- cl_type: grandine
cl_image: sifrai/grandine:1.0.0
- cl_type: prysm
cl_image: prysmaticlabs/prysm-beacon-chain:v5.3.0
vc_image: prysmaticlabs/prysm-validator:v5.3.0
network_params:
electra_fork_epoch: 1
min_validator_withdrawability_delay: 1
shard_committee_period: 1
churn_limit_quotient: 16
genesis_delay: 240
additional_services:
- dora
- spamoor_blob
- tx_fuzz
- assertoor
dora_params:
image: "ethpandaops/dora:master-latest"
spamoor_blob_params:
throughput: 10
max_blobs: 2
max_pending: 40
global_log_level: debug
assertoor_params:
image: "ethpandaops/assertoor:master"
tests:
- file: https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/pectra-dev/execution-spec-tests.yaml
- file: https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/pectra-dev/blockhash-test-with-rpc-call.yaml
- file: https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/pectra-dev/eip7002-all.yaml
- file: https://raw.githubusercontent.com/ethpandaops/assertoor/blob/master/playbooks/pectra-dev/eip7251-all.yaml
- file: https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/pectra-dev/validator-lifecycle-test-v3.yaml
- file: https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/pectra-dev/kurtosis/all.yaml
participants_matrix: participants_matrix:
el: el:
- el_type: nethermind
el_image: nethermindeth/nethermind:pectra
- el_type: geth - el_type: geth
el_image: ethpandaops/geth:prague-devnet-2 el_image: ethereum/client-go:v1.15.5
- el_type: ethereumjs
el_image: ethpandaops/ethereumjs:master
- el_type: erigon
el_image: erigontech/erigon:pectra_e2
- el_type: reth - el_type: reth
el_image: ethpandaops/reth:onbjerg-devnet-2 el_image: ghcr.io/paradigmxyz/reth:v1.2.2
- el_type: nethermind
el_image: nethermind/nethermind:1.31.6
- el_type: erigon
el_image: erigontech/erigon:v3.0.0-rc3
- el_type: besu - el_type: besu
el_image: ethpandaops/besu:main el_image: hyperledger/besu:25.2.2
- el_type: ethereumjs
el_image: ethpandaops/ethereumjs:eip7840
cl: cl:
- cl_type: lighthouse - cl_type: lighthouse
cl_image: ethpandaops/lighthouse:electra-devnet-1-51d51f5 cl_image: sigp/lighthouse:v7.0.0-beta.0
- cl_type: teku - cl_type: teku
cl_image: ethpandaops/teku:master cl_image: consensys/teku:25.2
- cl_type: nimbus - cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:unstable cl_image: statusim/nimbus-eth2:multiarch-v25.3.0
- cl_type: lodestar - cl_type: lodestar
cl_image: ethpandaops/lodestar:electra-fork-rebasejul30 cl_image: chainsafe/lodestar:v1.27.1
- cl_type: grandine - cl_type: grandine
cl_image: ethpandaops/grandine:electra cl_image: sifrai/grandine:1.0.0
- cl_type: prysm - cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:develop cl_image: prysmaticlabs/prysm-beacon-chain:v5.3.0
vc_image: prysmaticlabs/prysm-validator:v5.3.0
network_params: network_params:
electra_fork_epoch: 1 electra_fork_epoch: 1
min_validator_withdrawability_delay: 1 min_validator_withdrawability_delay: 1
...@@ -34,7 +35,7 @@ additional_services: ...@@ -34,7 +35,7 @@ additional_services:
- dora - dora
- assertoor - assertoor
snooper_enabled: true snooper_enabled: false
assertoor_params: assertoor_params:
run_stability_check: false run_stability_check: false
run_block_proposal_check: false run_block_proposal_check: false
......
participants:
# Supernodes
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:peerDAS
supernode: true
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:unstable
supernode: true
- cl_type: teku
cl_image: ethpandaops/teku:nashatyrev-das
supernode: true
- cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:pdsync
supernode: true
- cl_type: lodestar
cl_image: ethpandaops/lodestar:peerDAS
supernode: true
- cl_type: grandine
cl_image: ethpandaops/grandine:hangleang-feature-das
supernode: true
# Fullnodes
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:peerDAS
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:unstable
- cl_type: teku
cl_image: ethpandaops/teku:nashatyrev-das
- cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:pdsync
- cl_type: lodestar
cl_image: ethpandaops/lodestar:peerDAS
- cl_type: grandine
cl_image: ethpandaops/grandine:hangleang-feature-das
network_params:
network: peerdas-devnet-3
snooper_enabled: true
additional_services:
- dora
participants: participants:
# Supernodes # Super nodes
- cl_type: prysm # -----------
cl_image: ethpandaops/prysm-beacon-chain:peerDAS-minimal
cl_extra_params: [--subscribe-all-subnets, --pprof] # Lighthouse
vc_image: ethpandaops/prysm-validator:develop
- cl_type: lighthouse - cl_type: lighthouse
cl_image: ethpandaops/lighthouse:das-devnet-2 cl_image: ethpandaops/lighthouse:peerdas-devnet-4
cl_extra_params: [--subscribe-all-data-column-subnets] cl_max_mem: 4096
cl_extra_params:
- --subscribe-all-data-column-subnets
# Prysm
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:peerDAS
cl_max_mem: 4096
cl_extra_params:
- --subscribe-all-subnets
# Teku
- cl_type: teku - cl_type: teku
cl_image: ethpandaops/teku:nashatyrev-das cl_image: ethpandaops/teku:nashatyrev-das
cl_extra_params: [--p2p-subscribe-all-custody-subnets-enabled] cl_max_mem: 4096
cl_extra_params:
- --p2p-subscribe-all-custody-subnets-enabled
- cl_type: grandine
cl_image: ethpandaops/grandine:peerdas-fulu
cl_max_mem: 4096
cl_extra_params:
- --subscribe-all-data-column-subnets
# Nimbus
- cl_type: nimbus - cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:peerdas-p2p-minimal cl_image: ethpandaops/nimbus-eth2:columns
cl_extra_params: [--subscribe-all-subnets=true] cl_extra_params:
# Non supernodes - --debug-peerdas-supernode=true
- cl_type: prysm - --sync-light-client=no
cl_image: ethpandaops/prysm-beacon-chain:peerDAS-minimal
vc_image: ethpandaops/prysm-validator:develop # Full nodes
# -----------
# Lighthouse
- cl_type: lighthouse - cl_type: lighthouse
cl_image: ethpandaops/lighthouse:das-devnet-2 cl_image: ethpandaops/lighthouse:peerdas-devnet-4
cl_max_mem: 4096
# Prysm
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:peerDAS
cl_max_mem: 4096
# Teku
- cl_type: teku - cl_type: teku
cl_image: ethpandaops/teku:nashatyrev-das cl_image: ethpandaops/teku:nashatyrev-das
# Grandine
- cl_type: grandine
cl_image: ethpandaops/grandine:peerdas-fulu
# Nimbus
- cl_type: nimbus - cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:peerdas-p2p-minimal cl_image: ethpandaops/nimbus-eth2:columns
- cl_type: lodestar cl_extra_params:
cl_image: ethpandaops/lodestar:peerDAS - --debug-peerdas-supernode=false
cl_extra_params: [--persistNetworkIdentity] - --sync-light-client=no
global_log_level: debug
network_params: network_params:
electra_fork_epoch: 1 electra_fork_epoch: 1
fulu_fork_epoch: 2 fulu_fork_epoch: 2
preset: minimal
snooper_enabled: true
global_log_level: debug
additional_services: additional_services:
- dora - dora
- goomy_blob - spamoor_blob
- prometheus_grafana - prometheus_grafana
- assertoor
ethereum_metrics_exporter_enabled: true snooper_enabled: false
assertoor_params:
run_stability_check: false dora_params:
run_block_proposal_check: false image: ethpandaops/dora:fulu-support
tests: \ No newline at end of file
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/block-proposal-check.yaml" }
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/blob-transactions-test.yaml" }
- { file: "https://raw.githubusercontent.com/ethpandaops/assertoor-test/master/assertoor-tests/stability-check.yaml" }
participants:
- el_type: geth
el_image: ethpandaops/geth:kaustinen-with-shapella
cl_type: lighthouse
cl_image: ethpandaops/lighthouse:verkle-trees-capella
count: 2
- el_type: geth
el_image: ethpandaops/geth:kaustinen-with-shapella
cl_type: lodestar
cl_image: ethpandaops/lodestar:g11tech-verge
network_params:
network: verkle-gen-devnet-6
participants:
- el_type: geth
el_image: ethpandaops/geth:kaustinen-with-shapella-89330e4
cl_type: lodestar
cl_image: ethpandaops/lodestar:g11tech-verge-324c46e
count: 3
network_params:
network: verkle-gen-devnet-7
...@@ -20,7 +20,7 @@ participants: ...@@ -20,7 +20,7 @@ participants:
network_params: network_params:
electra_fork_epoch: 0 electra_fork_epoch: 0
additional_services: additional_services:
- el_forkmon - forkmon
- tx_spammer - tx_fuzz
- dora - dora
snooper_enabled: true snooper_enabled: true
name: Check typos
on:
pull_request:
branches:
- main
jobs:
check-typos:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Check for typos
uses: crate-ci/typos@11ca4583f2f3f74c7e7785c0ecb20fe2c99a4308 # varcon-core-v5.0.2
...@@ -17,6 +17,6 @@ jobs: ...@@ -17,6 +17,6 @@ jobs:
title_check: title_check:
runs-on: self-hosted-ghr-size-s-x64 runs-on: self-hosted-ghr-size-s-x64
steps: steps:
- uses: amannn/action-semantic-pull-request@v5 - uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
...@@ -11,7 +11,7 @@ jobs: ...@@ -11,7 +11,7 @@ jobs:
outputs: outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }} matrix: ${{ steps.set-matrix.outputs.matrix }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- id: set-matrix - id: set-matrix
# List all yaml files in the .github/tests directory, except for the k8s.yaml file # List all yaml files in the .github/tests directory, except for the k8s.yaml file
run: echo "matrix=$(ls ./.github/tests/*.yaml | grep -vE 'k8s.yaml$' | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT run: echo "matrix=$(ls ./.github/tests/*.yaml | grep -vE 'k8s.yaml$' | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT
...@@ -25,7 +25,7 @@ jobs: ...@@ -25,7 +25,7 @@ jobs:
continue-on-error: true continue-on-error: true
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login - uses: ./.github/actions/docker-login
with: with:
username: ethpandaops username: ethpandaops
...@@ -54,7 +54,7 @@ jobs: ...@@ -54,7 +54,7 @@ jobs:
- name: Notify - name: Notify
if: (cancelled() || failure()) && env.discord_webhook_set == 'true' if: (cancelled() || failure()) && env.discord_webhook_set == 'true'
uses: nobrayner/discord-webhook@v1 uses: nobrayner/discord-webhook@1766a33bf571acdcc0678f00da4fb83aad01ebc7 # v1
with: with:
description: "The nightly test for ${{matrix.file_name}} on ethereum-package has failed find it here ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" description: "The nightly test for ${{matrix.file_name}} on ethereum-package has failed find it here ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
github-token: ${{ secrets.github_token }} github-token: ${{ secrets.github_token }}
...@@ -64,13 +64,13 @@ jobs: ...@@ -64,13 +64,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login - uses: ./.github/actions/docker-login
with: with:
username: ethpandaops username: ethpandaops
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- name: Kurtosis Assertoor GitHub Action - name: Kurtosis Assertoor GitHub Action
uses: ethpandaops/kurtosis-assertoor-github-action@v1 uses: ethpandaops/kurtosis-assertoor-github-action@5932604b244dbd2ddb811516b516a9094f4d2c2f # v1
with: with:
kurtosis_extra_args: "--image-download always --non-blocking-tasks --verbosity DETAILED" kurtosis_extra_args: "--image-download always --non-blocking-tasks --verbosity DETAILED"
ethereum_package_branch: "" ethereum_package_branch: ""
......
...@@ -12,7 +12,7 @@ jobs: ...@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login - uses: ./.github/actions/docker-login
with: with:
username: ethpandaops username: ethpandaops
...@@ -39,7 +39,7 @@ jobs: ...@@ -39,7 +39,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login - uses: ./.github/actions/docker-login
with: with:
username: ethpandaops username: ethpandaops
...@@ -54,7 +54,7 @@ jobs: ...@@ -54,7 +54,7 @@ jobs:
runs-on: self-hosted-ghr-size-s-x64 runs-on: self-hosted-ghr-size-s-x64
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Kurtosis - name: Setup Kurtosis
uses: ./.github/actions/kurtosis-install uses: ./.github/actions/kurtosis-install
- name: Kurtosis Lint - name: Kurtosis Lint
...@@ -65,27 +65,27 @@ jobs: ...@@ -65,27 +65,27 @@ jobs:
timeout-minutes: 30 timeout-minutes: 30
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login - uses: ./.github/actions/docker-login
with: with:
username: ethpandaops username: ethpandaops
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- name: Kurtosis Assertoor GitHub Action - name: Kurtosis Assertoor GitHub Action
uses: ethpandaops/kurtosis-assertoor-github-action@v1 uses: ethpandaops/kurtosis-assertoor-github-action@5932604b244dbd2ddb811516b516a9094f4d2c2f # v1
with: with:
ethereum_package_url: "." ethereum_package_url: "."
ethereum_package_branch: "" ethereum_package_branch: ""
ethereum_package_args: .github/tests/mix-assert.yaml ethereum_package_args: .github/tests/mix-assert.yaml
check_optimism_package: #check_optimism_package:
runs-on: ubuntu-latest # runs-on: ubuntu-latest
steps: # steps:
- name: Checkout Repository # - name: Checkout Repository
uses: actions/checkout@v4 # uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Kurtosis # - name: Setup Kurtosis
uses: ./.github/actions/kurtosis-install # uses: ./.github/actions/kurtosis-install
- name: Run L1 # - name: Run L1
run: | # run: |
kurtosis run --enclave test ${{ github.workspace }} --args-file https://raw.githubusercontent.com/ethpandaops/optimism-package/refs/heads/main/.github/tests/external-l1/ethereum.yaml --verbosity detailed # kurtosis run --enclave test ${{ github.workspace }} --args-file https://raw.githubusercontent.com/ethpandaops/optimism-package/refs/heads/main/.github/tests/external-l1/ethereum.yaml --verbosity detailed
- name: Run L2 # - name: Run L2
run: | # run: |
kurtosis run --enclave test github.com/ethpandaops/optimism-package --args-file https://raw.githubusercontent.com/ethpandaops/optimism-package/refs/heads/main/.github/tests/external-l1/optimism.yaml --verbosity detailed # kurtosis run --enclave test github.com/ethpandaops/optimism-package --args-file https://raw.githubusercontent.com/ethpandaops/optimism-package/refs/heads/main/.github/tests/external-l1/optimism.yaml --verbosity detailed
...@@ -20,11 +20,11 @@ jobs: ...@@ -20,11 +20,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup minikube - name: Setup minikube
id: minikube id: minikube
uses: medyagh/setup-minikube@latest uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19
- name: Get kubeconfig - name: Get kubeconfig
id: kubeconfig id: kubeconfig
...@@ -36,7 +36,7 @@ jobs: ...@@ -36,7 +36,7 @@ jobs:
# run kurtosis test and assertoor # run kurtosis test and assertoor
- name: Run kurtosis testnet - name: Run kurtosis testnet
id: testnet id: testnet
uses: ethpandaops/kurtosis-assertoor-github-action@v1 uses: ethpandaops/kurtosis-assertoor-github-action@5932604b244dbd2ddb811516b516a9094f4d2c2f # v1
with: with:
kurtosis_extra_args: "--image-download always --non-blocking-tasks --verbosity DETAILED" kurtosis_extra_args: "--image-download always --non-blocking-tasks --verbosity DETAILED"
kurtosis_backend: "kubernetes" kurtosis_backend: "kubernetes"
...@@ -62,7 +62,7 @@ jobs: ...@@ -62,7 +62,7 @@ jobs:
- name: Notify - name: Notify
if: (cancelled() || failure()) && env.discord_webhook_set == 'true' if: (cancelled() || failure()) && env.discord_webhook_set == 'true'
uses: Ilshidur/action-discord@master uses: Ilshidur/action-discord@08d9328877d6954120eef2b07abbc79249bb6210 # dependabot/npm_and_yarn/axios-1.3.4-08d9328
env: env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
with: with:
......
[default]
extend-ignore-re = [
# Ignore Ethereum Node Records (ENR)
"enr:-.*",
# Ignore blutgang config typo
"supress_rpc_check",
]
[files]
extend-exclude = [
"CHANGELOG.md",
]
This diff is collapsed.
...@@ -415,8 +415,10 @@ participants: ...@@ -415,8 +415,10 @@ participants:
# Default to 1 # Default to 1
count: 1 count: 1
# Snooper local flag for a participant.
# 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 null and then set to global snooper default (false) # Snooper dumps all JSON-RPC requests and responses including BeaconAPI, EngineAPI and ExecutionAPI.
# Default to null
snooper_enabled: null snooper_enabled: null
# Enables Ethereum Metrics Exporter for this participant. Can be set globally. # Enables Ethereum Metrics Exporter for this participant. Can be set globally.
...@@ -625,7 +627,7 @@ network_params: ...@@ -625,7 +627,7 @@ network_params:
# Maximum size of gossip messages in bytes # Maximum size of gossip messages in bytes
# 10 * 2**20 (= 10485760, 10 MiB) # 10 * 2**20 (= 10485760, 10 MiB)
# Defaults to 10485760 (10MB) # Defaults to 10485760 (10MB)
gossip_max_size: 10485760 max_payload_size: 10485760
...@@ -641,13 +643,12 @@ network_params: ...@@ -641,13 +643,12 @@ network_params:
additional_services: additional_services:
- assertoor - assertoor
- broadcaster - broadcaster
- tx_spammer - tx_fuzz
- blob_spammer
- custom_flood - custom_flood
- goomy_blob - spamoor
- el_forkmon - spamoor_blob
- forkmon
- blockscout - blockscout
- beacon_metrics_gazer
- dora - dora
- full_beaconchain_explorer - full_beaconchain_explorer
- prometheus_grafana - prometheus_grafana
...@@ -679,20 +680,12 @@ dora_params: ...@@ -679,20 +680,12 @@ dora_params:
env: {} env: {}
# Configuration place for transaction spammer - https://github.com/MariusVanDerWijden/tx-fuzz # Configuration place for transaction spammer - https://github.com/MariusVanDerWijden/tx-fuzz
tx_spammer_params: tx_fuzz_params:
# TX Spammer docker image to use # TX Spammer docker image to use
# Defaults to the latest master image # Defaults to the latest master image
image: "ethpandaops/tx-fuzz:master" image: "ethpandaops/tx-fuzz:master"
# A list of optional extra params that will be passed to the TX Spammer container for modifying its behaviour # A list of optional extra params that will be passed to the TX Spammer container for modifying its behaviour
tx_spammer_extra_args: [] tx_fuzz_extra_args: []
# Configuration place for goomy the blob spammer - https://github.com/ethpandaops/goomy-blob
goomy_blob_params:
# Goomy Blob docker image to use
# Defaults to the latest
image: "ethpandaops/goomy-blob:latest"
# A list of optional params that will be passed to the blob-spammer comamnd for modifying its behaviour
goomy_blob_args: []
# Configuration place for prometheus # Configuration place for prometheus
prometheus_params: prometheus_params:
...@@ -796,7 +789,9 @@ wait_for_finalization: false ...@@ -796,7 +789,9 @@ wait_for_finalization: false
# This value will be overridden by participant-specific values # This value will be overridden by participant-specific values
global_log_level: "info" global_log_level: "info"
# EngineAPI Snooper global flags for all participants # Snooper global flag for all participants
# Snooper can be enabled with the `snooper_enabled` flag per client or globally
# Snooper dumps all JSON-RPC requests and responses including BeaconAPI, EngineAPI and ExecutionAPI.
# Default to false # Default to false
snooper_enabled: false snooper_enabled: false
...@@ -812,7 +807,7 @@ parallel_keystore_generation: false ...@@ -812,7 +807,7 @@ parallel_keystore_generation: false
# Default to false # Default to false
disable_peer_scoring: false disable_peer_scoring: false
# Whether the environment should be persistent; this is WIP and is slowly being rolled out accross services # Whether the environment should be persistent; this is WIP and is slowly being rolled out across services
# Note this requires Kurtosis greater than 0.85.49 to work # Note this requires Kurtosis greater than 0.85.49 to work
# Note Erigon, Besu, Teku persistence is not currently supported with docker. # Note Erigon, Besu, Teku persistence is not currently supported with docker.
# Defaults to false # Defaults to false
...@@ -823,7 +818,7 @@ persistent: false ...@@ -823,7 +818,7 @@ persistent: false
# Defaults to empty cache url # Defaults to empty cache url
# Images pulled from dockerhub will be prefixed with "/dh/" by default (docker.io) # Images pulled from dockerhub will be prefixed with "/dh/" by default (docker.io)
# Images pulled from github registry will be prefixed with "/gh/" by default (ghcr.io) # Images pulled from github registry will be prefixed with "/gh/" by default (ghcr.io)
# Images pulled from google registory will be prefixed with "/gcr/" by default (gcr.io) # Images pulled from google registry will be prefixed with "/gcr/" by default (gcr.io)
# If you want to use a local image in combination with the cache, do not put "/" in your local image name # If you want to use a local image in combination with the cache, do not put "/" in your local image name
docker_cache_params: docker_cache_params:
enabled: false enabled: false
...@@ -844,13 +839,13 @@ mev_type: null ...@@ -844,13 +839,13 @@ mev_type: null
# Parameters if MEV is used # Parameters if MEV is used
mev_params: mev_params:
# The image to use for MEV boost relay # The image to use for MEV boost relay
mev_relay_image: flashbots/mev-boost-relay mev_relay_image: ethpandaops/mev-boost-relay:main
# The image to use for the builder # The image to use for the builder
mev_builder_image: ethpandaops/flashbots-builder:main mev_builder_image: ethpandaops/flashbots-builder:main
# The image to use for the CL builder # The image to use for the CL builder
mev_builder_cl_image: sigp/lighthouse:latest mev_builder_cl_image: sigp/lighthouse:latest
# The image to use for mev-boost # The image to use for mev-boost
mev_boost_image: flashbots/mev-boost mev_boost_image: ethpandaops/mev-boost:develop
# Parameters for MEV Boost. This overrides all arguments of the mev-boost container # Parameters for MEV Boost. This overrides all arguments of the mev-boost container
mev_boost_args: [] mev_boost_args: []
# Extra parameters to send to the API # Extra parameters to send to the API
...@@ -936,14 +931,15 @@ checkpoint_sync_enabled: false ...@@ -936,14 +931,15 @@ checkpoint_sync_enabled: false
# Global flag to set checkpoint sync url # Global flag to set checkpoint sync url
checkpoint_sync_url: "" checkpoint_sync_url: ""
# Spamoor params # Configuration place for spamoor as transaction spammer
spamoor_params: spamoor_params:
# The image to use for spamoor # The image to use for spamoor
image: ethpandaops/spamoor:latest image: ethpandaops/spamoor:latest
# The type of transactions to send # The spamoor scenario to use (see https://github.com/ethpandaops/spamoor)
# Valid values are eoatx, erctx, deploytx, depoy-destruct, blobs, gasburnertx # Valid scenarios are:
# eoatx, erctx, deploytx, deploy-destruct, blobs, gasburnertx
# Defaults to eoatx # Defaults to eoatx
tx_type: eoatx scenario: eoatx
# Throughput of spamoor # Throughput of spamoor
# Defaults to 1000 # Defaults to 1000
throughput: 1000 throughput: 1000
...@@ -957,9 +953,42 @@ spamoor_params: ...@@ -957,9 +953,42 @@ spamoor_params:
# Defaults to empty # Defaults to empty
spamoor_extra_args: [] spamoor_extra_args: []
# Configuration place for spammor as blob spammer
spamoor_blob_params:
# spamoor docker image to use
# Defaults to the latest
image: "ethpandaops/spamoor:latest"
# The spamoor blob scenario to use (see https://github.com/ethpandaops/spamoor)
# Valid blob scenarios are:
# - blobs (normal blob transactions only)
# - blob-combined (normal & special blobs with replacements)
# - blob-conflicting (conflicting blob & dynfee transactions)
# - blob-replacements (normal blobs with replacement blob transactions)
# Defaults to blob-combined
scenario: blob-combined
# Throughput of spamoor
# Defaults to 3
throughput: 3
# Maximum number of blobs per transaction
# Defaults to 2
max_blobs: 2
# Max pending blob transactions for spamoor
# Defaults to 6
max_pending: 6
# Max wallets for spamoor
# Defaults to 20
max_wallets: 20
# A list of optional params that will be passed to the spamoor command for modifying its behaviour
spamoor_extra_args: []
# Ethereum genesis generator params
ethereum_genesis_generator_params:
# The image to use for ethereum genesis generator
image: ethpandaops/ethereum-genesis-generator:3.7.2
# Global parameter to set the exit ip address of services and public ports # Global parameter to set the exit ip address of services and public ports
port_publisher: port_publisher:
# if you have a service that you want to expose on a specific interfact; set that IP here # if you have a service that you want to expose on a specific interface; set that IP here
# if you set it to auto it gets the public ip from ident.me and sets it # if you set it to auto it gets the public ip from ident.me and sets it
# Defaults to constants.PRIVATE_IP_ADDRESS_PLACEHOLDER # Defaults to constants.PRIVATE_IP_ADDRESS_PLACEHOLDER
# The default value just means its the IP address of the container in which the service is running # The default value just means its the IP address of the container in which the service is running
...@@ -1083,7 +1112,7 @@ network_params: ...@@ -1083,7 +1112,7 @@ network_params:
</details> </details>
<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, tx_fuzz, EngineAPI snooper, and a testnet verifier)</summary>
```yaml ```yaml
participants: participants:
...@@ -1188,9 +1217,8 @@ Here's a table of where the keys are used ...@@ -1188,9 +1217,8 @@ Here's a table of where the keys are used
|---------------|---------------------|------------------|-----------------|-----------------------------| |---------------|---------------------|------------------|-----------------|-----------------------------|
| 0 | Builder | ✅ | | As coinbase | | 0 | Builder | ✅ | | As coinbase |
| 0 | mev_custom_flood | | ✅ | As the receiver of balance | | 0 | mev_custom_flood | | ✅ | As the receiver of balance |
| 1 | blob_spammer | ✅ | | As the sender of blobs |
| 3 | transaction_spammer | ✅ | | To spam transactions with | | 3 | transaction_spammer | ✅ | | To spam transactions with |
| 4 | goomy_blob | ✅ | | As the sender of blobs | | 4 | spamoor_blob | ✅ | | As the sender of blobs |
| 6 | mev_flood | ✅ | | As the contract owner | | 6 | mev_flood | ✅ | | As the contract owner |
| 7 | mev_flood | ✅ | | As the user_key | | 7 | mev_flood | ✅ | | As the user_key |
| 8 | assertoor | ✅ | ✅ | As the funding for tests | | 8 | assertoor | ✅ | ✅ | As the funding for tests |
......
...@@ -79,7 +79,7 @@ There are only two major difference between CL client and EL client launchers. F ...@@ -79,7 +79,7 @@ There are only two major difference between CL client and EL client launchers. F
After the Ethereum network is up and running, this package starts several auxiliary containers to make it easier to work with the Ethereum network. At time of writing, these are: After the Ethereum network is up and running, this package starts several auxiliary containers to make it easier to work with the Ethereum network. At time of writing, these are:
- [Forkmon](https://github.com/ethpandaops/ethereum-package/tree/main/src/el_forkmon), a "fork monitor" web UI for visualizing the CL clients' forks - [Forkmon](https://github.com/ethpandaops/ethereum-package/tree/main/src/forkmon), a "fork monitor" web UI for visualizing the CL clients' forks
- [Prometheus](https://github.com/ethpandaops/ethereum-package/tree/main/src/prometheus) for collecting client node metrics - [Prometheus](https://github.com/ethpandaops/ethereum-package/tree/main/src/prometheus) for collecting client node metrics
- [Grafana](https://github.com/ethpandaops/ethereum-package/tree/main/src/grafana) for visualizing client node metrics - [Grafana](https://github.com/ethpandaops/ethereum-package/tree/main/src/grafana) for visualizing client node metrics
- [An ETH transaction spammer](https://github.com/ethpandaops/ethereum-package/tree/main/src/transaction_spammer), which [has been forked off](https://github.com/kurtosis-tech/tx-fuzz) of [Marius' transaction spammer code](https://github.com/MariusVanDerWijden/tx-fuzz) so that it can run as a container - [An ETH transaction spammer](https://github.com/ethpandaops/ethereum-package/tree/main/src/transaction_spammer), which [has been forked off](https://github.com/kurtosis-tech/tx-fuzz) of [Marius' transaction spammer code](https://github.com/MariusVanDerWijden/tx-fuzz) so that it can run as a container
......
...@@ -11,15 +11,10 @@ validator_ranges = import_module( ...@@ -11,15 +11,10 @@ validator_ranges = import_module(
"./src/prelaunch_data_generator/validator_keystores/validator_ranges_generator.star" "./src/prelaunch_data_generator/validator_keystores/validator_ranges_generator.star"
) )
transaction_spammer = import_module( tx_fuzz = import_module("./src/tx_fuzz/tx_fuzz.star")
"./src/transaction_spammer/transaction_spammer.star" spamoor_blob = import_module("./src/spamoor_blob/spamoor_blob.star")
) forkmon = import_module("./src/forkmon/forkmon_launcher.star")
blob_spammer = import_module("./src/blob_spammer/blob_spammer.star")
goomy_blob = import_module("./src/goomy_blob/goomy_blob.star")
el_forkmon = import_module("./src/el_forkmon/el_forkmon_launcher.star")
beacon_metrics_gazer = import_module(
"./src/beacon_metrics_gazer/beacon_metrics_gazer_launcher.star"
)
dora = import_module("./src/dora/dora_launcher.star") dora = import_module("./src/dora/dora_launcher.star")
dugtrio = import_module("./src/dugtrio/dugtrio_launcher.star") dugtrio = import_module("./src/dugtrio/dugtrio_launcher.star")
blutgang = import_module("./src/blutgang/blutgang_launcher.star") blutgang = import_module("./src/blutgang/blutgang_launcher.star")
...@@ -255,9 +250,10 @@ def run(plan, args={}): ...@@ -255,9 +250,10 @@ def run(plan, args={}):
plan, plan,
el_uri, el_uri,
beacon_uri, beacon_uri,
raw_jwt_secret, jwt_file,
args_with_right_defaults.global_log_level, args_with_right_defaults.global_log_level,
global_node_selectors, global_node_selectors,
args_with_right_defaults.mev_params,
) )
mev_endpoints.append(endpoint) mev_endpoints.append(endpoint)
mev_endpoint_names.append(constants.MOCK_MEV_TYPE) mev_endpoint_names.append(constants.MOCK_MEV_TYPE)
...@@ -417,6 +413,7 @@ def run(plan, args={}): ...@@ -417,6 +413,7 @@ def run(plan, args={}):
mev_endpoints, mev_endpoints,
el_cl_data_files_artifact_uuid, el_cl_data_files_artifact_uuid,
global_node_selectors, global_node_selectors,
final_genesis_timestamp,
) )
else: else:
fail("Invalid MEV type") fail("Invalid MEV type")
...@@ -438,54 +435,27 @@ def run(plan, args={}): ...@@ -438,54 +435,27 @@ def run(plan, args={}):
for index, additional_service in enumerate( for index, additional_service in enumerate(
args_with_right_defaults.additional_services args_with_right_defaults.additional_services
): ):
if additional_service == "tx_spammer": if additional_service == "tx_fuzz":
plan.print("Launching transaction spammer") plan.print("Launching tx-fuzz")
tx_spammer_params = args_with_right_defaults.tx_spammer_params tx_fuzz_params = args_with_right_defaults.tx_fuzz_params
transaction_spammer.launch_transaction_spammer( tx_fuzz.launch_tx_fuzz(
plan, plan,
prefunded_accounts, prefunded_accounts,
fuzz_target, fuzz_target,
tx_spammer_params, tx_fuzz_params,
global_node_selectors, global_node_selectors,
) )
plan.print("Successfully launched transaction spammer") plan.print("Successfully launched tx-fuzz")
elif additional_service == "blob_spammer":
plan.print("Launching Blob spammer")
blob_spammer.launch_blob_spammer(
plan,
prefunded_accounts,
fuzz_target,
all_cl_contexts[0],
network_params.deneb_fork_epoch,
network_params.seconds_per_slot,
network_params.genesis_delay,
global_node_selectors,
args_with_right_defaults.tx_spammer_params,
)
plan.print("Successfully launched blob spammer")
elif additional_service == "goomy_blob":
plan.print("Launching Goomy the blob spammer")
goomy_blob_params = args_with_right_defaults.goomy_blob_params
goomy_blob.launch_goomy_blob(
plan,
prefunded_accounts,
all_el_contexts,
all_cl_contexts[0],
network_params.seconds_per_slot,
goomy_blob_params,
global_node_selectors,
)
plan.print("Successfully launched goomy the blob spammer")
# We need a way to do time.sleep # We need a way to do time.sleep
# TODO add code that waits for CL genesis # TODO add code that waits for CL genesis
elif additional_service == "el_forkmon": elif additional_service == "forkmon":
plan.print("Launching el forkmon") plan.print("Launching el forkmon")
el_forkmon_config_template = read_file( forkmon_config_template = read_file(
static_files.EL_FORKMON_CONFIG_TEMPLATE_FILEPATH static_files.FORKMON_CONFIG_TEMPLATE_FILEPATH
) )
el_forkmon.launch_el_forkmon( forkmon.launch_forkmon(
plan, plan,
el_forkmon_config_template, forkmon_config_template,
all_el_contexts, all_el_contexts,
global_node_selectors, global_node_selectors,
args_with_right_defaults.port_publisher, args_with_right_defaults.port_publisher,
...@@ -493,24 +463,6 @@ def run(plan, args={}): ...@@ -493,24 +463,6 @@ def run(plan, args={}):
args_with_right_defaults.docker_cache_params, args_with_right_defaults.docker_cache_params,
) )
plan.print("Successfully launched execution layer forkmon") plan.print("Successfully launched execution layer forkmon")
elif additional_service == "beacon_metrics_gazer":
plan.print("Launching beacon metrics gazer")
beacon_metrics_gazer_prometheus_metrics_job = (
beacon_metrics_gazer.launch_beacon_metrics_gazer(
plan,
all_cl_contexts,
network_params,
global_node_selectors,
args_with_right_defaults.port_publisher,
index,
args_with_right_defaults.docker_cache_params,
)
)
launch_prometheus_grafana = True
prometheus_additional_metrics_jobs.append(
beacon_metrics_gazer_prometheus_metrics_job
)
plan.print("Successfully launched beacon metrics gazer")
elif additional_service == "blockscout": elif additional_service == "blockscout":
plan.print("Launching blockscout") plan.print("Launching blockscout")
blockscout_sc_verif_url = blockscout.launch_blockscout( blockscout_sc_verif_url = blockscout.launch_blockscout(
...@@ -697,6 +649,15 @@ def run(plan, args={}): ...@@ -697,6 +649,15 @@ def run(plan, args={}):
args_with_right_defaults.spamoor_params, args_with_right_defaults.spamoor_params,
global_node_selectors, global_node_selectors,
) )
elif additional_service == "spamoor_blob":
plan.print("Launching spamoor as blob spammer")
spamoor_blob.launch_spamoor_blob(
plan,
prefunded_accounts,
all_el_contexts,
args_with_right_defaults.spamoor_blob_params,
global_node_selectors,
)
elif additional_service == "bunnyfinder": elif additional_service == "bunnyfinder":
plan.print("Launching bunnyfinder") plan.print("Launching bunnyfinder")
bunnyfinder_config_template = read_file( bunnyfinder_config_template = read_file(
......
participants: participants:
- el_type: besu # EL
cl_type: prysm
cl_image: "tscel/bf.beacon:v5.2.0"
vc_image: "tscel/bf.validator:v5.2.0"
validator_count: 86
count: 1
cl_extra_env_vars: { "ATTACKER_SERVICE_URL":"http://172.17.0.1:12000"}
vc_extra_env_vars: { "ATTACKER_SERVICE_URL":"http://172.17.0.1:12000"}
- el_type: geth - el_type: geth
el_image: ethereum/client-go:latest
el_log_level: ""
el_extra_env_vars: {}
el_extra_labels: {}
el_extra_params: []
el_tolerations: []
el_volume_size: 0
el_min_cpu: 0
el_max_cpu: 0
el_min_mem: 0
el_max_mem: 0
# CL
cl_type: lighthouse cl_type: lighthouse
validator_count: 85 cl_image: sigp/lighthouse:latest-unstable
- el_type: nethermind cl_log_level: ""
cl_type: teku cl_extra_env_vars: {}
validator_count: 85 cl_extra_labels: {}
cl_extra_params: []
mev_type: null cl_tolerations: []
cl_volume_size: 0
cl_min_cpu: 0
cl_max_cpu: 0
cl_min_mem: 0
cl_max_mem: 0
supernode: false
use_separate_vc: true
# Validator
vc_type: lighthouse
vc_image: sigp/lighthouse:latest-unstable
vc_log_level: ""
vc_extra_env_vars: {}
vc_extra_labels: {}
vc_extra_params: []
vc_tolerations: []
vc_min_cpu: 0
vc_max_cpu: 0
vc_min_mem: 0
vc_max_mem: 0
validator_count: null
use_remote_signer: false
# Remote signer
remote_signer_type: web3signer
remote_signer_image: consensys/web3signer:latest
remote_signer_extra_env_vars: {}
remote_signer_extra_labels: {}
remote_signer_extra_params: []
remote_signer_tolerations: []
remote_signer_min_cpu: 0
remote_signer_max_cpu: 0
remote_signer_min_mem: 0
remote_signer_max_mem: 0
# participant specific
node_selectors: {}
tolerations: []
count: 2
snooper_enabled: false
ethereum_metrics_exporter_enabled: false
xatu_sentry_enabled: false
prometheus_config:
scrape_interval: 15s
labels: {}
blobber_enabled: false
blobber_extra_params: []
builder_network_params: null
keymanager_enabled: false
network_params: network_params:
deneb_fork_epoch: 1 network: kurtosis
network_id: "3151908"
deposit_contract_address: "0x4242424242424242424242424242424242424242"
seconds_per_slot: 12 seconds_per_slot: 12
num_validator_keys_per_node: 32 num_validator_keys_per_node: 64
preregistered_validator_keys_mnemonic:
additional_services: "giant issue aisle success illegal bike spike
- bunnyfinder question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy
very lucky have athlete"
bunnyfinder_params: preregistered_validator_count: 0
image: 'tscel/bunnyfinder:latest' genesis_delay: 20
strategy: 'random,exante' genesis_gaslimit: 30000000
dbconnect: 'eth:12345678@tcp(172.17.0.1:3306)/eth' max_per_epoch_activation_churn_limit: 8
max_malicious_idx: "85" churn_limit_quotient: 65536
duration_per_strategy: "30" ejection_balance: 16000000000
openai_key: "" eth1_follow_distance: 2048
openai_base_url: "" min_validator_withdrawability_delay: 256
llm_model: "" shard_committee_period: 256
deneb_fork_epoch: 0
electra_fork_epoch: 100000000
fulu_fork_epoch: 100000001
network_sync_base_url: https://snapshots.ethpandaops.io/
data_column_sidecar_subnet_count: 128
samples_per_slot: 8
custody_requirement: 4
max_blobs_per_block_electra: 9
target_blobs_per_block_electra: 6
max_blobs_per_block_fulu: 12
target_blobs_per_block_fulu: 9
additional_preloaded_contracts: {}
devnet_repo: ethpandaops
prefunded_accounts: {}
additional_services: []
dora_params:
image: ""
tx_fuzz_params:
tx_fuzz_extra_args: []
spamoor_blob_params:
spamoor_extra_args: []
prometheus_params:
storage_tsdb_retention_time: "1d"
storage_tsdb_retention_size: "512MB"
min_cpu: 10
max_cpu: 1000
min_mem: 128
max_mem: 2048
grafana_params:
additional_dashboards: []
min_cpu: 10
max_cpu: 1000
min_mem: 128
max_mem: 2048
assertoor_params:
image: ""
run_stability_check: false
run_block_proposal_check: false
run_transaction_test: false
run_blob_transaction_test: false
run_opcodes_transaction_test: false
run_lifecycle_test: false
tests: []
wait_for_finalization: false
global_log_level: info
snooper_enabled: false
ethereum_metrics_exporter_enabled: false
parallel_keystore_generation: false
disable_peer_scoring: false
persistent: false
mev_type: null
mev_params:
mev_relay_image: ethpandaops/mev-boost-relay:main
mev_builder_image: ethpandaops/flashbots-builder:main
mev_builder_cl_image: sigp/lighthouse:latest
mev_boost_image: ethpandaops/mev-boost:develop
mev_boost_args: ["mev-boost", "--relay-check"]
mev_relay_api_extra_args: []
mev_relay_housekeeper_extra_args: []
mev_relay_website_extra_args: []
mev_builder_extra_args: []
mev_builder_prometheus_config:
scrape_interval: 15s
labels: {}
mev_flood_image: flashbots/mev-flood
mev_flood_extra_args: []
mev_flood_seconds_per_bundle: 15
custom_flood_params:
interval_between_transactions: 1
xatu_sentry_enabled: false
xatu_sentry_params:
xatu_sentry_image: ethpandaops/xatu-sentry
xatu_server_addr: localhost:8000
xatu_server_tls: false
xatu_server_headers: {}
beacon_subscriptions:
- attestation
- block
- chain_reorg
- finalized_checkpoint
- head
- voluntary_exit
- contribution_and_proof
- blob_sidecar
apache_port: 40000
global_tolerations: []
global_node_selectors: {}
keymanager_enabled: false
checkpoint_sync_enabled: false
checkpoint_sync_url: ""
ethereum_genesis_generator_params:
image: ethpandaops/ethereum-genesis-generator:3.7.2
port_publisher:
nat_exit_ip: KURTOSIS_IP_ADDR_PLACEHOLDER
el:
enabled: false
public_port_start: 32000
cl:
enabled: false
public_port_start: 33000
vc:
enabled: false
public_port_start: 34000
remote_signer:
enabled: false
public_port_start: 35000
additional_services:
enabled: false
public_port_start: 36000
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"
preregistered_validator_count: 0
genesis_delay: 20
genesis_gaslimit: 30000000
max_per_epoch_activation_churn_limit: 8
churn_limit_quotient: 65536
ejection_balance: 16000000000
eth1_follow_distance: 2048
min_validator_withdrawability_delay: 256
shard_committee_period: 256
deneb_fork_epoch: 0
electra_fork_epoch: 100000000
fulu_fork_epoch: 100000001
network_sync_base_url: https://snapshots.ethpandaops.io/
data_column_sidecar_subnet_count: 128
samples_per_slot: 8
custody_requirement: 4
max_blobs_per_block_electra: 9
target_blobs_per_block_electra: 6
max_blobs_per_block_fulu: 12
target_blobs_per_block_fulu: 9
additional_preloaded_contracts: {}
devnet_repo: ethpandaops
prefunded_accounts: {}
additional_services: []
dora_params:
image: ""
tx_fuzz_params:
tx_fuzz_extra_args: []
spamoor_blob_params:
spamoor_extra_args: []
prometheus_params:
storage_tsdb_retention_time: "1d"
storage_tsdb_retention_size: "512MB"
min_cpu: 10
max_cpu: 1000
min_mem: 128
max_mem: 2048
grafana_params:
additional_dashboards: []
min_cpu: 10
max_cpu: 1000
min_mem: 128
max_mem: 2048
assertoor_params:
image: ""
run_stability_check: false
run_block_proposal_check: false
run_transaction_test: false
run_blob_transaction_test: false
run_opcodes_transaction_test: false
run_lifecycle_test: false
tests: []
wait_for_finalization: false
global_log_level: info
snooper_enabled: false
ethereum_metrics_exporter_enabled: false
parallel_keystore_generation: false
disable_peer_scoring: false
persistent: false
mev_type: null
mev_params:
mev_relay_image: ethpandaops/mev-boost-relay:main
mev_builder_image: ethpandaops/flashbots-builder:main
mev_builder_cl_image: sigp/lighthouse:latest
mev_boost_image: ethpandaops/mev-boost:develop
mev_boost_args: ["mev-boost", "--relay-check"]
mev_relay_api_extra_args: []
mev_relay_housekeeper_extra_args: []
mev_relay_website_extra_args: []
mev_builder_extra_args: []
mev_builder_prometheus_config:
scrape_interval: 15s
labels: {}
mev_flood_image: flashbots/mev-flood
mev_flood_extra_args: []
mev_flood_seconds_per_bundle: 15
custom_flood_params:
interval_between_transactions: 1
xatu_sentry_enabled: false
xatu_sentry_params:
xatu_sentry_image: ethpandaops/xatu-sentry
xatu_server_addr: localhost:8000
xatu_server_tls: false
xatu_server_headers: {}
beacon_subscriptions:
- attestation
- block
- chain_reorg
- finalized_checkpoint
- head
- voluntary_exit
- contribution_and_proof
- blob_sidecar
apache_port: 40000
global_tolerations: []
global_node_selectors: {}
keymanager_enabled: false
checkpoint_sync_enabled: false
checkpoint_sync_url: ""
ethereum_genesis_generator_params:
image: ethpandaops/ethereum-genesis-generator:3.7.2
port_publisher:
nat_exit_ip: KURTOSIS_IP_ADDR_PLACEHOLDER
el:
enabled: false
public_port_start: 32000
cl:
enabled: false
public_port_start: 33000
vc:
enabled: false
public_port_start: 34000
remote_signer:
enabled: false
public_port_start: 35000
additional_services:
enabled: false
public_port_start: 36000
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
"include-v-in-tag": false, "include-v-in-tag": false,
"include-component-in-tag": false, "include-component-in-tag": false,
"bump-minor-pre-major": true, "bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": true,
"packages": { "packages": {
".": { ".": {
"package-name": "ethereum-package" "package-name": "ethereum-package"
......
...@@ -18,7 +18,7 @@ VALIDATOR_RANGES_ARTIFACT_NAME = "validator-ranges" ...@@ -18,7 +18,7 @@ VALIDATOR_RANGES_ARTIFACT_NAME = "validator-ranges"
MIN_CPU = 100 MIN_CPU = 100
MAX_CPU = 1000 MAX_CPU = 1000
MIN_MEMORY = 128 MIN_MEMORY = 128
MAX_MEMORY = 2048 MAX_MEMORY = 8192
USED_PORTS = { USED_PORTS = {
HTTP_PORT_ID: shared_utils.new_port_spec( HTTP_PORT_ID: shared_utils.new_port_spec(
...@@ -121,6 +121,10 @@ def get_config( ...@@ -121,6 +121,10 @@ def get_config(
IMAGE_NAME = assertoor_params.image IMAGE_NAME = assertoor_params.image
if assertoor_params.image == constants.DEFAULT_ASSERTOOR_IMAGE:
if network_params.fulu_fork_epoch < constants.FULU_FORK_EPOCH:
IMAGE_NAME = "ethpandaops/assertoor:fulu-support"
return ServiceConfig( return ServiceConfig(
image=IMAGE_NAME, image=IMAGE_NAME,
ports=USED_PORTS, ports=USED_PORTS,
......
shared_utils = import_module("../shared_utils/shared_utils.star")
prometheus = import_module("../prometheus/prometheus_launcher.star")
constants = import_module("../package_io/constants.star")
SERVICE_NAME = "beacon-metrics-gazer"
IMAGE_NAME = "ethpandaops/beacon-metrics-gazer:master"
HTTP_PORT_NUMBER = 8080
METRICS_PATH = "/metrics"
BEACON_METRICS_GAZER_CONFIG_FILENAME = "validator-ranges.yaml"
BEACON_METRICS_GAZER_CONFIG_MOUNT_DIRPATH_ON_SERVICE = "/config"
VALIDATOR_RANGES_ARTIFACT_NAME = "validator-ranges"
USED_PORTS = {
constants.HTTP_PORT_ID: shared_utils.new_port_spec(
HTTP_PORT_NUMBER,
shared_utils.TCP_PROTOCOL,
shared_utils.HTTP_APPLICATION_PROTOCOL,
)
}
# The min/max CPU/memory that beacon-metrics-gazer can use
MIN_CPU = 10
MAX_CPU = 500
MIN_MEMORY = 20
MAX_MEMORY = 300
def launch_beacon_metrics_gazer(
plan,
cl_contexts,
network_params,
global_node_selectors,
port_publisher,
additional_service_index,
docker_cache_params,
):
config = get_config(
cl_contexts[0].beacon_http_url,
global_node_selectors,
port_publisher,
additional_service_index,
docker_cache_params,
)
beacon_metrics_gazer_service = plan.add_service(SERVICE_NAME, config)
return prometheus.new_metrics_job(
job_name=SERVICE_NAME,
endpoint="{0}:{1}".format(
beacon_metrics_gazer_service.ip_address, HTTP_PORT_NUMBER
),
metrics_path=METRICS_PATH,
labels={
"service": SERVICE_NAME,
},
)
def get_config(
beacon_http_url,
node_selectors,
port_publisher,
additional_service_index,
docker_cache_params,
):
config_file_path = shared_utils.path_join(
BEACON_METRICS_GAZER_CONFIG_MOUNT_DIRPATH_ON_SERVICE,
BEACON_METRICS_GAZER_CONFIG_FILENAME,
)
public_ports = shared_utils.get_additional_service_standard_public_port(
port_publisher,
constants.HTTP_PORT_ID,
additional_service_index,
0,
)
return ServiceConfig(
image=shared_utils.docker_cache_image_calc(
docker_cache_params,
IMAGE_NAME,
),
ports=USED_PORTS,
public_ports=public_ports,
files={
BEACON_METRICS_GAZER_CONFIG_MOUNT_DIRPATH_ON_SERVICE: VALIDATOR_RANGES_ARTIFACT_NAME,
},
cmd=[
"{0}".format(beacon_http_url),
"--ranges-file",
config_file_path,
"--port",
"{0}".format(HTTP_PORT_NUMBER),
"--address",
"0.0.0.0",
"-v",
],
min_cpu=MIN_CPU,
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
SERVICE_NAME = "blob-spammer"
ENTRYPOINT_ARGS = ["/bin/sh", "-c"]
# The min/max CPU/memory that blob-spammer can use
MIN_CPU = 100
MAX_CPU = 1000
MIN_MEMORY = 256
MAX_MEMORY = 512
def launch_blob_spammer(
plan,
prefunded_addresses,
el_uri,
cl_context,
deneb_fork_epoch,
seconds_per_slot,
genesis_delay,
global_node_selectors,
tx_spammer_params,
):
config = get_config(
prefunded_addresses,
el_uri,
cl_context,
deneb_fork_epoch,
seconds_per_slot,
genesis_delay,
global_node_selectors,
tx_spammer_params.image,
)
plan.add_service(SERVICE_NAME, config)
def get_config(
prefunded_addresses,
el_uri,
cl_context,
deneb_fork_epoch,
seconds_per_slot,
genesis_delay,
node_selectors,
image,
):
dencunTime = (deneb_fork_epoch * 32 * seconds_per_slot) + genesis_delay
return ServiceConfig(
image=image,
entrypoint=ENTRYPOINT_ARGS,
cmd=[
" && ".join(
[
"apk update",
"apk add curl jq",
'current_epoch=$(curl -s {0}/eth/v2/beacon/blocks/head | jq -r ".version")'.format(
cl_context.beacon_http_url,
),
"echo $current_epoch",
'while [ $current_epoch != "deneb" ]; do echo "waiting for deneb, current epoch is $current_epoch"; current_epoch=$(curl -s {0}/eth/v2/beacon/blocks/head | jq -r ".version"); sleep {1}; done'.format(
cl_context.beacon_http_url,
seconds_per_slot,
),
'echo "sleep is over, starting to send blob transactions"',
"/tx-fuzz.bin blobs --rpc={} --sk={}".format(
el_uri,
prefunded_addresses[1].private_key,
),
]
)
],
min_cpu=MIN_CPU,
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
...@@ -230,13 +230,13 @@ def get_config_frontend( ...@@ -230,13 +230,13 @@ def get_config_frontend(
blockscout_params.frontend_image, blockscout_params.frontend_image,
), ),
ports=FRONTEND_USED_PORTS, ports=FRONTEND_USED_PORTS,
public_ports=FRONTEND_USED_PORTS,
env_vars={ env_vars={
"NEXT_PUBLIC_API_PROTOCOL": "http", "NEXT_PUBLIC_API_PROTOCOL": "http",
"NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL": "ws", "NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL": "ws",
"NEXT_PUBLIC_NETWORK_NAME": "Kurtosis", "NEXT_PUBLIC_NETWORK_NAME": "Kurtosis",
"NEXT_PUBLIC_NETWORK_ID": network_params.network_id, "NEXT_PUBLIC_NETWORK_ID": network_params.network_id,
"NEXT_PUBLIC_NETWORK_RPC_URL": el_client_rpc_url, "NEXT_PUBLIC_NETWORK_RPC_URL": el_client_rpc_url,
"NEXT_PUBLIC_APP_HOST": "0.0.0.0",
"NEXT_PUBLIC_API_HOST": blockscout_service.ip_address "NEXT_PUBLIC_API_HOST": blockscout_service.ip_address
+ ":" + ":"
+ str(blockscout_service.ports["http"].number), + str(blockscout_service.ports["http"].number),
...@@ -247,6 +247,12 @@ def get_config_frontend( ...@@ -247,6 +247,12 @@ def get_config_frontend(
"NEXT_PUBLIC_HAS_BEACON_CHAIN": "true", "NEXT_PUBLIC_HAS_BEACON_CHAIN": "true",
"NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE": "validation", "NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE": "validation",
"NEXT_PUBLIC_NETWORK_ICON": "https://ethpandaops.io/logo.png", "NEXT_PUBLIC_NETWORK_ICON": "https://ethpandaops.io/logo.png",
# "NEXT_PUBLIC_APP_HOST": "0.0.0.0",
"NEXT_PUBLIC_APP_PROTOCOL": "http",
"NEXT_PUBLIC_APP_HOST": "127.0.0.1",
"NEXT_PUBLIC_APP_PORT": str(HTTP_PORT_NUMBER_FRONTEND),
"NEXT_PUBLIC_USE_NEXT_JS_PROXY": "true",
"PORT": str(HTTP_PORT_NUMBER_FRONTEND),
}, },
min_cpu=BLOCKSCOUT_MIN_CPU, min_cpu=BLOCKSCOUT_MIN_CPU,
max_cpu=BLOCKSCOUT_MAX_CPU, max_cpu=BLOCKSCOUT_MAX_CPU,
......
...@@ -224,7 +224,6 @@ def get_beacon_config( ...@@ -224,7 +224,6 @@ def get_beacon_config(
"--http", "--http",
"--http-address=0.0.0.0", "--http-address=0.0.0.0",
"--http-port={0}".format(BEACON_HTTP_PORT_NUM), "--http-port={0}".format(BEACON_HTTP_PORT_NUM),
"--slots-per-restore-point={0}".format(32 if constants.ARCHIVE_MODE else 8192),
# NOTE: This comes from: # NOTE: This comes from:
# https://github.com/sigp/lighthouse/blob/7c88f582d955537f7ffff9b2c879dcf5bf80ce13/scripts/local_testnet/beacon_node.sh # https://github.com/sigp/lighthouse/blob/7c88f582d955537f7ffff9b2c879dcf5bf80ce13/scripts/local_testnet/beacon_node.sh
# and the option says it's "useful for testing in smaller networks" (unclear what happens in larger networks) # and the option says it's "useful for testing in smaller networks" (unclear what happens in larger networks)
......
...@@ -211,7 +211,6 @@ def get_beacon_config( ...@@ -211,7 +211,6 @@ def get_beacon_config(
"--slots-per-archive-point={0}".format(32 if constants.ARCHIVE_MODE else 8192), "--slots-per-archive-point={0}".format(32 if constants.ARCHIVE_MODE else 8192),
"--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT, "--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
"--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER, "--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
"--enable-debug-rpc-endpoints=true",
# vvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv # vvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
"--disable-monitoring=false", "--disable-monitoring=false",
"--monitoring-host=0.0.0.0", "--monitoring-host=0.0.0.0",
......
...@@ -122,8 +122,13 @@ def get_config( ...@@ -122,8 +122,13 @@ def get_config(
IMAGE_NAME = dora_params.image IMAGE_NAME = dora_params.image
if network_params.electra_fork_epoch < constants.ELECTRA_FORK_EPOCH: if dora_params.image == constants.DEFAULT_DORA_IMAGE:
IMAGE_NAME = "ethpandaops/dora:master" if network_params.fulu_fork_epoch < constants.FULU_FORK_EPOCH:
IMAGE_NAME = "ethpandaops/dora:fulu-support"
if network_params.eip7732_fork_epoch < constants.EIP7732_FORK_EPOCH:
IMAGE_NAME = "ethpandaops/dora:eip7732-support"
if network_params.eip7805_fork_epoch < constants.EIP7805_FORK_EPOCH:
IMAGE_NAME = "ethpandaops/dora:eip7805-support"
return ServiceConfig( return ServiceConfig(
image=IMAGE_NAME, image=IMAGE_NAME,
......
...@@ -205,11 +205,11 @@ def get_config( ...@@ -205,11 +205,11 @@ def get_config(
"--http.corsdomain=*", "--http.corsdomain=*",
# WARNING: The admin info endpoint is enabled so that we can easily get ENR/enode, which means # WARNING: The admin info endpoint is enabled so that we can easily get ENR/enode, which means
# that users should NOT store private information in these Kurtosis nodes! # that users should NOT store private information in these Kurtosis nodes!
"--http.api=admin,engine,net,eth,web3,debug", "--http.api=admin,engine,net,eth,web3,debug,txpool",
"--ws", "--ws",
"--ws.addr=0.0.0.0", "--ws.addr=0.0.0.0",
"--ws.port={0}".format(WS_PORT_NUM), "--ws.port={0}".format(WS_PORT_NUM),
"--ws.api=admin,engine,net,eth,web3,debug", "--ws.api=admin,engine,net,eth,web3,debug,txpool",
"--ws.origins=*", "--ws.origins=*",
"--allow-insecure-unlock", "--allow-insecure-unlock",
"--nat=extip:" + port_publisher.nat_exit_ip, "--nat=extip:" + port_publisher.nat_exit_ip,
......
...@@ -135,7 +135,7 @@ def get_config( ...@@ -135,7 +135,7 @@ def get_config(
"--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER, "--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
"--Init.WebSocketsEnabled=true", "--Init.WebSocketsEnabled=true",
"--JsonRpc.Enabled=true", "--JsonRpc.Enabled=true",
"--JsonRpc.EnabledModules=net,eth,consensus,subscribe,web3,admin,debug", "--JsonRpc.EnabledModules=net,eth,consensus,subscribe,web3,admin,debug,txpool",
"--JsonRpc.Host=0.0.0.0", "--JsonRpc.Host=0.0.0.0",
"--JsonRpc.Port={0}".format(RPC_PORT_NUM), "--JsonRpc.Port={0}".format(RPC_PORT_NUM),
"--JsonRpc.WebSocketsPort={0}".format(WS_PORT_NUM), "--JsonRpc.WebSocketsPort={0}".format(WS_PORT_NUM),
......
...@@ -236,7 +236,6 @@ def get_config( ...@@ -236,7 +236,6 @@ def get_config(
): ):
image = launcher.mev_params.mev_builder_image image = launcher.mev_params.mev_builder_image
cl_client_name = service_name.split("-")[4] cl_client_name = service_name.split("-")[4]
cmd.append("--engine.experimental")
cmd.append("--rbuilder.config=" + flashbots_rbuilder.MEV_FILE_PATH_ON_CONTAINER) cmd.append("--rbuilder.config=" + flashbots_rbuilder.MEV_FILE_PATH_ON_CONTAINER)
files[ files[
flashbots_rbuilder.MEV_BUILDER_MOUNT_DIRPATH_ON_SERVICE flashbots_rbuilder.MEV_BUILDER_MOUNT_DIRPATH_ON_SERVICE
......
shared_utils = import_module("../shared_utils/shared_utils.star") shared_utils = import_module("../shared_utils/shared_utils.star")
constants = import_module("../package_io/constants.star") constants = import_module("../package_io/constants.star")
SERVICE_NAME = "el-forkmon" SERVICE_NAME = "forkmon"
IMAGE_NAME = "ethpandaops/execution-monitor:master" IMAGE_NAME = "ethpandaops/execution-monitor:master"
HTTP_PORT_NUMBER = 8080 HTTP_PORT_NUMBER = 8080
EL_FORKMON_CONFIG_FILENAME = "el-forkmon-config.toml" FORKMON_CONFIG_FILENAME = "forkmon-config.toml"
EL_FORKMON_CONFIG_MOUNT_DIRPATH_ON_SERVICE = "/config" FORKMON_CONFIG_MOUNT_DIRPATH_ON_SERVICE = "/config"
USED_PORTS = { USED_PORTS = {
constants.HTTP_PORT_ID: shared_utils.new_port_spec( constants.HTTP_PORT_ID: shared_utils.new_port_spec(
...@@ -18,14 +18,14 @@ USED_PORTS = { ...@@ -18,14 +18,14 @@ USED_PORTS = {
) )
} }
# The min/max CPU/memory that el-forkmon can use # The min/max CPU/memory that forkmon can use
MIN_CPU = 10 MIN_CPU = 10
MAX_CPU = 100 MAX_CPU = 100
MIN_MEMORY = 32 MIN_MEMORY = 32
MAX_MEMORY = 256 MAX_MEMORY = 256
def launch_el_forkmon( def launch_forkmon(
plan, plan,
config_template, config_template,
el_contexts, el_contexts,
...@@ -47,12 +47,10 @@ def launch_el_forkmon( ...@@ -47,12 +47,10 @@ def launch_el_forkmon(
config_template, template_data config_template, template_data
) )
template_and_data_by_rel_dest_filepath = {} template_and_data_by_rel_dest_filepath = {}
template_and_data_by_rel_dest_filepath[ template_and_data_by_rel_dest_filepath[FORKMON_CONFIG_FILENAME] = template_and_data
EL_FORKMON_CONFIG_FILENAME
] = template_and_data
config_files_artifact_name = plan.render_templates( config_files_artifact_name = plan.render_templates(
template_and_data_by_rel_dest_filepath, "el-forkmon-config" template_and_data_by_rel_dest_filepath, "forkmon-config"
) )
config = get_config( config = get_config(
...@@ -74,7 +72,7 @@ def get_config( ...@@ -74,7 +72,7 @@ def get_config(
docker_cache_params, docker_cache_params,
): ):
config_file_path = shared_utils.path_join( config_file_path = shared_utils.path_join(
EL_FORKMON_CONFIG_MOUNT_DIRPATH_ON_SERVICE, EL_FORKMON_CONFIG_FILENAME FORKMON_CONFIG_MOUNT_DIRPATH_ON_SERVICE, FORKMON_CONFIG_FILENAME
) )
public_ports = shared_utils.get_additional_service_standard_public_port( public_ports = shared_utils.get_additional_service_standard_public_port(
...@@ -92,7 +90,7 @@ def get_config( ...@@ -92,7 +90,7 @@ def get_config(
ports=USED_PORTS, ports=USED_PORTS,
public_ports=public_ports, public_ports=public_ports,
files={ files={
EL_FORKMON_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_files_artifact_name, FORKMON_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_files_artifact_name,
}, },
cmd=[config_file_path], cmd=[config_file_path],
min_cpu=MIN_CPU, min_cpu=MIN_CPU,
......
SERVICE_NAME = "goomy-blob-spammer"
ENTRYPOINT_ARGS = ["/bin/sh", "-c"]
# The min/max CPU/memory that goomy can use
MIN_CPU = 100
MAX_CPU = 1000
MIN_MEMORY = 20
MAX_MEMORY = 300
def launch_goomy_blob(
plan,
prefunded_addresses,
el_contexts,
cl_context,
seconds_per_slot,
goomy_blob_params,
global_node_selectors,
):
config = get_config(
prefunded_addresses,
el_contexts,
cl_context,
seconds_per_slot,
goomy_blob_params,
global_node_selectors,
)
plan.add_service(SERVICE_NAME, config)
def get_config(
prefunded_addresses,
el_contexts,
cl_context,
seconds_per_slot,
goomy_blob_params,
node_selectors,
):
goomy_cli_args = []
for index, client in enumerate(el_contexts):
goomy_cli_args.append(
"-h http://{0}:{1}".format(
client.ip_addr,
client.rpc_port_num,
)
)
goomy_args = " ".join(goomy_blob_params.goomy_blob_args)
if goomy_args == "":
goomy_args = "combined -b 2 -t 2 --max-pending 3"
goomy_cli_args.append(goomy_args)
cmd = "./blob-spammer -p {0} {1}".format(
prefunded_addresses[4].private_key, " ".join(goomy_cli_args)
)
return ServiceConfig(
image=goomy_blob_params.image,
entrypoint=ENTRYPOINT_ARGS,
cmd=[cmd],
min_cpu=MIN_CPU,
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
...@@ -30,6 +30,7 @@ def launch( ...@@ -30,6 +30,7 @@ def launch(
relays, relays,
el_cl_genesis_data, el_cl_genesis_data,
global_node_selectors, global_node_selectors,
final_genesis_timestamp,
): ):
network = ( network = (
network network
...@@ -39,15 +40,13 @@ def launch( ...@@ -39,15 +40,13 @@ def launch(
image = mev_params.mev_boost_image image = mev_params.mev_boost_image
template_data = new_config_template_data( template_data = new_config_template_data(
network, network, input_parser.MEV_BOOST_PORT, relays, final_genesis_timestamp
input_parser.MEV_BOOST_PORT,
relays,
) )
mev_rs_boost_config_template = read_file(static_files.COMMIT_BOOST_CONFIG_FILEPATH) commit_boost_config_template = read_file(static_files.COMMIT_BOOST_CONFIG_FILEPATH)
template_and_data = shared_utils.new_template_and_data( template_and_data = shared_utils.new_template_and_data(
mev_rs_boost_config_template, template_data commit_boost_config_template, template_data
) )
template_and_data_by_rel_dest_filepath = {} template_and_data_by_rel_dest_filepath = {}
...@@ -92,6 +91,7 @@ def get_config( ...@@ -92,6 +91,7 @@ def get_config(
cmd=[], cmd=[],
env_vars={ env_vars={
"CB_CONFIG": config_file_path, "CB_CONFIG": config_file_path,
"RUST_LOG": "debug",
}, },
files={ files={
CB_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_file, CB_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_file,
...@@ -111,9 +111,10 @@ def new_mev_boost_launcher(should_check_relay, relay_end_points): ...@@ -111,9 +111,10 @@ def new_mev_boost_launcher(should_check_relay, relay_end_points):
) )
def new_config_template_data(network, port, relays): def new_config_template_data(network, port, relays, final_genesis_timestamp):
return { return {
"Network": network, "Network": network,
"Port": port, "Port": port,
"Relays": relays, "Relays": relays,
"Timestamp": final_genesis_timestamp,
} }
constants = import_module("../../../package_io/constants.star") constants = import_module("../../../package_io/constants.star")
MOCK_MEV_IMAGE = "ethpandaops/mock-builder:latest" # Default image if none specified in mev_params
MOCK_MEV_SERVICE_NAME = "mock-mev" MOCK_MEV_SERVICE_NAME = "mock-mev"
MOCK_MEV_BUILDER_PORT = 18550 MOCK_MEV_BUILDER_PORT = 8560
# The min/max CPU/memory that mev-mock-builder can use # The min/max CPU/memory that rustic-builder can use
MIN_CPU = 100 MIN_CPU = 100
MAX_CPU = 1000 MAX_CPU = 1000
MIN_MEMORY = 128 MIN_MEMORY = 128
...@@ -15,26 +16,33 @@ def launch_mock_mev( ...@@ -15,26 +16,33 @@ def launch_mock_mev(
plan, plan,
el_uri, el_uri,
beacon_uri, beacon_uri,
jwt_secret, jwt_file,
global_log_level, global_log_level,
global_node_selectors, global_node_selectors,
mev_params,
): ):
mock_builder = plan.add_service( mock_builder = plan.add_service(
name=MOCK_MEV_SERVICE_NAME, name=MOCK_MEV_SERVICE_NAME,
config=ServiceConfig( config=ServiceConfig(
image=MOCK_MEV_IMAGE, image=mev_params.mock_mev_image,
ports={ ports={
"rest": PortSpec( "rest": PortSpec(
number=MOCK_MEV_BUILDER_PORT, transport_protocol="TCP" number=MOCK_MEV_BUILDER_PORT, transport_protocol="TCP"
), ),
}, },
cmd=[ cmd=[
"--jwt-secret={0}".format(jwt_secret), "--execution-endpoint=http://{0}".format(el_uri),
"--el={0}".format(el_uri), "--beacon-node=http://{0}".format(beacon_uri),
"--cl={0}".format(beacon_uri), "--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
"--bid-multiplier=5", # TODO: This could be customizable "--port={0}".format(MOCK_MEV_BUILDER_PORT),
"--address=0.0.0.0",
"--set-max-bid-value",
"--log-level={0}".format(global_log_level), "--log-level={0}".format(global_log_level),
"--builder-secret-key=" + constants.DEFAULT_MEV_SECRET_KEY[2:],
], ],
files={
constants.JWT_MOUNTPOINT_ON_CLIENTS: jwt_file,
},
min_cpu=MIN_CPU, min_cpu=MIN_CPU,
max_cpu=MAX_CPU, max_cpu=MAX_CPU,
min_memory=MIN_MEMORY, min_memory=MIN_MEMORY,
......
...@@ -59,19 +59,9 @@ def launch( ...@@ -59,19 +59,9 @@ def launch(
ethereum_genesis_generator_image = shared_utils.docker_cache_image_calc( ethereum_genesis_generator_image = shared_utils.docker_cache_image_calc(
args_with_right_defaults.docker_cache_params, args_with_right_defaults.docker_cache_params,
constants.ETHEREUM_GENESIS_GENERATOR.default_genesis_generator_image, args_with_right_defaults.ethereum_genesis_generator_params.image,
) )
# we are running electra - experimental
if network_params.electra_fork_epoch != None:
if network_params.electra_fork_epoch == 0:
ethereum_genesis_generator_image = shared_utils.docker_cache_image_calc(
args_with_right_defaults.docker_cache_params,
constants.ETHEREUM_GENESIS_GENERATOR.verkle_genesis,
)
else:
fail(
"Unsupported fork epoch configuration, need to define either deneb_fork_epoch or electra_fork_epoch"
)
return ( return (
total_number_of_validator_keys, total_number_of_validator_keys,
ethereum_genesis_generator_image, ethereum_genesis_generator_image,
......
...@@ -85,14 +85,19 @@ MOCK_MEV_TYPE = "mock" ...@@ -85,14 +85,19 @@ MOCK_MEV_TYPE = "mock"
FLASHBOTS_MEV_TYPE = "flashbots" FLASHBOTS_MEV_TYPE = "flashbots"
MEV_RS_MEV_TYPE = "mev-rs" MEV_RS_MEV_TYPE = "mev-rs"
COMMIT_BOOST_MEV_TYPE = "commit-boost" COMMIT_BOOST_MEV_TYPE = "commit-boost"
DEFAULT_DORA_IMAGE = "ethpandaops/dora:latest"
DEFAULT_ASSERTOOR_IMAGE = "ethpandaops/assertoor:latest"
DEFAULT_SNOOPER_IMAGE = "ethpandaops/rpc-snooper:latest" DEFAULT_SNOOPER_IMAGE = "ethpandaops/rpc-snooper:latest"
DEFAULT_FLASHBOTS_RELAY_IMAGE = "flashbots/mev-boost-relay:0.29.2a3" DEFAULT_ETHEREUM_GENESIS_GENERATOR_IMAGE = (
"ethpandaops/ethereum-genesis-generator:3.7.2"
)
DEFAULT_FLASHBOTS_RELAY_IMAGE = "ethpandaops/mev-boost-relay:main"
DEFAULT_FLASHBOTS_BUILDER_IMAGE = "ethpandaops/reth-rbuilder:develop" DEFAULT_FLASHBOTS_BUILDER_IMAGE = "ethpandaops/reth-rbuilder:develop"
DEFAULT_FLASHBOTS_MEV_BOOST_IMAGE = "flashbots/mev-boost" DEFAULT_FLASHBOTS_MEV_BOOST_IMAGE = "ethpandaops/mev-boost:develop"
DEFAULT_MEV_RS_IMAGE = "ethpandaops/mev-rs:main" DEFAULT_MEV_RS_IMAGE = "ethpandaops/mev-rs:main"
DEFAULT_MEV_RS_IMAGE_MINIMAL = "ethpandaops/mev-rs:main-minimal" DEFAULT_MEV_RS_IMAGE_MINIMAL = "ethpandaops/mev-rs:main-minimal"
DEFAULT_COMMIT_BOOST_MEV_BOOST_IMAGE = "ghcr.io/commit-boost/pbs:latest" DEFAULT_COMMIT_BOOST_MEV_BOOST_IMAGE = "ghcr.io/commit-boost/pbs:latest"
DEFAULT_MOCK_MEV_IMAGE = "ethpandaops/rustic-builder:main"
DEFAULT_MEV_PUBKEY = "0xa55c1285d84ba83a5ad26420cd5ad3091e49c55a813eee651cd467db38a8c8e63192f47955e9376f6b42f6d190571cb5" DEFAULT_MEV_PUBKEY = "0xa55c1285d84ba83a5ad26420cd5ad3091e49c55a813eee651cd467db38a8c8e63192f47955e9376f6b42f6d190571cb5"
DEFAULT_MEV_SECRET_KEY = ( DEFAULT_MEV_SECRET_KEY = (
"0x607a11b45a7219cc61a3d9c5fd08c7eebd602a6a19a977f8d3771d5711a550f2" "0x607a11b45a7219cc61a3d9c5fd08c7eebd602a6a19a977f8d3771d5711a550f2"
...@@ -111,6 +116,11 @@ ELECTRA_FORK_VERSION = "0x60000038" ...@@ -111,6 +116,11 @@ ELECTRA_FORK_VERSION = "0x60000038"
ELECTRA_FORK_EPOCH = 100000000 ELECTRA_FORK_EPOCH = 100000000
FULU_FORK_VERSION = "0x70000038" FULU_FORK_VERSION = "0x70000038"
FULU_FORK_EPOCH = 100000001 FULU_FORK_EPOCH = 100000001
EIP7732_FORK_EPOCH = 100000002
EIP7732_FORK_VERSION = "0x80000038"
EIP7805_FORK_EPOCH = 100000003
EIP7805_FORK_VERSION = "0x90000038"
MAX_LABEL_LENGTH = 63 MAX_LABEL_LENGTH = 63
...@@ -120,16 +130,11 @@ CONTAINER_REGISTRY = struct( ...@@ -120,16 +130,11 @@ CONTAINER_REGISTRY = struct(
gcr="gcr.io", gcr="gcr.io",
) )
ETHEREUM_GENESIS_GENERATOR = struct(
default_genesis_generator_image="ethpandaops/ethereum-genesis-generator:3.4.7", # Default
verkle_genesis="ethpandaops/ethereum-genesis-generator:verkle-gen-v1.0.0",
)
NETWORK_NAME = struct( NETWORK_NAME = struct(
mainnet="mainnet", mainnet="mainnet",
sepolia="sepolia", sepolia="sepolia",
holesky="holesky", holesky="holesky",
hoodi="hoodi",
ephemery="ephemery", ephemery="ephemery",
kurtosis="kurtosis", kurtosis="kurtosis",
verkle="verkle", verkle="verkle",
...@@ -140,12 +145,14 @@ PUBLIC_NETWORKS = ( ...@@ -140,12 +145,14 @@ PUBLIC_NETWORKS = (
"mainnet", "mainnet",
"sepolia", "sepolia",
"holesky", "holesky",
"hoodi",
) )
NETWORK_ID = { NETWORK_ID = {
"mainnet": "1", "mainnet": "1",
"sepolia": "11155111", "sepolia": "11155111",
"holesky": "17000", "holesky": "17000",
"hoodi": "560048",
} }
CHECKPOINT_SYNC_URL = { CHECKPOINT_SYNC_URL = {
...@@ -153,12 +160,14 @@ CHECKPOINT_SYNC_URL = { ...@@ -153,12 +160,14 @@ CHECKPOINT_SYNC_URL = {
"ephemery": "https://checkpoint-sync.ephemery.ethpandaops.io/", "ephemery": "https://checkpoint-sync.ephemery.ethpandaops.io/",
"sepolia": "https://checkpoint-sync.sepolia.ethpandaops.io/", "sepolia": "https://checkpoint-sync.sepolia.ethpandaops.io/",
"holesky": "https://checkpoint-sync.holesky.ethpandaops.io/", "holesky": "https://checkpoint-sync.holesky.ethpandaops.io/",
"hoodi": "https://checkpoint-sync.hoodi.ethpandaops.io/",
} }
GENESIS_VALIDATORS_ROOT = { GENESIS_VALIDATORS_ROOT = {
"mainnet": "0x4b363db94e286120d76eb905340fdd4e54bfe9f06bf33ff6cf5ad27f511bfe95", "mainnet": "0x4b363db94e286120d76eb905340fdd4e54bfe9f06bf33ff6cf5ad27f511bfe95",
"sepolia": "0xd8ea171f3c94aea21ebc42a1ed61052acf3f9209c00e4efbaaddac09ed9b8078", "sepolia": "0xd8ea171f3c94aea21ebc42a1ed61052acf3f9209c00e4efbaaddac09ed9b8078",
"holesky": "0x9143aa7c615a7f7115e2b6aac319c03529df8242ae705fba9df39b79c59fa8b1", "holesky": "0x9143aa7c615a7f7115e2b6aac319c03529df8242ae705fba9df39b79c59fa8b1",
"hoodi": "0x212f13fc4df078b6cb7db228f1c8307566dcecf900867401a92023d7ba99cb5f",
} }
DEPOSIT_CONTRACT_ADDRESS = { DEPOSIT_CONTRACT_ADDRESS = {
...@@ -166,12 +175,14 @@ DEPOSIT_CONTRACT_ADDRESS = { ...@@ -166,12 +175,14 @@ DEPOSIT_CONTRACT_ADDRESS = {
"sepolia": "0x7f02C3E3c98b133055B8B348B2Ac625669Ed295D", "sepolia": "0x7f02C3E3c98b133055B8B348B2Ac625669Ed295D",
"holesky": "0x4242424242424242424242424242424242424242", "holesky": "0x4242424242424242424242424242424242424242",
"ephemery": "0x4242424242424242424242424242424242424242", "ephemery": "0x4242424242424242424242424242424242424242",
"hoodi": "0x00000000219ab540356cBB839Cbe05303d7705Fa",
} }
GENESIS_TIME = { GENESIS_TIME = {
"mainnet": 1606824023, "mainnet": 1606824023,
"sepolia": 1655733600, "sepolia": 1655733600,
"holesky": 1695902400, "holesky": 1695902400,
"hoodi": 1741971600,
} }
VOLUME_SIZE = { VOLUME_SIZE = {
...@@ -271,7 +282,24 @@ VOLUME_SIZE = { ...@@ -271,7 +282,24 @@ VOLUME_SIZE = {
"lodestar_volume_size": 1000, # 1GB "lodestar_volume_size": 1000, # 1GB
"grandine_volume_size": 1000, # 1GB "grandine_volume_size": 1000, # 1GB
}, },
"hoodi": {
"geth_volume_size": 100000, # 100GB
"erigon_volume_size": 200000, # 200GB
"nethermind_volume_size": 100000, # 100GB
"besu_volume_size": 100000, # 100GB
"reth_volume_size": 300000, # 300GB
"reth_builder_volume_size": 300000, # 300GB
"ethereumjs_volume_size": 100000, # 100GB
"nimbus_eth1_volume_size": 100000, # 100GB
"prysm_volume_size": 100000, # 100GB
"lighthouse_volume_size": 100000, # 100GB
"teku_volume_size": 100000, # 100GB
"nimbus_volume_size": 100000, # 100GB
"lodestar_volume_size": 100000, # 100GB
"grandine_volume_size": 100000, # 100GB
},
} }
VOLUME_SIZE["mainnet-shadowfork"] = VOLUME_SIZE["mainnet"] VOLUME_SIZE["mainnet-shadowfork"] = VOLUME_SIZE["mainnet"]
VOLUME_SIZE["sepolia-shadowfork"] = VOLUME_SIZE["sepolia"] VOLUME_SIZE["sepolia-shadowfork"] = VOLUME_SIZE["sepolia"]
VOLUME_SIZE["holesky-shadowfork"] = VOLUME_SIZE["holesky"] VOLUME_SIZE["holesky-shadowfork"] = VOLUME_SIZE["holesky"]
VOLUME_SIZE["hoodi-shadowfork"] = VOLUME_SIZE["hoodi"]
This diff is collapsed.
...@@ -159,6 +159,8 @@ SUBCATEGORY_PARAMS = { ...@@ -159,6 +159,8 @@ SUBCATEGORY_PARAMS = {
"deneb_fork_epoch", "deneb_fork_epoch",
"electra_fork_epoch", "electra_fork_epoch",
"fulu_fork_epoch", "fulu_fork_epoch",
"eip7732_fork_epoch",
"eip7805_fork_epoch",
"network_sync_base_url", "network_sync_base_url",
"data_column_sidecar_subnet_count", "data_column_sidecar_subnet_count",
"samples_per_slot", "samples_per_slot",
...@@ -171,7 +173,7 @@ SUBCATEGORY_PARAMS = { ...@@ -171,7 +173,7 @@ SUBCATEGORY_PARAMS = {
"additional_preloaded_contracts", "additional_preloaded_contracts",
"devnet_repo", "devnet_repo",
"prefunded_accounts", "prefunded_accounts",
"gossip_max_size", "max_payload_size",
], ],
"blockscout_params": [ "blockscout_params": [
"image", "image",
...@@ -189,12 +191,9 @@ SUBCATEGORY_PARAMS = { ...@@ -189,12 +191,9 @@ SUBCATEGORY_PARAMS = {
"github_prefix", "github_prefix",
"google_prefix", "google_prefix",
], ],
"tx_spammer_params": [ "tx_fuzz_params": [
"image", "image",
"tx_spammer_extra_args", "tx_fuzz_extra_args",
],
"goomy_blob_params": [
"goomy_blob_args",
], ],
"prometheus_params": [ "prometheus_params": [
"min_cpu", "min_cpu",
...@@ -238,6 +237,7 @@ SUBCATEGORY_PARAMS = { ...@@ -238,6 +237,7 @@ SUBCATEGORY_PARAMS = {
"mev_flood_extra_args", "mev_flood_extra_args",
"mev_flood_seconds_per_bundle", "mev_flood_seconds_per_bundle",
"custom_flood_params", "custom_flood_params",
"mock_mev_image",
], ],
"xatu_sentry_params": [ "xatu_sentry_params": [
"xatu_sentry_image", "xatu_sentry_image",
...@@ -248,12 +248,24 @@ SUBCATEGORY_PARAMS = { ...@@ -248,12 +248,24 @@ SUBCATEGORY_PARAMS = {
], ],
"spamoor_params": [ "spamoor_params": [
"image", "image",
"tx_type", "scenario",
"throughput", "throughput",
"max_pending", "max_pending",
"max_wallets", "max_wallets",
"spamoor_extra_args", "spamoor_extra_args",
], ],
"spamoor_blob_params": [
"image",
"scenario",
"throughput",
"max_blobs",
"max_pending",
"max_wallets",
"spamoor_extra_args",
],
"ethereum_genesis_generator_params": [
"image",
],
"bunnyfinder_params": [ "bunnyfinder_params": [
"image", "image",
"strategy", "strategy",
...@@ -279,13 +291,10 @@ SUBCATEGORY_PARAMS = { ...@@ -279,13 +291,10 @@ SUBCATEGORY_PARAMS = {
ADDITIONAL_SERVICES_PARAMS = [ ADDITIONAL_SERVICES_PARAMS = [
"assertoor", "assertoor",
"broadcaster", "broadcaster",
"tx_spammer", "tx_fuzz",
"blob_spammer",
"custom_flood", "custom_flood",
"goomy_blob", "forkmon",
"el_forkmon",
"blockscout", "blockscout",
"beacon_metrics_gazer",
"dora", "dora",
"full_beaconchain_explorer", "full_beaconchain_explorer",
"prometheus_grafana", "prometheus_grafana",
...@@ -296,7 +305,8 @@ ADDITIONAL_SERVICES_PARAMS = [ ...@@ -296,7 +305,8 @@ ADDITIONAL_SERVICES_PARAMS = [
"apache", "apache",
"tracoor", "tracoor",
"spamoor", "spamoor",
"bunnyfinder" "spamoor_blob",
"bunnyfinder",
] ]
ADDITIONAL_CATEGORY_PARAMS = { ADDITIONAL_CATEGORY_PARAMS = {
......
...@@ -113,6 +113,8 @@ def new_env_file_for_el_cl_genesis_data( ...@@ -113,6 +113,8 @@ def new_env_file_for_el_cl_genesis_data(
"DenebForkEpoch": network_params.deneb_fork_epoch, "DenebForkEpoch": network_params.deneb_fork_epoch,
"ElectraForkEpoch": network_params.electra_fork_epoch, "ElectraForkEpoch": network_params.electra_fork_epoch,
"FuluForkEpoch": network_params.fulu_fork_epoch, "FuluForkEpoch": network_params.fulu_fork_epoch,
"Eip7732ForkEpoch": network_params.eip7732_fork_epoch,
"Eip7805ForkEpoch": network_params.eip7805_fork_epoch,
"GenesisForkVersion": constants.GENESIS_FORK_VERSION, "GenesisForkVersion": constants.GENESIS_FORK_VERSION,
"AltairForkVersion": constants.ALTAIR_FORK_VERSION, "AltairForkVersion": constants.ALTAIR_FORK_VERSION,
"BellatrixForkVersion": constants.BELLATRIX_FORK_VERSION, "BellatrixForkVersion": constants.BELLATRIX_FORK_VERSION,
...@@ -120,6 +122,8 @@ def new_env_file_for_el_cl_genesis_data( ...@@ -120,6 +122,8 @@ def new_env_file_for_el_cl_genesis_data(
"DenebForkVersion": constants.DENEB_FORK_VERSION, "DenebForkVersion": constants.DENEB_FORK_VERSION,
"ElectraForkVersion": constants.ELECTRA_FORK_VERSION, "ElectraForkVersion": constants.ELECTRA_FORK_VERSION,
"FuluForkVersion": constants.FULU_FORK_VERSION, "FuluForkVersion": constants.FULU_FORK_VERSION,
"Eip7732ForkVersion": constants.EIP7732_FORK_VERSION,
"Eip7805ForkVersion": constants.EIP7805_FORK_VERSION,
"ShadowForkFile": shadowfork_file, "ShadowForkFile": shadowfork_file,
"MinValidatorWithdrawabilityDelay": network_params.min_validator_withdrawability_delay, "MinValidatorWithdrawabilityDelay": network_params.min_validator_withdrawability_delay,
"ShardCommitteePeriod": network_params.shard_committee_period, "ShardCommitteePeriod": network_params.shard_committee_period,
...@@ -135,5 +139,5 @@ def new_env_file_for_el_cl_genesis_data( ...@@ -135,5 +139,5 @@ def new_env_file_for_el_cl_genesis_data(
network_params.additional_preloaded_contracts network_params.additional_preloaded_contracts
), ),
"PrefundedAccounts": json.encode(network_params.prefunded_accounts), "PrefundedAccounts": json.encode(network_params.prefunded_accounts),
"GossipMaxSize": network_params.gossip_max_size, "MaxPayloadSize": network_params.max_payload_size,
} }
...@@ -110,6 +110,6 @@ PRE_FUNDED_ACCOUNTS = [ ...@@ -110,6 +110,6 @@ PRE_FUNDED_ACCOUNTS = [
# m/44'/60'/0'/0/20 # m/44'/60'/0'/0/20
new_prefunded_account( new_prefunded_account(
"0xafF0CA253b97e54440965855cec0A8a2E2399896", "0xafF0CA253b97e54440965855cec0A8a2E2399896",
"4b9f63ecf84210c5366c66d68fa1f5da1fa4f634fad6dfc86178e4d79ff9e59", "04b9f63ecf84210c5366c66d68fa1f5da1fa4f634fad6dfc86178e4d79ff9e59",
), ),
] ]
...@@ -274,9 +274,9 @@ def generate_valdiator_keystores_in_parallel( ...@@ -274,9 +274,9 @@ def generate_valdiator_keystores_in_parallel(
# no output dir path as validator count is 0 # no output dir path as validator count is 0
continue continue
generation_finished_filepath = finished_files_to_verify[idx] generation_finished_filepath = finished_files_to_verify[idx]
verificaiton_command = ["ls", generation_finished_filepath] verification_command = ["ls", generation_finished_filepath]
plan.wait( plan.wait(
recipe=ExecRecipe(command=verificaiton_command), recipe=ExecRecipe(command=verification_command),
service_name=service_name, service_name=service_name,
field="code", field="code",
assertion="==", assertion="==",
......
...@@ -31,16 +31,22 @@ def get_config( ...@@ -31,16 +31,22 @@ def get_config(
node_selectors, node_selectors,
): ):
cmd = [ cmd = [
"{}".format(spamoor_params.tx_type), "{}".format(spamoor_params.scenario),
"--privkey={}".format(prefunded_addresses[13].private_key), "--privkey={}".format(prefunded_addresses[13].private_key),
"--rpchost={}".format( "--rpchost={}".format(
",".join([el_context.rpc_http_url for el_context in all_el_contexts]) ",".join([el_context.rpc_http_url for el_context in all_el_contexts])
), ),
"--throughput={}".format(spamoor_params.throughput),
"--max-pending={}".format(spamoor_params.max_pending),
"--max-wallets={}".format(spamoor_params.max_wallets),
] ]
if spamoor_params.throughput != None:
cmd.append("--throughput={}".format(spamoor_params.throughput))
if spamoor_params.max_pending != None:
cmd.append("--max-pending={}".format(spamoor_params.max_pending))
if spamoor_params.max_wallets != None:
cmd.append("--max-wallets={}".format(spamoor_params.max_wallets))
if len(spamoor_params.spamoor_extra_args) > 0: if len(spamoor_params.spamoor_extra_args) > 0:
cmd.extend([param for param in spamoor_params.spamoor_extra_args]) cmd.extend([param for param in spamoor_params.spamoor_extra_args])
......
shared_utils = import_module("../shared_utils/shared_utils.star")
SERVICE_NAME = "spamoor-blob"
# The min/max CPU/memory that spamoor can use
MIN_CPU = 100
MAX_CPU = 1000
MIN_MEMORY = 100
MAX_MEMORY = 1000
def launch_spamoor_blob(
plan,
prefunded_addresses,
all_el_contexts,
spamoor_params,
global_node_selectors,
):
config = get_config(
prefunded_addresses,
all_el_contexts,
spamoor_params,
global_node_selectors,
)
plan.add_service(SERVICE_NAME, config)
def get_config(
prefunded_addresses,
all_el_contexts,
spamoor_params,
node_selectors,
):
cmd = [
"{}".format(spamoor_params.scenario),
"--privkey={}".format(prefunded_addresses[4].private_key),
"--rpchost={}".format(
",".join([el_context.rpc_http_url for el_context in all_el_contexts])
),
]
if spamoor_params.throughput != None:
cmd.append("--throughput={}".format(spamoor_params.throughput))
if spamoor_params.max_blobs != None:
cmd.append("--sidecars={}".format(spamoor_params.max_blobs))
if spamoor_params.max_pending != None:
cmd.append("--max-pending={}".format(spamoor_params.max_pending))
if spamoor_params.max_wallets != None:
cmd.append("--max-wallets={}".format(spamoor_params.max_wallets))
if len(spamoor_params.spamoor_extra_args) > 0:
cmd.extend([param for param in spamoor_params.spamoor_extra_args])
return ServiceConfig(
image=spamoor_params.image,
cmd=cmd,
min_cpu=MIN_CPU,
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
...@@ -7,8 +7,8 @@ EL_CL_GENESIS_GENERATION_CONFIG_TEMPLATE_FILEPATH = ( ...@@ -7,8 +7,8 @@ EL_CL_GENESIS_GENERATION_CONFIG_TEMPLATE_FILEPATH = (
) )
# EL Forkmon config # EL Forkmon config
EL_FORKMON_CONFIG_TEMPLATE_FILEPATH = ( FORKMON_CONFIG_TEMPLATE_FILEPATH = (
STATIC_FILES_DIRPATH + "/el-forkmon-config/config.toml.tmpl" STATIC_FILES_DIRPATH + "/forkmon-config/config.toml.tmpl"
) )
# Validator Ranges config # Validator Ranges config
......
shared_utils = import_module("../shared_utils/shared_utils.star") shared_utils = import_module("../shared_utils/shared_utils.star")
SERVICE_NAME = "transaction-spammer" SERVICE_NAME = "tx-fuzz"
# The min/max CPU/memory that tx-spammer can use # The min/max CPU/memory that tx-fuzz can use
MIN_CPU = 100 MIN_CPU = 100
MAX_CPU = 1000 MAX_CPU = 1000
MIN_MEMORY = 20 MIN_MEMORY = 20
MAX_MEMORY = 300 MAX_MEMORY = 300
def launch_transaction_spammer( def launch_tx_fuzz(
plan, plan,
prefunded_addresses, prefunded_addresses,
el_uri, el_uri,
tx_spammer_params, tx_fuzz_params,
global_node_selectors, global_node_selectors,
): ):
config = get_config( config = get_config(
prefunded_addresses, prefunded_addresses,
el_uri, el_uri,
tx_spammer_params, tx_fuzz_params,
global_node_selectors, global_node_selectors,
) )
plan.add_service(SERVICE_NAME, config) plan.add_service(SERVICE_NAME, config)
...@@ -27,7 +27,7 @@ def launch_transaction_spammer( ...@@ -27,7 +27,7 @@ def launch_transaction_spammer(
def get_config( def get_config(
prefunded_addresses, prefunded_addresses,
el_uri, el_uri,
tx_spammer_params, tx_fuzz_params,
node_selectors, node_selectors,
): ):
cmd = [ cmd = [
...@@ -36,11 +36,11 @@ def get_config( ...@@ -36,11 +36,11 @@ def get_config(
"--sk={0}".format(prefunded_addresses[3].private_key), "--sk={0}".format(prefunded_addresses[3].private_key),
] ]
if len(tx_spammer_params.tx_spammer_extra_args) > 0: if len(tx_fuzz_params.tx_fuzz_extra_args) > 0:
cmd.extend([param for param in tx_spammer_params.tx_spammer_extra_args]) cmd.extend([param for param in tx_fuzz_params.tx_fuzz_extra_args])
return ServiceConfig( return ServiceConfig(
image=tx_spammer_params.image, image=tx_fuzz_params.image,
cmd=cmd, cmd=cmd,
min_cpu=MIN_CPU, min_cpu=MIN_CPU,
max_cpu=MAX_CPU, max_cpu=MAX_CPU,
......
...@@ -159,6 +159,7 @@ def launch( ...@@ -159,6 +159,7 @@ def launch(
fail("vero VC doesn't support the Keymanager API") fail("vero VC doesn't support the Keymanager API")
config = vero.get_config( config = vero.get_config(
participant=participant, participant=participant,
el_cl_genesis_data=launcher.el_cl_genesis_data,
image=image, image=image,
global_log_level=global_log_level, global_log_level=global_log_level,
beacon_http_url=beacon_http_url, beacon_http_url=beacon_http_url,
......
...@@ -14,6 +14,7 @@ VERBOSITY_LEVELS = { ...@@ -14,6 +14,7 @@ VERBOSITY_LEVELS = {
def get_config( def get_config(
participant, participant,
el_cl_genesis_data,
image, image,
global_log_level, global_log_level,
beacon_http_url, beacon_http_url,
...@@ -30,6 +31,10 @@ def get_config( ...@@ -30,6 +31,10 @@ def get_config(
) )
cmd = [ cmd = [
"--network=custom",
"--network-custom-config-path="
+ constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
+ "/config.yaml",
"--remote-signer-url={0}".format(remote_signer_context.http_url), "--remote-signer-url={0}".format(remote_signer_context.http_url),
"--beacon-node-urls=" + beacon_http_url, "--beacon-node-urls=" + beacon_http_url,
"--fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT, "--fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
...@@ -43,6 +48,10 @@ def get_config( ...@@ -43,6 +48,10 @@ def get_config(
# this is a repeated<proto type>, we convert it into Starlark # this is a repeated<proto type>, we convert it into Starlark
cmd.extend([param for param in participant.vc_extra_params]) cmd.extend([param for param in participant.vc_extra_params])
files = {
constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: el_cl_genesis_data.files_artifact_uuid,
}
public_ports = {} public_ports = {}
if port_publisher.vc_enabled: if port_publisher.vc_enabled:
public_ports_for_component = shared_utils.get_public_ports_for_component( public_ports_for_component = shared_utils.get_public_ports_for_component(
...@@ -61,6 +70,7 @@ def get_config( ...@@ -61,6 +70,7 @@ def get_config(
"ports": ports, "ports": ports,
"public_ports": public_ports, "public_ports": public_ports,
"cmd": cmd, "cmd": cmd,
"files": files,
"env_vars": participant.vc_extra_env_vars, "env_vars": participant.vc_extra_env_vars,
"labels": shared_utils.label_maker( "labels": shared_utils.label_maker(
client=constants.VC_TYPE.vero, client=constants.VC_TYPE.vero,
......
...@@ -26,7 +26,7 @@ web: ...@@ -26,7 +26,7 @@ web:
database: database:
engine: "sqlite" engine: "sqlite"
sqlite: sqlite:
file: "/assertoor-database.sqlite" file: "/app/assertoor-database.sqlite"
validatorNames: validatorNames:
inventoryYaml: "/validator-ranges/validator-ranges.yaml" inventoryYaml: "/validator-ranges/validator-ranges.yaml"
......
...@@ -23,7 +23,7 @@ max_retries = 32 ...@@ -23,7 +23,7 @@ max_retries = 32
expected_block_time = 13000 expected_block_time = 13000
# Time between health checks in ms # Time between health checks in ms
health_check_ttl = 400 health_check_ttl = 400
# Supress the health check running info messages # Suppress the health check running info messages
supress_rpc_check = false supress_rpc_check = false
# Note: the admin namespace contains volatile functions and # Note: the admin namespace contains volatile functions and
......
...@@ -19,6 +19,10 @@ export ELECTRA_FORK_VERSION="{{ .ElectraForkVersion }}" ...@@ -19,6 +19,10 @@ export ELECTRA_FORK_VERSION="{{ .ElectraForkVersion }}"
export ELECTRA_FORK_EPOCH="{{ .ElectraForkEpoch }}" export ELECTRA_FORK_EPOCH="{{ .ElectraForkEpoch }}"
export FULU_FORK_VERSION="{{ .FuluForkVersion }}" export FULU_FORK_VERSION="{{ .FuluForkVersion }}"
export FULU_FORK_EPOCH="{{ .FuluForkEpoch }}" export FULU_FORK_EPOCH="{{ .FuluForkEpoch }}"
export EIP7732_FORK_VERSION="{{ .Eip7732ForkVersion }}"
export EIP7732_FORK_EPOCH="{{ .Eip7732ForkEpoch }}"
export EIP7805_FORK_VERSION="{{ .Eip7805ForkVersion }}"
export EIP7805_FORK_EPOCH="{{ .Eip7805ForkEpoch }}"
export WITHDRAWAL_TYPE="0x00" export WITHDRAWAL_TYPE="0x00"
export WITHDRAWAL_ADDRESS=0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134 export WITHDRAWAL_ADDRESS=0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134
export GENESIS_TIMESTAMP={{ .UnixTimestamp }} export GENESIS_TIMESTAMP={{ .UnixTimestamp }}
...@@ -40,5 +44,4 @@ export MAX_BLOBS_PER_BLOCK_FULU={{ .MaxBlobsPerBlockFulu }} ...@@ -40,5 +44,4 @@ export MAX_BLOBS_PER_BLOCK_FULU={{ .MaxBlobsPerBlockFulu }}
export TARGET_BLOBS_PER_BLOCK_FULU={{ .TargetBlobsPerBlockFulu }} export TARGET_BLOBS_PER_BLOCK_FULU={{ .TargetBlobsPerBlockFulu }}
export ADDITIONAL_PRELOADED_CONTRACTS={{ .AdditionalPreloadedContracts }} export ADDITIONAL_PRELOADED_CONTRACTS={{ .AdditionalPreloadedContracts }}
export EL_PREMINE_ADDRS={{ .PrefundedAccounts }} export EL_PREMINE_ADDRS={{ .PrefundedAccounts }}
export GOSSIP_MAX_SIZE={{ .GossipMaxSize }} export MAX_PAYLOAD_SIZE={{ .MaxPayloadSize }}
export MAX_CHUNK_SIZE={{ .GossipMaxSize }}
chain = "{{ .Network }}" chain = { genesis_time_secs = {{ .Timestamp }}, path = "{{ .Network }}" }
[pbs] [pbs]
host = "0.0.0.0"
port = {{ .Port }} port = {{ .Port }}
{{ range $index, $relay := .Relays }} {{ range $index, $relay := .Relays }}
[[relays]] [[relays]]
id = "mev_relay_{{$index}}" id = "mev_relay_{{$index}}"
url = "{{ $relay }}" url = "{{ $relay }}"
{{- end }} {{- end }}
\ No newline at end of file
[logs]
log_level = "debug"
max_log_files = 7
...@@ -20,18 +20,17 @@ el_node_ipc_path = "/tmp/reth.ipc" ...@@ -20,18 +20,17 @@ el_node_ipc_path = "/tmp/reth.ipc"
extra_data = "🐼⚡🤖" extra_data = "🐼⚡🤖"
genesis_fork_version = "{{ .GenesisForkVersion }}" genesis_fork_version = "{{ .GenesisForkVersion }}"
dry_run = false
dry_run_validation_url = "http://localhost:8545"
ignore_cancellable_orders = true ignore_cancellable_orders = true
max_concurrent_seals = 4 sbundle_mergeable_signers = []
sbundle_mergeabe_signers = []
# slot_delta_to_start_submits_ms is usually negative since we start bidding BEFORE the slot start
# slot_delta_to_start_submits_ms = -5000
live_builders = ["mp-ordering", "mgp-ordering"] live_builders = ["mp-ordering", "mgp-ordering"]
watchdog_timeout_sec = 99999 watchdog_timeout_sec = 99999
# For now, these must be set until a bug in upstream reth's
# root hash calculations are fixed
root_hash_use_sparse_trie=true
root_hash_compare_sparse_trie=false
[[relays]] [[relays]]
name = "flashbots" name = "flashbots"
url = "http://{{ .PublicKey }}@{{ .Relay }}:{{ .RelayPort }}" url = "http://{{ .PublicKey }}@{{ .Relay }}:{{ .RelayPort }}"
......
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