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",
]
# Changelog # Changelog
## [4.6.0](https://github.com/ethpandaops/ethereum-package/compare/4.5.0...4.6.0) (2025-03-19)
### Features
* use `eip7805-support` image for dora when eip7805 is scheduled for activation ([#900](https://github.com/ethpandaops/ethereum-package/issues/900)) ([9b3ee49](https://github.com/ethpandaops/ethereum-package/commit/9b3ee49c6086dcbdce833b68d8165f740273f23c))
### Bug Fixes
* add milliseconds to histograms ([#879](https://github.com/ethpandaops/ethereum-package/issues/879)) ([53602f1](https://github.com/ethpandaops/ethereum-package/commit/53602f1b042d2c8a2a5c064ce087a5f00ae53f7f))
* commit boost startup ([#906](https://github.com/ethpandaops/ethereum-package/issues/906)) ([040e622](https://github.com/ethpandaops/ethereum-package/commit/040e622cdf28e02721aa2e54904ee3d902485c18))
* decrease lighthouse mev --prepare-payload-lookahead from 12 to 8s ([#904](https://github.com/ethpandaops/ethereum-package/issues/904)) ([03bb449](https://github.com/ethpandaops/ethereum-package/commit/03bb449cfd327e55188fb1ff4407c4b75606b911))
* lighthouse minimal image ([#915](https://github.com/ethpandaops/ethereum-package/issues/915)) ([c3ecee8](https://github.com/ethpandaops/ethereum-package/commit/c3ecee8148068d5270d9e549d042066d2eb8aec0))
* prometheus shouldnt use latest ([#924](https://github.com/ethpandaops/ethereum-package/issues/924)) ([5cc99c8](https://github.com/ethpandaops/ethereum-package/commit/5cc99c8f30a758c77243a0f07c8f07462522436f))
* provide `--network-custom-config-path` to Vero ([#905](https://github.com/ethpandaops/ethereum-package/issues/905)) ([998063f](https://github.com/ethpandaops/ethereum-package/commit/998063fae8c68288dbc760e4a76bfdfa23ecd62b))
* Update config.toml.tmpl ([#919](https://github.com/ethpandaops/ethereum-package/issues/919)) ([8f8830f](https://github.com/ethpandaops/ethereum-package/commit/8f8830fd1992db4e5678c125bc400e310d5b6006))
* update to latest spec ([a9058f5](https://github.com/ethpandaops/ethereum-package/commit/a9058f540c6d34584dae6f73a79fae33d9fa29d6))
## [4.5.0](https://github.com/ethpandaops/ethereum-package/compare/4.4.0...4.5.0) (2025-02-10)
### ⚠ BREAKING CHANGES
* remove vc_count ([#844](https://github.com/ethpandaops/ethereum-package/issues/844))
### Features
* add custom image for egg ([#859](https://github.com/ethpandaops/ethereum-package/issues/859)) ([e60afbe](https://github.com/ethpandaops/ethereum-package/commit/e60afbeb7cefd1ee853c9bdca0041a6d4040fe78))
* add gossip limit as a configuratable flag ([#856](https://github.com/ethpandaops/ethereum-package/issues/856)) ([56a3197](https://github.com/ethpandaops/ethereum-package/commit/56a3197f5385de7d8c1e768fe4b537603c86abcf))
* add max,target blobs for future forks ([#851](https://github.com/ethpandaops/ethereum-package/issues/851)) ([1c33375](https://github.com/ethpandaops/ethereum-package/commit/1c333758f26ffc17dcfae92db68eda0bd8d2951b))
* add op package per pr check ([#854](https://github.com/ethpandaops/ethereum-package/issues/854)) ([0e4e7aa](https://github.com/ethpandaops/ethereum-package/commit/0e4e7aa8da7dc7f4e2270efdc1acded484a31322))
* add spamoor ([#850](https://github.com/ethpandaops/ethereum-package/issues/850)) ([a01d772](https://github.com/ethpandaops/ethereum-package/commit/a01d77274ebf7790a610932e225b8415575df492))
* add support for pull through cache ([#833](https://github.com/ethpandaops/ethereum-package/issues/833)) ([0b2a2ae](https://github.com/ethpandaops/ethereum-package/commit/0b2a2ae081652f5c7e7ef1da13744a40c7279f37))
* add vero `vc_type` ([#827](https://github.com/ethpandaops/ethereum-package/issues/827)) ([c2af143](https://github.com/ethpandaops/ethereum-package/commit/c2af14377ccb118e1ba6b06f1ee8335113ff6e16))
* Add-blockscout_params ([#838](https://github.com/ethpandaops/ethereum-package/issues/838)) ([777ec06](https://github.com/ethpandaops/ethereum-package/commit/777ec065efe9714acb2f6762ec21c6f5c1961f4a))
* Adding support for EIP-7732 and EIP-7805 ([#880](https://github.com/ethpandaops/ethereum-package/issues/880)) ([6b7a409](https://github.com/ethpandaops/ethereum-package/commit/6b7a409f2d78d50dfb66d8de7aededa080ab6230))
* Adding support for new system contracts + updating devnet config ([#862](https://github.com/ethpandaops/ethereum-package/issues/862)) ([8ed275a](https://github.com/ethpandaops/ethereum-package/commit/8ed275a4ec4524b1df4b7cfe38a5f2374711760d))
* Replacing mock builder ([#864](https://github.com/ethpandaops/ethereum-package/issues/864)) ([d3a0024](https://github.com/ethpandaops/ethereum-package/commit/d3a002494822c23bd7a0b677b738107c262ad0ff))
* support older forks ([#846](https://github.com/ethpandaops/ethereum-package/issues/846)) ([d7e31e0](https://github.com/ethpandaops/ethereum-package/commit/d7e31e01ca6fff88c64ee3846d517e2f32d7bbcf))
* update blockscout with new frontend ([#843](https://github.com/ethpandaops/ethereum-package/issues/843)) ([4f69962](https://github.com/ethpandaops/ethereum-package/commit/4f69962f440fc85c61e9ec2b812463d9ab965f7a))
* Update devnet-5 example ([#863](https://github.com/ethpandaops/ethereum-package/issues/863)) ([04e13f3](https://github.com/ethpandaops/ethereum-package/commit/04e13f3bca8f14207b4b8f6014790c7b1b4affe7))
* Update egg to support new system contract addresses ([#883](https://github.com/ethpandaops/ethereum-package/issues/883)) ([9f7ad78](https://github.com/ethpandaops/ethereum-package/commit/9f7ad78bdea16f2da63e0085272b78e55ccdc823))
* use `eip7732-support` image for dora when eip7732 is scheduled for activation (ePBS) ([#881](https://github.com/ethpandaops/ethereum-package/issues/881)) ([dbe7912](https://github.com/ethpandaops/ethereum-package/commit/dbe7912b932261ca3946562c263595e597bc6f8d))
### Bug Fixes
* add fulu overrides automatically for assertoor and dora if fulu is active ([#858](https://github.com/ethpandaops/ethereum-package/issues/858)) ([d6bec16](https://github.com/ethpandaops/ethereum-package/commit/d6bec165b9bbb3e2a63cbafb063fd52197b23af9))
* add txpool to reth api ([#841](https://github.com/ethpandaops/ethereum-package/issues/841)) ([35ec958](https://github.com/ethpandaops/ethereum-package/commit/35ec9585a728d373f3e9ec8c84e9abcddfed82a1))
* bump assertoor memory limit to 8G ([#874](https://github.com/ethpandaops/ethereum-package/issues/874)) ([8ff3b11](https://github.com/ethpandaops/ethereum-package/commit/8ff3b1138d910cdbff1bc60764e9ddb596c3a551))
* comment out optimism check from per-PR workflow ([#878](https://github.com/ethpandaops/ethereum-package/issues/878)) ([02323a3](https://github.com/ethpandaops/ethereum-package/commit/02323a3bf34089117ee303f114ac08267c34f9d0))
* dora override ([#857](https://github.com/ethpandaops/ethereum-package/issues/857)) ([50ec581](https://github.com/ethpandaops/ethereum-package/commit/50ec58115674dced97f9159123ba7e2b044518d4))
* Enable txpool on geth,besu and nethermind ([#868](https://github.com/ethpandaops/ethereum-package/issues/868)) ([f9d0b50](https://github.com/ethpandaops/ethereum-package/commit/f9d0b501a7a6543149d2ccd9b063f5beb34d30c9))
* Fixes minimal runs with deneb state ([#871](https://github.com/ethpandaops/ethereum-package/issues/871)) ([2ca35e8](https://github.com/ethpandaops/ethereum-package/commit/2ca35e8eb74d8a78e5b6fed110d69b0e68308c76))
* mev-builder custom image ([#847](https://github.com/ethpandaops/ethereum-package/issues/847)) ([bc89ad3](https://github.com/ethpandaops/ethereum-package/commit/bc89ad316b9b7b137382269138fc37e241a645d1))
* Private key for account 20 ([#870](https://github.com/ethpandaops/ethereum-package/issues/870)) ([9782552](https://github.com/ethpandaops/ethereum-package/commit/9782552e6828019f07f177c524988c24b4da1e1f))
* **prysm:** run p2p-udp on different port as it might conflict with the new quic port ([#845](https://github.com/ethpandaops/ethereum-package/issues/845)) ([3bb88e0](https://github.com/ethpandaops/ethereum-package/commit/3bb88e04d2fa9f27418c013d656b02a714c20f4d))
* rbuilder upstream repo with reth-rbuilder binary ([#828](https://github.com/ethpandaops/ethereum-package/issues/828)) ([55df658](https://github.com/ethpandaops/ethereum-package/commit/55df658f7757d29419aca7510830cf1d5c70d492))
* remove vc_count ([#844](https://github.com/ethpandaops/ethereum-package/issues/844)) ([b61a128](https://github.com/ethpandaops/ethereum-package/commit/b61a128bf1d96e8dd11f028925dee9b70e37ac6f))
* replace goomy with spamoor ([#860](https://github.com/ethpandaops/ethereum-package/issues/860)) ([28f7b7d](https://github.com/ethpandaops/ethereum-package/commit/28f7b7d4849ceeab56ac648949b74a1aa0e28dee))
* revert egg version ([#852](https://github.com/ethpandaops/ethereum-package/issues/852)) ([a182f30](https://github.com/ethpandaops/ethereum-package/commit/a182f3039b91c15cde5b0d0967666d336a9629ac))
* sanity check for count ([#835](https://github.com/ethpandaops/ethereum-package/issues/835)) ([2633d15](https://github.com/ethpandaops/ethereum-package/commit/2633d15b9739520bb979887965a04382869d16d8))
* Update default mev-images source ([#884](https://github.com/ethpandaops/ethereum-package/issues/884)) ([176b08a](https://github.com/ethpandaops/ethereum-package/commit/176b08a7062a2fe7bd71a141b1e796f040a38dc4))
* Update Erigon docker image repo naming ([#834](https://github.com/ethpandaops/ethereum-package/issues/834)) ([ceb1444](https://github.com/ethpandaops/ethereum-package/commit/ceb14448b4e3b48b4cbf893bf5d95572bfd8949c))
* Update ethereum-genesis-generator to fix eip7623 timestamp missing for Nethermind ([#875](https://github.com/ethpandaops/ethereum-package/issues/875)) ([1c1d698](https://github.com/ethpandaops/ethereum-package/commit/1c1d6988f9c1028ec9cdb22655b556977db901b1))
* update kt config ([#876](https://github.com/ethpandaops/ethereum-package/issues/876)) ([1704194](https://github.com/ethpandaops/ethereum-package/commit/1704194121ba25e1e845f210f248b9b5993d24c2))
* Update rbuilder flag and add mainnet split example ([#885](https://github.com/ethpandaops/ethereum-package/issues/885)) ([4bbd070](https://github.com/ethpandaops/ethereum-package/commit/4bbd0705d80770df230129d43920784b123b6bbd))
* Update test files ([#893](https://github.com/ethpandaops/ethereum-package/issues/893)) ([4fcca66](https://github.com/ethpandaops/ethereum-package/commit/4fcca6677bd87b2cb712989bfbcbd1e7bb7152f4))
* use default image for assertoor with electra enabled ([#855](https://github.com/ethpandaops/ethereum-package/issues/855)) ([3b51e5e](https://github.com/ethpandaops/ethereum-package/commit/3b51e5e280e9fc1c7dba890c4e8e795a75e525b2))
* use writable path for assertoor db ([#877](https://github.com/ethpandaops/ethereum-package/issues/877)) ([a913455](https://github.com/ethpandaops/ethereum-package/commit/a913455bb3cdf9abb5dea8e27def320b5bf3ae75))
### Miscellaneous Chores
* release 4.5.0 ([#896](https://github.com/ethpandaops/ethereum-package/issues/896)) ([0dc54e0](https://github.com/ethpandaops/ethereum-package/commit/0dc54e0018356e88a478bbaf4c6782cdcb0c9b6f))
## [4.4.0](https://github.com/ethpandaops/ethereum-package/compare/4.3.0...4.4.0) (2024-11-01) ## [4.4.0](https://github.com/ethpandaops/ethereum-package/compare/4.3.0...4.4.0) (2024-11-01)
......
...@@ -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"]
...@@ -83,12 +83,12 @@ ATTR_TO_BE_SKIPPED_AT_ROOT = ( ...@@ -83,12 +83,12 @@ ATTR_TO_BE_SKIPPED_AT_ROOT = (
"assertoor_params", "assertoor_params",
"prometheus_params", "prometheus_params",
"grafana_params", "grafana_params",
"goomy_blob_params", "tx_fuzz_params",
"tx_spammer_params",
"custom_flood_params", "custom_flood_params",
"xatu_sentry_params", "xatu_sentry_params",
"port_publisher", "port_publisher",
"spamoor_params", "spamoor_params",
"spamoor_blob_params",
"bunnyfinder_params", "bunnyfinder_params",
) )
...@@ -110,10 +110,9 @@ def input_parser(plan, input_args): ...@@ -110,10 +110,9 @@ def input_parser(plan, input_args):
result["additional_services"] = DEFAULT_ADDITIONAL_SERVICES result["additional_services"] = DEFAULT_ADDITIONAL_SERVICES
else: else:
result["additional_services"] = [] result["additional_services"] = []
result["tx_spammer_params"] = get_default_tx_spammer_params() result["tx_fuzz_params"] = get_default_tx_fuzz_params()
result["custom_flood_params"] = get_default_custom_flood_params() result["custom_flood_params"] = get_default_custom_flood_params()
result["disable_peer_scoring"] = False result["disable_peer_scoring"] = False
result["goomy_blob_params"] = get_default_goomy_blob_params()
result["grafana_params"] = get_default_grafana_params() result["grafana_params"] = get_default_grafana_params()
result["assertoor_params"] = get_default_assertoor_params() result["assertoor_params"] = get_default_assertoor_params()
result["prometheus_params"] = get_default_prometheus_params() result["prometheus_params"] = get_default_prometheus_params()
...@@ -124,6 +123,7 @@ def input_parser(plan, input_args): ...@@ -124,6 +123,7 @@ def input_parser(plan, input_args):
result["global_node_selectors"] = {} result["global_node_selectors"] = {}
result["port_publisher"] = get_port_publisher_params("default") result["port_publisher"] = get_port_publisher_params("default")
result["spamoor_params"] = get_default_spamoor_params() result["spamoor_params"] = get_default_spamoor_params()
result["spamoor_blob_params"] = get_default_spamoor_blob_params()
result["bunnyfinder_params"] = get_default_bunnyfinder_params() result["bunnyfinder_params"] = get_default_bunnyfinder_params()
if constants.NETWORK_NAME.shadowfork in result["network_params"]["network"]: if constants.NETWORK_NAME.shadowfork in result["network_params"]["network"]:
...@@ -160,18 +160,14 @@ def input_parser(plan, input_args): ...@@ -160,18 +160,14 @@ def input_parser(plan, input_args):
for sub_attr in input_args["mev_params"]: for sub_attr in input_args["mev_params"]:
sub_value = input_args["mev_params"][sub_attr] sub_value = input_args["mev_params"][sub_attr]
result["mev_params"][sub_attr] = sub_value result["mev_params"][sub_attr] = sub_value
elif attr == "tx_spammer_params": elif attr == "tx_fuzz_params":
for sub_attr in input_args["tx_spammer_params"]: for sub_attr in input_args["tx_fuzz_params"]:
sub_value = input_args["tx_spammer_params"][sub_attr] sub_value = input_args["tx_fuzz_params"][sub_attr]
result["tx_spammer_params"][sub_attr] = sub_value result["tx_fuzz_params"][sub_attr] = sub_value
elif attr == "custom_flood_params": elif attr == "custom_flood_params":
for sub_attr in input_args["custom_flood_params"]: for sub_attr in input_args["custom_flood_params"]:
sub_value = input_args["custom_flood_params"][sub_attr] sub_value = input_args["custom_flood_params"][sub_attr]
result["custom_flood_params"][sub_attr] = sub_value result["custom_flood_params"][sub_attr] = sub_value
elif attr == "goomy_blob_params":
for sub_attr in input_args["goomy_blob_params"]:
sub_value = input_args["goomy_blob_params"][sub_attr]
result["goomy_blob_params"][sub_attr] = sub_value
elif attr == "assertoor_params": elif attr == "assertoor_params":
for sub_attr in input_args["assertoor_params"]: for sub_attr in input_args["assertoor_params"]:
sub_value = input_args["assertoor_params"][sub_attr] sub_value = input_args["assertoor_params"][sub_attr]
...@@ -194,6 +190,14 @@ def input_parser(plan, input_args): ...@@ -194,6 +190,14 @@ def input_parser(plan, input_args):
for sub_attr in input_args["spamoor_params"]: for sub_attr in input_args["spamoor_params"]:
sub_value = input_args["spamoor_params"][sub_attr] sub_value = input_args["spamoor_params"][sub_attr]
result["spamoor_params"][sub_attr] = sub_value result["spamoor_params"][sub_attr] = sub_value
elif attr == "spamoor_blob_params":
for sub_attr in input_args["spamoor_blob_params"]:
sub_value = input_args["spamoor_blob_params"][sub_attr]
result["spamoor_blob_params"][sub_attr] = sub_value
elif attr == "ethereum_genesis_generator_params":
for sub_attr in input_args["ethereum_genesis_generator_params"]:
sub_value = input_args["ethereum_genesis_generator_params"][sub_attr]
result["ethereum_genesis_generator_params"][sub_attr] = sub_value
elif attr == "bunnyfinder_params": elif attr == "bunnyfinder_params":
for sub_attr in input_args["bunnyfinder_params"]: for sub_attr in input_args["bunnyfinder_params"]:
sub_value = input_args["bunnyfinder_params"][sub_attr] sub_value = input_args["bunnyfinder_params"][sub_attr]
...@@ -334,6 +338,8 @@ def input_parser(plan, input_args): ...@@ -334,6 +338,8 @@ def input_parser(plan, input_args):
deneb_fork_epoch=result["network_params"]["deneb_fork_epoch"], deneb_fork_epoch=result["network_params"]["deneb_fork_epoch"],
electra_fork_epoch=result["network_params"]["electra_fork_epoch"], electra_fork_epoch=result["network_params"]["electra_fork_epoch"],
fulu_fork_epoch=result["network_params"]["fulu_fork_epoch"], fulu_fork_epoch=result["network_params"]["fulu_fork_epoch"],
eip7732_fork_epoch=result["network_params"]["eip7732_fork_epoch"],
eip7805_fork_epoch=result["network_params"]["eip7805_fork_epoch"],
network=result["network_params"]["network"], network=result["network_params"]["network"],
min_validator_withdrawability_delay=result["network_params"][ min_validator_withdrawability_delay=result["network_params"][
"min_validator_withdrawability_delay" "min_validator_withdrawability_delay"
...@@ -363,7 +369,7 @@ def input_parser(plan, input_args): ...@@ -363,7 +369,7 @@ def input_parser(plan, input_args):
], ],
devnet_repo=result["network_params"]["devnet_repo"], devnet_repo=result["network_params"]["devnet_repo"],
prefunded_accounts=result["network_params"]["prefunded_accounts"], prefunded_accounts=result["network_params"]["prefunded_accounts"],
gossip_max_size=result["network_params"]["gossip_max_size"], max_payload_size=result["network_params"]["max_payload_size"],
), ),
mev_params=struct( mev_params=struct(
mev_relay_image=result["mev_params"]["mev_relay_image"], mev_relay_image=result["mev_params"]["mev_relay_image"],
...@@ -385,6 +391,7 @@ def input_parser(plan, input_args): ...@@ -385,6 +391,7 @@ def input_parser(plan, input_args):
mev_flood_seconds_per_bundle=result["mev_params"][ mev_flood_seconds_per_bundle=result["mev_params"][
"mev_flood_seconds_per_bundle" "mev_flood_seconds_per_bundle"
], ],
mock_mev_image=result["mev_params"]["mock_mev_image"],
) )
if result["mev_params"] if result["mev_params"]
else None, else None,
...@@ -404,13 +411,9 @@ def input_parser(plan, input_args): ...@@ -404,13 +411,9 @@ def input_parser(plan, input_args):
github_prefix=result["docker_cache_params"]["github_prefix"], github_prefix=result["docker_cache_params"]["github_prefix"],
google_prefix=result["docker_cache_params"]["google_prefix"], google_prefix=result["docker_cache_params"]["google_prefix"],
), ),
tx_spammer_params=struct( tx_fuzz_params=struct(
image=result["tx_spammer_params"]["image"], image=result["tx_fuzz_params"]["image"],
tx_spammer_extra_args=result["tx_spammer_params"]["tx_spammer_extra_args"], tx_fuzz_extra_args=result["tx_fuzz_params"]["tx_fuzz_extra_args"],
),
goomy_blob_params=struct(
image=result["goomy_blob_params"]["image"],
goomy_blob_args=result["goomy_blob_params"]["goomy_blob_args"],
), ),
prometheus_params=struct( prometheus_params=struct(
storage_tsdb_retention_time=result["prometheus_params"][ storage_tsdb_retention_time=result["prometheus_params"][
...@@ -457,12 +460,21 @@ def input_parser(plan, input_args): ...@@ -457,12 +460,21 @@ def input_parser(plan, input_args):
), ),
spamoor_params=struct( spamoor_params=struct(
image=result["spamoor_params"]["image"], image=result["spamoor_params"]["image"],
tx_type=result["spamoor_params"]["tx_type"], scenario=result["spamoor_params"]["scenario"],
throughput=result["spamoor_params"]["throughput"], throughput=result["spamoor_params"]["throughput"],
max_pending=result["spamoor_params"]["max_pending"], max_pending=result["spamoor_params"]["max_pending"],
max_wallets=result["spamoor_params"]["max_wallets"], max_wallets=result["spamoor_params"]["max_wallets"],
spamoor_extra_args=result["spamoor_params"]["spamoor_extra_args"], spamoor_extra_args=result["spamoor_params"]["spamoor_extra_args"],
), ),
spamoor_blob_params=struct(
image=result["spamoor_blob_params"]["image"],
scenario=result["spamoor_blob_params"]["scenario"],
throughput=result["spamoor_blob_params"]["throughput"],
max_blobs=result["spamoor_blob_params"]["max_blobs"],
max_pending=result["spamoor_blob_params"]["max_pending"],
max_wallets=result["spamoor_blob_params"]["max_wallets"],
spamoor_extra_args=result["spamoor_blob_params"]["spamoor_extra_args"],
),
bunnyfinder_params=struct( bunnyfinder_params=struct(
image=result["bunnyfinder_params"]["image"], image=result["bunnyfinder_params"]["image"],
strategy=result["bunnyfinder_params"]["strategy"], strategy=result["bunnyfinder_params"]["strategy"],
...@@ -497,6 +509,9 @@ def input_parser(plan, input_args): ...@@ -497,6 +509,9 @@ def input_parser(plan, input_args):
keymanager_enabled=result["keymanager_enabled"], keymanager_enabled=result["keymanager_enabled"],
checkpoint_sync_enabled=result["checkpoint_sync_enabled"], checkpoint_sync_enabled=result["checkpoint_sync_enabled"],
checkpoint_sync_url=result["checkpoint_sync_url"], checkpoint_sync_url=result["checkpoint_sync_url"],
ethereum_genesis_generator_params=struct(
image=result["ethereum_genesis_generator_params"]["image"],
),
port_publisher=struct( port_publisher=struct(
nat_exit_ip=result["port_publisher"]["nat_exit_ip"], nat_exit_ip=result["port_publisher"]["nat_exit_ip"],
cl_enabled=result["port_publisher"]["cl"]["enabled"], cl_enabled=result["port_publisher"]["cl"]["enabled"],
...@@ -559,7 +574,7 @@ def parse_network_params(plan, input_args): ...@@ -559,7 +574,7 @@ def parse_network_params(plan, input_args):
for attr in input_args: for attr in input_args:
value = input_args[attr] value = input_args[attr]
# if its insterted we use the value inserted # if its inserted we use the value inserted
if attr not in ATTR_TO_BE_SKIPPED_AT_ROOT and attr in input_args: if attr not in ATTR_TO_BE_SKIPPED_AT_ROOT and attr in input_args:
result[attr] = value result[attr] = value
elif attr == "network_params": elif attr == "network_params":
...@@ -885,6 +900,7 @@ def default_input_args(input_args): ...@@ -885,6 +900,7 @@ def default_input_args(input_args):
"keymanager_enabled": False, "keymanager_enabled": False,
"checkpoint_sync_enabled": False, "checkpoint_sync_enabled": False,
"checkpoint_sync_url": "", "checkpoint_sync_url": "",
"ethereum_genesis_generator_params": get_default_ethereum_genesis_generator_params(),
"port_publisher": { "port_publisher": {
"nat_exit_ip": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER, "nat_exit_ip": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
"public_port_start": None, "public_port_start": None,
...@@ -916,6 +932,8 @@ def default_network_params(): ...@@ -916,6 +932,8 @@ def default_network_params():
"deneb_fork_epoch": 0, "deneb_fork_epoch": 0,
"electra_fork_epoch": constants.ELECTRA_FORK_EPOCH, "electra_fork_epoch": constants.ELECTRA_FORK_EPOCH,
"fulu_fork_epoch": constants.FULU_FORK_EPOCH, "fulu_fork_epoch": constants.FULU_FORK_EPOCH,
"eip7732_fork_epoch": constants.EIP7732_FORK_EPOCH,
"eip7805_fork_epoch": constants.EIP7805_FORK_EPOCH,
"network_sync_base_url": "https://snapshots.ethpandaops.io/", "network_sync_base_url": "https://snapshots.ethpandaops.io/",
"data_column_sidecar_subnet_count": 128, "data_column_sidecar_subnet_count": 128,
"samples_per_slot": 8, "samples_per_slot": 8,
...@@ -928,7 +946,7 @@ def default_network_params(): ...@@ -928,7 +946,7 @@ def default_network_params():
"additional_preloaded_contracts": {}, "additional_preloaded_contracts": {},
"devnet_repo": "ethpandaops", "devnet_repo": "ethpandaops",
"prefunded_accounts": {}, "prefunded_accounts": {},
"gossip_max_size": 10485760, "max_payload_size": 10485760,
} }
...@@ -955,6 +973,8 @@ def default_minimal_network_params(): ...@@ -955,6 +973,8 @@ def default_minimal_network_params():
"deneb_fork_epoch": 0, "deneb_fork_epoch": 0,
"electra_fork_epoch": constants.ELECTRA_FORK_EPOCH, "electra_fork_epoch": constants.ELECTRA_FORK_EPOCH,
"fulu_fork_epoch": constants.FULU_FORK_EPOCH, "fulu_fork_epoch": constants.FULU_FORK_EPOCH,
"eip7732_fork_epoch": constants.EIP7732_FORK_EPOCH,
"eip7805_fork_epoch": constants.EIP7805_FORK_EPOCH,
"network_sync_base_url": "https://snapshots.ethpandaops.io/", "network_sync_base_url": "https://snapshots.ethpandaops.io/",
"data_column_sidecar_subnet_count": 128, "data_column_sidecar_subnet_count": 128,
"samples_per_slot": 8, "samples_per_slot": 8,
...@@ -967,7 +987,7 @@ def default_minimal_network_params(): ...@@ -967,7 +987,7 @@ def default_minimal_network_params():
"additional_preloaded_contracts": {}, "additional_preloaded_contracts": {},
"devnet_repo": "ethpandaops", "devnet_repo": "ethpandaops",
"prefunded_accounts": {}, "prefunded_accounts": {},
"gossip_max_size": 10485760, "max_payload_size": 10485760,
} }
...@@ -1049,7 +1069,7 @@ def get_default_blockscout_params(): ...@@ -1049,7 +1069,7 @@ def get_default_blockscout_params():
def get_default_dora_params(): def get_default_dora_params():
return { return {
"image": "ethpandaops/dora:latest", "image": constants.DEFAULT_DORA_IMAGE,
"env": {}, "env": {},
} }
...@@ -1117,9 +1137,16 @@ def get_default_mev_params(mev_type, preset): ...@@ -1117,9 +1137,16 @@ def get_default_mev_params(mev_type, preset):
"0x436F6D6D69742D426F6F737420F09F93BB" # Commit-Boost 📻 "0x436F6D6D69742D426F6F737420F09F93BB" # Commit-Boost 📻
) )
if mev_type == constants.MOCK_MEV_TYPE:
mev_builder_image = constants.DEFAULT_MOCK_MEV_IMAGE
mev_boost_image = constants.DEFAULT_FLASHBOTS_MEV_BOOST_IMAGE
return { return {
"mev_relay_image": mev_relay_image, "mev_relay_image": mev_relay_image,
"mev_builder_image": mev_builder_image, "mev_builder_image": mev_builder_image,
"mock_mev_image": mev_builder_image
if mev_type == constants.MOCK_MEV_TYPE
else None,
"mev_builder_cl_image": mev_builder_cl_image, "mev_builder_cl_image": mev_builder_cl_image,
"mev_builder_extra_data": mev_builder_extra_data, "mev_builder_extra_data": mev_builder_extra_data,
"mev_builder_extra_args": mev_builder_extra_args, "mev_builder_extra_args": mev_builder_extra_args,
...@@ -1135,20 +1162,16 @@ def get_default_mev_params(mev_type, preset): ...@@ -1135,20 +1162,16 @@ def get_default_mev_params(mev_type, preset):
} }
def get_default_tx_spammer_params(): def get_default_tx_fuzz_params():
return { return {
"image": "ethpandaops/tx-fuzz:master", "image": "ethpandaops/tx-fuzz:master",
"tx_spammer_extra_args": [], "tx_fuzz_extra_args": [],
} }
def get_default_goomy_blob_params():
return {"image": "ethpandaops/goomy-blob:master", "goomy_blob_args": []}
def get_default_assertoor_params(): def get_default_assertoor_params():
return { return {
"image": "ethpandaops/assertoor:latest", "image": constants.DEFAULT_ASSERTOOR_IMAGE,
"run_stability_check": False, "run_stability_check": False,
"run_block_proposal_check": False, "run_block_proposal_check": False,
"run_lifecycle_test": False, "run_lifecycle_test": False,
...@@ -1167,7 +1190,7 @@ def get_default_prometheus_params(): ...@@ -1167,7 +1190,7 @@ def get_default_prometheus_params():
"max_cpu": 1000, "max_cpu": 1000,
"min_mem": 128, "min_mem": 128,
"max_mem": 2048, "max_mem": 2048,
"image": "prom/prometheus:latest", "image": "prom/prometheus:v3.2.1",
} }
...@@ -1204,7 +1227,7 @@ def get_default_xatu_sentry_params(): ...@@ -1204,7 +1227,7 @@ def get_default_xatu_sentry_params():
def get_default_spamoor_params(): def get_default_spamoor_params():
return { return {
"image": "ethpandaops/spamoor:latest", "image": "ethpandaops/spamoor:latest",
"tx_type": "eoatx", "scenario": "eoatx",
"throughput": 1000, "throughput": 1000,
"max_pending": 1000, "max_pending": 1000,
"max_wallets": 500, "max_wallets": 500,
...@@ -1226,6 +1249,18 @@ def get_default_bunnyfinder_params(): ...@@ -1226,6 +1249,18 @@ def get_default_bunnyfinder_params():
} }
def get_default_spamoor_blob_params():
return {
"image": "ethpandaops/spamoor:latest",
"scenario": "blob-combined",
"throughput": 3,
"max_blobs": 2,
"max_pending": 6,
"max_wallets": 29,
"spamoor_extra_args": [],
}
def get_default_custom_flood_params(): def get_default_custom_flood_params():
# this is a simple script that increases the balance of the coinbase address at a cadence # this is a simple script that increases the balance of the coinbase address at a cadence
return {"interval_between_transactions": 1} return {"interval_between_transactions": 1}
...@@ -1342,7 +1377,7 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ ...@@ -1342,7 +1377,7 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
"cl_extra_params": [ "cl_extra_params": [
"--always-prepare-payload", "--always-prepare-payload",
"--prepare-payload-lookahead", "--prepare-payload-lookahead",
"12000", "8000",
"--disable-peer-scoring", "--disable-peer-scoring",
], ],
"el_extra_params": parsed_arguments_dict["mev_params"][ "el_extra_params": parsed_arguments_dict["mev_params"][
...@@ -1368,7 +1403,7 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ ...@@ -1368,7 +1403,7 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
"cl_extra_params": [ "cl_extra_params": [
"--always-prepare-payload", "--always-prepare-payload",
"--prepare-payload-lookahead", "--prepare-payload-lookahead",
"12000", "8000",
"--disable-peer-scoring", "--disable-peer-scoring",
], ],
"el_extra_params": parsed_arguments_dict["mev_params"][ "el_extra_params": parsed_arguments_dict["mev_params"][
...@@ -1378,6 +1413,10 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ ...@@ -1378,6 +1413,10 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
} }
) )
parsed_arguments_dict["participants"].append(mev_participant) parsed_arguments_dict["participants"].append(mev_participant)
if mev_type == constants.MOCK_MEV_TYPE:
parsed_arguments_dict["mev_params"]["mock_mev_image"] = parsed_arguments_dict[
"mev_params"
]["mock_mev_image"]
return parsed_arguments_dict return parsed_arguments_dict
...@@ -1417,11 +1456,12 @@ def docker_cache_image_override(plan, result): ...@@ -1417,11 +1456,12 @@ def docker_cache_image_override(plan, result):
"mev_params.mev_boost_image", "mev_params.mev_boost_image",
"mev_params.mev_flood_image", "mev_params.mev_flood_image",
"xatu_sentry_params.xatu_sentry_image", "xatu_sentry_params.xatu_sentry_image",
"tx_spammer_params.image", "tx_fuzz_params.image",
"goomy_blob_params.image",
"prometheus_params.image", "prometheus_params.image",
"grafana_params.image", "grafana_params.image",
"spamoor_params.image", "spamoor_params.image",
"spamoor_blob_params.image",
"ethereum_genesis_generator_params.image",
"bunnyfinder_params.image", "bunnyfinder_params.image",
] ]
...@@ -1494,3 +1534,9 @@ def docker_cache_image_override(plan, result): ...@@ -1494,3 +1534,9 @@ def docker_cache_image_override(plan, result):
tooling_image_key tooling_image_key
) )
) )
def get_default_ethereum_genesis_generator_params():
return {
"image": constants.DEFAULT_ETHEREUM_GENESIS_GENERATOR_IMAGE,
}
...@@ -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 }}
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
"editable": true, "editable": true,
"fiscalYearStartMonth": 0, "fiscalYearStartMonth": 0,
"graphTooltip": 0, "graphTooltip": 0,
"id": 7, "id": 6,
"links": [], "links": [],
"panels": [ "panels": [
{ {
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "9.1.2", "pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -222,7 +222,7 @@ ...@@ -222,7 +222,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "9.1.2", "pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -325,7 +325,7 @@ ...@@ -325,7 +325,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "9.1.2", "pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -402,8 +402,7 @@ ...@@ -402,8 +402,7 @@
"value": 80 "value": 80
} }
] ]
}, }
"unit": "s"
}, },
"overrides": [] "overrides": []
}, },
...@@ -426,6 +425,7 @@ ...@@ -426,6 +425,7 @@
"sort": "none" "sort": "none"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -433,7 +433,7 @@ ...@@ -433,7 +433,7 @@
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"editorMode": "code", "editorMode": "code",
"expr": "histogram_quantile(0.99, rate(beacon_data_column_sidecar_gossip_verification_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))", "expr": "(\n histogram_quantile(0.99, rate(beacon_data_column_sidecar_gossip_verification_seconds_bucket {client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))\n)\nOR\n(\n histogram_quantile(0.99, rate(beacon_data_column_sidecar_gossip_verification_milliseconds_bucket{\n client_name=~\"$client\",\n job=~\"$job\",\n supernode=~\"$nodes\"\n }[$__rate_interval])) / 1000\n)",
"instant": false, "instant": false,
"legendFormat": "{{job}}", "legendFormat": "{{job}}",
"range": true, "range": true,
...@@ -525,7 +525,7 @@ ...@@ -525,7 +525,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "9.1.2", "pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -602,8 +602,7 @@ ...@@ -602,8 +602,7 @@
"value": 80 "value": 80
} }
] ]
}, }
"unit": "s"
}, },
"overrides": [] "overrides": []
}, },
...@@ -626,6 +625,7 @@ ...@@ -626,6 +625,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -633,7 +633,7 @@ ...@@ -633,7 +633,7 @@
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"editorMode": "code", "editorMode": "code",
"expr": "histogram_quantile(0.99, rate(beacon_data_availability_reconstruction_time_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))", "expr": "(\n histogram_quantile(0.99, rate(beacon_data_availability_reconstruction_time_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))\n)\nOR\n(\n histogram_quantile(0.99, rate(beacon_data_availability_reconstruction_time_milliseconds_bucket{\n client_name=~\"$client\",\n job=~\"$job\",\n supernode=~\"$nodes\"\n }[$__rate_interval])) / 1000\n)",
"legendFormat": "{{job}}", "legendFormat": "{{job}}",
"range": true, "range": true,
"refId": "A" "refId": "A"
...@@ -700,8 +700,7 @@ ...@@ -700,8 +700,7 @@
"value": 80 "value": 80
} }
] ]
}, }
"unit": "s"
}, },
"overrides": [] "overrides": []
}, },
...@@ -724,6 +723,7 @@ ...@@ -724,6 +723,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -731,7 +731,7 @@ ...@@ -731,7 +731,7 @@
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"editorMode": "code", "editorMode": "code",
"expr": "histogram_quantile(0.99, rate(data_column_sidecar_computation_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))", "expr": "(\n histogram_quantile(0.99, rate(beacon_data_column_sidecar_computation_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))\n)\nOR\n(\n histogram_quantile(0.99, rate(beacon_data_column_sidecar_computation_milliseconds_bucket{\n client_name=~\"$client\",\n job=~\"$job\",\n supernode=~\"$nodes\"\n }[$__rate_interval])) / 1000\n)",
"legendFormat": "{{job}}", "legendFormat": "{{job}}",
"range": true, "range": true,
"refId": "A" "refId": "A"
...@@ -797,8 +797,7 @@ ...@@ -797,8 +797,7 @@
"value": 80 "value": 80
} }
] ]
}, }
"unit": "s"
}, },
"overrides": [] "overrides": []
}, },
...@@ -821,6 +820,7 @@ ...@@ -821,6 +820,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -828,7 +828,7 @@ ...@@ -828,7 +828,7 @@
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"editorMode": "code", "editorMode": "code",
"expr": "histogram_quantile(0.99, rate(beacon_data_column_sidecar_inclusion_proof_verification_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))", "expr": "(\n histogram_quantile(0.99, rate(beacon_data_column_sidecar_inclusion_proof_verification_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))\n)\nOR\n(\n histogram_quantile(0.99, rate(beacon_data_column_sidecar_inclusion_proof_verification_milliseconds_bucket{\n client_name=~\"$client\",\n job=~\"$job\",\n supernode=~\"$nodes\"\n }[$__rate_interval])) / 1000\n)",
"legendFormat": "{{job}}", "legendFormat": "{{job}}",
"range": true, "range": true,
"refId": "A" "refId": "A"
...@@ -894,8 +894,7 @@ ...@@ -894,8 +894,7 @@
"value": 80 "value": 80
} }
] ]
}, }
"unit": "s"
}, },
"overrides": [] "overrides": []
}, },
...@@ -918,6 +917,7 @@ ...@@ -918,6 +917,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -925,7 +925,7 @@ ...@@ -925,7 +925,7 @@
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"editorMode": "code", "editorMode": "code",
"expr": "histogram_quantile(0.99, rate(beacon_kzg_verification_data_column_single_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))", "expr": "(\n histogram_quantile(0.99, rate(beacon_kzg_verification_data_column_single_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))\n)\nOR\n(\n histogram_quantile(0.99, rate(beacon_kzg_verification_data_column_single_milliseconds_bucket{\n client_name=~\"$client\",\n job=~\"$job\",\n supernode=~\"$nodes\"\n }[$__rate_interval])) / 1000\n)",
"hide": false, "hide": false,
"legendFormat": "{{job}}", "legendFormat": "{{job}}",
"range": true, "range": true,
...@@ -992,8 +992,7 @@ ...@@ -992,8 +992,7 @@
"value": 80 "value": 80
} }
] ]
}, }
"unit": "s"
}, },
"overrides": [] "overrides": []
}, },
...@@ -1016,6 +1015,7 @@ ...@@ -1016,6 +1015,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -1023,7 +1023,7 @@ ...@@ -1023,7 +1023,7 @@
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"editorMode": "code", "editorMode": "code",
"expr": "histogram_quantile(0.99, rate(beacon_kzg_verification_data_column_batch_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))", "expr": "(\n histogram_quantile(0.99, rate(beacon_kzg_verification_data_column_batch_seconds_bucket{client_name=~\"$client\", job=~\"$job\", supernode=~\"$nodes\"}[$__rate_interval]))\n)\nOR\n(\n histogram_quantile(0.99, rate(beacon_kzg_verification_data_column_batch_milliseconds_bucket{\n client_name=~\"$client\",\n job=~\"$job\",\n supernode=~\"$nodes\"\n }[$__rate_interval])) / 1000\n)",
"legendFormat": "{{job}}", "legendFormat": "{{job}}",
"range": true, "range": true,
"refId": "A" "refId": "A"
...@@ -1112,6 +1112,7 @@ ...@@ -1112,6 +1112,7 @@
"sort": "desc" "sort": "desc"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -1221,6 +1222,7 @@ ...@@ -1221,6 +1222,7 @@
"sort": "none" "sort": "none"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -1319,6 +1321,7 @@ ...@@ -1319,6 +1321,7 @@
"sort": "none" "sort": "none"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -1417,6 +1420,7 @@ ...@@ -1417,6 +1420,7 @@
"sort": "none" "sort": "none"
} }
}, },
"pluginVersion": "11.4.0",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
...@@ -1482,8 +1486,7 @@ ...@@ -1482,8 +1486,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -1581,8 +1584,7 @@ ...@@ -1581,8 +1584,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -1680,8 +1682,7 @@ ...@@ -1680,8 +1682,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -1793,8 +1794,7 @@ ...@@ -1793,8 +1794,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -1896,8 +1896,7 @@ ...@@ -1896,8 +1896,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -1999,8 +1998,7 @@ ...@@ -1999,8 +1998,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -2102,8 +2100,7 @@ ...@@ -2102,8 +2100,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -2205,8 +2202,7 @@ ...@@ -2205,8 +2202,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -2309,8 +2305,7 @@ ...@@ -2309,8 +2305,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -2413,8 +2408,7 @@ ...@@ -2413,8 +2408,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -2517,8 +2511,7 @@ ...@@ -2517,8 +2511,7 @@
"mode": "absolute", "mode": "absolute",
"steps": [ "steps": [
{ {
"color": "green", "color": "green"
"value": null
}, },
{ {
"color": "red", "color": "red",
...@@ -2572,33 +2565,27 @@ ...@@ -2572,33 +2565,27 @@
"type": "timeseries" "type": "timeseries"
} }
], ],
"preload": false,
"refresh": "15m", "refresh": "15m",
"schemaVersion": 39, "schemaVersion": 40,
"tags": [], "tags": [],
"templating": { "templating": {
"list": [ "list": [
{ {
"current": { "current": {
"selected": true,
"text": [ "text": [
"All" "$__all"
], ],
"value": [ "value": [
"$__all" "$__all"
] ]
}, },
"description": "", "description": "",
"hide": 0,
"includeAll": true, "includeAll": true,
"label": "Client", "label": "Client",
"multi": true, "multi": true,
"name": "client", "name": "client",
"options": [ "options": [
{
"selected": true,
"text": "All",
"value": "$__all"
},
{ {
"selected": false, "selected": false,
"text": "lighthouse", "text": "lighthouse",
...@@ -2631,16 +2618,11 @@ ...@@ -2631,16 +2618,11 @@
} }
], ],
"query": "lighthouse, teku, prysm, lodestar, grandine, nimbus", "query": "lighthouse, teku, prysm, lodestar, grandine, nimbus",
"queryValue": "",
"skipUrlSync": false,
"type": "custom" "type": "custom"
}, },
{ {
"current": { "current": {
"selected": true, "text": "All",
"text": [
"All"
],
"value": [ "value": [
"$__all" "$__all"
] ]
...@@ -2650,7 +2632,6 @@ ...@@ -2650,7 +2632,6 @@
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"definition": "label_values(job)", "definition": "label_values(job)",
"hide": 0,
"includeAll": true, "includeAll": true,
"label": "Job", "label": "Job",
"multi": true, "multi": true,
...@@ -2663,31 +2644,22 @@ ...@@ -2663,31 +2644,22 @@
}, },
"refresh": 1, "refresh": 1,
"regex": "^cl.*", "regex": "^cl.*",
"skipUrlSync": false,
"sort": 0,
"type": "query" "type": "query"
}, },
{ {
"current": { "current": {
"selected": true,
"text": [ "text": [
"All" "$__all"
], ],
"value": [ "value": [
"$__all" "$__all"
] ]
}, },
"hide": 0,
"includeAll": true, "includeAll": true,
"label": "Nodes", "label": "Nodes",
"multi": true, "multi": true,
"name": "nodes", "name": "nodes",
"options": [ "options": [
{
"selected": true,
"text": "All",
"value": "$__all"
},
{ {
"selected": false, "selected": false,
"text": "supernodes", "text": "supernodes",
...@@ -2700,8 +2672,6 @@ ...@@ -2700,8 +2672,6 @@
} }
], ],
"query": "supernodes : True, full nodes : False", "query": "supernodes : True, full nodes : False",
"queryValue": "",
"skipUrlSync": false,
"type": "custom" "type": "custom"
} }
] ]
...@@ -2714,6 +2684,6 @@ ...@@ -2714,6 +2684,6 @@
"timezone": "browser", "timezone": "browser",
"title": "PeerDAS metrics", "title": "PeerDAS metrics",
"uid": "ddr7j9b1mlszkm", "uid": "ddr7j9b1mlszkm",
"version": 15, "version": 7,
"weekStart": "" "weekStart": ""
} }
\ No newline at end of file
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