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
descritpion: Log in to Docker Hub
description: Log in to Docker Hub
inputs:
username:
required: true
......@@ -24,7 +24,7 @@ runs:
- name: Login to Docker Hub
if: env.AUTH_EXISTS == 'true'
uses: docker/login-action@v3
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ inputs.username }}
password: ${{ inputs.password }}
......
......@@ -13,4 +13,4 @@ participants:
count: 1
additional_services:
- 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:
- el_type: geth
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:
altair_fork_epoch: 0
bellatrix_fork_epoch: 0
capella_fork_epoch: 0
deneb_fork_epoch: 0
electra_fork_epoch: 0
fulu_fork_epoch: 1
preset: minimal
electra_fork_epoch: 1
fulu_fork_epoch: 2
eip7732_fork_epoch: 3
eip7805_fork_epoch: 4
......@@ -12,5 +12,5 @@ participants:
- el_type: geth
cl_type: grandine
additional_services:
- goomy_blob
- spamoor_blob
- dora
participants:
- el_type: geth
el_image: ethereum/client-go:v1.13.14
el_image: ethpandaops/geth:prague-devnet-5-f85cde7
cl_type: teku
cl_image: consensys/teku:24.2.0
cl_image: consensys/teku:develop
network_params:
dencun_fork_epoch: 0
electra_fork_epoch: 4
network: holesky-shadowfork
additional_services:
- 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:
cl_type: lighthouse
mev_type: commit-boost
additional_services:
- tx_spammer
- blob_spammer
- tx_fuzz
- spamoor_blob
- custom_flood
- el_forkmon
- beacon_metrics_gazer
- forkmon
- dora
- prometheus_grafana
mev_params:
......
participants:
- el_type: geth
cl_type: lighthouse
network_params:
seconds_per_slot: 3
count: 3
mev_type: mock
additional_services:
- dora
- spamoor_blob
- tx_fuzz
mev_params:
mock_mev_image: "ethpandaops/rustic-builder:main"
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_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:
- dora
- tx_spammer
- tx_fuzz
- spamoor_blob
mev_type: flashbots
mev_params:
mev_relay_image: jtraglia/mev-boost-relay:electra
mev_boost_image: jtraglia/mev-boost:electra
mev_builder_image: ethpandaops/rbuilder:develop-1b578f5
mev_builder_cl_image: ethpandaops/lighthouse:pawan-electra-alpha7-0dd215c
mev_relay_image: flashbots/mev-boost-relay:0.30.0rc1
mev_boost_image: flashbots/mev-boost:1.9rc2
mev_builder_cl_image: sigp/lighthouse:v7.0.0-beta.0
mev_builder_image: ethpandaops/reth-rbuilder:develop-42872ec
network_params:
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:
- el_type: geth
el_extra_params: ["--miner.extradata=localGeth"]
cl_type: lighthouse
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:
- tx_spammer
- blob_spammer
- tx_fuzz
- custom_flood
- goomy_blob
- beacon_metrics_gazer
- spamoor_blob
- dora
- prometheus_grafana
network_params:
......
......@@ -16,7 +16,7 @@ network_params:
seconds_per_slot: 6
additional_services:
- dora
- tx_spammer
- tx_fuzz
- apache
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:
cl_type: prysm
- el_type: erigon
cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:unstable-minimal
- el_type: besu
cl_type: lighthouse
- el_type: reth
cl_type: lodestar
- el_type: geth
cl_type: grandine
# TODO: Re-add grandine once its working with minimal preset
# - el_type: geth
# cl_type: grandine
network_params:
preset: minimal
......@@ -12,13 +12,11 @@ participants:
- el_type: ethereumjs
cl_type: teku
additional_services:
- tx_spammer
- blob_spammer
- el_forkmon
- beacon_metrics_gazer
- tx_fuzz
- forkmon
- dora
- prometheus_grafana
- goomy_blob
- spamoor_blob
- custom_flood
- blobscan
- blockscout
......@@ -31,5 +29,5 @@ ethereum_metrics_exporter_enabled: true
snooper_enabled: true
mev_type: flashbots
mev_params:
mev_relay_image: flashbots/mev-boost-relay:latest
mev_relay_image: ethpandaops/mev-boost-relay:main
persistent: True
......@@ -14,13 +14,11 @@ participants:
network_params:
preset: minimal
additional_services:
- tx_spammer
- blob_spammer
- el_forkmon
- beacon_metrics_gazer
- tx_fuzz
- forkmon
- dora
- prometheus_grafana
- goomy_blob
- spamoor_blob
- custom_flood
- blobscan
- blockscout
......
......@@ -14,16 +14,12 @@ participants:
- el_type: geth
cl_type: grandine
additional_services:
- tx_spammer
- blob_spammer
- el_forkmon
- beacon_metrics_gazer
- tx_fuzz
- forkmon
- dora
- prometheus_grafana
- goomy_blob
- spamoor_blob
- custom_flood
- blobscan
- blockscout
- dugtrio
- blutgang
- 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:
el:
- el_type: nethermind
el_image: nethermindeth/nethermind:pectra
- el_type: geth
el_image: ethpandaops/geth:prague-devnet-2
- el_type: ethereumjs
el_image: ethpandaops/ethereumjs:master
- el_type: erigon
el_image: erigontech/erigon:pectra_e2
el_image: ethereum/client-go:v1.15.5
- 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_image: ethpandaops/besu:main
el_image: hyperledger/besu:25.2.2
- el_type: ethereumjs
el_image: ethpandaops/ethereumjs:eip7840
cl:
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:electra-devnet-1-51d51f5
cl_image: sigp/lighthouse:v7.0.0-beta.0
- cl_type: teku
cl_image: ethpandaops/teku:master
cl_image: consensys/teku:25.2
- cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:unstable
cl_image: statusim/nimbus-eth2:multiarch-v25.3.0
- cl_type: lodestar
cl_image: ethpandaops/lodestar:electra-fork-rebasejul30
cl_image: chainsafe/lodestar:v1.27.1
- cl_type: grandine
cl_image: ethpandaops/grandine:electra
cl_image: sifrai/grandine:1.0.0
- 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:
electra_fork_epoch: 1
min_validator_withdrawability_delay: 1
......@@ -34,7 +35,7 @@ additional_services:
- dora
- assertoor
snooper_enabled: true
snooper_enabled: false
assertoor_params:
run_stability_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:
# Supernodes
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:peerDAS-minimal
cl_extra_params: [--subscribe-all-subnets, --pprof]
vc_image: ethpandaops/prysm-validator:develop
# Super nodes
# -----------
# Lighthouse
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:das-devnet-2
cl_extra_params: [--subscribe-all-data-column-subnets]
cl_image: ethpandaops/lighthouse:peerdas-devnet-4
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_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_image: ethpandaops/nimbus-eth2:peerdas-p2p-minimal
cl_extra_params: [--subscribe-all-subnets=true]
# Non supernodes
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:peerDAS-minimal
vc_image: ethpandaops/prysm-validator:develop
cl_image: ethpandaops/nimbus-eth2:columns
cl_extra_params:
- --debug-peerdas-supernode=true
- --sync-light-client=no
# Full nodes
# -----------
# 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_image: ethpandaops/teku:nashatyrev-das
# Grandine
- cl_type: grandine
cl_image: ethpandaops/grandine:peerdas-fulu
# Nimbus
- cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:peerdas-p2p-minimal
- cl_type: lodestar
cl_image: ethpandaops/lodestar:peerDAS
cl_extra_params: [--persistNetworkIdentity]
cl_image: ethpandaops/nimbus-eth2:columns
cl_extra_params:
- --debug-peerdas-supernode=false
- --sync-light-client=no
global_log_level: debug
network_params:
electra_fork_epoch: 1
fulu_fork_epoch: 2
preset: minimal
snooper_enabled: true
global_log_level: debug
additional_services:
- dora
- goomy_blob
- spamoor_blob
- prometheus_grafana
- assertoor
ethereum_metrics_exporter_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/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" }
snooper_enabled: false
dora_params:
image: ethpandaops/dora:fulu-support
\ No newline at end of file
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:
network_params:
electra_fork_epoch: 0
additional_services:
- el_forkmon
- tx_spammer
- forkmon
- tx_fuzz
- dora
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:
title_check:
runs-on: self-hosted-ghr-size-s-x64
steps:
- uses: amannn/action-semantic-pull-request@v5
- uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
......@@ -11,7 +11,7 @@ jobs:
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- id: set-matrix
# 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
......@@ -25,7 +25,7 @@ jobs:
continue-on-error: true
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login
with:
username: ethpandaops
......@@ -54,7 +54,7 @@ jobs:
- name: Notify
if: (cancelled() || failure()) && env.discord_webhook_set == 'true'
uses: nobrayner/discord-webhook@v1
uses: nobrayner/discord-webhook@1766a33bf571acdcc0678f00da4fb83aad01ebc7 # v1
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 }}"
github-token: ${{ secrets.github_token }}
......@@ -64,13 +64,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login
with:
username: ethpandaops
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Kurtosis Assertoor GitHub Action
uses: ethpandaops/kurtosis-assertoor-github-action@v1
uses: ethpandaops/kurtosis-assertoor-github-action@5932604b244dbd2ddb811516b516a9094f4d2c2f # v1
with:
kurtosis_extra_args: "--image-download always --non-blocking-tasks --verbosity DETAILED"
ethereum_package_branch: ""
......
......@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login
with:
username: ethpandaops
......@@ -39,7 +39,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login
with:
username: ethpandaops
......@@ -54,7 +54,7 @@ jobs:
runs-on: self-hosted-ghr-size-s-x64
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Kurtosis
uses: ./.github/actions/kurtosis-install
- name: Kurtosis Lint
......@@ -65,27 +65,27 @@ jobs:
timeout-minutes: 30
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/docker-login
with:
username: ethpandaops
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Kurtosis Assertoor GitHub Action
uses: ethpandaops/kurtosis-assertoor-github-action@v1
uses: ethpandaops/kurtosis-assertoor-github-action@5932604b244dbd2ddb811516b516a9094f4d2c2f # v1
with:
ethereum_package_url: "."
ethereum_package_branch: ""
ethereum_package_args: .github/tests/mix-assert.yaml
check_optimism_package:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Kurtosis
uses: ./.github/actions/kurtosis-install
- name: Run L1
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
- name: Run L2
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
#check_optimism_package:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout Repository
# uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# - name: Setup Kurtosis
# uses: ./.github/actions/kurtosis-install
# - name: Run L1
# 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
# - name: Run L2
# 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
......@@ -20,11 +20,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup minikube
id: minikube
uses: medyagh/setup-minikube@latest
uses: medyagh/setup-minikube@cea33675329b799adccc9526aa5daccc26cd5052 # v0.0.19
- name: Get kubeconfig
id: kubeconfig
......@@ -36,7 +36,7 @@ jobs:
# run kurtosis test and assertoor
- name: Run kurtosis testnet
id: testnet
uses: ethpandaops/kurtosis-assertoor-github-action@v1
uses: ethpandaops/kurtosis-assertoor-github-action@5932604b244dbd2ddb811516b516a9094f4d2c2f # v1
with:
kurtosis_extra_args: "--image-download always --non-blocking-tasks --verbosity DETAILED"
kurtosis_backend: "kubernetes"
......@@ -62,7 +62,7 @@ jobs:
- name: Notify
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:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
with:
......
[default]
extend-ignore-re = [
# Ignore Ethereum Node Records (ENR)
"enr:-.*",
# Ignore blutgang config typo
"supress_rpc_check",
]
[files]
extend-exclude = [
"CHANGELOG.md",
]
# 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)
......
......@@ -415,8 +415,10 @@ participants:
# Default to 1
count: 1
# Snooper local flag for a participant.
# 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
# Enables Ethereum Metrics Exporter for this participant. Can be set globally.
......@@ -625,7 +627,7 @@ network_params:
# Maximum size of gossip messages in bytes
# 10 * 2**20 (= 10485760, 10 MiB)
# Defaults to 10485760 (10MB)
gossip_max_size: 10485760
max_payload_size: 10485760
......@@ -641,13 +643,12 @@ network_params:
additional_services:
- assertoor
- broadcaster
- tx_spammer
- blob_spammer
- tx_fuzz
- custom_flood
- goomy_blob
- el_forkmon
- spamoor
- spamoor_blob
- forkmon
- blockscout
- beacon_metrics_gazer
- dora
- full_beaconchain_explorer
- prometheus_grafana
......@@ -679,20 +680,12 @@ dora_params:
env: {}
# Configuration place for transaction spammer - https://github.com/MariusVanDerWijden/tx-fuzz
tx_spammer_params:
tx_fuzz_params:
# TX Spammer docker image to use
# Defaults to the latest master image
image: "ethpandaops/tx-fuzz:master"
# A list of optional extra params that will be passed to the TX Spammer container for modifying its behaviour
tx_spammer_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: []
tx_fuzz_extra_args: []
# Configuration place for prometheus
prometheus_params:
......@@ -796,7 +789,9 @@ wait_for_finalization: false
# This value will be overridden by participant-specific values
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
snooper_enabled: false
......@@ -812,7 +807,7 @@ parallel_keystore_generation: false
# Default to 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 Erigon, Besu, Teku persistence is not currently supported with docker.
# Defaults to false
......@@ -823,7 +818,7 @@ persistent: false
# Defaults to empty cache url
# 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 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
docker_cache_params:
enabled: false
......@@ -844,13 +839,13 @@ mev_type: null
# Parameters if MEV is used
mev_params:
# 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
mev_builder_image: ethpandaops/flashbots-builder:main
# The image to use for the CL builder
mev_builder_cl_image: sigp/lighthouse:latest
# 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
mev_boost_args: []
# Extra parameters to send to the API
......@@ -936,14 +931,15 @@ checkpoint_sync_enabled: false
# Global flag to set checkpoint sync url
checkpoint_sync_url: ""
# Spamoor params
# Configuration place for spamoor as transaction spammer
spamoor_params:
# The image to use for spamoor
image: ethpandaops/spamoor:latest
# The type of transactions to send
# Valid values are eoatx, erctx, deploytx, depoy-destruct, blobs, gasburnertx
# The spamoor scenario to use (see https://github.com/ethpandaops/spamoor)
# Valid scenarios are:
# eoatx, erctx, deploytx, deploy-destruct, blobs, gasburnertx
# Defaults to eoatx
tx_type: eoatx
scenario: eoatx
# Throughput of spamoor
# Defaults to 1000
throughput: 1000
......@@ -957,9 +953,42 @@ spamoor_params:
# Defaults to empty
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
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
# 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
......@@ -1083,7 +1112,7 @@ network_params:
</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
participants:
......@@ -1188,9 +1217,8 @@ Here's a table of where the keys are used
|---------------|---------------------|------------------|-----------------|-----------------------------|
| 0 | Builder | ✅ | | As coinbase |
| 0 | mev_custom_flood | | ✅ | As the receiver of balance |
| 1 | blob_spammer | ✅ | | As the sender of blobs |
| 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 |
| 7 | mev_flood | ✅ | | As the user_key |
| 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
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
- [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
......
......@@ -11,15 +11,10 @@ validator_ranges = import_module(
"./src/prelaunch_data_generator/validator_keystores/validator_ranges_generator.star"
)
transaction_spammer = import_module(
"./src/transaction_spammer/transaction_spammer.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"
)
tx_fuzz = import_module("./src/tx_fuzz/tx_fuzz.star")
spamoor_blob = import_module("./src/spamoor_blob/spamoor_blob.star")
forkmon = import_module("./src/forkmon/forkmon_launcher.star")
dora = import_module("./src/dora/dora_launcher.star")
dugtrio = import_module("./src/dugtrio/dugtrio_launcher.star")
blutgang = import_module("./src/blutgang/blutgang_launcher.star")
......@@ -255,9 +250,10 @@ def run(plan, args={}):
plan,
el_uri,
beacon_uri,
raw_jwt_secret,
jwt_file,
args_with_right_defaults.global_log_level,
global_node_selectors,
args_with_right_defaults.mev_params,
)
mev_endpoints.append(endpoint)
mev_endpoint_names.append(constants.MOCK_MEV_TYPE)
......@@ -417,6 +413,7 @@ def run(plan, args={}):
mev_endpoints,
el_cl_data_files_artifact_uuid,
global_node_selectors,
final_genesis_timestamp,
)
else:
fail("Invalid MEV type")
......@@ -438,54 +435,27 @@ def run(plan, args={}):
for index, additional_service in enumerate(
args_with_right_defaults.additional_services
):
if additional_service == "tx_spammer":
plan.print("Launching transaction spammer")
tx_spammer_params = args_with_right_defaults.tx_spammer_params
transaction_spammer.launch_transaction_spammer(
if additional_service == "tx_fuzz":
plan.print("Launching tx-fuzz")
tx_fuzz_params = args_with_right_defaults.tx_fuzz_params
tx_fuzz.launch_tx_fuzz(
plan,
prefunded_accounts,
fuzz_target,
tx_spammer_params,
tx_fuzz_params,
global_node_selectors,
)
plan.print("Successfully launched transaction spammer")
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")
plan.print("Successfully launched tx-fuzz")
# We need a way to do time.sleep
# TODO add code that waits for CL genesis
elif additional_service == "el_forkmon":
elif additional_service == "forkmon":
plan.print("Launching el forkmon")
el_forkmon_config_template = read_file(
static_files.EL_FORKMON_CONFIG_TEMPLATE_FILEPATH
forkmon_config_template = read_file(
static_files.FORKMON_CONFIG_TEMPLATE_FILEPATH
)
el_forkmon.launch_el_forkmon(
forkmon.launch_forkmon(
plan,
el_forkmon_config_template,
forkmon_config_template,
all_el_contexts,
global_node_selectors,
args_with_right_defaults.port_publisher,
......@@ -493,24 +463,6 @@ def run(plan, args={}):
args_with_right_defaults.docker_cache_params,
)
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":
plan.print("Launching blockscout")
blockscout_sc_verif_url = blockscout.launch_blockscout(
......@@ -697,6 +649,15 @@ def run(plan, args={}):
args_with_right_defaults.spamoor_params,
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":
plan.print("Launching bunnyfinder")
bunnyfinder_config_template = read_file(
......
participants:
- el_type: besu
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
- 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
validator_count: 85
- el_type: nethermind
cl_type: teku
validator_count: 85
mev_type: null
cl_image: sigp/lighthouse:latest-unstable
cl_log_level: ""
cl_extra_env_vars: {}
cl_extra_labels: {}
cl_extra_params: []
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:
deneb_fork_epoch: 1
network: kurtosis
network_id: "3151908"
deposit_contract_address: "0x4242424242424242424242424242424242424242"
seconds_per_slot: 12
num_validator_keys_per_node: 32
additional_services:
- bunnyfinder
bunnyfinder_params:
image: 'tscel/bunnyfinder:latest'
strategy: 'random,exante'
dbconnect: 'eth:12345678@tcp(172.17.0.1:3306)/eth'
max_malicious_idx: "85"
duration_per_strategy: "30"
openai_key: ""
openai_base_url: ""
llm_model: ""
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
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 @@
"include-v-in-tag": false,
"include-component-in-tag": false,
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": true,
"packages": {
".": {
"package-name": "ethereum-package"
......
......@@ -18,7 +18,7 @@ VALIDATOR_RANGES_ARTIFACT_NAME = "validator-ranges"
MIN_CPU = 100
MAX_CPU = 1000
MIN_MEMORY = 128
MAX_MEMORY = 2048
MAX_MEMORY = 8192
USED_PORTS = {
HTTP_PORT_ID: shared_utils.new_port_spec(
......@@ -121,6 +121,10 @@ def get_config(
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(
image=IMAGE_NAME,
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(
blockscout_params.frontend_image,
),
ports=FRONTEND_USED_PORTS,
public_ports=FRONTEND_USED_PORTS,
env_vars={
"NEXT_PUBLIC_API_PROTOCOL": "http",
"NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL": "ws",
"NEXT_PUBLIC_NETWORK_NAME": "Kurtosis",
"NEXT_PUBLIC_NETWORK_ID": network_params.network_id,
"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
+ ":"
+ str(blockscout_service.ports["http"].number),
......@@ -247,6 +247,12 @@ def get_config_frontend(
"NEXT_PUBLIC_HAS_BEACON_CHAIN": "true",
"NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE": "validation",
"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,
max_cpu=BLOCKSCOUT_MAX_CPU,
......
......@@ -224,7 +224,6 @@ def get_beacon_config(
"--http",
"--http-address=0.0.0.0",
"--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:
# 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)
......
......@@ -211,7 +211,6 @@ def get_beacon_config(
"--slots-per-archive-point={0}".format(32 if constants.ARCHIVE_MODE else 8192),
"--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
"--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
"--enable-debug-rpc-endpoints=true",
# vvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
"--disable-monitoring=false",
"--monitoring-host=0.0.0.0",
......
......@@ -122,8 +122,13 @@ def get_config(
IMAGE_NAME = dora_params.image
if network_params.electra_fork_epoch < constants.ELECTRA_FORK_EPOCH:
IMAGE_NAME = "ethpandaops/dora:master"
if dora_params.image == constants.DEFAULT_DORA_IMAGE:
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(
image=IMAGE_NAME,
......
......@@ -205,11 +205,11 @@ def get_config(
"--http.corsdomain=*",
# 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!
"--http.api=admin,engine,net,eth,web3,debug",
"--http.api=admin,engine,net,eth,web3,debug,txpool",
"--ws",
"--ws.addr=0.0.0.0",
"--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=*",
"--allow-insecure-unlock",
"--nat=extip:" + port_publisher.nat_exit_ip,
......
......@@ -135,7 +135,7 @@ def get_config(
"--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
"--Init.WebSocketsEnabled=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.Port={0}".format(RPC_PORT_NUM),
"--JsonRpc.WebSocketsPort={0}".format(WS_PORT_NUM),
......
......@@ -236,7 +236,6 @@ def get_config(
):
image = launcher.mev_params.mev_builder_image
cl_client_name = service_name.split("-")[4]
cmd.append("--engine.experimental")
cmd.append("--rbuilder.config=" + flashbots_rbuilder.MEV_FILE_PATH_ON_CONTAINER)
files[
flashbots_rbuilder.MEV_BUILDER_MOUNT_DIRPATH_ON_SERVICE
......
shared_utils = import_module("../shared_utils/shared_utils.star")
constants = import_module("../package_io/constants.star")
SERVICE_NAME = "el-forkmon"
SERVICE_NAME = "forkmon"
IMAGE_NAME = "ethpandaops/execution-monitor:master"
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 = {
constants.HTTP_PORT_ID: shared_utils.new_port_spec(
......@@ -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
MAX_CPU = 100
MIN_MEMORY = 32
MAX_MEMORY = 256
def launch_el_forkmon(
def launch_forkmon(
plan,
config_template,
el_contexts,
......@@ -47,12 +47,10 @@ def launch_el_forkmon(
config_template, template_data
)
template_and_data_by_rel_dest_filepath = {}
template_and_data_by_rel_dest_filepath[
EL_FORKMON_CONFIG_FILENAME
] = template_and_data
template_and_data_by_rel_dest_filepath[FORKMON_CONFIG_FILENAME] = template_and_data
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(
......@@ -74,7 +72,7 @@ def get_config(
docker_cache_params,
):
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(
......@@ -92,7 +90,7 @@ def get_config(
ports=USED_PORTS,
public_ports=public_ports,
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],
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(
relays,
el_cl_genesis_data,
global_node_selectors,
final_genesis_timestamp,
):
network = (
network
......@@ -39,15 +40,13 @@ def launch(
image = mev_params.mev_boost_image
template_data = new_config_template_data(
network,
input_parser.MEV_BOOST_PORT,
relays,
network, input_parser.MEV_BOOST_PORT, relays, final_genesis_timestamp
)
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(
mev_rs_boost_config_template, template_data
commit_boost_config_template, template_data
)
template_and_data_by_rel_dest_filepath = {}
......@@ -92,6 +91,7 @@ def get_config(
cmd=[],
env_vars={
"CB_CONFIG": config_file_path,
"RUST_LOG": "debug",
},
files={
CB_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_file,
......@@ -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 {
"Network": network,
"Port": port,
"Relays": relays,
"Timestamp": final_genesis_timestamp,
}
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_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
MAX_CPU = 1000
MIN_MEMORY = 128
......@@ -15,26 +16,33 @@ def launch_mock_mev(
plan,
el_uri,
beacon_uri,
jwt_secret,
jwt_file,
global_log_level,
global_node_selectors,
mev_params,
):
mock_builder = plan.add_service(
name=MOCK_MEV_SERVICE_NAME,
config=ServiceConfig(
image=MOCK_MEV_IMAGE,
image=mev_params.mock_mev_image,
ports={
"rest": PortSpec(
number=MOCK_MEV_BUILDER_PORT, transport_protocol="TCP"
),
},
cmd=[
"--jwt-secret={0}".format(jwt_secret),
"--el={0}".format(el_uri),
"--cl={0}".format(beacon_uri),
"--bid-multiplier=5", # TODO: This could be customizable
"--execution-endpoint=http://{0}".format(el_uri),
"--beacon-node=http://{0}".format(beacon_uri),
"--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
"--port={0}".format(MOCK_MEV_BUILDER_PORT),
"--address=0.0.0.0",
"--set-max-bid-value",
"--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,
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
......
......@@ -59,19 +59,9 @@ def launch(
ethereum_genesis_generator_image = shared_utils.docker_cache_image_calc(
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 (
total_number_of_validator_keys,
ethereum_genesis_generator_image,
......
......@@ -85,14 +85,19 @@ MOCK_MEV_TYPE = "mock"
FLASHBOTS_MEV_TYPE = "flashbots"
MEV_RS_MEV_TYPE = "mev-rs"
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_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_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_MINIMAL = "ethpandaops/mev-rs:main-minimal"
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_SECRET_KEY = (
"0x607a11b45a7219cc61a3d9c5fd08c7eebd602a6a19a977f8d3771d5711a550f2"
......@@ -111,6 +116,11 @@ ELECTRA_FORK_VERSION = "0x60000038"
ELECTRA_FORK_EPOCH = 100000000
FULU_FORK_VERSION = "0x70000038"
FULU_FORK_EPOCH = 100000001
EIP7732_FORK_EPOCH = 100000002
EIP7732_FORK_VERSION = "0x80000038"
EIP7805_FORK_EPOCH = 100000003
EIP7805_FORK_VERSION = "0x90000038"
MAX_LABEL_LENGTH = 63
......@@ -120,16 +130,11 @@ CONTAINER_REGISTRY = struct(
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(
mainnet="mainnet",
sepolia="sepolia",
holesky="holesky",
hoodi="hoodi",
ephemery="ephemery",
kurtosis="kurtosis",
verkle="verkle",
......@@ -140,12 +145,14 @@ PUBLIC_NETWORKS = (
"mainnet",
"sepolia",
"holesky",
"hoodi",
)
NETWORK_ID = {
"mainnet": "1",
"sepolia": "11155111",
"holesky": "17000",
"hoodi": "560048",
}
CHECKPOINT_SYNC_URL = {
......@@ -153,12 +160,14 @@ CHECKPOINT_SYNC_URL = {
"ephemery": "https://checkpoint-sync.ephemery.ethpandaops.io/",
"sepolia": "https://checkpoint-sync.sepolia.ethpandaops.io/",
"holesky": "https://checkpoint-sync.holesky.ethpandaops.io/",
"hoodi": "https://checkpoint-sync.hoodi.ethpandaops.io/",
}
GENESIS_VALIDATORS_ROOT = {
"mainnet": "0x4b363db94e286120d76eb905340fdd4e54bfe9f06bf33ff6cf5ad27f511bfe95",
"sepolia": "0xd8ea171f3c94aea21ebc42a1ed61052acf3f9209c00e4efbaaddac09ed9b8078",
"holesky": "0x9143aa7c615a7f7115e2b6aac319c03529df8242ae705fba9df39b79c59fa8b1",
"hoodi": "0x212f13fc4df078b6cb7db228f1c8307566dcecf900867401a92023d7ba99cb5f",
}
DEPOSIT_CONTRACT_ADDRESS = {
......@@ -166,12 +175,14 @@ DEPOSIT_CONTRACT_ADDRESS = {
"sepolia": "0x7f02C3E3c98b133055B8B348B2Ac625669Ed295D",
"holesky": "0x4242424242424242424242424242424242424242",
"ephemery": "0x4242424242424242424242424242424242424242",
"hoodi": "0x00000000219ab540356cBB839Cbe05303d7705Fa",
}
GENESIS_TIME = {
"mainnet": 1606824023,
"sepolia": 1655733600,
"holesky": 1695902400,
"hoodi": 1741971600,
}
VOLUME_SIZE = {
......@@ -271,7 +282,24 @@ VOLUME_SIZE = {
"lodestar_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["sepolia-shadowfork"] = VOLUME_SIZE["sepolia"]
VOLUME_SIZE["holesky-shadowfork"] = VOLUME_SIZE["holesky"]
VOLUME_SIZE["hoodi-shadowfork"] = VOLUME_SIZE["hoodi"]
......@@ -83,12 +83,12 @@ ATTR_TO_BE_SKIPPED_AT_ROOT = (
"assertoor_params",
"prometheus_params",
"grafana_params",
"goomy_blob_params",
"tx_spammer_params",
"tx_fuzz_params",
"custom_flood_params",
"xatu_sentry_params",
"port_publisher",
"spamoor_params",
"spamoor_blob_params",
"bunnyfinder_params",
)
......@@ -110,10 +110,9 @@ def input_parser(plan, input_args):
result["additional_services"] = DEFAULT_ADDITIONAL_SERVICES
else:
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["disable_peer_scoring"] = False
result["goomy_blob_params"] = get_default_goomy_blob_params()
result["grafana_params"] = get_default_grafana_params()
result["assertoor_params"] = get_default_assertoor_params()
result["prometheus_params"] = get_default_prometheus_params()
......@@ -124,6 +123,7 @@ def input_parser(plan, input_args):
result["global_node_selectors"] = {}
result["port_publisher"] = get_port_publisher_params("default")
result["spamoor_params"] = get_default_spamoor_params()
result["spamoor_blob_params"] = get_default_spamoor_blob_params()
result["bunnyfinder_params"] = get_default_bunnyfinder_params()
if constants.NETWORK_NAME.shadowfork in result["network_params"]["network"]:
......@@ -160,18 +160,14 @@ def input_parser(plan, input_args):
for sub_attr in input_args["mev_params"]:
sub_value = input_args["mev_params"][sub_attr]
result["mev_params"][sub_attr] = sub_value
elif attr == "tx_spammer_params":
for sub_attr in input_args["tx_spammer_params"]:
sub_value = input_args["tx_spammer_params"][sub_attr]
result["tx_spammer_params"][sub_attr] = sub_value
elif attr == "tx_fuzz_params":
for sub_attr in input_args["tx_fuzz_params"]:
sub_value = input_args["tx_fuzz_params"][sub_attr]
result["tx_fuzz_params"][sub_attr] = sub_value
elif attr == "custom_flood_params":
for sub_attr in input_args["custom_flood_params"]:
sub_value = input_args["custom_flood_params"][sub_attr]
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":
for sub_attr in input_args["assertoor_params"]:
sub_value = input_args["assertoor_params"][sub_attr]
......@@ -194,6 +190,14 @@ def input_parser(plan, input_args):
for sub_attr in input_args["spamoor_params"]:
sub_value = input_args["spamoor_params"][sub_attr]
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":
for sub_attr in input_args["bunnyfinder_params"]:
sub_value = input_args["bunnyfinder_params"][sub_attr]
......@@ -334,6 +338,8 @@ def input_parser(plan, input_args):
deneb_fork_epoch=result["network_params"]["deneb_fork_epoch"],
electra_fork_epoch=result["network_params"]["electra_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"],
min_validator_withdrawability_delay=result["network_params"][
"min_validator_withdrawability_delay"
......@@ -363,7 +369,7 @@ def input_parser(plan, input_args):
],
devnet_repo=result["network_params"]["devnet_repo"],
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_relay_image=result["mev_params"]["mev_relay_image"],
......@@ -385,6 +391,7 @@ def input_parser(plan, input_args):
mev_flood_seconds_per_bundle=result["mev_params"][
"mev_flood_seconds_per_bundle"
],
mock_mev_image=result["mev_params"]["mock_mev_image"],
)
if result["mev_params"]
else None,
......@@ -404,13 +411,9 @@ def input_parser(plan, input_args):
github_prefix=result["docker_cache_params"]["github_prefix"],
google_prefix=result["docker_cache_params"]["google_prefix"],
),
tx_spammer_params=struct(
image=result["tx_spammer_params"]["image"],
tx_spammer_extra_args=result["tx_spammer_params"]["tx_spammer_extra_args"],
),
goomy_blob_params=struct(
image=result["goomy_blob_params"]["image"],
goomy_blob_args=result["goomy_blob_params"]["goomy_blob_args"],
tx_fuzz_params=struct(
image=result["tx_fuzz_params"]["image"],
tx_fuzz_extra_args=result["tx_fuzz_params"]["tx_fuzz_extra_args"],
),
prometheus_params=struct(
storage_tsdb_retention_time=result["prometheus_params"][
......@@ -457,12 +460,21 @@ def input_parser(plan, input_args):
),
spamoor_params=struct(
image=result["spamoor_params"]["image"],
tx_type=result["spamoor_params"]["tx_type"],
scenario=result["spamoor_params"]["scenario"],
throughput=result["spamoor_params"]["throughput"],
max_pending=result["spamoor_params"]["max_pending"],
max_wallets=result["spamoor_params"]["max_wallets"],
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(
image=result["bunnyfinder_params"]["image"],
strategy=result["bunnyfinder_params"]["strategy"],
......@@ -497,6 +509,9 @@ def input_parser(plan, input_args):
keymanager_enabled=result["keymanager_enabled"],
checkpoint_sync_enabled=result["checkpoint_sync_enabled"],
checkpoint_sync_url=result["checkpoint_sync_url"],
ethereum_genesis_generator_params=struct(
image=result["ethereum_genesis_generator_params"]["image"],
),
port_publisher=struct(
nat_exit_ip=result["port_publisher"]["nat_exit_ip"],
cl_enabled=result["port_publisher"]["cl"]["enabled"],
......@@ -559,7 +574,7 @@ def parse_network_params(plan, input_args):
for attr in input_args:
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:
result[attr] = value
elif attr == "network_params":
......@@ -885,6 +900,7 @@ def default_input_args(input_args):
"keymanager_enabled": False,
"checkpoint_sync_enabled": False,
"checkpoint_sync_url": "",
"ethereum_genesis_generator_params": get_default_ethereum_genesis_generator_params(),
"port_publisher": {
"nat_exit_ip": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
"public_port_start": None,
......@@ -916,6 +932,8 @@ def default_network_params():
"deneb_fork_epoch": 0,
"electra_fork_epoch": constants.ELECTRA_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/",
"data_column_sidecar_subnet_count": 128,
"samples_per_slot": 8,
......@@ -928,7 +946,7 @@ def default_network_params():
"additional_preloaded_contracts": {},
"devnet_repo": "ethpandaops",
"prefunded_accounts": {},
"gossip_max_size": 10485760,
"max_payload_size": 10485760,
}
......@@ -955,6 +973,8 @@ def default_minimal_network_params():
"deneb_fork_epoch": 0,
"electra_fork_epoch": constants.ELECTRA_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/",
"data_column_sidecar_subnet_count": 128,
"samples_per_slot": 8,
......@@ -967,7 +987,7 @@ def default_minimal_network_params():
"additional_preloaded_contracts": {},
"devnet_repo": "ethpandaops",
"prefunded_accounts": {},
"gossip_max_size": 10485760,
"max_payload_size": 10485760,
}
......@@ -1049,7 +1069,7 @@ def get_default_blockscout_params():
def get_default_dora_params():
return {
"image": "ethpandaops/dora:latest",
"image": constants.DEFAULT_DORA_IMAGE,
"env": {},
}
......@@ -1117,9 +1137,16 @@ def get_default_mev_params(mev_type, preset):
"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 {
"mev_relay_image": mev_relay_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_extra_data": mev_builder_extra_data,
"mev_builder_extra_args": mev_builder_extra_args,
......@@ -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 {
"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():
return {
"image": "ethpandaops/assertoor:latest",
"image": constants.DEFAULT_ASSERTOOR_IMAGE,
"run_stability_check": False,
"run_block_proposal_check": False,
"run_lifecycle_test": False,
......@@ -1167,7 +1190,7 @@ def get_default_prometheus_params():
"max_cpu": 1000,
"min_mem": 128,
"max_mem": 2048,
"image": "prom/prometheus:latest",
"image": "prom/prometheus:v3.2.1",
}
......@@ -1204,7 +1227,7 @@ def get_default_xatu_sentry_params():
def get_default_spamoor_params():
return {
"image": "ethpandaops/spamoor:latest",
"tx_type": "eoatx",
"scenario": "eoatx",
"throughput": 1000,
"max_pending": 1000,
"max_wallets": 500,
......@@ -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():
# this is a simple script that increases the balance of the coinbase address at a cadence
return {"interval_between_transactions": 1}
......@@ -1342,7 +1377,7 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
"cl_extra_params": [
"--always-prepare-payload",
"--prepare-payload-lookahead",
"12000",
"8000",
"--disable-peer-scoring",
],
"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
"cl_extra_params": [
"--always-prepare-payload",
"--prepare-payload-lookahead",
"12000",
"8000",
"--disable-peer-scoring",
],
"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
}
)
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
......@@ -1417,11 +1456,12 @@ def docker_cache_image_override(plan, result):
"mev_params.mev_boost_image",
"mev_params.mev_flood_image",
"xatu_sentry_params.xatu_sentry_image",
"tx_spammer_params.image",
"goomy_blob_params.image",
"tx_fuzz_params.image",
"prometheus_params.image",
"grafana_params.image",
"spamoor_params.image",
"spamoor_blob_params.image",
"ethereum_genesis_generator_params.image",
"bunnyfinder_params.image",
]
......@@ -1494,3 +1534,9 @@ def docker_cache_image_override(plan, result):
tooling_image_key
)
)
def get_default_ethereum_genesis_generator_params():
return {
"image": constants.DEFAULT_ETHEREUM_GENESIS_GENERATOR_IMAGE,
}
......@@ -159,6 +159,8 @@ SUBCATEGORY_PARAMS = {
"deneb_fork_epoch",
"electra_fork_epoch",
"fulu_fork_epoch",
"eip7732_fork_epoch",
"eip7805_fork_epoch",
"network_sync_base_url",
"data_column_sidecar_subnet_count",
"samples_per_slot",
......@@ -171,7 +173,7 @@ SUBCATEGORY_PARAMS = {
"additional_preloaded_contracts",
"devnet_repo",
"prefunded_accounts",
"gossip_max_size",
"max_payload_size",
],
"blockscout_params": [
"image",
......@@ -189,12 +191,9 @@ SUBCATEGORY_PARAMS = {
"github_prefix",
"google_prefix",
],
"tx_spammer_params": [
"tx_fuzz_params": [
"image",
"tx_spammer_extra_args",
],
"goomy_blob_params": [
"goomy_blob_args",
"tx_fuzz_extra_args",
],
"prometheus_params": [
"min_cpu",
......@@ -238,6 +237,7 @@ SUBCATEGORY_PARAMS = {
"mev_flood_extra_args",
"mev_flood_seconds_per_bundle",
"custom_flood_params",
"mock_mev_image",
],
"xatu_sentry_params": [
"xatu_sentry_image",
......@@ -248,12 +248,24 @@ SUBCATEGORY_PARAMS = {
],
"spamoor_params": [
"image",
"tx_type",
"scenario",
"throughput",
"max_pending",
"max_wallets",
"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": [
"image",
"strategy",
......@@ -279,13 +291,10 @@ SUBCATEGORY_PARAMS = {
ADDITIONAL_SERVICES_PARAMS = [
"assertoor",
"broadcaster",
"tx_spammer",
"blob_spammer",
"tx_fuzz",
"custom_flood",
"goomy_blob",
"el_forkmon",
"forkmon",
"blockscout",
"beacon_metrics_gazer",
"dora",
"full_beaconchain_explorer",
"prometheus_grafana",
......@@ -296,7 +305,8 @@ ADDITIONAL_SERVICES_PARAMS = [
"apache",
"tracoor",
"spamoor",
"bunnyfinder"
"spamoor_blob",
"bunnyfinder",
]
ADDITIONAL_CATEGORY_PARAMS = {
......
......@@ -113,6 +113,8 @@ def new_env_file_for_el_cl_genesis_data(
"DenebForkEpoch": network_params.deneb_fork_epoch,
"ElectraForkEpoch": network_params.electra_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,
"AltairForkVersion": constants.ALTAIR_FORK_VERSION,
"BellatrixForkVersion": constants.BELLATRIX_FORK_VERSION,
......@@ -120,6 +122,8 @@ def new_env_file_for_el_cl_genesis_data(
"DenebForkVersion": constants.DENEB_FORK_VERSION,
"ElectraForkVersion": constants.ELECTRA_FORK_VERSION,
"FuluForkVersion": constants.FULU_FORK_VERSION,
"Eip7732ForkVersion": constants.EIP7732_FORK_VERSION,
"Eip7805ForkVersion": constants.EIP7805_FORK_VERSION,
"ShadowForkFile": shadowfork_file,
"MinValidatorWithdrawabilityDelay": network_params.min_validator_withdrawability_delay,
"ShardCommitteePeriod": network_params.shard_committee_period,
......@@ -135,5 +139,5 @@ def new_env_file_for_el_cl_genesis_data(
network_params.additional_preloaded_contracts
),
"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 = [
# m/44'/60'/0'/0/20
new_prefunded_account(
"0xafF0CA253b97e54440965855cec0A8a2E2399896",
"4b9f63ecf84210c5366c66d68fa1f5da1fa4f634fad6dfc86178e4d79ff9e59",
"04b9f63ecf84210c5366c66d68fa1f5da1fa4f634fad6dfc86178e4d79ff9e59",
),
]
......@@ -274,9 +274,9 @@ def generate_valdiator_keystores_in_parallel(
# no output dir path as validator count is 0
continue
generation_finished_filepath = finished_files_to_verify[idx]
verificaiton_command = ["ls", generation_finished_filepath]
verification_command = ["ls", generation_finished_filepath]
plan.wait(
recipe=ExecRecipe(command=verificaiton_command),
recipe=ExecRecipe(command=verification_command),
service_name=service_name,
field="code",
assertion="==",
......
......@@ -31,16 +31,22 @@ def get_config(
node_selectors,
):
cmd = [
"{}".format(spamoor_params.tx_type),
"{}".format(spamoor_params.scenario),
"--privkey={}".format(prefunded_addresses[13].private_key),
"--rpchost={}".format(
",".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:
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 = (
)
# EL Forkmon config
EL_FORKMON_CONFIG_TEMPLATE_FILEPATH = (
STATIC_FILES_DIRPATH + "/el-forkmon-config/config.toml.tmpl"
FORKMON_CONFIG_TEMPLATE_FILEPATH = (
STATIC_FILES_DIRPATH + "/forkmon-config/config.toml.tmpl"
)
# Validator Ranges config
......
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
MAX_CPU = 1000
MIN_MEMORY = 20
MAX_MEMORY = 300
def launch_transaction_spammer(
def launch_tx_fuzz(
plan,
prefunded_addresses,
el_uri,
tx_spammer_params,
tx_fuzz_params,
global_node_selectors,
):
config = get_config(
prefunded_addresses,
el_uri,
tx_spammer_params,
tx_fuzz_params,
global_node_selectors,
)
plan.add_service(SERVICE_NAME, config)
......@@ -27,7 +27,7 @@ def launch_transaction_spammer(
def get_config(
prefunded_addresses,
el_uri,
tx_spammer_params,
tx_fuzz_params,
node_selectors,
):
cmd = [
......@@ -36,11 +36,11 @@ def get_config(
"--sk={0}".format(prefunded_addresses[3].private_key),
]
if len(tx_spammer_params.tx_spammer_extra_args) > 0:
cmd.extend([param for param in tx_spammer_params.tx_spammer_extra_args])
if len(tx_fuzz_params.tx_fuzz_extra_args) > 0:
cmd.extend([param for param in tx_fuzz_params.tx_fuzz_extra_args])
return ServiceConfig(
image=tx_spammer_params.image,
image=tx_fuzz_params.image,
cmd=cmd,
min_cpu=MIN_CPU,
max_cpu=MAX_CPU,
......
......@@ -159,6 +159,7 @@ def launch(
fail("vero VC doesn't support the Keymanager API")
config = vero.get_config(
participant=participant,
el_cl_genesis_data=launcher.el_cl_genesis_data,
image=image,
global_log_level=global_log_level,
beacon_http_url=beacon_http_url,
......
......@@ -14,6 +14,7 @@ VERBOSITY_LEVELS = {
def get_config(
participant,
el_cl_genesis_data,
image,
global_log_level,
beacon_http_url,
......@@ -30,6 +31,10 @@ def get_config(
)
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),
"--beacon-node-urls=" + beacon_http_url,
"--fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
......@@ -43,6 +48,10 @@ def get_config(
# this is a repeated<proto type>, we convert it into Starlark
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 = {}
if port_publisher.vc_enabled:
public_ports_for_component = shared_utils.get_public_ports_for_component(
......@@ -61,6 +70,7 @@ def get_config(
"ports": ports,
"public_ports": public_ports,
"cmd": cmd,
"files": files,
"env_vars": participant.vc_extra_env_vars,
"labels": shared_utils.label_maker(
client=constants.VC_TYPE.vero,
......
......@@ -26,7 +26,7 @@ web:
database:
engine: "sqlite"
sqlite:
file: "/assertoor-database.sqlite"
file: "/app/assertoor-database.sqlite"
validatorNames:
inventoryYaml: "/validator-ranges/validator-ranges.yaml"
......
......@@ -23,7 +23,7 @@ max_retries = 32
expected_block_time = 13000
# Time between health checks in ms
health_check_ttl = 400
# Supress the health check running info messages
# Suppress the health check running info messages
supress_rpc_check = false
# Note: the admin namespace contains volatile functions and
......
......@@ -19,6 +19,10 @@ export ELECTRA_FORK_VERSION="{{ .ElectraForkVersion }}"
export ELECTRA_FORK_EPOCH="{{ .ElectraForkEpoch }}"
export FULU_FORK_VERSION="{{ .FuluForkVersion }}"
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_ADDRESS=0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134
export GENESIS_TIMESTAMP={{ .UnixTimestamp }}
......@@ -40,5 +44,4 @@ export MAX_BLOBS_PER_BLOCK_FULU={{ .MaxBlobsPerBlockFulu }}
export TARGET_BLOBS_PER_BLOCK_FULU={{ .TargetBlobsPerBlockFulu }}
export ADDITIONAL_PRELOADED_CONTRACTS={{ .AdditionalPreloadedContracts }}
export EL_PREMINE_ADDRS={{ .PrefundedAccounts }}
export GOSSIP_MAX_SIZE={{ .GossipMaxSize }}
export MAX_CHUNK_SIZE={{ .GossipMaxSize }}
export MAX_PAYLOAD_SIZE={{ .MaxPayloadSize }}
......@@ -19,7 +19,7 @@
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 7,
"id": 6,
"links": [],
"panels": [
{
......@@ -118,7 +118,7 @@
"sort": "desc"
}
},
"pluginVersion": "9.1.2",
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -222,7 +222,7 @@
"sort": "desc"
}
},
"pluginVersion": "9.1.2",
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -325,7 +325,7 @@
"sort": "desc"
}
},
"pluginVersion": "9.1.2",
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -402,8 +402,7 @@
"value": 80
}
]
},
"unit": "s"
}
},
"overrides": []
},
......@@ -426,6 +425,7 @@
"sort": "none"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -433,7 +433,7 @@
"uid": "PBFA97CFB590B2093"
},
"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,
"legendFormat": "{{job}}",
"range": true,
......@@ -525,7 +525,7 @@
"sort": "desc"
}
},
"pluginVersion": "9.1.2",
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -602,8 +602,7 @@
"value": 80
}
]
},
"unit": "s"
}
},
"overrides": []
},
......@@ -626,6 +625,7 @@
"sort": "desc"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -633,7 +633,7 @@
"uid": "PBFA97CFB590B2093"
},
"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}}",
"range": true,
"refId": "A"
......@@ -700,8 +700,7 @@
"value": 80
}
]
},
"unit": "s"
}
},
"overrides": []
},
......@@ -724,6 +723,7 @@
"sort": "desc"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -731,7 +731,7 @@
"uid": "PBFA97CFB590B2093"
},
"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}}",
"range": true,
"refId": "A"
......@@ -797,8 +797,7 @@
"value": 80
}
]
},
"unit": "s"
}
},
"overrides": []
},
......@@ -821,6 +820,7 @@
"sort": "desc"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -828,7 +828,7 @@
"uid": "PBFA97CFB590B2093"
},
"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}}",
"range": true,
"refId": "A"
......@@ -894,8 +894,7 @@
"value": 80
}
]
},
"unit": "s"
}
},
"overrides": []
},
......@@ -918,6 +917,7 @@
"sort": "desc"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -925,7 +925,7 @@
"uid": "PBFA97CFB590B2093"
},
"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,
"legendFormat": "{{job}}",
"range": true,
......@@ -992,8 +992,7 @@
"value": 80
}
]
},
"unit": "s"
}
},
"overrides": []
},
......@@ -1016,6 +1015,7 @@
"sort": "desc"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -1023,7 +1023,7 @@
"uid": "PBFA97CFB590B2093"
},
"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}}",
"range": true,
"refId": "A"
......@@ -1112,6 +1112,7 @@
"sort": "desc"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -1221,6 +1222,7 @@
"sort": "none"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -1319,6 +1321,7 @@
"sort": "none"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -1417,6 +1420,7 @@
"sort": "none"
}
},
"pluginVersion": "11.4.0",
"targets": [
{
"datasource": {
......@@ -1482,8 +1486,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -1581,8 +1584,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -1680,8 +1682,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -1793,8 +1794,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -1896,8 +1896,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -1999,8 +1998,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -2102,8 +2100,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -2205,8 +2202,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -2309,8 +2305,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -2413,8 +2408,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -2517,8 +2511,7 @@
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
"color": "green"
},
{
"color": "red",
......@@ -2572,33 +2565,27 @@
"type": "timeseries"
}
],
"preload": false,
"refresh": "15m",
"schemaVersion": 39,
"schemaVersion": 40,
"tags": [],
"templating": {
"list": [
{
"current": {
"selected": true,
"text": [
"All"
"$__all"
],
"value": [
"$__all"
]
},
"description": "",
"hide": 0,
"includeAll": true,
"label": "Client",
"multi": true,
"name": "client",
"options": [
{
"selected": true,
"text": "All",
"value": "$__all"
},
{
"selected": false,
"text": "lighthouse",
......@@ -2631,16 +2618,11 @@
}
],
"query": "lighthouse, teku, prysm, lodestar, grandine, nimbus",
"queryValue": "",
"skipUrlSync": false,
"type": "custom"
},
{
"current": {
"selected": true,
"text": [
"All"
],
"text": "All",
"value": [
"$__all"
]
......@@ -2650,7 +2632,6 @@
"uid": "PBFA97CFB590B2093"
},
"definition": "label_values(job)",
"hide": 0,
"includeAll": true,
"label": "Job",
"multi": true,
......@@ -2663,31 +2644,22 @@
},
"refresh": 1,
"regex": "^cl.*",
"skipUrlSync": false,
"sort": 0,
"type": "query"
},
{
"current": {
"selected": true,
"text": [
"All"
"$__all"
],
"value": [
"$__all"
]
},
"hide": 0,
"includeAll": true,
"label": "Nodes",
"multi": true,
"name": "nodes",
"options": [
{
"selected": true,
"text": "All",
"value": "$__all"
},
{
"selected": false,
"text": "supernodes",
......@@ -2700,8 +2672,6 @@
}
],
"query": "supernodes : True, full nodes : False",
"queryValue": "",
"skipUrlSync": false,
"type": "custom"
}
]
......@@ -2714,6 +2684,6 @@
"timezone": "browser",
"title": "PeerDAS metrics",
"uid": "ddr7j9b1mlszkm",
"version": 15,
"version": 7,
"weekStart": ""
}
\ No newline at end of file
chain = "{{ .Network }}"
chain = { genesis_time_secs = {{ .Timestamp }}, path = "{{ .Network }}" }
[pbs]
host = "0.0.0.0"
port = {{ .Port }}
{{ range $index, $relay := .Relays }}
[[relays]]
id = "mev_relay_{{$index}}"
url = "{{ $relay }}"
{{- end }}
[logs]
log_level = "debug"
max_log_files = 7
{{- end }}
\ No newline at end of file
......@@ -20,18 +20,17 @@ el_node_ipc_path = "/tmp/reth.ipc"
extra_data = "🐼⚡🤖"
genesis_fork_version = "{{ .GenesisForkVersion }}"
dry_run = false
dry_run_validation_url = "http://localhost:8545"
ignore_cancellable_orders = true
max_concurrent_seals = 4
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
sbundle_mergeable_signers = []
live_builders = ["mp-ordering", "mgp-ordering"]
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]]
name = "flashbots"
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