diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
index f5adeb1..e1fa62e 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.md
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -7,11 +7,11 @@ assignees: ''
---
-
+Any issues that are related to to the above mentioned topics/related to running kurtosis with zond-package in a production like environment will be automatically closed. By opening an issue you agree to these terms. -->
diff --git a/.github/tests/altair-genesis.yaml b/.github/tests/altair-genesis.yaml
deleted file mode 100644
index 848ec42..0000000
--- a/.github/tests/altair-genesis.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-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: 1
- capella_fork_epoch: 2
- deneb_fork_epoch: 3
- electra_fork_epoch: 4
- fulu_fork_epoch: 5
- genesis_delay: 120
-
diff --git a/.github/tests/assertoor.yaml b/.github/tests/assertoor.yaml
index c5be467..5ee6ecf 100644
--- a/.github/tests/assertoor.yaml
+++ b/.github/tests/assertoor.yaml
@@ -1,9 +1,9 @@
participants:
- - el_type: geth
- cl_type: lighthouse
+ - el_type: gzond
+ cl_type: qrysm
count: 1
- - el_type: geth
- cl_type: lodestar
+ - el_type: gzond
+ cl_type: qrysm
count: 1
additional_services:
- assertoor
diff --git a/.github/tests/bellatrix-genesis.yaml b/.github/tests/bellatrix-genesis.yaml
deleted file mode 100644
index a325150..0000000
--- a/.github/tests/bellatrix-genesis.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-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: 1
- deneb_fork_epoch: 2
- electra_fork_epoch: 3
- fulu_fork_epoch: 4
- genesis_delay: 120
diff --git a/.github/tests/besu-all.yaml b/.github/tests/besu-all.yaml
deleted file mode 100644
index 2360b18..0000000
--- a/.github/tests/besu-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: besu
- cl_type: prysm
- - el_type: besu
- cl_type: teku
- - el_type: besu
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: besu
- cl_type: lodestar
- - el_type: besu
- cl_type: grandine
diff --git a/.github/tests/blobber.yaml b/.github/tests/blobber.yaml
deleted file mode 100644
index 5900ebd..0000000
--- a/.github/tests/blobber.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-participants:
- - el_type: geth
- el_image: ethpandaops/geth:master
- cl_type: lighthouse
- blobber_enabled: true
- blobber_extra_params:
- - --proposal-action-frequency=1
- - "--proposal-action={\"name\": \"blob_gossip_delay\", \"delay_milliseconds\": 1500}"
- count: 1
- - el_type: geth
- el_image: ethpandaops/geth:master
- cl_type: lodestar
- count: 1
-additional_services:
- - dora
- - blob_spammer
diff --git a/.github/tests/capella-genesis.yaml b/.github/tests/capella-genesis.yaml
index ac3c320..763180f 100644
--- a/.github/tests/capella-genesis.yaml
+++ b/.github/tests/capella-genesis.yaml
@@ -1,23 +1,9 @@
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
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
+# additional_services:
+# - dora
network_params:
- altair_fork_epoch: 0
- bellatrix_fork_epoch: 0
- capella_fork_epoch: 0
- deneb_fork_epoch: 1
- electra_fork_epoch: 2
- fulu_fork_epoch: 3
genesis_delay: 120
diff --git a/.github/tests/custom-contracts.yaml b/.github/tests/custom-contracts.yaml
index 1a055bf..8cca4da 100644
--- a/.github/tests/custom-contracts.yaml
+++ b/.github/tests/custom-contracts.yaml
@@ -1,16 +1,8 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
network_params:
network: kurtosis
- additional_preloaded_contracts: '{"0x123463a4B065722E99115D6c222f267d9cABb524": {"balance": "2ETH","code": "0x1234","storage": {}}}'
+ additional_preloaded_contracts: '{"Z123463a4B065722E99115D6c222f267d9cABb524": {"balance": "2ETH","code": "0x1234","storage": {}}}'
diff --git a/.github/tests/deneb-genesis.yaml b/.github/tests/deneb-genesis.yaml
deleted file mode 100644
index 61f9d6b..0000000
--- a/.github/tests/deneb-genesis.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: teku
-network_params:
- altair_fork_epoch: 0
- bellatrix_fork_epoch: 0
- capella_fork_epoch: 0
- deneb_fork_epoch: 0
- electra_fork_epoch: 1
- fulu_fork_epoch: 2
- genesis_delay: 120
diff --git a/.github/tests/deneb.yaml b/.github/tests/deneb.yaml
deleted file mode 100644
index a58daf8..0000000
--- a/.github/tests/deneb.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-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: 1
- electra_fork_epoch: 2
- fulu_fork_epoch: 3
- preset: minimal
diff --git a/.github/tests/disable-peer-scoring.yaml b/.github/tests/disable-peer-scoring.yaml
index 65cb5c8..dfdb2e4 100644
--- a/.github/tests/disable-peer-scoring.yaml
+++ b/.github/tests/disable-peer-scoring.yaml
@@ -1,14 +1,6 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: erigon
- cl_type: nimbus
- - el_type: nethermind
- cl_type: prysm
- - el_type: ethereumjs
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
disable_peer_scoring: true
diff --git a/.github/tests/eof.yaml.norun b/.github/tests/eof.yaml.norun
deleted file mode 100644
index 893123a..0000000
--- a/.github/tests/eof.yaml.norun
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: besu
- el_image: ethpandaops/besu:main
- count: 3
- cl_type: teku
- cl_image: ethpandaops/teku:master
-network_params:
- electra_fork_epoch: 1
- fulu_fork_epoch: 2
- preset: minimal
-additional_services:
- - dora
- - blockscout
diff --git a/.github/tests/ephemery.yaml b/.github/tests/ephemery.yaml
index 1714255..da2a96f 100644
--- a/.github/tests/ephemery.yaml
+++ b/.github/tests/ephemery.yaml
@@ -1,18 +1,8 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: teku
- - el_type: besu
- cl_type: grandine
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
network_params:
network: ephemery
checkpoint_sync_enabled: true
diff --git a/.github/tests/erigon-all.yaml b/.github/tests/erigon-all.yaml
deleted file mode 100644
index e01d517..0000000
--- a/.github/tests/erigon-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: erigon
- cl_type: teku
- - el_type: erigon
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: erigon
- cl_type: lighthouse
- - el_type: erigon
- cl_type: lodestar
- - el_type: erigon
- cl_type: grandine
diff --git a/.github/tests/ethereumjs-all.yaml b/.github/tests/ethereumjs-all.yaml
deleted file mode 100644
index b833d82..0000000
--- a/.github/tests/ethereumjs-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: ethereumjs
- cl_type: teku
- - el_type: ethereumjs
- cl_type: prysm
- - el_type: ethereumjs
- cl_type: nimbus
- - el_type: ethereumjs
- cl_type: lighthouse
- - el_type: ethereumjs
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: grandine
diff --git a/.github/tests/fulu.yaml b/.github/tests/fulu.yaml
deleted file mode 100644
index a41fef9..0000000
--- a/.github/tests/fulu.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-participants:
- - el_type: geth
- cl_type: teku
-
-
-network_params:
- altair_fork_epoch: 0
- bellatrix_fork_epoch: 0
- capella_fork_epoch: 0
- deneb_fork_epoch: 0
- electra_fork_epoch: 1
- fulu_fork_epoch: 2
- eip7732_fork_epoch: 3
- eip7805_fork_epoch: 4
-
diff --git a/.github/tests/geth-all.yaml b/.github/tests/geth-all.yaml
deleted file mode 100644
index 1e75c41..0000000
--- a/.github/tests/geth-all.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-participants:
- - el_type: geth
- cl_type: teku
- - el_type: geth
- cl_type: prysm
- - el_type: geth
- cl_type: nimbus
- - el_type: geth
- cl_type: lighthouse
- - el_type: geth
- cl_type: lodestar
- - el_type: geth
- cl_type: grandine
-additional_services:
- - spamoor_blob
- - dora
diff --git a/.github/tests/grandine-all.yaml b/.github/tests/grandine-all.yaml
deleted file mode 100644
index 6aa86db..0000000
--- a/.github/tests/grandine-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: geth
- cl_type: grandine
- - el_type: nethermind
- cl_type: grandine
- - el_type: erigon
- cl_type: grandine
- - el_type: besu
- cl_type: grandine
- - el_type: reth
- cl_type: grandine
- - el_type: ethereumjs
- cl_type: grandine
diff --git a/.github/tests/gzond-all.yaml b/.github/tests/gzond-all.yaml
new file mode 100644
index 0000000..0746e06
--- /dev/null
+++ b/.github/tests/gzond-all.yaml
@@ -0,0 +1,7 @@
+participants:
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
+# additional_services:
+# - dora
diff --git a/.github/tests/holesky-shadowfork-verkle.yaml_norun b/.github/tests/holesky-shadowfork-verkle.yaml_norun
deleted file mode 100644
index 73cb68a..0000000
--- a/.github/tests/holesky-shadowfork-verkle.yaml_norun
+++ /dev/null
@@ -1,16 +0,0 @@
-participants:
- - el_type: geth
- el_image: ethpandaops/geth:transition-post-genesis-04b0304
- cl_type: lighthouse
- cl_image: ethpandaops/lighthouse:verkle-trees-capella-2ffb8a9
- - el_type: geth
- el_image: ethpandaops/geth:transition-post-genesis-04b0304
- cl_type: lodestar
- cl_image: ethpandaops/lodestar:g11tech-verge-815364b
-network_params:
- electra_fork_epoch: 1
- network: holesky-shadowfork-verkle
-additional_services:
- - dora
-snooper_enabled: true
-persistent: true
diff --git a/.github/tests/holesky-shadowfork.yaml_norun b/.github/tests/holesky-shadowfork.yaml_norun
deleted file mode 100644
index 6e6b3da..0000000
--- a/.github/tests/holesky-shadowfork.yaml_norun
+++ /dev/null
@@ -1,12 +0,0 @@
-participants:
- - el_type: geth
- el_image: ethereum/client-go:v1.13.14
- cl_type: teku
- cl_image: consensys/teku:24.2.0
-network_params:
- dencun_fork_epoch: 0
- network: holesky-shadowfork
-additional_services:
- - dora
-snooper_enabled: true
-persistent: true
diff --git a/.github/tests/lighthouse-all.yaml b/.github/tests/lighthouse-all.yaml
deleted file mode 100644
index 2486e3a..0000000
--- a/.github/tests/lighthouse-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: geth
- cl_type: lighthouse
- - el_type: nethermind
- cl_type: lighthouse
- - el_type: erigon
- cl_type: lighthouse
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lighthouse
- - el_type: ethereumjs
- cl_type: lighthouse
diff --git a/.github/tests/lodestar-all.yaml b/.github/tests/lodestar-all.yaml
deleted file mode 100644
index e63d403..0000000
--- a/.github/tests/lodestar-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: geth
- cl_type: lodestar
- - el_type: nethermind
- cl_type: lodestar
- - el_type: erigon
- cl_type: lodestar
- - el_type: besu
- cl_type: lodestar
- - el_type: reth
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: lodestar
diff --git a/.github/tests/mainnet-mix.yaml b/.github/tests/mainnet-mix.yaml
new file mode 100644
index 0000000..3a9f017
--- /dev/null
+++ b/.github/tests/mainnet-mix.yaml
@@ -0,0 +1,8 @@
+participants:
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
+network_params:
+ network: mainnet
+checkpoint_sync_enabled: true
diff --git a/.github/tests/mev-commit-boost.yaml b/.github/tests/mev-commit-boost.yaml
index 6c765e2..f620b3b 100644
--- a/.github/tests/mev-commit-boost.yaml
+++ b/.github/tests/mev-commit-boost.yaml
@@ -1,15 +1,14 @@
participants:
- - el_type: geth
- cl_type: lighthouse
+ - el_type: gzond
+ cl_type: qrysm
mev_type: commit-boost
-additional_services:
- - tx_spammer
- - blob_spammer
- - custom_flood
- - el_forkmon
- - beacon_metrics_gazer
- - dora
- - prometheus_grafana
+# additional_services:
+# - tx_spammer
+# - custom_flood
+# - el_forkmon
+# - beacon_metrics_gazer
+# - dora
+# - prometheus_grafana
mev_params:
mev_boost_image: ghcr.io/commit-boost/pbs:latest
network_params:
diff --git a/.github/tests/mev-mock.yaml b/.github/tests/mev-mock.yaml
index 57cc493..7bedb38 100644
--- a/.github/tests/mev-mock.yaml
+++ b/.github/tests/mev-mock.yaml
@@ -1,11 +1,10 @@
participants:
- - el_type: geth
- cl_type: lighthouse
+ - el_type: gzond
+ cl_type: qrysm
count: 3
mev_type: mock
-additional_services:
- - dora
- - spamoor_blob
- - tx_spammer
+# additional_services:
+# - dora
+# - tx_spammer
mev_params:
mock_mev_image: "ethpandaops/rustic-builder:main"
diff --git a/.github/tests/mev-pectra.yaml b/.github/tests/mev-pectra.yaml
deleted file mode 100644
index f78356f..0000000
--- a/.github/tests/mev-pectra.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-participants:
- - el_type: reth
- cl_type: teku
-additional_services:
- - dora
- - tx_spammer
-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
-
-network_params:
- electra_fork_epoch: 1
diff --git a/.github/tests/mev.yaml b/.github/tests/mev.yaml
index 28f8158..38f774a 100644
--- a/.github/tests/mev.yaml
+++ b/.github/tests/mev.yaml
@@ -1,14 +1,12 @@
participants:
- - el_type: geth
- cl_type: lighthouse
+ - el_type: gzond
+ cl_type: qrysm
mev_type: flashbots
-additional_services:
- - tx_spammer
- - blob_spammer
- - custom_flood
- - spamoor_blob
- - beacon_metrics_gazer
- - dora
- - prometheus_grafana
+# additional_services:
+# - tx_spammer
+# - custom_flood
+# - beacon_metrics_gazer
+# - dora
+# - prometheus_grafana
network_params:
seconds_per_slot: 6
diff --git a/.github/tests/minimal-mev-rs.yaml b/.github/tests/minimal-mev-rs.yaml
index 0a4198b..5113b0e 100644
--- a/.github/tests/minimal-mev-rs.yaml
+++ b/.github/tests/minimal-mev-rs.yaml
@@ -1,23 +1,15 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: geth
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: geth
- cl_type: grandine
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
network_params:
preset: minimal
seconds_per_slot: 6
-additional_services:
- - dora
- - tx_spammer
- - apache
+# additional_services:
+# - dora
+# - tx_spammer
+# - apache
mev_type: mev-rs
diff --git a/.github/tests/minimal-pectra-devnet-5.yaml.norun b/.github/tests/minimal-pectra-devnet-5.yaml.norun
deleted file mode 100644
index a706688..0000000
--- a/.github/tests/minimal-pectra-devnet-5.yaml.norun
+++ /dev/null
@@ -1,37 +0,0 @@
-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_spammer
- - 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
\ No newline at end of file
diff --git a/.github/tests/minimal.yaml b/.github/tests/minimal.yaml
index 09b86a9..3d4b897 100644
--- a/.github/tests/minimal.yaml
+++ b/.github/tests/minimal.yaml
@@ -1,19 +1,7 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: geth
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- cl_image: ethpandaops/nimbus-eth2:unstable-minimal
- # TODO: Re-add lighthouse once its working with minimal preset
- # - el_type: besu
- # cl_type: lighthouse
- # cl_image: sigp/lighthouse:v6.0.1
- - el_type: reth
- cl_type: lodestar
- # TODO: Re-add grandine once its working with minimal preset
- # - el_type: geth
- # cl_type: grandine
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
network_params:
preset: minimal
diff --git a/.github/tests/mix-assert.yaml b/.github/tests/mix-assert.yaml
index 28445bc..4ad3eee 100644
--- a/.github/tests/mix-assert.yaml
+++ b/.github/tests/mix-assert.yaml
@@ -1,19 +1,11 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: geth # temp remove erigon till they fix their bugs
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: geth # temp remove nimbus-eth1 till they fix their bugs
- cl_type: grandine
-additional_services:
- - assertoor
- - dora
-assertoor_params:
- run_stability_check: false
- run_block_proposal_check: true
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
+# additional_services:
+# - assertoor
+# - dora
+# assertoor_params:
+# run_stability_check: false
+# run_block_proposal_check: true
diff --git a/.github/tests/mix-persistence-k8s.yaml b/.github/tests/mix-persistence-k8s.yaml
index 285fc7c..08c676a 100644
--- a/.github/tests/mix-persistence-k8s.yaml
+++ b/.github/tests/mix-persistence-k8s.yaml
@@ -1,16 +1,6 @@
participants:
- - el_type: geth
- cl_type: teku
- use_separate_vc: true
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- use_separate_vc: true
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: nimbus
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
persistent: true
diff --git a/.github/tests/mix-persistence.yaml b/.github/tests/mix-persistence.yaml
index 1452021..08c676a 100644
--- a/.github/tests/mix-persistence.yaml
+++ b/.github/tests/mix-persistence.yaml
@@ -1,16 +1,6 @@
participants:
- - el_type: geth
- cl_type: teku
- use_separate_vc: true
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- use_separate_vc: true
- - el_type: reth
- cl_type: lodestar
- - el_type: besu
- cl_type: lighthouse
- - el_type: ethereumjs
- cl_type: nimbus
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
persistent: true
diff --git a/.github/tests/mix-public.yaml b/.github/tests/mix-public.yaml
index 7a3dc6a..096f873 100644
--- a/.github/tests/mix-public.yaml
+++ b/.github/tests/mix-public.yaml
@@ -1,18 +1,8 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: nimbus
- cl_type: teku
- - el_type: ethereumjs
- cl_type: grandine
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
port_publisher:
el:
enabled: true
diff --git a/.github/tests/mix-with-tools-mev.yaml b/.github/tests/mix-with-tools-mev.yaml
index a228e77..802822f 100644
--- a/.github/tests/mix-with-tools-mev.yaml
+++ b/.github/tests/mix-with-tools-mev.yaml
@@ -1,32 +1,21 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: teku
-additional_services:
- - tx_spammer
- - blob_spammer
- - el_forkmon
- - beacon_metrics_gazer
- - dora
- - prometheus_grafana
- - spamoor_blob
- - custom_flood
- - blobscan
- - blockscout
- - dugtrio
- - blutgang
- - apache
- - tracoor
- - spamoor
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
+# additional_services:
+# - tx_spammer
+# - el_forkmon
+# - beacon_metrics_gazer
+# - dora
+# - prometheus_grafana
+# - custom_flood
+# - blockscout
+# - dugtrio
+# - blutgang
+# - apache
+# - tracoor
+# - spamoor
ethereum_metrics_exporter_enabled: true
snooper_enabled: true
mev_type: flashbots
diff --git a/.github/tests/mix-with-tools-minimal.yaml b/.github/tests/mix-with-tools-minimal.yaml
index 119dfca..da9a614 100644
--- a/.github/tests/mix-with-tools-minimal.yaml
+++ b/.github/tests/mix-with-tools-minimal.yaml
@@ -1,28 +1,17 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: geth
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: geth
- cl_type: grandine
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
network_params:
preset: minimal
additional_services:
- tx_spammer
- - blob_spammer
- el_forkmon
- beacon_metrics_gazer
- dora
- prometheus_grafana
- - spamoor_blob
- custom_flood
- - blobscan
- blockscout
- dugtrio
- blutgang
diff --git a/.github/tests/mix-with-tools.yaml b/.github/tests/mix-with-tools.yaml
index 84b0224..3a600e7 100644
--- a/.github/tests/mix-with-tools.yaml
+++ b/.github/tests/mix-with-tools.yaml
@@ -1,28 +1,15 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: grandine
- - el_type: geth
- cl_type: grandine
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
additional_services:
- tx_spammer
- - blob_spammer
- el_forkmon
- beacon_metrics_gazer
- dora
- prometheus_grafana
- - spamoor_blob
- custom_flood
- - blobscan
- dugtrio
- blutgang
- apache
diff --git a/.github/tests/mix.yaml b/.github/tests/mix.yaml
index f0637e1..358b885 100644
--- a/.github/tests/mix.yaml
+++ b/.github/tests/mix.yaml
@@ -1,15 +1,5 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: nimbus
- cl_type: teku
- - el_type: ethereumjs
- cl_type: grandine
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
diff --git a/.github/tests/mixed-cl-vc.yml b/.github/tests/mixed-cl-vc.yml
deleted file mode 100644
index eec24cb..0000000
--- a/.github/tests/mixed-cl-vc.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-participants:
- - el_type: geth
- cl_type: teku
- use_separate_vc: true
- vc_type: lodestar
- - el_type: besu
- cl_type: nimbus
- use_separate_vc: true
- vc_type: lighthouse
diff --git a/.github/tests/mock-mev-pectra-devnet-5.yaml.norun b/.github/tests/mock-mev-pectra-devnet-5.yaml.norun
deleted file mode 100644
index 06e1c4b..0000000
--- a/.github/tests/mock-mev-pectra-devnet-5.yaml.norun
+++ /dev/null
@@ -1,42 +0,0 @@
-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_spammer
- - assertoor
-dora_params:
- image: "ethpandaops/dora:master-latest"
-spamoor_blob_params:
- throughput: 10
- max_blobs: 2
- max_pending: 40
-
-global_log_level: debug
\ No newline at end of file
diff --git a/.github/tests/nethermind-all.yaml b/.github/tests/nethermind-all.yaml
deleted file mode 100644
index 862f5da..0000000
--- a/.github/tests/nethermind-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: nethermind
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: nethermind
- cl_type: nimbus
- - el_type: nethermind
- cl_type: lighthouse
- - el_type: nethermind
- cl_type: lodestar
- - el_type: nethermind
- cl_type: grandine
diff --git a/.github/tests/nimbus-all.yaml b/.github/tests/nimbus-all.yaml
deleted file mode 100644
index 2bf57c5..0000000
--- a/.github/tests/nimbus-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: geth
- cl_type: nimbus
- - el_type: nethermind
- cl_type: nimbus
- - el_type: erigon
- cl_type: nimbus
- - el_type: besu
- cl_type: nimbus
- - el_type: reth
- cl_type: nimbus
- - el_type: ethereumjs
- cl_type: nimbus
diff --git a/.github/tests/nimbus-eth1-all.yaml b/.github/tests/nimbus-eth1-all.yaml
deleted file mode 100644
index 3e7dad8..0000000
--- a/.github/tests/nimbus-eth1-all.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-participants:
- - el_type: geth
- cl_type: teku
- - el_type: nimbus
- cl_type: teku
- - el_type: nimbus
- cl_type: prysm
- - el_type: nimbus
- cl_type: nimbus
- - el_type: nimbus
- cl_type: lighthouse
- - el_type: nimbus
- cl_type: lodestar
- - el_type: nimbus
- cl_type: grandine
diff --git a/.github/tests/nimbus-mev.yaml b/.github/tests/nimbus-mev.yaml
deleted file mode 100644
index 0428d8d..0000000
--- a/.github/tests/nimbus-mev.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-participants:
- - el_type: geth
- cl_type: nimbus
-mev_type: flashbots
diff --git a/.github/tests/node-selectors.yaml b/.github/tests/node-selectors.yaml
index c685a34..cef7e8e 100644
--- a/.github/tests/node-selectors.yaml
+++ b/.github/tests/node-selectors.yaml
@@ -1,12 +1,12 @@
participants:
- - el_type: reth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
use_separate_vc: true
node_selectors: {
"kubernetes.io/hostname": testing-1,
}
- - el_type: reth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
use_separate_vc: true
global_node_selectors: {
"kubernetes.io/hostname": testing-2,
diff --git a/.github/tests/parallel-keystores-1.yaml b/.github/tests/parallel-keystores-1.yaml
index b6585b0..561c2f3 100644
--- a/.github/tests/parallel-keystores-1.yaml
+++ b/.github/tests/parallel-keystores-1.yaml
@@ -1,7 +1,7 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: geth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
validator_count: 0
parallel_keystore_generation: true
diff --git a/.github/tests/parallel-keystores-2.yaml b/.github/tests/parallel-keystores-2.yaml
index 9ac882d..183cc05 100644
--- a/.github/tests/parallel-keystores-2.yaml
+++ b/.github/tests/parallel-keystores-2.yaml
@@ -1,7 +1,7 @@
participants:
- - el_type: geth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
validator_count: 0
- - el_type: geth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
parallel_keystore_generation: true
diff --git a/.github/tests/parallel-keystores-3.yaml b/.github/tests/parallel-keystores-3.yaml
index 2e1735c..01bd20a 100644
--- a/.github/tests/parallel-keystores-3.yaml
+++ b/.github/tests/parallel-keystores-3.yaml
@@ -1,9 +1,9 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: geth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
validator_count: 0
- - el_type: geth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
parallel_keystore_generation: true
diff --git a/.github/tests/participants-matrix.yaml b/.github/tests/participants-matrix.yaml
index 24bf8f9..d345b67 100644
--- a/.github/tests/participants-matrix.yaml
+++ b/.github/tests/participants-matrix.yaml
@@ -1,9 +1,9 @@
participants_matrix:
el:
- - el_type: besu
+ - el_type: gzond
cl:
- - cl_type: prysm
+ - cl_type: qrysm
vc:
- - vc_type: nimbus
+ - vc_type: qrysm
participants:
- count: 1
diff --git a/.github/tests/pectra-devnet-5.yaml.norun b/.github/tests/pectra-devnet-5.yaml.norun
deleted file mode 100644
index 4bc43e6..0000000
--- a/.github/tests/pectra-devnet-5.yaml.norun
+++ /dev/null
@@ -1,56 +0,0 @@
-participants_matrix:
- el:
- - el_type: geth
- el_image: ethpandaops/geth:prague-devnet-5-f85cde7
- - el_type: reth
- el_image: ethpandaops/reth:main-11bd9dd
- - el_type: erigon
- el_image: ethpandaops/erigon:pectra5-3d65c9b
- - el_type: nethermind
- el_image: ethpandaops/nethermind:pectra-devnet-5-52b679a
- - el_type: besu
- el_image: ethpandaops/besu:main-1e7f6f6
- cl:
- - cl_type: lighthouse
- cl_image: ethpandaops/lighthouse:single_attestation-b6d80eb
- - cl_type: teku
- cl_image: consensys/teku:develop
- - cl_type: nimbus
- cl_image: ethpandaops/nimbus-eth2:unstable-fb1c3ba
- - cl_type: lodestar
- cl_image: ethpandaops/lodestar:devnet-5-38d40e8
- - cl_type: grandine
- cl_image: ethpandaops/grandine:devnet5-60cd7b0
- - cl_type: prysm
- cl_image: ethpandaops/prysm-beacon-chain:develop-0b16c79
- vc_image: ethpandaops/prysm-validator:develop-0b16c79
-
-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_spammer
- - 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/kurtosis/all.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/execution-spec-tests.yaml
diff --git a/.github/tests/pectra.yaml.norun b/.github/tests/pectra.yaml.norun
deleted file mode 100644
index 53cb719..0000000
--- a/.github/tests/pectra.yaml.norun
+++ /dev/null
@@ -1,64 +0,0 @@
-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_type: reth
- el_image: ethpandaops/reth:onbjerg-devnet-2
- - el_type: besu
- el_image: ethpandaops/besu:main
- cl:
- - cl_type: lighthouse
- cl_image: ethpandaops/lighthouse:electra-devnet-1-51d51f5
- - cl_type: teku
- cl_image: ethpandaops/teku:master
- - cl_type: nimbus
- cl_image: ethpandaops/nimbus-eth2:unstable
- - cl_type: lodestar
- cl_image: ethpandaops/lodestar:electra-fork-rebasejul30
- - cl_type: grandine
- cl_image: ethpandaops/grandine:electra
- - cl_type: prysm
- cl_image: ethpandaops/prysm-beacon-chain:develop
-network_params:
- electra_fork_epoch: 1
- min_validator_withdrawability_delay: 1
- shard_committee_period: 1
- churn_limit_quotient: 16
-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" }
diff --git a/.github/tests/peerdas-devnet-3.yaml.norun b/.github/tests/peerdas-devnet-3.yaml.norun
deleted file mode 100644
index c1f6941..0000000
--- a/.github/tests/peerdas-devnet-3.yaml.norun
+++ /dev/null
@@ -1,38 +0,0 @@
-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
diff --git a/.github/tests/peerdas-fulu.yaml.norun b/.github/tests/peerdas-fulu.yaml.norun
deleted file mode 100644
index f39fafb..0000000
--- a/.github/tests/peerdas-fulu.yaml.norun
+++ /dev/null
@@ -1,47 +0,0 @@
-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
- - cl_type: lighthouse
- cl_image: ethpandaops/lighthouse:das-devnet-2
- cl_extra_params: [--subscribe-all-data-column-subnets]
- - cl_type: teku
- cl_image: ethpandaops/teku:nashatyrev-das
- cl_extra_params: [--p2p-subscribe-all-custody-subnets-enabled]
- - 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_type: lighthouse
- cl_image: ethpandaops/lighthouse:das-devnet-2
- - cl_type: teku
- cl_image: ethpandaops/teku:nashatyrev-das
- - cl_type: nimbus
- cl_image: ethpandaops/nimbus-eth2:peerdas-p2p-minimal
- - cl_type: lodestar
- cl_image: ethpandaops/lodestar:peerDAS
- cl_extra_params: [--persistNetworkIdentity]
-network_params:
- electra_fork_epoch: 1
- fulu_fork_epoch: 2
- preset: minimal
-snooper_enabled: true
-global_log_level: debug
-additional_services:
- - dora
- - 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" }
diff --git a/.github/tests/phase0-genesis.yaml b/.github/tests/phase0-genesis.yaml
deleted file mode 100644
index be9c05e..0000000
--- a/.github/tests/phase0-genesis.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-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: 1
- bellatrix_fork_epoch: 2
- capella_fork_epoch: 3
- deneb_fork_epoch: 4
- electra_fork_epoch: 5
- fulu_fork_epoch: 6
- genesis_delay: 120
diff --git a/.github/tests/preregistered_validator_count.yaml b/.github/tests/preregistered_validator_count.yaml
index 345b5da..6be3f9e 100644
--- a/.github/tests/preregistered_validator_count.yaml
+++ b/.github/tests/preregistered_validator_count.yaml
@@ -1,13 +1,7 @@
participants:
- - el_type: geth
- cl_type: teku
- - el_type: geth
- cl_type: prysm
- - el_type: geth
- cl_type: nimbus
- - el_type: geth
- cl_type: lighthouse
- - el_type: geth
- cl_type: lodestar
+ - el_type: gzond
+ cl_type: qrysm
+ - el_type: gzond
+ cl_type: qrysm
network_params:
preregistered_validator_count: 400
diff --git a/.github/tests/prysm-all.yaml b/.github/tests/prysm-all.yaml
deleted file mode 100644
index 7881cc0..0000000
--- a/.github/tests/prysm-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: geth
- cl_type: prysm
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: prysm
- - el_type: besu
- cl_type: prysm
- - el_type: reth
- cl_type: prysm
- - el_type: ethereumjs
- cl_type: prysm
diff --git a/.github/tests/qrysm-all.yaml b/.github/tests/qrysm-all.yaml
new file mode 100644
index 0000000..9039917
--- /dev/null
+++ b/.github/tests/qrysm-all.yaml
@@ -0,0 +1,3 @@
+participants:
+ - el_type: gzond
+ cl_type: qrysm
diff --git a/.github/tests/remote-signer.yaml b/.github/tests/remote-signer.yaml
index a4f5d6e..32315b5 100644
--- a/.github/tests/remote-signer.yaml
+++ b/.github/tests/remote-signer.yaml
@@ -1,23 +1,5 @@
participants:
- - el_type: geth
- cl_type: lodestar
+ - el_type: gzond
+ cl_type: qrysm
use_separate_vc: true
use_remote_signer: true
- - el_type: geth
- cl_type: nimbus
- use_separate_vc: true
- use_remote_signer: true
- - el_type: geth
- cl_type: prysm
- use_separate_vc: true
- use_remote_signer: true
- - el_type: geth
- cl_type: teku
- use_separate_vc: true
- use_remote_signer: true
- - el_type: geth
- cl_type: grandine
- use_separate_vc: true
- use_remote_signer: true
- # Grandine doesn't have a separate VC
- vc_type: lodestar
diff --git a/.github/tests/reth-all.yaml b/.github/tests/reth-all.yaml
deleted file mode 100644
index 477b11f..0000000
--- a/.github/tests/reth-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: reth
- cl_type: teku
- - el_type: reth
- cl_type: prysm
- - el_type: reth
- cl_type: nimbus
- - el_type: reth
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: reth
- cl_type: grandine
diff --git a/.github/tests/sepolia-mix.yaml b/.github/tests/sepolia-mix.yaml
deleted file mode 100644
index 58563d4..0000000
--- a/.github/tests/sepolia-mix.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: prysm
- - el_type: erigon
- cl_type: lighthouse
- - el_type: besu
- cl_type: lighthouse
- - el_type: reth
- cl_type: lodestar
- - el_type: ethereumjs
- cl_type: nimbus
-network_params:
- network: sepolia
-checkpoint_sync_enabled: true
diff --git a/.github/tests/split-nimbus.yaml b/.github/tests/split-nimbus.yaml
deleted file mode 100644
index 0b0c73a..0000000
--- a/.github/tests/split-nimbus.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-participants:
- - el_type: geth
- cl_type: nimbus
- use_separate_vc: true
- validator_count: 0
- - el_type: nethermind
- cl_type: nimbus
- use_separate_vc: true
- - el_type: erigon
- cl_type: nimbus
- use_separate_vc: true
- - el_type: besu
- cl_type: nimbus
- use_separate_vc: true
- - el_type: reth
- cl_type: nimbus
- use_separate_vc: true
- - el_type: ethereumjs
- cl_type: nimbus
- use_separate_vc: true
diff --git a/.github/tests/split-teku.yaml b/.github/tests/split-teku.yaml
deleted file mode 100644
index 103537a..0000000
--- a/.github/tests/split-teku.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-participants:
- - el_type: geth
- cl_type: teku
- validator_count: 0
- use_separate_vc: true
- - el_type: nethermind
- cl_type: teku
- use_separate_vc: true
- - el_type: erigon
- cl_type: teku
- use_separate_vc: true
- - el_type: besu
- cl_type: teku
- use_separate_vc: true
- - el_type: reth
- cl_type: teku
- use_separate_vc: true
- - el_type: ethereumjs
- cl_type: teku
- use_separate_vc: true
diff --git a/.github/tests/teku-all.yaml b/.github/tests/teku-all.yaml
deleted file mode 100644
index 9138431..0000000
--- a/.github/tests/teku-all.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-participants:
- - el_type: geth
- cl_type: teku
- - el_type: nethermind
- cl_type: teku
- - el_type: erigon
- cl_type: teku
- - el_type: besu
- cl_type: teku
- - el_type: reth
- cl_type: teku
- - el_type: ethereumjs
- cl_type: teku
diff --git a/.github/tests/tolerations.yaml b/.github/tests/tolerations.yaml
index b318a64..67c0595 100644
--- a/.github/tests/tolerations.yaml
+++ b/.github/tests/tolerations.yaml
@@ -1,6 +1,6 @@
participants:
- - el_type: reth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
use_separate_vc: true
cl_tolerations:
- key: "node-role.kubernetes.io/master1"
@@ -17,15 +17,15 @@ participants:
- key: "node-role.kubernetes.io/master4"
operator: "Exists"
effect: "NoSchedule"
- - el_type: reth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
use_separate_vc: true
tolerations:
- key: "node-role.kubernetes.io/master5"
operator: "Exists"
effect: "NoSchedule"
- - el_type: reth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
use_separate_vc: true
additional_services:
- dora
diff --git a/.github/tests/verkle-gen-devnet-7.yaml.norun b/.github/tests/verkle-gen-devnet-7.yaml.norun
deleted file mode 100644
index cffeb5d..0000000
--- a/.github/tests/verkle-gen-devnet-7.yaml.norun
+++ /dev/null
@@ -1,9 +0,0 @@
-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
-
diff --git a/.github/tests/verkle.yaml.norun b/.github/tests/verkle.yaml.norun
deleted file mode 100644
index abbdee1..0000000
--- a/.github/tests/verkle.yaml.norun
+++ /dev/null
@@ -1,26 +0,0 @@
-participants:
- - el_type: geth
- el_image: ethpandaops/geth:kaustinen-with-shapella
- el_extra_params:
- - "--override.blockproof=true"
- - "--override.overlay-stride=100"
- el_max_mem: 4000
- cl_type: lighthouse
- cl_image: ethpandaops/lighthouse:verkle-trees-capella-2ffb8a9
- count: 2
- - el_type: geth
- el_image: ethpandaops/geth:kaustinen-with-shapella
- el_extra_params:
- - "--override.blockproof=true"
- - "--override.overlay-stride=100"
- el_max_mem: 4000
- cl_type: lodestar
- cl_image: ethpandaops/lodestar:g11tech-verge-815364b
- count: 2
-network_params:
- electra_fork_epoch: 0
-additional_services:
- - el_forkmon
- - tx_spammer
- - dora
-snooper_enabled: true
diff --git a/.github/tests/vero-all.yaml b/.github/tests/vero-all.yaml
deleted file mode 100644
index 9efa3bc..0000000
--- a/.github/tests/vero-all.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-participants:
- - el_type: besu
- cl_type: grandine
- use_separate_vc: true
- vc_type: vero
- use_remote_signer: true
- - el_type: erigon
- cl_type: lighthouse
- use_separate_vc: true
- vc_type: vero
- use_remote_signer: true
- - el_type: ethereumjs
- cl_type: lodestar
- use_separate_vc: true
- vc_type: vero
- use_remote_signer: true
- - el_type: geth
- cl_type: nimbus
- use_separate_vc: true
- vc_type: vero
- use_remote_signer: true
- - el_type: nethermind
- cl_type: prysm
- use_separate_vc: true
- vc_type: vero
- use_remote_signer: true
- - el_type: reth
- cl_type: teku
- use_separate_vc: true
- vc_type: vero
- use_remote_signer: true
diff --git a/.github/workflows/conventional-pr-title-checker.yml b/.github/workflows.norun/conventional-pr-title-checker.yml
similarity index 100%
rename from .github/workflows/conventional-pr-title-checker.yml
rename to .github/workflows.norun/conventional-pr-title-checker.yml
diff --git a/.github/workflows/nightly.yml b/.github/workflows.norun/nightly.yml
similarity index 90%
rename from .github/workflows/nightly.yml
rename to .github/workflows.norun/nightly.yml
index 7e17d8c..725c8da 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows.norun/nightly.yml
@@ -56,7 +56,7 @@ jobs:
if: (cancelled() || failure()) && env.discord_webhook_set == 'true'
uses: nobrayner/discord-webhook@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 }}"
+ description: "The nightly test for ${{matrix.file_name}} on zond-package has failed find it here ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
github-token: ${{ secrets.github_token }}
discord-webhook: ${{ secrets.DISCORD_WEBHOOK }}
@@ -73,7 +73,7 @@ jobs:
uses: ethpandaops/kurtosis-assertoor-github-action@v1
with:
kurtosis_extra_args: "--image-download always --non-blocking-tasks --verbosity DETAILED"
- ethereum_package_branch: ""
- ethereum_package_args: .github/tests/mix-assert.yaml
- ethereum_package_url: "$GITHUB_WORKSPACE"
+ zond_package_branch: ""
+ zond_package_args: .github/tests/mix-assert.yaml
+ zond_package_url: "$GITHUB_WORKSPACE"
persistent_logs: "true"
diff --git a/.github/workflows/per-pr.yml b/.github/workflows.norun/per-pr.yml
similarity index 95%
rename from .github/workflows/per-pr.yml
rename to .github/workflows.norun/per-pr.yml
index 579ca6e..f7cd1c0 100644
--- a/.github/workflows/per-pr.yml
+++ b/.github/workflows.norun/per-pr.yml
@@ -73,9 +73,9 @@ jobs:
- name: Kurtosis Assertoor GitHub Action
uses: ethpandaops/kurtosis-assertoor-github-action@v1
with:
- ethereum_package_url: "."
- ethereum_package_branch: ""
- ethereum_package_args: .github/tests/mix-assert.yaml
+ zond_package_url: "."
+ zond_package_branch: ""
+ zond_package_args: .github/tests/mix-assert.yaml
#check_optimism_package:
# runs-on: ubuntu-latest
# steps:
diff --git a/.github/workflows/release-please.yml b/.github/workflows.norun/release-please.yml
similarity index 100%
rename from .github/workflows/release-please.yml
rename to .github/workflows.norun/release-please.yml
diff --git a/.github/workflows/run-k8s.yml b/.github/workflows.norun/run-k8s.yml
similarity index 83%
rename from .github/workflows/run-k8s.yml
rename to .github/workflows.norun/run-k8s.yml
index aaa7714..b7830db 100644
--- a/.github/workflows/run-k8s.yml
+++ b/.github/workflows.norun/run-k8s.yml
@@ -43,10 +43,10 @@ jobs:
kubernetes_config: "${{ steps.kubeconfig.outputs.kubeconfig }}"
kubernetes_cluster: "minikube"
kubernetes_storage_class: "standard"
- ethereum_package_branch: ""
- ethereum_package_args: "${{ matrix.payload.file }}"
- ethereum_package_url: "$GITHUB_WORKSPACE"
- enclave_name: "ethereum-package-${{ matrix.payload.name }}-${{ github.run_id }}"
+ zond_package_branch: ""
+ zond_package_args: "${{ matrix.payload.file }}"
+ zond_package_url: "$GITHUB_WORKSPACE"
+ enclave_name: "zond-package-${{ matrix.payload.name }}-${{ github.run_id }}"
persistent_logs: "true"
- name: Check if Discord Webhook is Set
@@ -66,4 +66,4 @@ jobs:
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
with:
- args: "The k8s nightly/per PR test for ${{matrix.payload.name}} on ethereum-package has failed. Find it here: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
+ args: "The k8s nightly/per PR test for ${{matrix.payload.name}} on zond-package has failed. Find it here: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index fb1f343..466df71 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "4.4.0"
+ ".": "0.1.0"
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d2a039c..4979442 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,749 +1,5 @@
# Changelog
-## [4.4.0](https://github.com/ethpandaops/ethereum-package/compare/4.3.0...4.4.0) (2024-11-01)
-
-
-### Features
-
-* add checkpoint sync capabilities to nimbus ([#804](https://github.com/ethpandaops/ethereum-package/issues/804)) ([853417e](https://github.com/ethpandaops/ethereum-package/commit/853417efb5a79056bb6e8a1f37739747131066d5))
-* add commit-boost support ([#779](https://github.com/ethpandaops/ethereum-package/issues/779)) ([ebbbe83](https://github.com/ethpandaops/ethereum-package/commit/ebbbe8365730a79b98e6bf96b72a8f75a9744f1b))
-* add docker authentication ([#816](https://github.com/ethpandaops/ethereum-package/issues/816)) ([807f6aa](https://github.com/ethpandaops/ethereum-package/commit/807f6aa8a992d1868d2d0aed7f5857df3c5857e5))
-* add peerdas metrics dashboard ([#790](https://github.com/ethpandaops/ethereum-package/issues/790)) ([12b787d](https://github.com/ethpandaops/ethereum-package/commit/12b787dd7f1b7130dde369c1eb643dedde4ca03c))
-* add rbuilder remove old geth builder - flashbots ([#786](https://github.com/ethpandaops/ethereum-package/issues/786)) ([de95c61](https://github.com/ethpandaops/ethereum-package/commit/de95c61cf5d2243a3838d2104b5a4591a57e988f))
-* add resource configuration for prometheus and grafana ([#773](https://github.com/ethpandaops/ethereum-package/issues/773)) ([d296c26](https://github.com/ethpandaops/ethereum-package/commit/d296c265ab7e4e67c9c6774c665fe3b3184f9f13))
-* add supernode label to every container ([#788](https://github.com/ethpandaops/ethereum-package/issues/788)) ([43edfd5](https://github.com/ethpandaops/ethereum-package/commit/43edfd5a5bb597636dcbaa1d7f299868d27cdab2))
-* add support for fulu/osaka fusaka ([#798](https://github.com/ethpandaops/ethereum-package/issues/798)) ([0a9e445](https://github.com/ethpandaops/ethereum-package/commit/0a9e445b3cf8a8557bf03b454b0967bf51f6734f))
-* add support for remote signers - `use_remote_signer` ([#791](https://github.com/ethpandaops/ethereum-package/issues/791)) ([9f1b6e9](https://github.com/ethpandaops/ethereum-package/commit/9f1b6e953fec3fd172543ed8fad510523382c576))
-* enable one parameter supernode, refactor el,cl,vc ([#778](https://github.com/ethpandaops/ethereum-package/issues/778)) ([8513c06](https://github.com/ethpandaops/ethereum-package/commit/8513c06020812e33a61ecaee073a165d85ed7ce0))
-
-
-### Bug Fixes
-
-* add database config to assertoor ([#783](https://github.com/ethpandaops/ethereum-package/issues/783)) ([56532cf](https://github.com/ethpandaops/ethereum-package/commit/56532cf50fc56e5958b5839905f7f1b1081ad169))
-* add nimbus-eth1 net-key ([#811](https://github.com/ethpandaops/ethereum-package/issues/811)) ([c91bbbb](https://github.com/ethpandaops/ethereum-package/commit/c91bbbbe20d14712e3731e37bea46a9cf4c88da6))
-* delete unnecessary port assignment for prysm ([#810](https://github.com/ethpandaops/ethereum-package/issues/810)) ([47204c3](https://github.com/ethpandaops/ethereum-package/commit/47204c350117b2a7b1cfa4c38d3308bd5e90828e))
-* docker login to separate action yaml ([#819](https://github.com/ethpandaops/ethereum-package/issues/819)) ([2494022](https://github.com/ethpandaops/ethereum-package/commit/2494022122d3590f5dc1ec701a9fb7e081d5c0e6))
-* get volume size recommendations when in shadowfork mode ([#820](https://github.com/ethpandaops/ethereum-package/issues/820)) ([b1f27c6](https://github.com/ethpandaops/ethereum-package/commit/b1f27c649e61f29700baf9f204b89054e507c44a))
-* mixed up labels ([#799](https://github.com/ethpandaops/ethereum-package/issues/799)) ([e2c1528](https://github.com/ethpandaops/ethereum-package/commit/e2c1528834809db1f68f79133edc6016132d2f2f))
-* only set supernode if its true ([#796](https://github.com/ethpandaops/ethereum-package/issues/796)) ([2110a60](https://github.com/ethpandaops/ethereum-package/commit/2110a608205e06e1986c58efeeeefefd37df51eb))
-* prefund container suffixes for k8s ([#818](https://github.com/ethpandaops/ethereum-package/issues/818)) ([968cfbd](https://github.com/ethpandaops/ethereum-package/commit/968cfbdb702e5e277bec8704e5185055dedabe74))
-* remove deprecated http-allow-sync-stalled from LH ([#805](https://github.com/ethpandaops/ethereum-package/issues/805)) ([1825dbf](https://github.com/ethpandaops/ethereum-package/commit/1825dbfc6d58a6326f11fa5a9531b6867b0d5b77))
-* Remove not necessary "/api" (and bump verifier version) ([#792](https://github.com/ethpandaops/ethereum-package/issues/792)) ([befde97](https://github.com/ethpandaops/ethereum-package/commit/befde97ce72f133bd8b491fe2e4a40870af52f12))
-* set default for label-maker ([#797](https://github.com/ethpandaops/ethereum-package/issues/797)) ([5b2d234](https://github.com/ethpandaops/ethereum-package/commit/5b2d234217de686ac002b077d3047708d0a0a132))
-* swap http/grpc server ports and replace flags ([#802](https://github.com/ethpandaops/ethereum-package/issues/802)) ([8c6df26](https://github.com/ethpandaops/ethereum-package/commit/8c6df267a4d517e670425e0de4c18cff122500af))
-* update built in assertoor tests ([#782](https://github.com/ethpandaops/ethereum-package/issues/782)) ([d24fb2a](https://github.com/ethpandaops/ethereum-package/commit/d24fb2a2ec529bb17b386d3c99bcdf9dd2a94118))
-* update nethermind config option ([#824](https://github.com/ethpandaops/ethereum-package/issues/824)) ([08ce034](https://github.com/ethpandaops/ethereum-package/commit/08ce034e06ecdcc2885e3f5ecf721cf6df6caddd))
-
-## [4.3.0](https://github.com/ethpandaops/ethereum-package/compare/4.2.0...4.3.0) (2024-09-23)
-
-
-### Features
-
-* add prefunded accounts ([#752](https://github.com/ethpandaops/ethereum-package/issues/752)) ([1be7efa](https://github.com/ethpandaops/ethereum-package/commit/1be7efa028d5b72837a9c4b5de5b70e102e2f166))
-* dora - show more infos about all peers on client pages ([#760](https://github.com/ethpandaops/ethereum-package/issues/760)) ([c77d95f](https://github.com/ethpandaops/ethereum-package/commit/c77d95fe21deb9dd09481998d2e39f46b148f146))
-
-
-### Bug Fixes
-
-* `metrics-host-allowlist` for Teku ([#765](https://github.com/ethpandaops/ethereum-package/issues/765)) ([ad75fcc](https://github.com/ethpandaops/ethereum-package/commit/ad75fcce4aa3dcd0064a6d538462587e430478a0))
-* built in validator lifecycle test for assertoor ([#763](https://github.com/ethpandaops/ethereum-package/issues/763)) ([6f868cc](https://github.com/ethpandaops/ethereum-package/commit/6f868ccf26abf341a83bc96569dea0fa890f90f7))
-* explicitly set client contexts ([#755](https://github.com/ethpandaops/ethereum-package/issues/755)) ([94dc531](https://github.com/ethpandaops/ethereum-package/commit/94dc531e332f4fd4466a9473dfec328a3a681b01))
-* no default resource limits ([#768](https://github.com/ethpandaops/ethereum-package/issues/768)) ([4c4831b](https://github.com/ethpandaops/ethereum-package/commit/4c4831bc509ae580f68b85c2c5b469d454586def))
-* prysm gRPC removal - use http server instead for keymanager ([#761](https://github.com/ethpandaops/ethereum-package/issues/761)) ([ba91174](https://github.com/ethpandaops/ethereum-package/commit/ba911745b5e6cdc0216c5394394605d274ce70ef))
-* remove epoch checker for goomy ([#754](https://github.com/ethpandaops/ethereum-package/issues/754)) ([f124bbf](https://github.com/ethpandaops/ethereum-package/commit/f124bbf96847ec08d3aa7e8b65df336ef6722475))
-* remove exp RPC API namespace flag from nimbus-eth1 configuration ([#767](https://github.com/ethpandaops/ethereum-package/issues/767)) ([8fec454](https://github.com/ethpandaops/ethereum-package/commit/8fec454f7af0733277336fc3f06376442b7b4fa4))
-* reth-builder volume claim ([#771](https://github.com/ethpandaops/ethereum-package/issues/771)) ([4570328](https://github.com/ethpandaops/ethereum-package/commit/4570328e47b6ef5a59a47635f6c58acd3f8ad2d1))
-* update dora config for latest release & remove custom images ([#748](https://github.com/ethpandaops/ethereum-package/issues/748)) ([a433c50](https://github.com/ethpandaops/ethereum-package/commit/a433c50e1c61dd20a6c28dcebfde704c136ddb69))
-
-## [4.2.0](https://github.com/ethpandaops/ethereum-package/compare/4.1.0...4.2.0) (2024-08-19)
-
-
-### Features
-
-* add customizable configuraiton for prometheus retention ([#745](https://github.com/ethpandaops/ethereum-package/issues/745)) ([6c02dfe](https://github.com/ethpandaops/ethereum-package/commit/6c02dfee67e239650f9f21786ff5c976770a733b))
-* add genesis_gaslimit param configuration ([#726](https://github.com/ethpandaops/ethereum-package/issues/726)) ([a4ba9a6](https://github.com/ethpandaops/ethereum-package/commit/a4ba9a65852411db43dbcf3c727c9ad52040e482))
-* Add Lighthouse PeerDAS Dashboard ([#736](https://github.com/ethpandaops/ethereum-package/issues/736)) ([ffbfde2](https://github.com/ethpandaops/ethereum-package/commit/ffbfde23f2e58350145ab48d0dbce5e245385ab5))
-* add peerdas-electra-support ([#740](https://github.com/ethpandaops/ethereum-package/issues/740)) ([663e7e6](https://github.com/ethpandaops/ethereum-package/commit/663e7e654b81fb623a1fa486ccf7092ba2e39d80))
-* add profiling for prysm ([#722](https://github.com/ethpandaops/ethereum-package/issues/722)) ([7dc6660](https://github.com/ethpandaops/ethereum-package/commit/7dc66606f5d5f86d4ef394bc70fe2e936cd55c75))
-* add sanity check ([#710](https://github.com/ethpandaops/ethereum-package/issues/710)) ([b824cac](https://github.com/ethpandaops/ethereum-package/commit/b824cac89ca2c78604c82544888a89c0c1d3aa80))
-* enable dora pprof ([#743](https://github.com/ethpandaops/ethereum-package/issues/743)) ([2b7be9a](https://github.com/ethpandaops/ethereum-package/commit/2b7be9a27c516b17322e8028c23813620bfc6afe))
-* generate keys if not default key is used ([#707](https://github.com/ethpandaops/ethereum-package/issues/707)) ([2d1cab5](https://github.com/ethpandaops/ethereum-package/commit/2d1cab5317dac62524601f392a4a62a7c3a88b80))
-* lodestar persists invalid ssz objects by default ([#730](https://github.com/ethpandaops/ethereum-package/issues/730)) ([5a45991](https://github.com/ethpandaops/ethereum-package/commit/5a459914327e33c426e82df62af6336970857f08))
-* update egg config parameters ([#737](https://github.com/ethpandaops/ethereum-package/issues/737)) ([78c2bc7](https://github.com/ethpandaops/ethereum-package/commit/78c2bc77caaf814cf360499b6b61337ea7eb7099))
-
-
-### Bug Fixes
-
-* add debug ns to nethermind ([#732](https://github.com/ethpandaops/ethereum-package/issues/732)) ([372bb52](https://github.com/ethpandaops/ethereum-package/commit/372bb521525948bc0a97a1999e6d233cb2792626))
-* allow vc properties in participants_matrix.cl ([#715](https://github.com/ethpandaops/ethereum-package/issues/715)) ([c8b9b19](https://github.com/ethpandaops/ethereum-package/commit/c8b9b19c045f6075fa02f9abf8f761a5a8056ba3))
-* besu devnet schedule ([#734](https://github.com/ethpandaops/ethereum-package/issues/734)) ([28b67cd](https://github.com/ethpandaops/ethereum-package/commit/28b67cd17a6f0abf80c46821465872d4006f9277))
-* blobscan redis dependency ([#712](https://github.com/ethpandaops/ethereum-package/issues/712)) ([0ed1c9c](https://github.com/ethpandaops/ethereum-package/commit/0ed1c9c8e974f7c6900f68679602d95cfcb17831))
-* change churn limit default for pectra tests ([#747](https://github.com/ethpandaops/ethereum-package/issues/747)) ([8109054](https://github.com/ethpandaops/ethereum-package/commit/8109054e20121092ad5ad3eebbf1a16a20677887))
-* correctly apply extra params if builder is enabled ([#725](https://github.com/ethpandaops/ethereum-package/issues/725)) ([a94caf0](https://github.com/ethpandaops/ethereum-package/commit/a94caf02c327347a7e6b4ed2f99badb787a25dc7))
-* disable all assertoor tests by default ([#738](https://github.com/ethpandaops/ethereum-package/issues/738)) ([2961f96](https://github.com/ethpandaops/ethereum-package/commit/2961f969402b3f3dbf6f584e74644cf32cfd7902))
-* lodestar vc faster startup ([#721](https://github.com/ethpandaops/ethereum-package/issues/721)) ([225e3d8](https://github.com/ethpandaops/ethereum-package/commit/225e3d80fe0389f6a22c88a56075ad86a1ae2b00))
-* readme eof ([#739](https://github.com/ethpandaops/ethereum-package/issues/739)) ([7f94f6e](https://github.com/ethpandaops/ethereum-package/commit/7f94f6e2fefe21e11edb7cf5dc827e3f486afe98))
-* remove custom peerdas images for dora & assertoor ([#741](https://github.com/ethpandaops/ethereum-package/issues/741)) ([a19398d](https://github.com/ethpandaops/ethereum-package/commit/a19398decc892ba6749284495891184de987cab0))
-* remove subscribe all subnet nimbus ([#719](https://github.com/ethpandaops/ethereum-package/issues/719)) ([ef92f8f](https://github.com/ethpandaops/ethereum-package/commit/ef92f8f45e4e32d0e2b9711ca9671ff5d1bcab00))
-* remove subscribe-all-subnets from default prysm config ([#717](https://github.com/ethpandaops/ethereum-package/issues/717)) ([6348c0b](https://github.com/ethpandaops/ethereum-package/commit/6348c0b4c0b8a03a27cdf8a5fa8615b0ab323d7b))
-* remove subscribe-all-subnets lighthouse/lodestar/teku ([#720](https://github.com/ethpandaops/ethereum-package/issues/720)) ([cdb20e1](https://github.com/ethpandaops/ethereum-package/commit/cdb20e18110e3c85817adc7e970d4b4cbd445feb))
-* update snapshots URL ([#731](https://github.com/ethpandaops/ethereum-package/issues/731)) ([f9269ad](https://github.com/ethpandaops/ethereum-package/commit/f9269ad7e7bc04fae486b340f8d189d3b965f4b2))
-
-## [4.1.0](https://github.com/ethpandaops/ethereum-package/compare/4.0.0...4.1.0) (2024-07-03)
-
-
-### Features
-
-* add back k8s tests ([#699](https://github.com/ethpandaops/ethereum-package/issues/699)) ([d621cf0](https://github.com/ethpandaops/ethereum-package/commit/d621cf0a4936c40778e492bb307fef990477aa52))
-* add checkpoint_enabled and checkpoint_url flags ([#689](https://github.com/ethpandaops/ethereum-package/issues/689)) ([b8cd2b4](https://github.com/ethpandaops/ethereum-package/commit/b8cd2b4574d4f8defa343532a7725b9ae3be692b))
-* add eof support ([#682](https://github.com/ethpandaops/ethereum-package/issues/682)) ([cb203ff](https://github.com/ethpandaops/ethereum-package/commit/cb203ff1e9929529570f4dc59b7b3cb6022ff670))
-* add mev relays to dora config ([#679](https://github.com/ethpandaops/ethereum-package/issues/679)) ([293001a](https://github.com/ethpandaops/ethereum-package/commit/293001a1e116e7e727d19ed42ba3e7113171f561))
-* Add static ports ([#677](https://github.com/ethpandaops/ethereum-package/issues/677)) ([4f054d0](https://github.com/ethpandaops/ethereum-package/commit/4f054d0566c1a8a8f90a5436d022cd5fe36d7c3c))
-* add ws_url to el_context ([#696](https://github.com/ethpandaops/ethereum-package/issues/696)) ([26fea61](https://github.com/ethpandaops/ethereum-package/commit/26fea619789253f73c1f53eb9478347bb908387a))
-* introduce devnet_repo override ([#686](https://github.com/ethpandaops/ethereum-package/issues/686)) ([9952361](https://github.com/ethpandaops/ethereum-package/commit/99523611622dbbefc2a523e6b011e63487b1cbf7))
-* use CDN URL for data snapshots used for shadow forks ([#676](https://github.com/ethpandaops/ethereum-package/issues/676)) ([91dc68c](https://github.com/ethpandaops/ethereum-package/commit/91dc68c9e709729e2a8c2fa59f48d8901eb49bb5))
-
-
-### Bug Fixes
-
-* besu bonsai log disable ([#673](https://github.com/ethpandaops/ethereum-package/issues/673)) ([955f19f](https://github.com/ethpandaops/ethereum-package/commit/955f19f8a79eda7d3d645c0c3d3a822705f10a7d))
-* blockscout bad return ([#685](https://github.com/ethpandaops/ethereum-package/issues/685)) ([e80870b](https://github.com/ethpandaops/ethereum-package/commit/e80870b3f955d5e350e3b14ab8ea2e49fa8d2f48))
-* bump peerdas images ([#678](https://github.com/ethpandaops/ethereum-package/issues/678)) ([1acc201](https://github.com/ethpandaops/ethereum-package/commit/1acc201cbb7314c593963e042796e4d93ceaf960))
-* DNS-1035 label ([#697](https://github.com/ethpandaops/ethereum-package/issues/697)) ([440fb31](https://github.com/ethpandaops/ethereum-package/commit/440fb319084fc8ea16f961410162d35290deeb22))
-* ephemery genesis loader ([#700](https://github.com/ethpandaops/ethereum-package/issues/700)) ([0235063](https://github.com/ethpandaops/ethereum-package/commit/023506362d489124d88f1d2b15408f08fbdd173e))
-* ignore bootnodes if in shadowfork ([#660](https://github.com/ethpandaops/ethereum-package/issues/660)) ([cda5dda](https://github.com/ethpandaops/ethereum-package/commit/cda5ddac51e4ce2228f2a4da1d242b2fcb7eeccd))
-* minimal eof ([#687](https://github.com/ethpandaops/ethereum-package/issues/687)) ([26a7618](https://github.com/ethpandaops/ethereum-package/commit/26a76187cd65114640764cc4eefc4a6c7517b57a))
-* release please manifest ([#675](https://github.com/ethpandaops/ethereum-package/issues/675)) ([75ed7e1](https://github.com/ethpandaops/ethereum-package/commit/75ed7e18309d1d3884e222abcd097366649288cc))
-* remove docker login ([#701](https://github.com/ethpandaops/ethereum-package/issues/701)) ([ede5962](https://github.com/ethpandaops/ethereum-package/commit/ede596266d2a0fe8af0e1bf21c6a09e4685b67a5))
-* return empty services ([#688](https://github.com/ethpandaops/ethereum-package/issues/688)) ([6571a70](https://github.com/ethpandaops/ethereum-package/commit/6571a70bccb310957d531daea6685f641469b546))
-* return the correct network_id ([#705](https://github.com/ethpandaops/ethereum-package/issues/705)) ([7c592f6](https://github.com/ethpandaops/ethereum-package/commit/7c592f6741718c20bdce4bd3bd6035b3ce37f38d))
-
-## [4.0.0](https://github.com/ethpandaops/ethereum-package/compare/3.1.0...v4.0.0) (2024-06-13)
-
-
-### ⚠ BREAKING CHANGES
-
-* migrate from kurtosis-tech to ethpandaops repository ([#663](https://github.com/ethpandaops/ethereum-package/issues/663))
-
-### Features
-
-* add names to run-sh ([#666](https://github.com/ethpandaops/ethereum-package/issues/666)) ([6b447b7](https://github.com/ethpandaops/ethereum-package/commit/6b447b7254ce1e9d7a2383eb1a0b9435bbabf237))
-* Adding arbitrary contract definition ([#646](https://github.com/ethpandaops/ethereum-package/issues/646)) ([cb58b65](https://github.com/ethpandaops/ethereum-package/commit/cb58b65911828b333c2aabf9052e30d79a8a55aa))
-* migrate from kurtosis-tech to ethpandaops repository ([#663](https://github.com/ethpandaops/ethereum-package/issues/663)) ([d980fee](https://github.com/ethpandaops/ethereum-package/commit/d980feedac0fbe6a18a6b699f62d3f3275657b16))
-* update Lodestar BN <> VC compatibility ([#664](https://github.com/ethpandaops/ethereum-package/issues/664)) ([7f365da](https://github.com/ethpandaops/ethereum-package/commit/7f365da6607bd863b12170ed475b77f4fafcc146))
-
-
-### Bug Fixes
-
-* permissions on autorelease ([#671](https://github.com/ethpandaops/ethereum-package/issues/671)) ([fcaa2c2](https://github.com/ethpandaops/ethereum-package/commit/fcaa2c23301c0f7012301fe019a75b0fa369961b))
-* update release please ([#670](https://github.com/ethpandaops/ethereum-package/issues/670)) ([fa53672](https://github.com/ethpandaops/ethereum-package/commit/fa536729886fa911ce4778b6d4097e2fb69a6c06))
-
-## [3.1.0](https://github.com/kurtosis-tech/ethereum-package/compare/3.0.0...3.1.0) (2024-06-07)
-
-
-### Features
-
-* add http url to el context ([#656](https://github.com/kurtosis-tech/ethereum-package/issues/656)) ([4e69a4c](https://github.com/kurtosis-tech/ethereum-package/commit/4e69a4c057c600d479879691837ba2ef7f683a34))
-* add prefunded accounts to output ([#657](https://github.com/kurtosis-tech/ethereum-package/issues/657)) ([bc06e2a](https://github.com/kurtosis-tech/ethereum-package/commit/bc06e2a4e93add97c75c5b520b87a6b9863a9faf))
-* add tracoor ([#651](https://github.com/kurtosis-tech/ethereum-package/issues/651)) ([b100cb6](https://github.com/kurtosis-tech/ethereum-package/commit/b100cb6fac5646783c0ee580ec3425fd74e0e4a1))
-* add vc_count to increase the number of validators per participant ([#633](https://github.com/kurtosis-tech/ethereum-package/issues/633)) ([4272ff3](https://github.com/kurtosis-tech/ethereum-package/commit/4272ff3e27be1c85fd5e8e606b956ea31c0ae3b9))
-* allow setting custom dora image & env variables ([#623](https://github.com/kurtosis-tech/ethereum-package/issues/623)) ([08a65c3](https://github.com/kurtosis-tech/ethereum-package/commit/08a65c33b645a1dc656feb0671513d9bf1b84c66))
-* **apache:** Serve all config files ([#606](https://github.com/kurtosis-tech/ethereum-package/issues/606)) ([3f1f5e1](https://github.com/kurtosis-tech/ethereum-package/commit/3f1f5e118e5d125ec108a40f0edc0b0617a60b5f))
-* **config:** add peerdas vars ([#619](https://github.com/kurtosis-tech/ethereum-package/issues/619)) ([22f1498](https://github.com/kurtosis-tech/ethereum-package/commit/22f1498a3d344150827a2393df3e3ff0c693a6ff))
-* expose network-params ([#659](https://github.com/kurtosis-tech/ethereum-package/issues/659)) ([b0820dd](https://github.com/kurtosis-tech/ethereum-package/commit/b0820ddae77e7d45d090c00e47aa3e8d3832e194))
-* forky ([#625](https://github.com/kurtosis-tech/ethereum-package/issues/625)) ([ded68bd](https://github.com/kurtosis-tech/ethereum-package/commit/ded68bdc73dbb0e166ef8e02dc3ab577066d0214))
-* Support participants_matrix ([#620](https://github.com/kurtosis-tech/ethereum-package/issues/620)) ([3a57467](https://github.com/kurtosis-tech/ethereum-package/commit/3a57467519ca20a519985ce2e2257c3694dc4fde))
-* use `peer-das` image for dora when eip7594 is active ([#593](https://github.com/kurtosis-tech/ethereum-package/issues/593)) ([1b4bd3d](https://github.com/kurtosis-tech/ethereum-package/commit/1b4bd3d1478839474a26d163312e99a810399b1b))
-
-
-### Bug Fixes
-
-* add additional prefund addresses ([#655](https://github.com/kurtosis-tech/ethereum-package/issues/655)) ([6d2cdb6](https://github.com/kurtosis-tech/ethereum-package/commit/6d2cdb6982da76f95bdde2b7930fbea9117016b8))
-* add cl log level to builders ([#638](https://github.com/kurtosis-tech/ethereum-package/issues/638)) ([ad46dbd](https://github.com/kurtosis-tech/ethereum-package/commit/ad46dbdf8babbc5bf6a5aae9ee9ee4be54491a92))
-* Add EIP-7002 & EIP-2935 bytecode to ethereum-genesis-generator ([#597](https://github.com/kurtosis-tech/ethereum-package/issues/597)) ([3d316ef](https://github.com/kurtosis-tech/ethereum-package/commit/3d316ef631b038355b88d23024d19086699bd452))
-* add http to teku endpoint ([#622](https://github.com/kurtosis-tech/ethereum-package/issues/622)) ([085b6e1](https://github.com/kurtosis-tech/ethereum-package/commit/085b6e126fc0ccf98431d74f56e9965fa8b1f665))
-* add peer_das_epoch to egg ([#603](https://github.com/kurtosis-tech/ethereum-package/issues/603)) ([91694df](https://github.com/kurtosis-tech/ethereum-package/commit/91694dfc1e8b64ac76b7dfda006f19db358941fa))
-* add sha256 as an image label (if present) ([#637](https://github.com/kurtosis-tech/ethereum-package/issues/637)) ([3dcf888](https://github.com/kurtosis-tech/ethereum-package/commit/3dcf888326266aaba38f8253e47b3dd85a457cd0))
-* add static port config for apache ([#608](https://github.com/kurtosis-tech/ethereum-package/issues/608)) ([b96e502](https://github.com/kurtosis-tech/ethereum-package/commit/b96e502145010694579d7b938a8112e0311ecb8b))
-* **apache:** only set static port if wanted ([#610](https://github.com/kurtosis-tech/ethereum-package/issues/610)) ([2c6b7b1](https://github.com/kurtosis-tech/ethereum-package/commit/2c6b7b1af7b7513adf46394b9138f726a57f9e38))
-* blockscout fix for json variant ([#662](https://github.com/kurtosis-tech/ethereum-package/issues/662)) ([e79c510](https://github.com/kurtosis-tech/ethereum-package/commit/e79c5101f44ca3a5bd70f16b2cf24976db8e555e))
-* churn adjustments ([#614](https://github.com/kurtosis-tech/ethereum-package/issues/614)) ([12ca872](https://github.com/kurtosis-tech/ethereum-package/commit/12ca8721b42e000bcf8b6624a0b3c7b6cbde57bd))
-* default config ([#632](https://github.com/kurtosis-tech/ethereum-package/issues/632)) ([14be117](https://github.com/kurtosis-tech/ethereum-package/commit/14be117598bca0d733cb8b1dc439abdde5be8ae1))
-* drop everythign after [@sha](https://github.com/sha) from image labels ([#636](https://github.com/kurtosis-tech/ethereum-package/issues/636)) ([5d35463](https://github.com/kurtosis-tech/ethereum-package/commit/5d35463853b6bb7e58112b5df246660c8d1bd02d))
-* erigon v3 - new default image ([#629](https://github.com/kurtosis-tech/ethereum-package/issues/629)) ([72cf150](https://github.com/kurtosis-tech/ethereum-package/commit/72cf150c580addc00c1ca0693b568d62b06118a1))
-* genesis generator bump ([#611](https://github.com/kurtosis-tech/ethereum-package/issues/611)) ([5460f6f](https://github.com/kurtosis-tech/ethereum-package/commit/5460f6fc26972fe576ef89d521d5251470e65b5e))
-* nightly tests ([#595](https://github.com/kurtosis-tech/ethereum-package/issues/595)) ([76c31e9](https://github.com/kurtosis-tech/ethereum-package/commit/76c31e91d830490c956321cc2f6b3301a8d6fd27))
-* pectra example ([#605](https://github.com/kurtosis-tech/ethereum-package/issues/605)) ([67e3da0](https://github.com/kurtosis-tech/ethereum-package/commit/67e3da0e0cf4314353d5cea806186530df54a1cd))
-* prysm vc key manager ports ([#639](https://github.com/kurtosis-tech/ethereum-package/issues/639)) ([81c1ee7](https://github.com/kurtosis-tech/ethereum-package/commit/81c1ee70a56f910ecd6b710dd0fe3721d81b6dcf))
-* re-add images to labels ([#634](https://github.com/kurtosis-tech/ethereum-package/issues/634)) ([71f6e28](https://github.com/kurtosis-tech/ethereum-package/commit/71f6e28e682e47a550ffef037c7b26ce836d96df))
-* README has invalid configs ([#631](https://github.com/kurtosis-tech/ethereum-package/issues/631)) ([e33b971](https://github.com/kurtosis-tech/ethereum-package/commit/e33b97171f1aedb647191e3b02835a8004cbaade))
-* readme indentation ([#600](https://github.com/kurtosis-tech/ethereum-package/issues/600)) ([583db1b](https://github.com/kurtosis-tech/ethereum-package/commit/583db1b4ebaa5ab2e5eb2f97aa7414f89376b022))
-* registration flags when using beacon node only ([#618](https://github.com/kurtosis-tech/ethereum-package/issues/618)) ([c12506b](https://github.com/kurtosis-tech/ethereum-package/commit/c12506b9587c9a87e89d2938351d72c4676160e1))
-* repair check workflow for external PRs ([#616](https://github.com/kurtosis-tech/ethereum-package/issues/616)) ([a584682](https://github.com/kurtosis-tech/ethereum-package/commit/a5846821563d318b993de48baab5e3a9c9e267d0))
-* seperate vc service names ([#654](https://github.com/kurtosis-tech/ethereum-package/issues/654)) ([a5ffe14](https://github.com/kurtosis-tech/ethereum-package/commit/a5ffe14e7d3c9f7ec6dbebd79a4b42c24394c0f7))
-* tune Besu options to work with tx_spammer ([#612](https://github.com/kurtosis-tech/ethereum-package/issues/612)) ([b395189](https://github.com/kurtosis-tech/ethereum-package/commit/b39518904fbf2cad5ca2ec18ce1bc18455207014))
-* update dora images ([#598](https://github.com/kurtosis-tech/ethereum-package/issues/598)) ([dd28d61](https://github.com/kurtosis-tech/ethereum-package/commit/dd28d61a31bdc4c58c33ca733487535041f5ae0a))
-* update prysm image ([#599](https://github.com/kurtosis-tech/ethereum-package/issues/599)) ([0a38114](https://github.com/kurtosis-tech/ethereum-package/commit/0a38114e8444837d7cff9aab9afe6b06e1c99d84))
-* use `electra-support` image for assertoor when electra fork epoch is set ([#607](https://github.com/kurtosis-tech/ethereum-package/issues/607)) ([cdeab93](https://github.com/kurtosis-tech/ethereum-package/commit/cdeab939eda037770b89b580658a87817aac1158))
-
-## [3.0.0](https://github.com/kurtosis-tech/ethereum-package/compare/2.2.0...3.0.0) (2024-05-06)
-
-
-### ⚠ BREAKING CHANGES
-
-* add mev-rs relay/builder/boost ([#586](https://github.com/kurtosis-tech/ethereum-package/issues/586))
-* upcoming file path change in kurtosis upstream ([#582](https://github.com/kurtosis-tech/ethereum-package/issues/582))
-
-### Features
-
-* add apache file server ([#581](https://github.com/kurtosis-tech/ethereum-package/issues/581)) ([205256a](https://github.com/kurtosis-tech/ethereum-package/commit/205256a6d79303719973655b459e803d9b8e311f))
-* add enr/enode to apache ([#589](https://github.com/kurtosis-tech/ethereum-package/issues/589)) ([b789e17](https://github.com/kurtosis-tech/ethereum-package/commit/b789e1705f076ec6aa01ceffbf5fbeebb02d8c0f))
-* add execution client urls to dora config ([#588](https://github.com/kurtosis-tech/ethereum-package/issues/588)) ([2a20d5a](https://github.com/kurtosis-tech/ethereum-package/commit/2a20d5ad7d2bf8f9a9eb2b619681b438810176d2))
-* add mev-rs relay/builder/boost ([#586](https://github.com/kurtosis-tech/ethereum-package/issues/586)) ([525a8fb](https://github.com/kurtosis-tech/ethereum-package/commit/525a8fb3d794f8030a574f55f3a7e719c1b58dca))
-* Add peerdas support ([#591](https://github.com/kurtosis-tech/ethereum-package/issues/591)) ([14296ca](https://github.com/kurtosis-tech/ethereum-package/commit/14296cab11d8c7a9572cf57a37980e1d93285cad))
-* add snooper urls to assertoor config ([#571](https://github.com/kurtosis-tech/ethereum-package/issues/571)) ([87f383f](https://github.com/kurtosis-tech/ethereum-package/commit/87f383fbc7f9e28d383853fcb7cd491abe13a0cc))
-* allow setting exit ip address ([#584](https://github.com/kurtosis-tech/ethereum-package/issues/584)) ([aabc942](https://github.com/kurtosis-tech/ethereum-package/commit/aabc942c4e8534288f28cdbb1e9e55f2613f383c))
-
-
-### Bug Fixes
-
-* non-existent field access on error message ([#577](https://github.com/kurtosis-tech/ethereum-package/issues/577)) ([8515d27](https://github.com/kurtosis-tech/ethereum-package/commit/8515d276056a47f9e6a77dd498f823042bff1a8f))
-* participant redefining global flag ([#573](https://github.com/kurtosis-tech/ethereum-package/issues/573)) ([9139f4b](https://github.com/kurtosis-tech/ethereum-package/commit/9139f4b4c77bc43477740972512171d7f28bfa84))
-* path for shadowforks post kt update ([#585](https://github.com/kurtosis-tech/ethereum-package/issues/585)) ([e0622a7](https://github.com/kurtosis-tech/ethereum-package/commit/e0622a77305732e01ee0fce183fda15c3dcd2dad))
-* remove erigon's --chain parameter ([#575](https://github.com/kurtosis-tech/ethereum-package/issues/575)) ([02b9c50](https://github.com/kurtosis-tech/ethereum-package/commit/02b9c50495f9b8cce0b0df502f19b37c0cb21ffd))
-* upcoming file path change in kurtosis upstream ([#582](https://github.com/kurtosis-tech/ethereum-package/issues/582)) ([8d7c4f9](https://github.com/kurtosis-tech/ethereum-package/commit/8d7c4f9c1feba07511c22d006b5121b45893f642))
-
-## [2.2.0](https://github.com/kurtosis-tech/ethereum-package/compare/2.1.0...2.2.0) (2024-04-19)
-
-
-### Features
-
-* add assertoor test for per PR CI job ([#537](https://github.com/kurtosis-tech/ethereum-package/issues/537)) ([8ef5c57](https://github.com/kurtosis-tech/ethereum-package/commit/8ef5c57fc00b1e5ea9d59011fa61d771b1af5133))
-* add blutgang rpc load balancer ([#569](https://github.com/kurtosis-tech/ethereum-package/issues/569)) ([1be5f95](https://github.com/kurtosis-tech/ethereum-package/commit/1be5f9542cf43b7b5afc3f565358b50dfbb81d50))
-* add dugtrio beacon load balancer ([#568](https://github.com/kurtosis-tech/ethereum-package/issues/568)) ([56d2fa3](https://github.com/kurtosis-tech/ethereum-package/commit/56d2fa38e59018fa331c12a271a906ec4fe67e6e))
-* add new assertoor test to per ci jobs ([#545](https://github.com/kurtosis-tech/ethereum-package/issues/545)) ([3005d46](https://github.com/kurtosis-tech/ethereum-package/commit/3005d46d60970be18e66f6a7f590d0b4689e84f4))
-* use new rpc snooper from `ethpandaops/rpc-snooper` ([#567](https://github.com/kurtosis-tech/ethereum-package/issues/567)) ([5676f0d](https://github.com/kurtosis-tech/ethereum-package/commit/5676f0dd4d62ee25a7f8ca2959596e419743916d))
-
-
-### Bug Fixes
-
-* add --contract-deployment-block parameter for Prysm ([#557](https://github.com/kurtosis-tech/ethereum-package/issues/557)) ([d8dfbae](https://github.com/kurtosis-tech/ethereum-package/commit/d8dfbae531c038e3985cb15ca6bcbcf37f6526a0))
-* Added '--enable-private-discovery' to Grandine ([#541](https://github.com/kurtosis-tech/ethereum-package/issues/541)) ([a1ae708](https://github.com/kurtosis-tech/ethereum-package/commit/a1ae708183873dec97e91986d6104c8dedc92100))
-* beaconchain explorer ([#531](https://github.com/kurtosis-tech/ethereum-package/issues/531)) ([b62ed6f](https://github.com/kurtosis-tech/ethereum-package/commit/b62ed6f129c65b62f084ea2a78fab0fa80afd9e2))
-* beaconchain explorer ([#538](https://github.com/kurtosis-tech/ethereum-package/issues/538)) ([ce1f337](https://github.com/kurtosis-tech/ethereum-package/commit/ce1f3373000d552a9b4b8b09ad5754ab092a61cb))
-* blobber incorrect url ([#528](https://github.com/kurtosis-tech/ethereum-package/issues/528)) ([6f84e3d](https://github.com/kurtosis-tech/ethereum-package/commit/6f84e3d5ec5fd7c02016530b3b64c79114d5891e))
-* bump json rpc snooper ([#553](https://github.com/kurtosis-tech/ethereum-package/issues/553)) ([f69c4a7](https://github.com/kurtosis-tech/ethereum-package/commit/f69c4a7468f97a4aa3aaea64dd18a63e561a6704))
-* disable full sync if gcmode is archive ([#563](https://github.com/kurtosis-tech/ethereum-package/issues/563)) ([b7592ec](https://github.com/kurtosis-tech/ethereum-package/commit/b7592ecac5ca8820aa6de6fc5ae9bb9c0dc27c20))
-* disable pbss when gcmode archive set ([#559](https://github.com/kurtosis-tech/ethereum-package/issues/559)) ([e085462](https://github.com/kurtosis-tech/ethereum-package/commit/e0854624ef69a069bb7ba482694cb83180df0680))
-* disable pbss when gcmode archive set, force hash based init ([#562](https://github.com/kurtosis-tech/ethereum-package/issues/562)) ([3e1c7a6](https://github.com/kurtosis-tech/ethereum-package/commit/3e1c7a6585a50398e5750f6e37cf3d0685d35536))
-* disable static peers ([#529](https://github.com/kurtosis-tech/ethereum-package/issues/529)) ([c5d4028](https://github.com/kurtosis-tech/ethereum-package/commit/c5d4028939691b887b928b91532f8139478ee4d2))
-* enable single node mode on lodestar by default ([#558](https://github.com/kurtosis-tech/ethereum-package/issues/558)) ([555ad7d](https://github.com/kurtosis-tech/ethereum-package/commit/555ad7dc5180cc7f47e14baa3438879e6d4779e9))
-* fix doc string typo ([#560](https://github.com/kurtosis-tech/ethereum-package/issues/560)) ([13de3f6](https://github.com/kurtosis-tech/ethereum-package/commit/13de3f68706a80088b28fbfefc69d738e06d13ef))
-* fix failing persistence test ([#554](https://github.com/kurtosis-tech/ethereum-package/issues/554)) ([99242d6](https://github.com/kurtosis-tech/ethereum-package/commit/99242d66f3e0254684b75bce14353a854e735721))
-* increase mem limit of snooper ([#546](https://github.com/kurtosis-tech/ethereum-package/issues/546)) ([6ba5770](https://github.com/kurtosis-tech/ethereum-package/commit/6ba577006e6f6eb0b477619399edb232f4ed9783))
-* prysm beacon http url ([#536](https://github.com/kurtosis-tech/ethereum-package/issues/536)) ([4914531](https://github.com/kurtosis-tech/ethereum-package/commit/4914531690eae32ba274e10ee7fa0ecf6d82ac68))
-* prysm beacon_http_url ([#535](https://github.com/kurtosis-tech/ethereum-package/issues/535)) ([ee7528c](https://github.com/kurtosis-tech/ethereum-package/commit/ee7528c5d5872768e7ddc25e9da963e764e3b594))
-* prysm vc ([#533](https://github.com/kurtosis-tech/ethereum-package/issues/533)) ([72ddeb2](https://github.com/kurtosis-tech/ethereum-package/commit/72ddeb25c1bb0a8132c1a3a73bd8f7764cb01659))
-* remove un-needed prysm vc check ([#542](https://github.com/kurtosis-tech/ethereum-package/issues/542)) ([f6326fe](https://github.com/kurtosis-tech/ethereum-package/commit/f6326fe2119648478ab1bfc90220cbd4b4e12cac))
-* set application protocol to be http for rpc ([#548](https://github.com/kurtosis-tech/ethereum-package/issues/548)) ([905de7c](https://github.com/kurtosis-tech/ethereum-package/commit/905de7c3635c3c057f67ae6589d708d9dc6d5ddd))
-* set the correct default vc image ([#544](https://github.com/kurtosis-tech/ethereum-package/issues/544)) ([953741d](https://github.com/kurtosis-tech/ethereum-package/commit/953741d824a4a76a1194c2643012bf738669c3ad))
-* uniformize keymanager ([#534](https://github.com/kurtosis-tech/ethereum-package/issues/534)) ([a6a2830](https://github.com/kurtosis-tech/ethereum-package/commit/a6a2830e90919999c6c391e9aa832094cf440d35))
-* update prometheus api ([#539](https://github.com/kurtosis-tech/ethereum-package/issues/539)) ([d2b9fb8](https://github.com/kurtosis-tech/ethereum-package/commit/d2b9fb8961eac8a712af36f49ac8a1f918dabb6b))
-* update vc <> cl matrix ([#564](https://github.com/kurtosis-tech/ethereum-package/issues/564)) ([0ffcf74](https://github.com/kurtosis-tech/ethereum-package/commit/0ffcf74cf3a83b0c462bc26d07254160b132b27a))
-* update vc compatibility matrix ([#543](https://github.com/kurtosis-tech/ethereum-package/issues/543)) ([58c4684](https://github.com/kurtosis-tech/ethereum-package/commit/58c4684594711ee58bf117c31d5cf688d476892e))
-* use `minimal-preset` images for dora & assertoor when minimal preset is used ([#532](https://github.com/kurtosis-tech/ethereum-package/issues/532)) ([ad7773e](https://github.com/kurtosis-tech/ethereum-package/commit/ad7773e86f1e1bb1f48b96e5126231fd060822e8))
-
-## [2.1.0](https://github.com/kurtosis-tech/ethereum-package/compare/2.0.0...2.1.0) (2024-03-28)
-
-
-### Features
-
-* add beacon snooper ([#520](https://github.com/kurtosis-tech/ethereum-package/issues/520)) ([7e36191](https://github.com/kurtosis-tech/ethereum-package/commit/7e361913c754ddf37eaf2cf3ad4a93aed8770899))
-* add BN<>CL compatibility matrix to readme ([#519](https://github.com/kurtosis-tech/ethereum-package/issues/519)) ([177beeb](https://github.com/kurtosis-tech/ethereum-package/commit/177beeb9b46f61b3dd3dc3009ff2abf9b576c569))
-* add grandine ([#517](https://github.com/kurtosis-tech/ethereum-package/issues/517)) ([3ac4d2a](https://github.com/kurtosis-tech/ethereum-package/commit/3ac4d2a4fae1c33ff658f0f43657a09522348127))
-* enable preset to be set, mainnet/minimal ([#524](https://github.com/kurtosis-tech/ethereum-package/issues/524)) ([f6e1b13](https://github.com/kurtosis-tech/ethereum-package/commit/f6e1b136ef6b884e540c1289b8acc2b4d359e6ce))
-* make deneb genesis default ([#518](https://github.com/kurtosis-tech/ethereum-package/issues/518)) ([49509b9](https://github.com/kurtosis-tech/ethereum-package/commit/49509b9ecb8b00d361e4119ee053ba86c366619e))
-* make keymanager optional ([#523](https://github.com/kurtosis-tech/ethereum-package/issues/523)) ([969012c](https://github.com/kurtosis-tech/ethereum-package/commit/969012c3b504be1c475bd583675857d0605ed430))
-* update verkle genesis + add besu support to verkle testing ([#512](https://github.com/kurtosis-tech/ethereum-package/issues/512)) ([0615cd1](https://github.com/kurtosis-tech/ethereum-package/commit/0615cd1b4466d8f63e3adb721d97ee768211114f))
-
-
-### Bug Fixes
-
-* architecture.md ([#514](https://github.com/kurtosis-tech/ethereum-package/issues/514)) ([f0ec4f0](https://github.com/kurtosis-tech/ethereum-package/commit/f0ec4f076837b282a8972bd2211a0522ed67a06b))
-* blobscan network name ([#516](https://github.com/kurtosis-tech/ethereum-package/issues/516)) ([83c2a55](https://github.com/kurtosis-tech/ethereum-package/commit/83c2a5592445c0efc10ab418d87ab2ecd4d10cf4))
-* **blobscan:** update healthcheck endpoint ([#513](https://github.com/kurtosis-tech/ethereum-package/issues/513)) ([8b2fc61](https://github.com/kurtosis-tech/ethereum-package/commit/8b2fc61f77b53642441d3bd0bdeea89b2a2d35eb))
-* separate vc ([#526](https://github.com/kurtosis-tech/ethereum-package/issues/526)) ([baa04e9](https://github.com/kurtosis-tech/ethereum-package/commit/baa04e9118f39b10ed7d867eec164483c6fd807d))
-* Updated Readme with VCs supported by Grandine BN ([#527](https://github.com/kurtosis-tech/ethereum-package/issues/527)) ([9cbe0b3](https://github.com/kurtosis-tech/ethereum-package/commit/9cbe0b368205f70ee274d9c0c57f634f9621e6d7))
-* use correct dora & assertoor images ([#522](https://github.com/kurtosis-tech/ethereum-package/issues/522)) ([2a8d73a](https://github.com/kurtosis-tech/ethereum-package/commit/2a8d73aba35bf26bfcd474036bac32c4f5713e35))
-* use new validator names in assertoor config ([#521](https://github.com/kurtosis-tech/ethereum-package/issues/521)) ([f595eb9](https://github.com/kurtosis-tech/ethereum-package/commit/f595eb9a75e8c2147d530d1a70e6ccb9f3542257))
-
-## [2.0.0](https://github.com/kurtosis-tech/ethereum-package/compare/1.4.0...2.0.0) (2024-03-08)
-
-
-### ⚠ BREAKING CHANGES
-
-* participant_network & rename participant fields. ([#508](https://github.com/kurtosis-tech/ethereum-package/issues/508))
-* add node selectors features ([#491](https://github.com/kurtosis-tech/ethereum-package/issues/491))
-
-### Features
-
-* add keymanager to all validator processes ([#502](https://github.com/kurtosis-tech/ethereum-package/issues/502)) ([836eda4](https://github.com/kurtosis-tech/ethereum-package/commit/836eda4eed3776dd406d354343655c0ff8b9d2b6))
-* add nimbus-eth1 ([#496](https://github.com/kurtosis-tech/ethereum-package/issues/496)) ([d599729](https://github.com/kurtosis-tech/ethereum-package/commit/d599729295aa3274d23e4e8e99b56288cde3fc04))
-* add node selectors features ([#491](https://github.com/kurtosis-tech/ethereum-package/issues/491)) ([316d42f](https://github.com/kurtosis-tech/ethereum-package/commit/316d42fbaeb2d7bc1d580823a6c70b1c2dfe3746))
-* allow more detailed additional test configurations in assertoor_params ([#498](https://github.com/kurtosis-tech/ethereum-package/issues/498)) ([fe2de7e](https://github.com/kurtosis-tech/ethereum-package/commit/fe2de7e5a5e2446ebb0a0b191f5aa6783e132426))
-* enable api in assertoor config ([#495](https://github.com/kurtosis-tech/ethereum-package/issues/495)) ([9ceae9c](https://github.com/kurtosis-tech/ethereum-package/commit/9ceae9c74405db4e1ab6e02de541577d078434ae))
-* enable dencun-genesis ([#500](https://github.com/kurtosis-tech/ethereum-package/issues/500)) ([beb764f](https://github.com/kurtosis-tech/ethereum-package/commit/beb764fb9a18fcb09cb7d3d9ee48e4826595512d))
-* make snapshot url configurable ([#507](https://github.com/kurtosis-tech/ethereum-package/issues/507)) ([6fa0475](https://github.com/kurtosis-tech/ethereum-package/commit/6fa04751cd1277a4870dc45144e15ffa5d637b93))
-* parameterize mev-boost args ([#400](https://github.com/kurtosis-tech/ethereum-package/issues/400)) ([e48483a](https://github.com/kurtosis-tech/ethereum-package/commit/e48483a130ba227dafd0d0fd9ee66c6cecc3bfce))
-* separate validator clients from CL clients ([#497](https://github.com/kurtosis-tech/ethereum-package/issues/497)) ([90da2c3](https://github.com/kurtosis-tech/ethereum-package/commit/90da2c33a77b4a0ac620ae665899963256a1ae0a))
-
-
-### Bug Fixes
-
-* fix end index in validator ranges file ([#509](https://github.com/kurtosis-tech/ethereum-package/issues/509)) ([da55be8](https://github.com/kurtosis-tech/ethereum-package/commit/da55be84861e93ce777076e545abee35ff2d51ce))
-* lh vc flag logic ([#506](https://github.com/kurtosis-tech/ethereum-package/issues/506)) ([bc5e725](https://github.com/kurtosis-tech/ethereum-package/commit/bc5e725edf8c917d409e6de6ce838797ad166173))
-* nimbus-eth1 advertise proper extip ([#501](https://github.com/kurtosis-tech/ethereum-package/issues/501)) ([1d5a779](https://github.com/kurtosis-tech/ethereum-package/commit/1d5a7792c8175d1fc85e424b5ddf60baec551821))
-* README global node selector ([#504](https://github.com/kurtosis-tech/ethereum-package/issues/504)) ([f9343a2](https://github.com/kurtosis-tech/ethereum-package/commit/f9343a2914456196e1209336c426b6ad44958428))
-* use the cl as the default validator image if none are defined ([#503](https://github.com/kurtosis-tech/ethereum-package/issues/503)) ([181dd04](https://github.com/kurtosis-tech/ethereum-package/commit/181dd04c2db17c58cb9370b0d24e12e4c191a13d))
-
-
-### Code Refactoring
-
-* participant_network & rename participant fields. ([#508](https://github.com/kurtosis-tech/ethereum-package/issues/508)) ([fab341b](https://github.com/kurtosis-tech/ethereum-package/commit/fab341b158329b9e8c2b590dc63127dfd1d2495f))
-
-## [1.4.0](https://github.com/kurtosis-tech/ethereum-package/compare/1.3.0...1.4.0) (2024-02-09)
-
-
-### Features
-
-* Add suave-enabled geth support ([#489](https://github.com/kurtosis-tech/ethereum-package/issues/489)) ([631eaf3](https://github.com/kurtosis-tech/ethereum-package/commit/631eaf3e621c90d5b546a1c005d8e31e06263aa4))
-* add support for custom assertoor images & use assertoor image with verkle support for verkle chains ([#483](https://github.com/kurtosis-tech/ethereum-package/issues/483)) ([2d8a143](https://github.com/kurtosis-tech/ethereum-package/commit/2d8a143f753eaa3ec13abe4ebbb57bf82548b3fb))
-* add verkle-gen-devnet-3 ([#487](https://github.com/kurtosis-tech/ethereum-package/issues/487)) ([1e543e8](https://github.com/kurtosis-tech/ethereum-package/commit/1e543e873c06e86a6448f8e88c53fb1bde35338e))
-* blockscout support with sc verification ([#481](https://github.com/kurtosis-tech/ethereum-package/issues/481)) ([b3418cf](https://github.com/kurtosis-tech/ethereum-package/commit/b3418cf1545378d4b412966b9c33f650141aec04))
-* enable custom resource limit per network ([#471](https://github.com/kurtosis-tech/ethereum-package/issues/471)) ([5db6611](https://github.com/kurtosis-tech/ethereum-package/commit/5db6611ab831a92212a21859b42a911cd12bce0c))
-* enable shadowforking ([#475](https://github.com/kurtosis-tech/ethereum-package/issues/475)) ([b788b18](https://github.com/kurtosis-tech/ethereum-package/commit/b788b18eead00622ab960a4853c8e24b09c16a26))
-* improve built-in assertoor tests ([#488](https://github.com/kurtosis-tech/ethereum-package/issues/488)) ([d596699](https://github.com/kurtosis-tech/ethereum-package/commit/d5966991653ad48094cf71d3c01612349a651877))
-* we no longer need 4788 deployer ([#485](https://github.com/kurtosis-tech/ethereum-package/issues/485)) ([abdfc2c](https://github.com/kurtosis-tech/ethereum-package/commit/abdfc2c3e73550069c2fbe0df5202f7f227a00cd))
-
-
-### Bug Fixes
-
-* add more prefund addresses for verkle-gen ([#482](https://github.com/kurtosis-tech/ethereum-package/issues/482)) ([01868fc](https://github.com/kurtosis-tech/ethereum-package/commit/01868fcb604852cf66474fc9de9a53a7b87b7bc3))
-* bump verkle genesis generator ([#486](https://github.com/kurtosis-tech/ethereum-package/issues/486)) ([79dc5e1](https://github.com/kurtosis-tech/ethereum-package/commit/79dc5e19713d3f898f6255394290497d016f32d5))
-* use latest stable image for assertoor ([#484](https://github.com/kurtosis-tech/ethereum-package/issues/484)) ([bbe0b16](https://github.com/kurtosis-tech/ethereum-package/commit/bbe0b16e948fc50f51273e2f0ab91503603e9fc9))
-
-## [1.3.0](https://github.com/kurtosis-tech/ethereum-package/compare/1.2.0...1.3.0) (2024-01-22)
-
-
-### Features
-
-* add assertoor to additional toolings ([#419](https://github.com/kurtosis-tech/ethereum-package/issues/419)) ([76dde3e](https://github.com/kurtosis-tech/ethereum-package/commit/76dde3ed421da0d7f8ba16f46565b07019be76c0))
-* add devnets support ([#384](https://github.com/kurtosis-tech/ethereum-package/issues/384)) ([2bae099](https://github.com/kurtosis-tech/ethereum-package/commit/2bae09931ed1cdcfe499efaae420c981dabcea62))
-* add pitfalls for persistent storage as a warning ([#441](https://github.com/kurtosis-tech/ethereum-package/issues/441)) ([69da8f0](https://github.com/kurtosis-tech/ethereum-package/commit/69da8f04fcfd5ce19365bd89ca73c13cbc40d76a))
-* add support for testnets ([#437](https://github.com/kurtosis-tech/ethereum-package/issues/437)) ([5584cc8](https://github.com/kurtosis-tech/ethereum-package/commit/5584cc84c50ca9845c544810fb8331ec8fcdcbc8))
-* Add Xatu Sentry ([#466](https://github.com/kurtosis-tech/ethereum-package/issues/466)) ([b9523cb](https://github.com/kurtosis-tech/ethereum-package/commit/b9523cb7083be78c96bb88a7ca86d142cb0eec1d))
-* enable checkpoint sync for devnets ([#448](https://github.com/kurtosis-tech/ethereum-package/issues/448)) ([b367cfe](https://github.com/kurtosis-tech/ethereum-package/commit/b367cfe875900bdc8aa70dc8b1d8aebdbcf81593))
-* enable persistence ([#422](https://github.com/kurtosis-tech/ethereum-package/issues/422)) ([8d40056](https://github.com/kurtosis-tech/ethereum-package/commit/8d400566aa54132dccaa7ff129adc12e547907a0))
-* enable syncing ephemery ([#459](https://github.com/kurtosis-tech/ethereum-package/issues/459)) ([f8289cb](https://github.com/kurtosis-tech/ethereum-package/commit/f8289cb49f68dd488635d2313c007ee7c2f4dbf3))
-* enable syncing shadowforks ([#457](https://github.com/kurtosis-tech/ethereum-package/issues/457)) ([313a586](https://github.com/kurtosis-tech/ethereum-package/commit/313a586965efa6739e8d4055f1263a89d48ff499))
-
-
-### Bug Fixes
-
-* add CL genesis delay to final genesis time ([#469](https://github.com/kurtosis-tech/ethereum-package/issues/469)) ([e36027b](https://github.com/kurtosis-tech/ethereum-package/commit/e36027b91de0ae8943012ffd6ba776142d2e2d78))
-* add prysm-multiarch upstream image ([#451](https://github.com/kurtosis-tech/ethereum-package/issues/451)) ([6feba23](https://github.com/kurtosis-tech/ethereum-package/commit/6feba237fbdfae021402ceeec89baa75df6d83d5))
-* added supprot for boot enr file ([#456](https://github.com/kurtosis-tech/ethereum-package/issues/456)) ([fd26e5c](https://github.com/kurtosis-tech/ethereum-package/commit/fd26e5c31609b48e1d6718f72d295a27a7d84a49))
-* bump max mem limit for nimbus on holesky ([#439](https://github.com/kurtosis-tech/ethereum-package/issues/439)) ([fb84787](https://github.com/kurtosis-tech/ethereum-package/commit/fb84787694faa86872828b92529f51e6c9ac7d44))
-* dora template fix ([#452](https://github.com/kurtosis-tech/ethereum-package/issues/452)) ([f9243ea](https://github.com/kurtosis-tech/ethereum-package/commit/f9243ea8cdec8a0145206831c9c043269c80e863))
-* enable ws for geth ([#446](https://github.com/kurtosis-tech/ethereum-package/issues/446)) ([d5bf451](https://github.com/kurtosis-tech/ethereum-package/commit/d5bf45150dc09432bb84b366d2deda8c6036afea))
-* erigon chain should be set to dev ([#447](https://github.com/kurtosis-tech/ethereum-package/issues/447)) ([1f40d84](https://github.com/kurtosis-tech/ethereum-package/commit/1f40d8402666310cad81066852110aa20627471b))
-* erigon command arg ([#454](https://github.com/kurtosis-tech/ethereum-package/issues/454)) ([5ae56a1](https://github.com/kurtosis-tech/ethereum-package/commit/5ae56a17773122827b074963dee40a43a00478ea))
-* fix typo ([#440](https://github.com/kurtosis-tech/ethereum-package/issues/440)) ([933a313](https://github.com/kurtosis-tech/ethereum-package/commit/933a3133bf9b1fe96ea3c537b26c3c8ced0a35e3))
-* guid fix for besu/teku/erigon/nimbus ([#443](https://github.com/kurtosis-tech/ethereum-package/issues/443)) ([2283464](https://github.com/kurtosis-tech/ethereum-package/commit/2283464b614b0ade4aa98fccd842e8e4b23e188a))
-* increase db size for geth ([#453](https://github.com/kurtosis-tech/ethereum-package/issues/453)) ([0c67998](https://github.com/kurtosis-tech/ethereum-package/commit/0c67998567a4ab60dd0355b734076ee47b988326))
-* logging bug ([#462](https://github.com/kurtosis-tech/ethereum-package/issues/462)) ([f6098a1](https://github.com/kurtosis-tech/ethereum-package/commit/f6098a1572923655426f25eab936b7a0b9fbc116))
-* parallel key generation ([#423](https://github.com/kurtosis-tech/ethereum-package/issues/423)) ([060fd8f](https://github.com/kurtosis-tech/ethereum-package/commit/060fd8fb3ed8e12be895a43912787313c1ad4a5f))
-* re-add networkid ([#464](https://github.com/kurtosis-tech/ethereum-package/issues/464)) ([4d96409](https://github.com/kurtosis-tech/ethereum-package/commit/4d96409cdbd1a367fc1e924cb9183eadce4eeae7))
-* typo ([#445](https://github.com/kurtosis-tech/ethereum-package/issues/445)) ([e61c58a](https://github.com/kurtosis-tech/ethereum-package/commit/e61c58a8c2944cbf2699bd75d25a2e63d8e0621c))
-* Update nethermind to expose host on 0.0.0.0 ([#467](https://github.com/kurtosis-tech/ethereum-package/issues/467)) ([0bd29dd](https://github.com/kurtosis-tech/ethereum-package/commit/0bd29dd7d61dae77b7820f79d46e8a52e74267c2))
-* use all enrs for nimbus via bootstrap file ([#450](https://github.com/kurtosis-tech/ethereum-package/issues/450)) ([bb5a0c1](https://github.com/kurtosis-tech/ethereum-package/commit/bb5a0c1b5b051b23b185cfd366a2dfed3f44d903))
-
-## [1.2.0](https://github.com/kurtosis-tech/ethereum-package/compare/1.1.0...1.2.0) (2024-01-03)
-
-
-### Features
-
-* add blobber ([#401](https://github.com/kurtosis-tech/ethereum-package/issues/401)) ([d2755b0](https://github.com/kurtosis-tech/ethereum-package/commit/d2755b011da5199273b9719395132f98c0c9d57d))
-* add files artifact uuid information to cl client context ([#418](https://github.com/kurtosis-tech/ethereum-package/issues/418)) ([806ef47](https://github.com/kurtosis-tech/ethereum-package/commit/806ef47aefc4e22f79b6a96ad941b72ac5d5c099))
-* add graffiti ([#408](https://github.com/kurtosis-tech/ethereum-package/issues/408)) ([21eae3b](https://github.com/kurtosis-tech/ethereum-package/commit/21eae3b58a607c3897943d692bbc62229eb534ca))
-* add nethermind verkle example file ([#379](https://github.com/kurtosis-tech/ethereum-package/issues/379)) ([244d1ee](https://github.com/kurtosis-tech/ethereum-package/commit/244d1ee981d64b10ae73ef302fefb854d1580d40))
-* add preregistered_validator_count network param field ([#426](https://github.com/kurtosis-tech/ethereum-package/issues/426)) ([d598018](https://github.com/kurtosis-tech/ethereum-package/commit/d598018afda5824cf6c365f23426a518ec83fe9a))
-* add prysm latency dashboard ([#397](https://github.com/kurtosis-tech/ethereum-package/issues/397)) ([83b5b4e](https://github.com/kurtosis-tech/ethereum-package/commit/83b5b4e93d3e8579ef66b18f97dca46b83fcb72c))
-* add resource requests/limits to most applications ([#396](https://github.com/kurtosis-tech/ethereum-package/issues/396)) ([c5728d9](https://github.com/kurtosis-tech/ethereum-package/commit/c5728d980f76be66bfb9ba3bbf275dbcaf5c5beb))
-* allow 0 genesis delay ([#383](https://github.com/kurtosis-tech/ethereum-package/issues/383)) ([11c2693](https://github.com/kurtosis-tech/ethereum-package/commit/11c26939c53a6db0d8816254f6b7ac535535e754))
-* enable teku split beacon <> validator setup ([#409](https://github.com/kurtosis-tech/ethereum-package/issues/409)) ([51f76bd](https://github.com/kurtosis-tech/ethereum-package/commit/51f76bd109036def06a5ad55cb72d9ab18a3b869))
-* make eth1 follow distance configurable ([#433](https://github.com/kurtosis-tech/ethereum-package/issues/433)) ([a40f7dc](https://github.com/kurtosis-tech/ethereum-package/commit/a40f7dc83a610d96aa61ded96bbfe689c467748a))
-* split nimbus CL-validator ([#404](https://github.com/kurtosis-tech/ethereum-package/issues/404)) ([cb33648](https://github.com/kurtosis-tech/ethereum-package/commit/cb33648d3df801bffac18a46ff84fec808956586))
-* update ethereum-genesis-generator images ([#385](https://github.com/kurtosis-tech/ethereum-package/issues/385)) ([8959fc8](https://github.com/kurtosis-tech/ethereum-package/commit/8959fc80786c04200aecabcbbd426e47ead24ae4))
-* use prometheus kurtosis package ([#399](https://github.com/kurtosis-tech/ethereum-package/issues/399)) ([c41a989](https://github.com/kurtosis-tech/ethereum-package/commit/c41a989e95f0c5bcb96987ef55fb673330132b6b))
-
-
-### Bug Fixes
-
-* ci was broken as it was using the wrong storage class for k3s ([#420](https://github.com/kurtosis-tech/ethereum-package/issues/420)) ([f957f85](https://github.com/kurtosis-tech/ethereum-package/commit/f957f8518b28c6fc3da0fd62f63d96517f717a9a))
-* enable debug namespace in prysm ([#405](https://github.com/kurtosis-tech/ethereum-package/issues/405)) ([31badc2](https://github.com/kurtosis-tech/ethereum-package/commit/31badc238688fb409fba533fe8a237097c3577f4))
-* ethereum-genesis-generator version for verkle genesis ([#395](https://github.com/kurtosis-tech/ethereum-package/issues/395)) ([d7c9b92](https://github.com/kurtosis-tech/ethereum-package/commit/d7c9b92f09c0c1f602f88cc604e63c0992eda182))
-* fixing too long graffitis ([#410](https://github.com/kurtosis-tech/ethereum-package/issues/410)) ([a18935f](https://github.com/kurtosis-tech/ethereum-package/commit/a18935f52a44efaf00c9fb0fa104433018afb0c3))
-* increase memory for blob spammer to prevent container from getting OOM killed ([#431](https://github.com/kurtosis-tech/ethereum-package/issues/431)) ([4d4fac0](https://github.com/kurtosis-tech/ethereum-package/commit/4d4fac0cc0e6fa58aa314ce301f0cfcc20026bef))
-* mev workflow ([#434](https://github.com/kurtosis-tech/ethereum-package/issues/434)) ([91794e9](https://github.com/kurtosis-tech/ethereum-package/commit/91794e9fe2b7b08d50ee137a6b647479b9190d37))
-* mev-boost naming scheme change ([#428](https://github.com/kurtosis-tech/ethereum-package/issues/428)) ([fce899b](https://github.com/kurtosis-tech/ethereum-package/commit/fce899bec2796a8b54f5a331721839a752e7040c))
-* peering issue between lighthouse-teku on k8s ([#382](https://github.com/kurtosis-tech/ethereum-package/issues/382)) ([97a070b](https://github.com/kurtosis-tech/ethereum-package/commit/97a070b662e153404498dccb5b045f6e2ed510b0))
-* peering issue with prysm and nimbus ([#416](https://github.com/kurtosis-tech/ethereum-package/issues/416)) ([132fc83](https://github.com/kurtosis-tech/ethereum-package/commit/132fc835ff8966ef671e1ecb61fc68765e81a16f))
-* rename package icon for package catalog compatability ([#413](https://github.com/kurtosis-tech/ethereum-package/issues/413)) ([f49185b](https://github.com/kurtosis-tech/ethereum-package/commit/f49185b2a15be84e0ea8dc821ed39622dde104cc))
-* roll out persistence for postgres on ethereum-package ([#421](https://github.com/kurtosis-tech/ethereum-package/issues/421)) ([ed3982b](https://github.com/kurtosis-tech/ethereum-package/commit/ed3982b5630c0bfdeb022f9853373d34e1f270cf))
-* set persistence to false for blobscan ([#398](https://github.com/kurtosis-tech/ethereum-package/issues/398)) ([3c06194](https://github.com/kurtosis-tech/ethereum-package/commit/3c06194ca60b82b37d7a216fd6325100ebe72b0b))
-* tx-spammer extra args ([#394](https://github.com/kurtosis-tech/ethereum-package/issues/394)) ([709b4ad](https://github.com/kurtosis-tech/ethereum-package/commit/709b4adc75e5c6bb7d6977edb43b9e5438f2bc7c))
-* Update README.md remove teku coming soon ([#414](https://github.com/kurtosis-tech/ethereum-package/issues/414)) ([5a1ce2e](https://github.com/kurtosis-tech/ethereum-package/commit/5a1ce2e123353692614688cc4fae304bfe0a51e4))
-* validator counting ([#425](https://github.com/kurtosis-tech/ethereum-package/issues/425)) ([698305a](https://github.com/kurtosis-tech/ethereum-package/commit/698305ad45f6ff4e200abe8a77c43b09120a5ed6))
-
-## [1.1.0](https://github.com/kurtosis-tech/ethereum-package/compare/1.0.0...1.1.0) (2023-11-30)
-
-
-### Features
-
-* Add adminer ([#295](https://github.com/kurtosis-tech/ethereum-package/issues/295)) ([99b5913](https://github.com/kurtosis-tech/ethereum-package/commit/99b5913bfbc2ea25716b593cafbaebc486bf3c88))
-* Add broadcaster ([#355](https://github.com/kurtosis-tech/ethereum-package/issues/355)) ([0f9c3aa](https://github.com/kurtosis-tech/ethereum-package/commit/0f9c3aad1f1360fa896dce75cb1b2c46e9872af1))
-* add custom label configuration option ([#375](https://github.com/kurtosis-tech/ethereum-package/issues/375)) ([82ec85e](https://github.com/kurtosis-tech/ethereum-package/commit/82ec85e84e8c0972217f43962674493195970866))
-* add custom labels ([#340](https://github.com/kurtosis-tech/ethereum-package/issues/340)) ([789ed8e](https://github.com/kurtosis-tech/ethereum-package/commit/789ed8e7f0a1a1512132732540a713dca17bbe56))
-* add dencun example, bump teku mem, update mev-relay postgres name ([#369](https://github.com/kurtosis-tech/ethereum-package/issues/369)) ([1097531](https://github.com/kurtosis-tech/ethereum-package/commit/10975312c4d5c74b9bb80b872f205374997fc33c))
-* Add Ethereum Metrics Exporter Dash ([#338](https://github.com/kurtosis-tech/ethereum-package/issues/338)) ([3ce9a78](https://github.com/kurtosis-tech/ethereum-package/commit/3ce9a780f50c4909b9fe64ccd6580432135e1c37))
-* Add initial support for Blobscan ([#363](https://github.com/kurtosis-tech/ethereum-package/issues/363)) ([837fb97](https://github.com/kurtosis-tech/ethereum-package/commit/837fb970bb65d12bbe31dfec011a7f323d520111))
-* add prometheus custom configuration for participants ([#354](https://github.com/kurtosis-tech/ethereum-package/issues/354)) ([e9bbc7d](https://github.com/kurtosis-tech/ethereum-package/commit/e9bbc7debf9db9c7f30271084b6276fcbe167d93))
-* added a gitpod badge ([#356](https://github.com/kurtosis-tech/ethereum-package/issues/356)) ([e273993](https://github.com/kurtosis-tech/ethereum-package/commit/e2739935d8ed3993d7152a8403a194ea628360a2))
-* Allow verkle to be at genesis or post genesis ([60a7529](https://github.com/kurtosis-tech/ethereum-package/commit/60a752932242d795e5c087094ca5e26f6f4029c4))
-* differentiate builder ec by suffixing it with '-builder' ([#347](https://github.com/kurtosis-tech/ethereum-package/issues/347)) ([c558cb2](https://github.com/kurtosis-tech/ethereum-package/commit/c558cb2eab25cc8c3718b1fda6759a0819e6f942))
-
-
-### Bug Fixes
-
-* add java opts for besu ([#346](https://github.com/kurtosis-tech/ethereum-package/issues/346)) ([8aa88e3](https://github.com/kurtosis-tech/ethereum-package/commit/8aa88e34212321b2a148fd26c0e5a0da0b1a5b3f))
-* blobscan lint error ([#374](https://github.com/kurtosis-tech/ethereum-package/issues/374)) ([32f862b](https://github.com/kurtosis-tech/ethereum-package/commit/32f862be000a547fba300be4be3f954835ac707f))
-* builder args incorrectly configured ([#343](https://github.com/kurtosis-tech/ethereum-package/issues/343)) ([66e73fb](https://github.com/kurtosis-tech/ethereum-package/commit/66e73fb9f20d8dcce17beb00bf25dafb1e4ada65))
-* network params setting invalid value for min/max configs ([#353](https://github.com/kurtosis-tech/ethereum-package/issues/353)) ([764b7dc](https://github.com/kurtosis-tech/ethereum-package/commit/764b7dc0577a8e8da9dac3519d18db51720f2b4b))
-* update validator reward address ([#350](https://github.com/kurtosis-tech/ethereum-package/issues/350)) ([57f82c0](https://github.com/kurtosis-tech/ethereum-package/commit/57f82c0432c9a77bfa12f78a14b2e0038228a99c))
-* Use unused accounts for mev flood ([#359](https://github.com/kurtosis-tech/ethereum-package/issues/359)) ([286654c](https://github.com/kurtosis-tech/ethereum-package/commit/286654c769b33c1d63d20bf31c1dd3a71f7a3f0d))
-
-## [1.0.0](https://github.com/kurtosis-tech/ethereum-package/compare/0.6.1...1.0.0) (2023-10-25)
-
-
-### ⚠ BREAKING CHANGES
-
-* merged genesis generation ([#288](https://github.com/kurtosis-tech/ethereum-package/issues/288))
-
-### Features
-
-* add "disable_peer_scoring" global flag ([#311](https://github.com/kurtosis-tech/ethereum-package/issues/311)) ([63f7ff3](https://github.com/kurtosis-tech/ethereum-package/commit/63f7ff3c396ab567caf3397822ea7c2d614baeb9)), closes [#304](https://github.com/kurtosis-tech/ethereum-package/issues/304)
-* add mock mev ci ([#310](https://github.com/kurtosis-tech/ethereum-package/issues/310)) ([d4bec9e](https://github.com/kurtosis-tech/ethereum-package/commit/d4bec9e7a723d1cdbbd37d63684b526a4f1f325b))
-* add trusted setup file to teku ([#325](https://github.com/kurtosis-tech/ethereum-package/issues/325)) ([605e155](https://github.com/kurtosis-tech/ethereum-package/commit/605e155ee5e5058cc159739ee673eff4b702bc52))
-* bump json-rpc-snooper ([#329](https://github.com/kurtosis-tech/ethereum-package/issues/329)) ([242a4cd](https://github.com/kurtosis-tech/ethereum-package/commit/242a4cdeded040eb50c9e259aacf9a58eee236ec))
-* json to yaml everything ([#332](https://github.com/kurtosis-tech/ethereum-package/issues/332)) ([c9669ae](https://github.com/kurtosis-tech/ethereum-package/commit/c9669ae83063a5dd9faf478f386582a2cac595ac))
-* merged genesis generation ([#288](https://github.com/kurtosis-tech/ethereum-package/issues/288)) ([743ba44](https://github.com/kurtosis-tech/ethereum-package/commit/743ba44d82e9433e6781e4965ef80bc83e962e25))
-* rework how keys are generated ([#301](https://github.com/kurtosis-tech/ethereum-package/issues/301)) ([59f15ca](https://github.com/kurtosis-tech/ethereum-package/commit/59f15cae142b778a676ee6a3f56d4c8e3a2ed1c0))
-* **tooling:** Add Ethereum Metrics Exporter ([#331](https://github.com/kurtosis-tech/ethereum-package/issues/331)) ([de5eee8](https://github.com/kurtosis-tech/ethereum-package/commit/de5eee82a7757b218a902e0bef36dae42e966b31))
-* use base image instead of pip install ([#322](https://github.com/kurtosis-tech/ethereum-package/issues/322)) ([18da90b](https://github.com/kurtosis-tech/ethereum-package/commit/18da90bd3f8b6471457e613edc1e17ff01d2ae0a))
-
-
-### Bug Fixes
-
-* add readme for mev-builder-cl-image ([#314](https://github.com/kurtosis-tech/ethereum-package/issues/314)) ([c46b6bf](https://github.com/kurtosis-tech/ethereum-package/commit/c46b6bf1e83fa567727675ef0644d7d3eefcb1f2))
-* formatting - missing jwt secret ([#312](https://github.com/kurtosis-tech/ethereum-package/issues/312)) ([728964c](https://github.com/kurtosis-tech/ethereum-package/commit/728964c7034c94dff6b2c4479e7a962d69bafc62))
-* genesis validators root had an extra new line ([#326](https://github.com/kurtosis-tech/ethereum-package/issues/326)) ([4fa4937](https://github.com/kurtosis-tech/ethereum-package/commit/4fa49375c0f0e96aaef011e0afd053c2975c3a69))
-* geth flags for verkle genesis ([#328](https://github.com/kurtosis-tech/ethereum-package/issues/328)) ([e721373](https://github.com/kurtosis-tech/ethereum-package/commit/e721373f93e8113802c47e815f3152af5974dc41))
-* path based storage - disable for older forks ([#336](https://github.com/kurtosis-tech/ethereum-package/issues/336)) ([76e3424](https://github.com/kurtosis-tech/ethereum-package/commit/76e34245dffcd6976d631d40cab813880b9a224a))
-* path based storage disable for elecra ([#316](https://github.com/kurtosis-tech/ethereum-package/issues/316)) ([86fa8ef](https://github.com/kurtosis-tech/ethereum-package/commit/86fa8efccd18236d0cbbfd7565f66883cc774fcc))
-* remove image name for ethereum-metrics-exporter ([#335](https://github.com/kurtosis-tech/ethereum-package/issues/335)) ([4bac042](https://github.com/kurtosis-tech/ethereum-package/commit/4bac04249f61a408f792d4eb65c6c1ea3b844f61))
-* remove path based storage when builder is used ([#327](https://github.com/kurtosis-tech/ethereum-package/issues/327)) ([d3cf3f4](https://github.com/kurtosis-tech/ethereum-package/commit/d3cf3f42ebe68b02cf28ad3d7c69c77e7c934af7))
-* revert the default deneb at epoch 4 ([#323](https://github.com/kurtosis-tech/ethereum-package/issues/323)) ([9342418](https://github.com/kurtosis-tech/ethereum-package/commit/9342418fc643fbf41a95db828ec5fcd3be4913cf))
-* take out the genesis versions as constants ([#324](https://github.com/kurtosis-tech/ethereum-package/issues/324)) ([a8afcef](https://github.com/kurtosis-tech/ethereum-package/commit/a8afcef6a8969ad2062c78f1b2d32e275697ea60))
-* wrong builder metrics flag ([#319](https://github.com/kurtosis-tech/ethereum-package/issues/319)) ([51a4422](https://github.com/kurtosis-tech/ethereum-package/commit/51a44228994e2c0088ffccb3c2cca60376087bff))
-* zero count validators and parallel keystore generation ([#302](https://github.com/kurtosis-tech/ethereum-package/issues/302)) ([18b141e](https://github.com/kurtosis-tech/ethereum-package/commit/18b141edf901b39c7ddc8cc60ba81b5185d4e15e))
-
-## [0.6.1](https://github.com/kurtosis-tech/ethereum-package/compare/0.6.0...0.6.1) (2023-10-17)
-
-
-### Bug Fixes
-
-* `get_transaction_count` does not count pending transactions ([#299](https://github.com/kurtosis-tech/ethereum-package/issues/299)) ([2c64de0](https://github.com/kurtosis-tech/ethereum-package/commit/2c64de058ff0b8b207b6f6908c2daa6c321f12c4))
-* big table spin up logic for k8s ([#298](https://github.com/kurtosis-tech/ethereum-package/issues/298)) ([e01ce16](https://github.com/kurtosis-tech/ethereum-package/commit/e01ce1602addba1eb132ebbe0c03439fdf060f58))
-
-## [0.6.0](https://github.com/kurtosis-tech/ethereum-package/compare/0.5.1...0.6.0) (2023-10-17)
-
-
-### Features
-
-* Add builder metrics to default mev builder ([#277](https://github.com/kurtosis-tech/ethereum-package/issues/277)) ([d0eff2e](https://github.com/kurtosis-tech/ethereum-package/commit/d0eff2e9dd39411e71e1d36f9d0e66041ff33c0a))
-* Add configurable spamming frequency to custom flood ([#283](https://github.com/kurtosis-tech/ethereum-package/issues/283)) ([f1e18ca](https://github.com/kurtosis-tech/ethereum-package/commit/f1e18ca7440ff9494b9a6bf6c20aa97a695d6084))
-* add full beacon chain explorer ([#253](https://github.com/kurtosis-tech/ethereum-package/issues/253)) ([1eddda5](https://github.com/kurtosis-tech/ethereum-package/commit/1eddda5e61ecb86687ca2eae8d691a58cdafbd45))
-* add inputs for additional grafana dashboards ([#279](https://github.com/kurtosis-tech/ethereum-package/issues/279)) ([ad02c43](https://github.com/kurtosis-tech/ethereum-package/commit/ad02c43c661de9151e541852520fd9f8e68fd0d1))
-* added another blob spamming tool (`goomy_blob`) ([#268](https://github.com/kurtosis-tech/ethereum-package/issues/268)) ([3f2c797](https://github.com/kurtosis-tech/ethereum-package/commit/3f2c797900cf1bfbef9b3dcac35b204e3a258b69))
-* Adding 4788 deployment ([#275](https://github.com/kurtosis-tech/ethereum-package/issues/275)) ([1c7de29](https://github.com/kurtosis-tech/ethereum-package/commit/1c7de293e44822aff2f26267285512c22d5f139c))
-* return participants, timestamp of genesis and validator root for consumers ([#262](https://github.com/kurtosis-tech/ethereum-package/issues/262)) ([3f2ea88](https://github.com/kurtosis-tech/ethereum-package/commit/3f2ea88bb4792ececf7f723c72bce704effc016b))
-* update ethereum-genesis-generator ([#260](https://github.com/kurtosis-tech/ethereum-package/issues/260)) ([a5b939c](https://github.com/kurtosis-tech/ethereum-package/commit/a5b939caa171f8cb7ab3979939f114a8b6398db7))
-
-
-### Bug Fixes
-
-* Add disable peer scoring ([#247](https://github.com/kurtosis-tech/ethereum-package/issues/247)) ([c75af3c](https://github.com/kurtosis-tech/ethereum-package/commit/c75af3cf3215d3aac3eb2d11eafdf9f3c7729512))
-* editor config used tabs still ([#274](https://github.com/kurtosis-tech/ethereum-package/issues/274)) ([7bbba4c](https://github.com/kurtosis-tech/ethereum-package/commit/7bbba4c2b77abbc27efcb2a9af352af6cc932f9b))
-* enable trace http-api for reth ([#251](https://github.com/kurtosis-tech/ethereum-package/issues/251)) ([ba47763](https://github.com/kurtosis-tech/ethereum-package/commit/ba4776365fca21c0a3a0e841834d7379443b76be))
-* explicitly set persist to false ([#296](https://github.com/kurtosis-tech/ethereum-package/issues/296)) ([37d8ccd](https://github.com/kurtosis-tech/ethereum-package/commit/37d8ccd86da44bc2e8fd60150c36068d36c2cb8b))
-* fix dora image ([#270](https://github.com/kurtosis-tech/ethereum-package/issues/270)) ([19fe54a](https://github.com/kurtosis-tech/ethereum-package/commit/19fe54a7ee5b9ced651c8f867c5b38b5ea529d8b))
-* fix the tx_fuzzer params ([#278](https://github.com/kurtosis-tech/ethereum-package/issues/278)) ([b0ee145](https://github.com/kurtosis-tech/ethereum-package/commit/b0ee145e94bc1b02a4dde48f198ab97357fd1ce9))
-* get rid of explorer type ([#280](https://github.com/kurtosis-tech/ethereum-package/issues/280)) ([f5595f4](https://github.com/kurtosis-tech/ethereum-package/commit/f5595f4cbb4307a0b14e9bf379a1823c40d7e170))
-* Pass all beacons to the relay ([#226](https://github.com/kurtosis-tech/ethereum-package/issues/226)) ([b4fde3d](https://github.com/kurtosis-tech/ethereum-package/commit/b4fde3d064e498a14410f776a76d23af97fd4f0f))
-* re run custom flood whenever it crashes ([#264](https://github.com/kurtosis-tech/ethereum-package/issues/264)) ([fab3995](https://github.com/kurtosis-tech/ethereum-package/commit/fab39957b28dbd9731cc15ec2fde242d7d71f5e3)), closes [#245](https://github.com/kurtosis-tech/ethereum-package/issues/245)
-* readme deadlink ([#269](https://github.com/kurtosis-tech/ethereum-package/issues/269)) ([f380cc4](https://github.com/kurtosis-tech/ethereum-package/commit/f380cc4c70e6c5a4f7d5fd0a755231eaf232a31b))
-* remove engine from http-api list for reth ([#249](https://github.com/kurtosis-tech/ethereum-package/issues/249)) ([b3114d1](https://github.com/kurtosis-tech/ethereum-package/commit/b3114d130f8a551853aac9774d864e8b7d36775a))
-* return data about pariticpants even if no additional services are launched ([#273](https://github.com/kurtosis-tech/ethereum-package/issues/273)) ([d29f98e](https://github.com/kurtosis-tech/ethereum-package/commit/d29f98e580afeca3a5d6d305f607d6f297606b9b))
-* set MEV image to 0.26.0 and complain if capella is zero with MEV set to full ([#261](https://github.com/kurtosis-tech/ethereum-package/issues/261)) ([9dfc4de](https://github.com/kurtosis-tech/ethereum-package/commit/9dfc4de19045ee2fd5be4eac31c341921d984e3d))
-* use 0.27 as the mev boost image ([839af19](https://github.com/kurtosis-tech/ethereum-package/commit/839af1986480dec245b03e91a927d693526cd1a1))
-* use ethpandaops/erigon as its multiarch ([839af19](https://github.com/kurtosis-tech/ethereum-package/commit/839af1986480dec245b03e91a927d693526cd1a1))
-
-## [0.5.1](https://github.com/kurtosis-tech/ethereum-package/compare/0.5.0...0.5.1) (2023-09-28)
-
-
-### Bug Fixes
-
-* enable all apis for reth ([#241](https://github.com/kurtosis-tech/ethereum-package/issues/241)) ([db92f7b](https://github.com/kurtosis-tech/ethereum-package/commit/db92f7b01be1dd05c65eb88463dee76f2261f42f))
-* rename light-beaconchain-explorer to dora-the-explorer & change db location ([#243](https://github.com/kurtosis-tech/ethereum-package/issues/243)) ([d3a4b49](https://github.com/kurtosis-tech/ethereum-package/commit/d3a4b495873eeb25647a113f3cd39ab42029faf8))
-
-## [0.5.0](https://github.com/kurtosis-tech/ethereum-package/compare/0.4.0...0.5.0) (2023-09-28)
-
-
-### ⚠ BREAKING CHANGES
-
-* rename the package to ethereum-package ([#234](https://github.com/kurtosis-tech/ethereum-package/issues/234))
-
-### Features
-
-* add generic prometheus endpoints ([#209](https://github.com/kurtosis-tech/ethereum-package/issues/209)) ([d04e85f](https://github.com/kurtosis-tech/ethereum-package/commit/d04e85f4ce6b82b989a07087cf20fdd4c984573b))
-
-
-### Bug Fixes
-
-* add an MIT licence ([#246](https://github.com/kurtosis-tech/ethereum-package/issues/246)) ([f632ff1](https://github.com/kurtosis-tech/ethereum-package/commit/f632ff14cacf6aab9aab6ab29ef94b4b87848f90))
-* make nimbus work with mev components ([#244](https://github.com/kurtosis-tech/ethereum-package/issues/244)) ([5c64ed5](https://github.com/kurtosis-tech/ethereum-package/commit/5c64ed5efcc064799d5c6154d3e7e9ca2d6343ef))
-
-
-### Code Refactoring
-
-* rename the package to ethereum-package ([#234](https://github.com/kurtosis-tech/ethereum-package/issues/234)) ([23e4d5e](https://github.com/kurtosis-tech/ethereum-package/commit/23e4d5ecdc24ef9a463cbe4a58ded162f79d0d1f))
-
-## [0.4.0](https://github.com/kurtosis-tech/ethereum-package/compare/0.3.1...0.4.0) (2023-09-27)
-
-
-### ⚠ BREAKING CHANGES
-
-* merge eth-network-package onto ethereum-package ([#228](https://github.com/kurtosis-tech/ethereum-package/issues/228))
-
-### Code Refactoring
-
-* merge eth-network-package onto ethereum-package ([#228](https://github.com/kurtosis-tech/ethereum-package/issues/228)) ([b72dad3](https://github.com/kurtosis-tech/ethereum-package/commit/b72dad35ac0991a6a33e8720aaa5c9455d34752b))
-
-## [0.3.1](https://github.com/kurtosis-tech/ethereum-package/compare/0.3.0...0.3.1) (2023-09-26)
-
-
-### Features
-
-* add blobspammer ([f166d71](https://github.com/kurtosis-tech/ethereum-package/commit/f166d714ac7f708f533ab3006b051da0859017a3))
-* add blobspammer ([#165](https://github.com/kurtosis-tech/ethereum-package/issues/165)) ([f166d71](https://github.com/kurtosis-tech/ethereum-package/commit/f166d714ac7f708f533ab3006b051da0859017a3))
-* add support for electra ([#176](https://github.com/kurtosis-tech/ethereum-package/issues/176)) ([fbe6c00](https://github.com/kurtosis-tech/ethereum-package/commit/fbe6c004e5a9e47e4e819eddea7d2b424a555634))
-* Add Tx_spamer_params and move MEV to the bottom of main.star ([#208](https://github.com/kurtosis-tech/ethereum-package/issues/208)) ([23628b2](https://github.com/kurtosis-tech/ethereum-package/commit/23628b27a8d571df1c90c5cbe84455c7382e091c))
-* added a reliable flooder ([#186](https://github.com/kurtosis-tech/ethereum-package/issues/186)) ([8146ab7](https://github.com/kurtosis-tech/ethereum-package/commit/8146ab7b7d90817ca93a1ed2569a57aa64903231))
-* all_el_metrics ([#195](https://github.com/kurtosis-tech/ethereum-package/issues/195)) ([3bbcca7](https://github.com/kurtosis-tech/ethereum-package/commit/3bbcca70346d6e1f67bec2023543404df832ffa6))
-* Allow selection of additional services ([#220](https://github.com/kurtosis-tech/ethereum-package/issues/220)) ([57b15fe](https://github.com/kurtosis-tech/ethereum-package/commit/57b15fe49479e0aaada3379782f4e668b3bfdf71))
-* Make args optional ([#190](https://github.com/kurtosis-tech/ethereum-package/issues/190)) ([a3ad030](https://github.com/kurtosis-tech/ethereum-package/commit/a3ad030810b2c0d3be02b52d6d6c4ccb17c1e5c0))
-* pass slots per epoch to mev-boost-relay ([#188](https://github.com/kurtosis-tech/ethereum-package/issues/188)) ([14acb6f](https://github.com/kurtosis-tech/ethereum-package/commit/14acb6f94b9a43508e40ce61cb198f6c59425dc5))
-
-
-### Bug Fixes
-
-* bring back wait for capella fork epoch ([#212](https://github.com/kurtosis-tech/ethereum-package/issues/212)) ([c7cce7e](https://github.com/kurtosis-tech/ethereum-package/commit/c7cce7ea39c4030ded65400a75b75ca7389fe2cc))
-* bug with participant counts that lead to more than needed participants ([#221](https://github.com/kurtosis-tech/ethereum-package/issues/221)) ([7b93f1c](https://github.com/kurtosis-tech/ethereum-package/commit/7b93f1ceb2d4f1311efd5fc6691c1ad95623ab83))
-* dont wait for epoch 1 and launch MEV before tx-fuzz ([#210](https://github.com/kurtosis-tech/ethereum-package/issues/210)) ([8b883af](https://github.com/kurtosis-tech/ethereum-package/commit/8b883aff7811a2f36a36531be1c047d087c0ac93))
-* fail capella fork epoch ([#196](https://github.com/kurtosis-tech/ethereum-package/issues/196)) ([ebff2d0](https://github.com/kurtosis-tech/ethereum-package/commit/ebff2d0b85a3da08725d88a5c4ce284cf28ef79b))
-* fix mismatch between validator_count & metrics gazer ([#223](https://github.com/kurtosis-tech/ethereum-package/issues/223)) ([5dd4f9b](https://github.com/kurtosis-tech/ethereum-package/commit/5dd4f9b352a571775684b30fe6fd530512fa943b))
-* Improve MEV setup to use less containers for non_validator nodes ([#224](https://github.com/kurtosis-tech/ethereum-package/issues/224)) ([bd176f0](https://github.com/kurtosis-tech/ethereum-package/commit/bd176f08941300c98740adc82a0cf0f03694c569))
-* Kevin/postgres package upgrade ([#179](https://github.com/kurtosis-tech/ethereum-package/issues/179)) ([1bcc623](https://github.com/kurtosis-tech/ethereum-package/commit/1bcc623f6e2a260751869b3b519b759bf510a994))
-* Kevin/unpin redis version ([#182](https://github.com/kurtosis-tech/ethereum-package/issues/182)) ([4eb7127](https://github.com/kurtosis-tech/ethereum-package/commit/4eb7127816098a4615f061e0203b7e162d4b3a75))
-* lodestar flag ([#217](https://github.com/kurtosis-tech/ethereum-package/issues/217)) ([5f1e0f2](https://github.com/kurtosis-tech/ethereum-package/commit/5f1e0f2943a006426b638c0699ddd58c47cc57c0))
-* mev should work with the validator count change ([#225](https://github.com/kurtosis-tech/ethereum-package/issues/225)) ([37dccce](https://github.com/kurtosis-tech/ethereum-package/commit/37dccce1c1a1760b1ecac9264985a844f0db46a6))
-* mev-boost creation by making it depend on actual participant count ([#191](https://github.com/kurtosis-tech/ethereum-package/issues/191)) ([7606cff](https://github.com/kurtosis-tech/ethereum-package/commit/7606cffafc054153dc4ad43d925dad7cfa4a9984))
-* Mock builder updates ([#193](https://github.com/kurtosis-tech/ethereum-package/issues/193)) ([6cc3697](https://github.com/kurtosis-tech/ethereum-package/commit/6cc369703f821da788d49c9418e1b4008796ce95))
-* parse input ([#205](https://github.com/kurtosis-tech/ethereum-package/issues/205)) ([a787b38](https://github.com/kurtosis-tech/ethereum-package/commit/a787b38d8c8e61008244818581bf5d9a3103bd33))
-* pass through env var now for builder_signing_tx_key ([#207](https://github.com/kurtosis-tech/ethereum-package/issues/207)) ([a63f2fd](https://github.com/kurtosis-tech/ethereum-package/commit/a63f2fd78613607dd4be195eb002fa9af3c6a894))
-* Pin Redis version in prep for package catalog version upgrade ([#180](https://github.com/kurtosis-tech/ethereum-package/issues/180)) ([09b235a](https://github.com/kurtosis-tech/ethereum-package/commit/09b235a37f62c2fd6f99dd466a9918d7d468831d))
-* remove hardcoding of addresses in MEV flood ([#184](https://github.com/kurtosis-tech/ethereum-package/issues/184)) ([21b0975](https://github.com/kurtosis-tech/ethereum-package/commit/21b0975f20a955354482092f5f04fcb4a85114b0))
-* replace plan.assert with plan.verify ([#202](https://github.com/kurtosis-tech/ethereum-package/issues/202)) ([073135d](https://github.com/kurtosis-tech/ethereum-package/commit/073135ddc8ab5fb912b20bae96ec2ec72c3ac2f4))
-* start boost immediately after relay starts running ([#213](https://github.com/kurtosis-tech/ethereum-package/issues/213)) ([b6ce1e9](https://github.com/kurtosis-tech/ethereum-package/commit/b6ce1e9132ded99c1398353fa4324bbf9fb6e78c))
-* update readme for MEV params ([#189](https://github.com/kurtosis-tech/ethereum-package/issues/189)) ([c1bf13e](https://github.com/kurtosis-tech/ethereum-package/commit/c1bf13ee737f3437d0aca7cf3bfd9753e2f31d43))
-* use 4th private key (index 3) for tx fuzz like before ([#215](https://github.com/kurtosis-tech/ethereum-package/issues/215)) ([1752ed0](https://github.com/kurtosis-tech/ethereum-package/commit/1752ed0a9861c0a2f7fb313dbe44a800e419b6bc))
-* use the third address instead of coinbase for tx-fuzz ([#185](https://github.com/kurtosis-tech/ethereum-package/issues/185)) ([3b2993c](https://github.com/kurtosis-tech/ethereum-package/commit/3b2993c050172dec63c26d9b53c53fc7a77ad079))
-
-## [0.3.0](https://github.com/kurtosis-tech/ethereum-package/compare/0.2.0...0.3.0) (2023-09-03)
-
-
-### ⚠ BREAKING CHANGES
-
-* Uses the `plan` object. Users will have to update their Kurtosis CLI to >= 0.63.0 and restart the engine
-
-### Features
-
-* add beacon-metrics-gazer + beacon-metrics-gazer grafana dashboard ([#114](https://github.com/kurtosis-tech/ethereum-package/issues/114)) ([5540587](https://github.com/kurtosis-tech/ethereum-package/commit/55405874ee50826b65dc2a5664e2b8bf9d7f668b))
-* add deneb support ([#96](https://github.com/kurtosis-tech/ethereum-package/issues/96)) ([07ed500](https://github.com/kurtosis-tech/ethereum-package/commit/07ed500890ab01b6bed04cdacc19b9373e6a4b6a))
-* add ethereumjs to nightly runners ([b86d886](https://github.com/kurtosis-tech/ethereum-package/commit/b86d886197ddad2d0ea78efac7e11109838b5dd9))
-* add ethereumjs to nightly runners ([#154](https://github.com/kurtosis-tech/ethereum-package/issues/154)) ([b86d886](https://github.com/kurtosis-tech/ethereum-package/commit/b86d886197ddad2d0ea78efac7e11109838b5dd9))
-* add forkmon ([#107](https://github.com/kurtosis-tech/ethereum-package/issues/107)) ([2a8ad19](https://github.com/kurtosis-tech/ethereum-package/commit/2a8ad19e8ad9c4202bd6dc9dff28eb3ea2cf08f2))
-* add light-beaconchain-explorer ([83e01a1](https://github.com/kurtosis-tech/ethereum-package/commit/83e01a114a3bad970ebecc2ae10bc863e14cdb3a))
-* add light-beaconchain-explorer ([#125](https://github.com/kurtosis-tech/ethereum-package/issues/125)) ([83e01a1](https://github.com/kurtosis-tech/ethereum-package/commit/83e01a114a3bad970ebecc2ae10bc863e14cdb3a))
-* add multiple endpoint support for lightbeaconchain expolorer ([#151](https://github.com/kurtosis-tech/ethereum-package/issues/151)) ([68572cd](https://github.com/kurtosis-tech/ethereum-package/commit/68572cdddb1e2074892f148b69e603a2ee06edb8))
-* counting by summing each participant ([f9b638b](https://github.com/kurtosis-tech/ethereum-package/commit/f9b638bc1c26be34fd3dd0ad6e4d59ee4ecd66c3))
-* counting by summing each participant ([#112](https://github.com/kurtosis-tech/ethereum-package/issues/112)) ([f9b638b](https://github.com/kurtosis-tech/ethereum-package/commit/f9b638bc1c26be34fd3dd0ad6e4d59ee4ecd66c3))
-* disable login for grafana ([4d7df4b](https://github.com/kurtosis-tech/ethereum-package/commit/4d7df4be895b950119d1e5fabe0e4ae3cc0c822e))
-* disable login for grafana ([#122](https://github.com/kurtosis-tech/ethereum-package/issues/122)) ([4d7df4b](https://github.com/kurtosis-tech/ethereum-package/commit/4d7df4be895b950119d1e5fabe0e4ae3cc0c822e))
-* **formatting:** Add editorconfig, move everything to using tabs (4) ([#106](https://github.com/kurtosis-tech/ethereum-package/issues/106)) ([cb0fc69](https://github.com/kurtosis-tech/ethereum-package/commit/cb0fc695cce7a64386349193ef3cd3ebf692f18d))
-* launch the mock mev builder ([#94](https://github.com/kurtosis-tech/ethereum-package/issues/94)) ([7fcd3e2](https://github.com/kurtosis-tech/ethereum-package/commit/7fcd3e24aa1d1c23afa0c37ba3c939c204720d31))
-* make it possible to have capella on epoch 0 or non 0 ([#108](https://github.com/kurtosis-tech/ethereum-package/issues/108)) ([1133497](https://github.com/kurtosis-tech/ethereum-package/commit/1133497b18c6fa46f2b6483c9b2eea27bc272868))
-* make mev more configurable ([#164](https://github.com/kurtosis-tech/ethereum-package/issues/164)) ([0165ef1](https://github.com/kurtosis-tech/ethereum-package/commit/0165ef1a67a77dfca2030c1b36ed12d00ae48d18))
-* parameterize mev_boost and mev_builder images ([#171](https://github.com/kurtosis-tech/ethereum-package/issues/171)) ([28adec1](https://github.com/kurtosis-tech/ethereum-package/commit/28adec114779e0b5946705038cb19c859c430242))
-* snooper support ([#121](https://github.com/kurtosis-tech/ethereum-package/issues/121)) ([d2cccf4](https://github.com/kurtosis-tech/ethereum-package/commit/d2cccf4af8873a912cc4389f8db75ce4e11e2e44))
-* support full MEV ([#115](https://github.com/kurtosis-tech/ethereum-package/issues/115)) ([e9e8c41](https://github.com/kurtosis-tech/ethereum-package/commit/e9e8c418c4a7a9ff099b4514430f8235f4ad1331))
-* use eth-network-package to spin up participant network ([#90](https://github.com/kurtosis-tech/ethereum-package/issues/90)) ([91029ac](https://github.com/kurtosis-tech/ethereum-package/commit/91029acfb7867c134baac3aaf758eb06f67fe997))
-
-
-### Bug Fixes
-
-* a bug around participants ([#129](https://github.com/kurtosis-tech/ethereum-package/issues/129)) ([9382767](https://github.com/kurtosis-tech/ethereum-package/commit/9382767f88690817de189a3551c37325389faf98))
-* delay deneb to 500 epoch ([#102](https://github.com/kurtosis-tech/ethereum-package/issues/102)) ([d07270b](https://github.com/kurtosis-tech/ethereum-package/commit/d07270bc9802fe2adc44d70e6e8e9c274958eacb))
-* dont spin up extra el/cl client for mock-mev ([#158](https://github.com/kurtosis-tech/ethereum-package/issues/158)) ([46d67fc](https://github.com/kurtosis-tech/ethereum-package/commit/46d67fc5878a01984623c8f3ac9f667d1fb891f2))
-* fix an arg parsing bug ([#135](https://github.com/kurtosis-tech/ethereum-package/issues/135)) ([f084e7c](https://github.com/kurtosis-tech/ethereum-package/commit/f084e7c72738b7afd71d9a1a05f6fba4c388a5de))
-* fix passed argument parsing ([#85](https://github.com/kurtosis-tech/ethereum-package/issues/85)) ([a5d40e9](https://github.com/kurtosis-tech/ethereum-package/commit/a5d40e9bd178ff7ade06f22818475d01546f861a))
-* fixed teku validator params for MEV ([#149](https://github.com/kurtosis-tech/ethereum-package/issues/149)) ([b0079cf](https://github.com/kurtosis-tech/ethereum-package/commit/b0079cff08b7c5812e97151ba56a0929593516ba))
-* fixing nimbus payload url ([#155](https://github.com/kurtosis-tech/ethereum-package/issues/155)) ([55c1f59](https://github.com/kurtosis-tech/ethereum-package/commit/55c1f59404872c26315844995cbea6a4286b1cb2))
-* geth failing after ethash package removal ([#93](https://github.com/kurtosis-tech/ethereum-package/issues/93)) ([41e3d2c](https://github.com/kurtosis-tech/ethereum-package/commit/41e3d2cd292dd19b805e5c93f3d65ec0ba063104)), closes [#91](https://github.com/kurtosis-tech/ethereum-package/issues/91)
-* make besu a bootnode ([29296cd](https://github.com/kurtosis-tech/ethereum-package/commit/29296cd1c78615743d32f68ca50fb51121c5921c))
-* make besu a bootnode ([#146](https://github.com/kurtosis-tech/ethereum-package/issues/146)) ([29296cd](https://github.com/kurtosis-tech/ethereum-package/commit/29296cd1c78615743d32f68ca50fb51121c5921c))
-* make this work with kurtosis 0.65.0 ([#73](https://github.com/kurtosis-tech/ethereum-package/issues/73)) ([13c72ec](https://github.com/kurtosis-tech/ethereum-package/commit/13c72ec56e4da79c6a9bd6802a0995c6b00d0a0a))
-* mention reth in package readme ([#133](https://github.com/kurtosis-tech/ethereum-package/issues/133)) ([d11a689](https://github.com/kurtosis-tech/ethereum-package/commit/d11a6898b9f7377a5e8c50ccd3859ec5eed0e556))
-* move parallel keystore generation to global config ([0789eed](https://github.com/kurtosis-tech/ethereum-package/commit/0789eedb1f77c418944a2cc7047edd95256d983d))
-* move parallel keystore generation to global config ([#130](https://github.com/kurtosis-tech/ethereum-package/issues/130)) ([0789eed](https://github.com/kurtosis-tech/ethereum-package/commit/0789eedb1f77c418944a2cc7047edd95256d983d))
-* nightly tests that rely on etherejums get the right image ([#159](https://github.com/kurtosis-tech/ethereum-package/issues/159)) ([97b4d33](https://github.com/kurtosis-tech/ethereum-package/commit/97b4d33aa4c236e9615df7f3c62e6221a056385f))
-* Nimbus can't run when slot time is below 12s ([#100](https://github.com/kurtosis-tech/ethereum-package/issues/100)) ([c38bff9](https://github.com/kurtosis-tech/ethereum-package/commit/c38bff9f5d6d49f57c1a66c84828f8bad9c550cc))
-* pass right mev-boost url to teku ([#147](https://github.com/kurtosis-tech/ethereum-package/issues/147)) ([8bb75d9](https://github.com/kurtosis-tech/ethereum-package/commit/8bb75d91b9a45a5a2fc7e64118d5913ffef138f4))
-* pin postgres package ([#174](https://github.com/kurtosis-tech/ethereum-package/issues/174)) ([6b8d9d3](https://github.com/kurtosis-tech/ethereum-package/commit/6b8d9d39fd06d1dc01d4f3cbbc6c20f9f962bb6a))
-* Remove nethermind restriction ([#126](https://github.com/kurtosis-tech/ethereum-package/issues/126)) ([373c6c9](https://github.com/kurtosis-tech/ethereum-package/commit/373c6c9b45ac4fc9bee930bc5430921cd3a16a1f))
-* Switch default images to latest ([#99](https://github.com/kurtosis-tech/ethereum-package/issues/99)) ([4a85c9d](https://github.com/kurtosis-tech/ethereum-package/commit/4a85c9dccb0e5cbd809ed7047b78e7190d466a91))
-* Update enclave name flag ([#87](https://github.com/kurtosis-tech/ethereum-package/issues/87)) ([6531a7a](https://github.com/kurtosis-tech/ethereum-package/commit/6531a7af37faa2d227a2a53739ca7ae0cd4aed9e))
-* update genesis generator to support netherminds new format ([#68](https://github.com/kurtosis-tech/ethereum-package/issues/68)) ([094352d](https://github.com/kurtosis-tech/ethereum-package/commit/094352d6666755da5de6ed3f4b78fd5f37c01f7f))
-* update nightly runner ([#163](https://github.com/kurtosis-tech/ethereum-package/issues/163)) ([4eba65d](https://github.com/kurtosis-tech/ethereum-package/commit/4eba65df4fd29ece8a89ac77066e68d330fc2297))
-* use eth maintained tx-fuzz ([#110](https://github.com/kurtosis-tech/ethereum-package/issues/110)) ([b0903bd](https://github.com/kurtosis-tech/ethereum-package/commit/b0903bdae490ffa30251ddede9edca21105fba48))
-* use flashbots builder ([#162](https://github.com/kurtosis-tech/ethereum-package/issues/162)) ([7a0c2d0](https://github.com/kurtosis-tech/ethereum-package/commit/7a0c2d03dff1dd0ee5c92b5c2f9478f4e56f6920))
-* use mev-boost-relay by flashbots ([#141](https://github.com/kurtosis-tech/ethereum-package/issues/141)) ([fca62fc](https://github.com/kurtosis-tech/ethereum-package/commit/fca62fcee23525cc891eaf2494a2b1cb694f5bf4))
-* use named artifacts ([#69](https://github.com/kurtosis-tech/ethereum-package/issues/69)) ([968f073](https://github.com/kurtosis-tech/ethereum-package/commit/968f0734a0ee834c75e184b758989ce1dc9d58be)), closes [#70](https://github.com/kurtosis-tech/ethereum-package/issues/70)
-* Use plan object ([#65](https://github.com/kurtosis-tech/ethereum-package/issues/65)) ([8e5d185](https://github.com/kurtosis-tech/ethereum-package/commit/8e5d18558f92a9fc71ae9a70f1ca139df406d7b7))
-* use v2 endoint to get the head block ([#153](https://github.com/kurtosis-tech/ethereum-package/issues/153)) ([f084711](https://github.com/kurtosis-tech/ethereum-package/commit/f084711061c777c78ef8f002a4f7e597c27e8eb5))
-* work with latest eth-network-package ([14dc957](https://github.com/kurtosis-tech/ethereum-package/commit/14dc95776e16f8cdf8ac83a03c53abad489cb8f7))
-* work with latest eth-network-package ([#116](https://github.com/kurtosis-tech/ethereum-package/issues/116)) ([14dc957](https://github.com/kurtosis-tech/ethereum-package/commit/14dc95776e16f8cdf8ac83a03c53abad489cb8f7))
-
-## 0.2.0
-
-- Adds config variables for `genesis_delay` and `capella_fork_epoch`
-- Updates genesis generator version
-- Fixes genesis timestamp such that the shanghai fork can happen based on timestamps
-- Update `--enclave-id` flag to `--enclave` in README
-
-### Breaking Change
-
-- Introduced optional application protocol and renamed protocol to transport_protocol
-
-## 0.1.0
-
-### Breaking changes
-
-- Updated `struct` to `PortSpec` for declaring port definitions
-
-### Changes
-
-- Change `exec` syntax
-
-## 0.0.5
-
-### Fixes
-
-- Fix bug with input parsing of participants
-- Fix bug with `get_enode_for_node` being assigned to two parameters
-
-### Changes
-
-- Updated `run(input_args)` to `run(args)`
-- Refactor code to use `wait` and `request` commands
-- Removed `print(output)` at the end as it is now printed by the framework
-- Updates nimbus default docker image
-- Updates `genesis-generator` image to include a fix for nimbus post-merge genesis
-- Use the `args` argument instead of flags
-
-## 0.0.4
-
-### Changes
-
-- Removed 'module' key in the 'kurtosis.yml' file
-
-## 0.0.3
-
-### Changes
-
-- Replaced 'module' with 'package' where relevant
-- Removed protobuf types as they are now unsupported in Kurtosis.
-- Renamed `kurtotis.mod` to `kurtosis.yml`
-
-### Fixes
-
-- Fixed a bug in `run` of `main.star` where we'd refer to `module_io` instead of `package_io`
-
-## 0.0.2
-
-### Features
-
-- Added the docs
-
-### Fixes
-
-- Renamed `num_validators_per_keynode` to `num_validator_keys_per_node`
-- Moved away from `load` infavor of `import_module`
-- Moved away from `store_files_from_service` to `store_service_files`
-- Removed empty `ports` from a few service configs as passing it is now optional
-- Adjusted to the new render templates config
-- Moved away from passing json string to struct/dict for render templates
-
-### Changes
-
-- Move from `main` to `run` in `main.star`
-
-## 0.0.1
-
-### Features
-
-- Changed the .circlei/config.yml to apply to Startosis
-- Added genesis_constants
-- Added a lot of participant_network/pre_launch_data_generator
-- Added a lot of simple objects that just keep data
-- Added monitoring on top of the repo
-- Almost perfect parity with the eth2-merge-kurtosis-module
-
-### Fixes
-
-- Fixes some bugs with the initial implementation of the monitors
-
## 0.0.0
- Initial commit
diff --git a/README.md b/README.md
index cdbdea5..94a1082 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,16 @@
-# Ethereum Package
+# Zond Package
-
+This is a [Kurtosis][kurtosis-repo] package that will spin up a private Zond testnet over Docker or Kubernetes with multi-client support, Flashbot's `mev-boost` infrastructure for PBS-related testing/validation, and other useful network tools (transaction spammer, monitoring tools, etc). Kurtosis packages are entirely reproducible and composable, so this will work the same way over Docker or Kubernetes, in the cloud or locally on your machine.
-This is a [Kurtosis][kurtosis-repo] package that will spin up a private Ethereum testnet over Docker or Kubernetes with multi-client support, Flashbot's `mev-boost` infrastructure for PBS-related testing/validation, and other useful network tools (transaction spammer, monitoring tools, etc). Kurtosis packages are entirely reproducible and composable, so this will work the same way over Docker or Kubernetes, in the cloud or locally on your machine.
-
-You now have the ability to spin up a private Ethereum testnet or public devnet/testnet (e.g. Goerli, Holesky, Sepolia, dencun-devnet-12, verkle-gen-devnet-2 etc) with a single command. This package is designed to be used for testing, validation, and development of Ethereum clients, and is not intended for production use. For more details check network_params.network in the [configuration section](./README.md#configuration).
+You now have the ability to spin up a private Zond testnet or public devnet/testnet with a single command. This package is designed to be used for testing, validation, and development of Zond clients, and is not intended for production use. For more details check network_params.network in the [configuration section](./README.md#configuration).
Specifically, this [package][package-reference] will:
-1. Generate Execution Layer (EL) & Consensus Layer (CL) genesis information using [the Ethereum genesis generator](https://github.com/ethpandaops/ethereum-genesis-generator).
-2. Configure & bootstrap a network of Ethereum nodes of *n* size using the genesis data generated above
+1. Generate Execution Layer (EL) & Consensus Layer (CL) genesis information using [the Zond genesis generator](https://github.com/theQRL/zond-genesis-generator).
+2. Configure & bootstrap a network of Zond nodes of *n* size using the genesis data generated above
3. Spin up a [transaction spammer](https://github.com/MariusVanDerWijden/tx-fuzz) to send fake transactions to the network
4. Spin up and connect a [testnet verifier](https://github.com/ethereum/merge-testnet-verifier)
5. Spin up a Grafana and Prometheus instance to observe the network
-6. Spin up a Blobscan instance to analyze blob transactions (EIP-4844)
Optional features (enabled via flags or parameter files at runtime):
@@ -27,14 +24,12 @@ Optional features (enabled via flags or parameter files at runtime):
## Quickstart
-[](https://gitpod.io/new/?editor=code#https://github.com/ethpandaops/ethereum-package)
-
1. [Install Docker & start the Docker Daemon if you haven't done so already][docker-installation]
2. [Install the Kurtosis CLI, or upgrade it to the latest version if it's already installed][kurtosis-cli-installation]
3. Run the package with default configurations from the command line:
```bash
- kurtosis run --enclave my-testnet github.com/ethpandaops/ethereum-package
+ kurtosis run --enclave my-testnet github.com/theQRL/zond-package
```
#### Run with your own configuration
@@ -42,7 +37,7 @@ Optional features (enabled via flags or parameter files at runtime):
Kurtosis packages are parameterizable, meaning you can customize your network and its behavior to suit your needs by storing parameters in a file that you can pass in at runtime like so:
```bash
-kurtosis run --enclave my-testnet github.com/ethpandaops/ethereum-package --args-file network_params.yaml
+kurtosis run --enclave my-testnet github.com/theQRL/zond-package --args-file network_params.yaml
```
Where `network_params.yaml` contains the parameters for your network in your home directory.
@@ -74,23 +69,13 @@ persistent: true
...
```
-##### Shadowforking custom verkle networks
-In order to enable shadowfork capabilities for verkle networks, you need to define electra and mention verkle in the network name after shadowfork.
-```yaml
-...
-network_params:
- electra_fork_epoch: 1
- network: "holesky-shadowfork-verkle"
-persistent: true
-...
-```
#### Taints and tolerations
It is possible to run the package on a Kubernetes cluster with taints and tolerations. This is done by adding the tolerations to the `tolerations` field in the `network_params.yaml` file. For example:
```yaml
participants:
- - el_type: reth
- cl_type: teku
+ - el_type: gzond
+ cl_type: qrysm
global_tolerations:
- key: "node-role.kubernetes.io/master6"
value: "true"
@@ -163,23 +148,17 @@ To configure the package behaviour, you can modify your `network_params.yaml` fi
participants:
# EL(Execution Layer) Specific flags
# The type of EL client that should be started
- # Valid values are geth, nethermind, erigon, besu, ethereumjs, reth, nimbus-eth1
- - el_type: geth
+ # Valid values are gzond
+ - el_type: gzond
# The Docker image that should be used for the EL client; leave blank to use the default for the client type
# Defaults by client:
- # - geth: ethereum/client-go:latest
- # - erigon: ethpandaops/erigon:main
- # - nethermind: nethermind/nethermind:latest
- # - besu: hyperledger/besu:develop
- # - reth: ghcr.io/paradigmxyz/reth
- # - ethereumjs: ethpandaops/ethereumjs:master
- # - nimbus-eth1: ethpandaops/nimbus-eth1:master
+ # - gzond: theqrl/gzond:latest
el_image: ""
# The log level string that this participant's EL client should log at
# If this is emptystring then the global `logLevel` parameter's value will be translated into a string appropriate for the client (e.g. if
- # global `logLevel` = `info` then Geth would receive `3`, Besu would receive `INFO`, etc.)
+ # global `logLevel` = `info` then Gzond would receive `3`)
# If this is not emptystring, then this value will override the global `logLevel` setting to allow for fine-grained control
# over a specific participant's logging
el_log_level: ""
@@ -188,7 +167,7 @@ participants:
el_extra_env_vars: {}
# A list of optional extra labels the el container should spin up with
- # Example; el_extra_labels: {"ethereum-package.partition": "1"}
+ # Example; el_extra_labels: {"zond-package.partition": "1"}
el_extra_labels: {}
# A list of optional extra params that will be passed to the EL client container for modifying its behaviour
@@ -221,22 +200,17 @@ participants:
# CL(Consensus Layer) Specific flags
# The type of CL client that should be started
- # Valid values are nimbus, lighthouse, lodestar, teku, prysm, and grandine
- cl_type: lighthouse
+ # Valid values are qrysm
+ cl_type: qrysm
# The Docker image that should be used for the CL client; leave blank to use the default for the client type
# Defaults by client:
- # - lighthouse: sigp/lighthouse:latest
- # - teku: consensys/teku:latest
- # - nimbus: statusim/nimbus-eth2:multiarch-latest
- # - prysm: gcr.io/prysmaticlabs/prysm/beacon-chain:latest
- # - lodestar: chainsafe/lodestar:next
- # - grandine: sifrai/grandine:stable
+ # - qrysm: theqrl/qrysm-beacon-chain:latest
cl_image: ""
# The log level string that this participant's CL client should log at
# If this is emptystring then the global `logLevel` parameter's value will be translated into a string appropriate for the client (e.g. if
- # global `logLevel` = `info` then Teku would receive `INFO`, Prysm would receive `info`, etc.)
+ # global `logLevel` = `info` then Qrysm would receive `info`, etc.)
# If this is not emptystring, then this value will override the global `logLevel` setting to allow for fine-grained control
# over a specific participant's logging
cl_log_level: ""
@@ -245,11 +219,11 @@ participants:
cl_extra_env_vars: {}
# A list of optional extra labels that will be passed to the CL client Beacon container.
- # Example; cl_extra_labels: {"ethereum-package.partition": "1"}
+ # Example; cl_extra_labels: {"zond-package.partition": "1"}
cl_extra_labels: {}
# A list of optional extra params that will be passed to the CL client Beacon container for modifying its behaviour
- # If the client combines the Beacon & validator nodes (e.g. Teku, Nimbus), then this list will be passed to the combined Beacon-validator node
+ # If the client combines the Beacon & validator nodes, then this list will be passed to the combined Beacon-validator node
cl_extra_params: []
# A list of tolerations that will be passed to the CL client container
@@ -284,29 +258,24 @@ participants:
supernode: false
# Whether to use a separate validator client attached to the CL client.
- # Defaults to false for clients that can run both in one process (Teku, Nimbus)
+ # Defaults to false for clients that can run both in one process
use_separate_vc: true
# VC (Validator Client) Specific flags
# The type of validator client that should be used
- # Valid values are nimbus, lighthouse, lodestar, teku, prysm and vero
- # ( The prysm validator only works with a prysm CL client )
+ # Valid values are qrysm
+ # ( The qrysm validator only works with a qrysm CL client )
# Defaults to matching the chosen CL client (cl_type)
vc_type: ""
# The Docker image that should be used for the separate validator client
# Defaults by client:
- # - lighthouse: sigp/lighthouse:latest
- # - lodestar: chainsafe/lodestar:latest
- # - nimbus: statusim/nimbus-validator-client:multiarch-latest
- # - prysm: gcr.io/prysmaticlabs/prysm/validator:latest
- # - teku: consensys/teku:latest
- # - vero: ghcr.io/serenita-org/vero:master
+ # - qrysm: theqrl/qrysm-validator:latest
vc_image: ""
# The log level string that this participant's validator client should log at
# If this is emptystring then the global `logLevel` parameter's value will be translated into a string appropriate for the client (e.g. if
- # global `logLevel` = `info` then Teku would receive `INFO`, Prysm would receive `info`, etc.)
+ # global `logLevel` = `info` then Qrysm would receive `info`, etc.)
# If this is not emptystring, then this value will override the global `logLevel` setting to allow for fine-grained control
# over a specific participant's logging
vc_log_level: ""
@@ -315,11 +284,11 @@ participants:
vc_extra_env_vars: {}
# A list of optional extra labels that will be passed to the validator client validator container.
- # Example; vc_extra_labels: {"ethereum-package.partition": "1"}
+ # Example; vc_extra_labels: {"zond-package.partition": "1"}
vc_extra_labels: {}
# A list of optional extra params that will be passed to the validator client container for modifying its behaviour
- # If the client combines the Beacon & validator nodes (e.g. Teku, Nimbus), then this list will also be passed to the combined Beacon-validator node
+ # If the client combines the Beacon & validator nodes, then this list will also be passed to the combined Beacon-validator node
vc_extra_params: []
# A list of tolerations that will be passed to the validator container
@@ -348,7 +317,6 @@ participants:
validator_count: null
# Whether to use a remote signer instead of the vc directly handling keys
- # Note Lighthouse VC does not support this flag
# Defaults to false
use_remote_signer: false
@@ -366,7 +334,7 @@ participants:
remote_signer_extra_env_vars: {}
# A list of optional extra labels that will be passed to the remote signer container.
- # Example; remote_signer_extra_labels: {"ethereum-package.partition": "1"}
+ # Example; remote_signer_extra_labels: {"zond-package.partition": "1"}
remote_signer_extra_labels: {}
# A list of optional extra params that will be passed to the remote signer container for modifying its behaviour
@@ -438,14 +406,6 @@ participants:
# Additional labels to be added. Default to empty
labels: {}
- # Blobber can be enabled with the `blobber_enabled` flag per client or globally
- # Defaults to false
- blobber_enabled: false
-
- # Blobber extra params can be passed in to the blobber container
- # Defaults to empty
- blobber_extra_params: []
-
# A set of parameters the node needs to reach an external block building network
# If `null` then the builder infrastructure will not be instantiated
# Example:
@@ -467,32 +427,32 @@ participants:
# Each EL/CL/VC item can provide the same parameters as a standard participant
participants_matrix: {}
# el:
- # - el_type: geth
- # - el_type: besu
+ # - el_type: gzond
+ # - el_type: gzond
# cl:
- # - cl_type: prysm
- # - cl_type: lighthouse
+ # - cl_type: qrysm
+ # - cl_type: qrysm
# vc:
- # - vc_type: prysm
- # - vc_type: lighthouse
+ # - vc_type: qrysm
+ # - vc_type: qrysm
# Default configuration parameters for the network
network_params:
# Network name, used to enable syncing of alternative networks
# Defaults to "kurtosis"
- # You can sync any public network by setting this to the network name (e.g. "mainnet", "sepolia", "holesky")
- # You can sync any devnet by setting this to the network name (e.g. "dencun-devnet-12", "verkle-gen-devnet-2")
+ # You can sync any public network by setting this to the network name (e.g. "mainnet", "sepolia")
+ # You can sync any devnet by setting this to the network name (e.g. "dencun-devnet-12")
network: "kurtosis"
# The network ID of the network.
network_id: "3151908"
- # The address of the staking contract address on the Eth1 chain
- deposit_contract_address: "0x4242424242424242424242424242424242424242"
+ # The address of the staking contract address
+ deposit_contract_address: "Z4242424242424242424242424242424242424242"
# Number of seconds per slot on the Beacon chain
- seconds_per_slot: 12
+ seconds_per_slot: 60
# The number of validator keys that each CL validator node should get
num_validator_keys_per_node: 64
@@ -510,8 +470,7 @@ network_params:
# The gas limit of the network set at genesis
genesis_gaslimit: 30000000
- # Max churn rate for the network introduced by
- # EIP-7514 https://eips.ethereum.org/EIPS/eip-7514
+ # Max churn rate for the network
# Defaults to 8
max_per_epoch_activation_churn_limit: 8
@@ -536,39 +495,12 @@ network_params:
# Defaults to 256 epoch ~27 hours
shard_committee_period: 256
- # The epoch at which the deneb/electra/fulu forks are set to occur. Note: PeerDAS and Electra clients are currently
- # working on forks. So set either one of the below forks.
- # Altair fork epoch
- # Defaults to 0
- altair_fork_epoch: 0
-
- # Bellatrix fork epoch
- # Defaults to 0
- bellatrix_fork_epoch: 0
-
- # Capella fork epoch
- # Defaults to 0
- capella_fork_epoch: 0
-
- # Deneb fork epoch
- # Defaults to 0
- deneb_fork_epoch: 0
-
- # Electra fork epoch
- # Defaults to 100000000
- electra_fork_epoch: 100000000
-
- # Fulu fork epoch
- # Defaults to 100000001
- fulu_fork_epoch: 100000001
-
-
# Network sync base url for syncing public networks from a custom snapshot (mostly useful for shadowforks)
# Defaults to "https://snapshots.ethpandaops.io/"
# If you have a local snapshot, you can set this to the local url:
# network_snapshot_url_base = "http://10.10.101.21:10000/snapshots/"
# The snapshots are taken with https://github.com/ethpandaops/snapshotter
- network_sync_base_url: https://snapshots.ethpandaops.io/
+ network_sync_base_url: https://snapshots.theqrl.org/
# The number of data column sidecar subnets used in the gossipsub protocol
data_column_sidecar_subnet_count: 128
@@ -577,16 +509,6 @@ network_params:
# Minimum number of subnets an honest node custodies and serves samples from
custody_requirement: 4
- # Maximum number of blobs per block for Electra fork
- max_blobs_per_block_electra: 9
- # Target number of blobs per block for Electra fork
- target_blobs_per_block_electra: 6
-
- # Maximum number of blobs per block for Fulu fork
- max_blobs_per_block_fulu: 12
- # Target number of blobs per block for Fulu fork
- target_blobs_per_block_fulu: 9
-
# Preset for the network
# Default: "mainnet"
# Options: "mainnet", "minimal"
@@ -600,7 +522,7 @@ network_params:
additional_preloaded_contracts: {}
# Example:
# additional_preloaded_contracts: '{
- # "0x123463a4B065722E99115D6c222f267d9cABb524":
+ # "Z123463a4B065722E99115D6c222f267d9cABb524":
# {
# balance: "1ETH",
# code: "0x1234",
@@ -617,11 +539,11 @@ network_params:
# A number of prefunded accounts to be created
# Defaults to no prefunded accounts
# Example:
- # prefunded_accounts: '{"0x25941dC771bB64514Fc8abBce970307Fb9d477e9": {"balance": "10ETH"}}'
- # 10ETH to the account 0x25941dC771bB64514Fc8abBce970307Fb9d477e9
+ # prefunded_accounts: '{"Z25941dC771bB64514Fc8abBce970307Fb9d477e9": {"balance": "10ETH"}}'
+ # 10ETH to the account Z25941dC771bB64514Fc8abBce970307Fb9d477e9
# To prefund multiple accounts, separate them with a comma
#
- # prefunded_accounts: '{"0x25941dC771bB64514Fc8abBce970307Fb9d477e9": {"balance": "10ETH"}, "0x4107be99052d895e3ee461C685b042Aa975ab5c0": {"balance": "1ETH"}}'
+ # prefunded_accounts: '{"Z25941dC771bB64514Fc8abBce970307Fb9d477e9": {"balance": "10ETH"}, "Z4107be99052d895e3ee461C685b042Aa975ab5c0": {"balance": "1ETH"}}'
prefunded_accounts: {}
# Maximum size of gossip messages in bytes
@@ -634,7 +556,7 @@ network_params:
# Global parameters for the network
# By default includes
-# - A transaction spammer & blob spammer is launched to fake transactions sent to the network
+# - A transaction spammer is launched to fake transactions sent to the network
# - Forkmon for EL will be launched
# - A prometheus will be started, coupled with grafana
# - A beacon metrics gazer will be launched
@@ -644,17 +566,14 @@ additional_services:
- assertoor
- broadcaster
- tx_spammer
- - blob_spammer
- custom_flood
- spamoor
- - spamoor_blob
- el_forkmon
- blockscout
- beacon_metrics_gazer
- dora
- full_beaconchain_explorer
- prometheus_grafana
- - blobscan
- dugtrio
- blutgang
- forky
@@ -748,13 +667,6 @@ assertoor_params:
# test is done twice, first with legacy (type 0) transactions, then with dynfee (type 2) transactions
run_transaction_test: false
- # Run blob transaction test
- # This test generates blob transactions and checks inclusion with/from all client pairs
- # This test checks for:
- # - block proposals with blobs from all client pairs
- # - blob inclusion when submitting via each client pair
- run_blob_transaction_test: false
-
# Run all-opcodes transaction test
# This test generates a transaction that triggers all EVM OPCODES once
# This test checks for:
@@ -811,7 +723,6 @@ disable_peer_scoring: false
# Whether the environment should be persistent; this is WIP and is slowly being rolled out accross 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
persistent: false
@@ -845,7 +756,7 @@ mev_params:
# 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
+ # mev_builder_cl_image: sigp/lighthouse:latest
# The image to use for mev-boost
mev_boost_image: flashbots/mev-boost
# Parameters for MEV Boost. This overrides all arguments of the mev-boost container
@@ -898,7 +809,6 @@ xatu_sentry_params:
- head
- voluntary_exit
- contribution_and_proof
- - blob_sidecar
# Apache params
# Apache public port to port forward to local machine
@@ -939,7 +849,7 @@ spamoor_params:
image: ethpandaops/spamoor:latest
# The spamoor scenario to use (see https://github.com/ethpandaops/spamoor)
# Valid scenarios are:
- # eoatx, erctx, deploytx, depoy-destruct, blobs, gasburnertx
+ # eoatx, erctx, deploytx, depoy-destruct, gasburnertx
# Defaults to eoatx
scenario: eoatx
# Throughput of spamoor
@@ -955,38 +865,10 @@ 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 comamnd 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.5.1
+# Zond genesis generator params
+zond_genesis_generator_params:
+ # The image to use for zond genesis generator
+ image: theqrl/zond-genesis-generator:latest
# Global parameter to set the exit ip address of services and public ports
port_publisher:
@@ -1035,91 +917,24 @@ port_publisher:
#### Example configurations
- Verkle configuration example
+ A 5-node Zond network.
```yaml
participants:
- - el_type: geth
- el_image: ethpandaops/geth:
- elExtraParams:
- - "--override.verkle="
- cl_type: lighthouse
- cl_image: sigp/lighthouse:latest
- - el_type: geth
- el_image: ethpandaops/geth:
- elExtraParams:
- - "--override.verkle="
- cl_type: lighthouse
- cl_image: sigp/lighthouse:latest
- - el_type: geth
- el_image: ethpandaops/geth:
- elExtraParams:
- - "--override.verkle="
- cl_type: lighthouse
- cl_image: sigp/lighthouse:latest
-network_params:
- deneb_fork_epoch: 0
-wait_for_finalization: false
-wait_for_verifications: false
-global_log_level: info
-
-```
-
-
-
-
- A 3-node Ethereum network with "mock" MEV mode.
- Useful for testing mev-boost and the client implementations without adding the complexity of the relay. This can be enabled by a single config command and would deploy the [mock-builder](https://github.com/marioevz/mock-builder), instead of the relay infrastructure.
-
-```yaml
-participants:
- - el_type: geth
- el_image: ''
- cl_type: lighthouse
- cl_image: ''
- count: 2
- - el_type: nethermind
- el_image: ''
- cl_type: teku
- cl_image: ''
- count: 1
- - el_type: besu
- el_image: ''
- cl_type: prysm
- cl_image: ''
- count: 2
-mev_type: mock
+ - el_type: gzond
+ cl_type: qrysm
+ count: 5
```
- A 5-node Ethereum network with three different CL and EL client combinations and mev-boost infrastructure in "full" mode.
+ A 2-node gzond/qrysm network with optional services (Grafana, Prometheus, transaction-spammer, EngineAPI snooper, and a testnet verifier)
```yaml
participants:
- - el_type: geth
- cl_type: lighthouse
- count: 2
- - el_type: nethermind
- cl_type: teku
- - el_type: besu
- cl_type: prysm
- count: 2
-mev_type: flashbots
-network_params:
- deneb_fork_epoch: 1
-```
-
-
-
-
- A 2-node geth/lighthouse network with optional services (Grafana, Prometheus, transaction-spammer, EngineAPI snooper, and a testnet verifier)
-
-```yaml
-participants:
- - el_type: geth
- cl_type: lighthouse
+ - el_type: gzond
+ cl_type: qrysm
count: 2
snooper_enabled: true
additional_services:
@@ -1129,17 +944,6 @@ ethereum_metrics_exporter_enabled: true
-## Beacon Node <> Validator Client compatibility
-
-| | Lighthouse VC | Prysm VC | Teku VC | Lodestar VC | Nimbus VC
-|---------------|---------------|----------|---------|-------------|-----------|
-| Lighthouse BN | ✅ | ❌ | ✅ | ✅ | ✅
-| Prysm BN | ✅ | ✅ | ✅ | ✅ | ✅
-| Teku BN | ✅ | ✅ | ✅ | ✅ | ✅
-| Lodestar BN | ✅ | ✅ | ✅ | ✅ | ✅
-| Nimbus BN | ✅ | ✅ | ✅ | ✅ | ✅
-| Grandine BN | ✅ | ✅ | ✅ | ✅ | ✅
-
## Custom labels for Docker and Kubernetes
There are 4 custom labels that can be used to identify the nodes in the network. These labels are used to identify the nodes in the network and can be used to run chaos tests on specific nodes. An example for these labels are as follows:
@@ -1147,46 +951,46 @@ There are 4 custom labels that can be used to identify the nodes in the network.
Execution Layer (EL) nodes:
```sh
- "com.kurtosistech.custom.ethereum-package-client": "geth",
- "com.kurtosistech.custom.ethereum-package-client-image": "ethereum-client-go-latest",
- "com.kurtosistech.custom.ethereum-package-client-type": "execution",
- "com.kurtosistech.custom.ethereum-package-connected-client": "lighthouse",
+ "com.kurtosistech.custom.zond-package-client": "gzond",
+ "com.kurtosistech.custom.zond-package-client-image": "theqrl-gzond-latest",
+ "com.kurtosistech.custom.zond-package-client-type": "execution",
+ "com.kurtosistech.custom.zond-package-connected-client": "qrysm",
```
Consensus Layer (CL) nodes - Beacon:
```sh
- "com.kurtosistech.custom.ethereum-package-client": "lighthouse",
- "com.kurtosistech.custom.ethereum-package-client-image": "sigp-lighthouse-latest",
- "com.kurtosistech.custom.ethereum-package-client-type": "beacon",
- "com.kurtosistech.custom.ethereum-package-connected-client": "geth",
+ "com.kurtosistech.custom.zond-package-client": "qrysm",
+ "com.kurtosistech.custom.zond-package-client-image": "theqrl-qrysm-beacon-chain-latest",
+ "com.kurtosistech.custom.zond-package-client-type": "beacon",
+ "com.kurtosistech.custom.zond-package-connected-client": "gzond",
```
Consensus Layer (CL) nodes - Validator:
```sh
- "com.kurtosistech.custom.ethereum-package-client": "lighthouse",
- "com.kurtosistech.custom.ethereum-package-client-image": "sigp-lighthouse-latest",
- "com.kurtosistech.custom.ethereum-package-client-type": "validator",
- "com.kurtosistech.custom.ethereum-package-connected-client": "geth",
+ "com.kurtosistech.custom.zond-package-client": "qrysm",
+ "com.kurtosistech.custom.zond-package-client-image": "theqrl-qrysm-validator-latest",
+ "com.kurtosistech.custom.zond-package-client-type": "validator",
+ "com.kurtosistech.custom.zond-package-connected-client": "gzond",
```
-`ethereum-package-client` describes which client is running on the node.
-`ethereum-package-client-image` describes the image that is used for the client.
-`ethereum-package-client-type` describes the type of client that is running on the node (`execution`,`beacon` or `validator`).
-`ethereum-package-connected-client` describes the CL/EL client that is connected to the EL/CL client.
+`zond-package-client` describes which client is running on the node.
+`zond-package-client-image` describes the image that is used for the client.
+`zond-package-client-type` describes the type of client that is running on the node (`execution`,`beacon` or `validator`).
+`zond-package-connected-client` describes the CL/EL client that is connected to the EL/CL client.
## Proposer Builder Separation (PBS) emulation
-To spin up the network of Ethereum nodes with an external block building network (using Flashbot's `mev-boost` protocol), simply use:
+To spin up the network of Zond nodes with an external block building network (using Flashbot's `mev-boost` protocol), simply use:
```
-kurtosis run github.com/ethpandaops/ethereum-package '{"mev_type": "full"}'
+kurtosis run github.com/theQRL/zond-package '{"mev_type": "full"}'
```
Starting your network up with `"mev_type": "full"` will instantiate and connect the following infrastructure to your network:
-1. `Flashbot's block builder & CL validator + beacon` - A modified Geth client that builds blocks. The CL validator and beacon clients are lighthouse clients configured to receive payloads from the relay.
+1. `Flashbot's block builder & CL validator + beacon` - A modified Gzond client that builds blocks. The CL validator and beacon clients are lighthouse clients configured to receive payloads from the relay.
2. `mev-relay-api` - Services that provide APIs for (a) proposers, (b) block builders, (c) data
3. `mev-relay-website` - A website to monitor payloads that have been delivered
4. `mev-relay-housekeeper` - Updates known validators, proposer duties, and more in the background. Only a single instance of this should run.
@@ -1211,7 +1015,7 @@ For more details, including a guide and architecture of the `mev-boost` infrastr
## Pre-funded accounts at Genesis
-This package comes with [21 prefunded keys for testing](https://github.com/ethpandaops/ethereum-package/blob/main/src/prelaunch_data_generator/genesis_constants/genesis_constants.star).
+This package comes with [21 prefunded keys for testing](https://github.com/theQRL/zond-package/blob/main/src/prelaunch_data_generator/genesis_constants/genesis_constants.star).
Here's a table of where the keys are used
@@ -1219,9 +1023,7 @@ 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 | 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 |
@@ -1252,14 +1054,7 @@ To get detailed information about the structure of the package, visit [the archi
When you're happy with your changes:
1. Create a PR
-1. Add one of the maintainers of the repo as a "Review Request":
- * `parithosh` (Ethereum Foundation)
- * `barnabasbusa` (Ethereum Foundation)
- * `pk910` (Ethereum Foundation)
- * `samcm` (Ethereum Foundation)
- * `h4ck3rk3y` (Kurtosis)
- * `mieubrisse` (Kurtosis)
- * `leederek` (Kurtosis)
+1. Add one of the maintainers of the repo as a "Review Request".
1. Once everything works, merge!
diff --git a/docs/architecture.md b/docs/architecture.md
index 438fd93..5c210d8 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -5,13 +5,13 @@ This repo is a Kurtosis package. To get general information on what a Kurtosis p
The overview of this particular package's operation is as follows:
1. Parse user parameters
-1. Launch a network of Ethereum participants
+1. Launch a network of Zond participants
1. Generate execution layer (EL) client config data
1. Launch EL clients
1. Generate consensus layer (CL) client config data
1. Launch CL clients
1. Launch auxiliary services (Grafana, Forkmon, etc.)
-1. Run Ethereum Merge verification logic
+1. Run Zond Merge verification logic
1. Return information to the user
## Overview
@@ -55,7 +55,7 @@ We'll explain these phases one by one.
### Generating EL and CL client data
-All EL clients require both a genesis file and a JWT secret. The exact format of the genesis file differs per client, so we first leverage [a Docker image containing tools for generating this genesis data][ethereum-genesis-generator] to create the actual files that the EL clients-to-be will need. This is accomplished by filling in a single genesis generation environment config files found in [`static_files`](../static_files/genesis-generation-config/el-cl/values.env.tmpl).
+All EL clients require both a genesis file and a JWT secret. The exact format of the genesis file differs per client, so we first leverage [a Docker image containing tools for generating this genesis data][zond-genesis-generator] to create the actual files that the EL clients-to-be will need. This is accomplished by filling in a single genesis generation environment config files found in [`static_files`](../static_files/genesis-generation-config/el-cl/values.env.tmpl).
CL clients, like EL clients also have a genesis and config files that they need. This is created at the same time as the EL genesis files.
@@ -63,37 +63,37 @@ Then the validator keys are generated. A tool called [eth2-val-tools](https://gi
### Starting EL clients
-Next, we plug the generated genesis data [into EL client "launchers"](https://github.com/ethpandaops/ethereum-package/tree/main/src/participant_network/el) to start a mining network of EL nodes. The launchers come with a `launch` function that consumes EL genesis data and produces information about the running EL client node. Running EL node information is represented by [an `el_context` struct](https://github.com/ethpandaops/ethereum-package/blob/main/src/participant_network/el/el_context.star). Each EL client type has its own launcher (e.g. [Geth](https://github.com/ethpandaops/ethereum-package/tree/main/src/participant_network/el/geth), [Besu](https://github.com/ethpandaops/ethereum-package/tree/main/src/participant_network/el/besu)) because each EL client will require different environment variables and flags to be set when launching the client's container.
+Next, we plug the generated genesis data [into EL client "launchers"](https://github.com/theQRL/zond-package/tree/main/src/participant_network/el) to start a mining network of EL nodes. The launchers come with a `launch` function that consumes EL genesis data and produces information about the running EL client node. Running EL node information is represented by [an `el_context` struct](https://github.com/theQRL/zond-package/blob/main/src/participant_network/el/el_context.star). Each EL client type has its own launcher (e.g. [Gzond](https://github.com/theQRL/zond-package/tree/main/src/participant_network/el/gzond)) because each EL client will require different environment variables and flags to be set when launching the client's container.
### Starting CL clients
-Once CL genesis data and keys have been created, the CL client nodes are started via [the CL client launchers](https://github.com/ethpandaops/ethereum-package/tree/main/src/participant_network/cl). Just as with EL clients:
+Once CL genesis data and keys have been created, the CL client nodes are started via [the CL client launchers](https://github.com/theQRL/zond-package/tree/main/src/participant_network/cl). Just as with EL clients:
- CL client launchers implement come with a `launch` method
-- One CL client launcher exists per client type (e.g. [Nimbus](https://github.com/ethpandaops/ethereum-package/tree/main/src/participant_network/cl/nimbus), [Lighthouse](https://github.com/ethpandaops/ethereum-package/tree/main/src/participant_network/cl/lighthouse))
-- Launched CL node information is tracked in [a `cl_context` struct](https://github.com/ethpandaops/ethereum-package/blob/main/src/participant_network/cl/cl_context.star)
+- One CL client launcher exists per client type (e.g. [Qrysm](https://github.com/theQRL/zond-package/tree/main/src/participant_network/cl/qrysm))
+- Launched CL node information is tracked in [a `cl_context` struct](https://github.com/theQRL/zond-package/blob/main/src/participant_network/cl/cl_context.star)
There are only two major difference between CL client and EL client launchers. First, the `cl_client_launcher.launch` method also consumes an `el_context`, because each CL client is connected in a 1:1 relationship with an EL client. Second, because CL clients have keys, the keystore files are passed in to the `launch` function as well.
## Auxiliary Services
-After the Ethereum network is up and running, this package starts several auxiliary containers to make it easier to work with the Ethereum network. At time of writing, these are:
+After the Zond network is up and running, this package starts several auxiliary containers to make it easier to work with the Zond 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
-- [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
+- [Forkmon](https://github.com/theQRL/zond-package/tree/main/src/el_forkmon), a "fork monitor" web UI for visualizing the CL clients' forks
+- [Prometheus](https://github.com/theQRL/zond-package/tree/main/src/prometheus) for collecting client node metrics
+- [Grafana](https://github.com/theQRL/zond-package/tree/main/src/grafana) for visualizing client node metrics
+- [A Zond transaction spammer](https://github.com/theQRL/zond-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
## [Testnet Verifier][testnet-verifier]
-Once the Ethereum network is up and running, verification logic will be run to ensure that the Merge has happened successfully. This happens via [a testnet-verifying Docker image](https://github.com/ethereum/merge-testnet-verifier) that periodically polls the network to check the state of the merge. If the merge doesn't occur, the testnet-verifying image returns an unsuccessful exit code which in turn signals the Kurtosis package to exit with an error. This merge verification can be disabled in the package's configuration (see the "Configuration" section in the README).
+Once the Zond network is up and running, verification logic will be run to ensure that the Merge has happened successfully. This happens via [a testnet-verifying Docker image](https://github.com/ethereum/merge-testnet-verifier) that periodically polls the network to check the state of the merge. If the merge doesn't occur, the testnet-verifying image returns an unsuccessful exit code which in turn signals the Kurtosis package to exit with an error. This merge verification can be disabled in the package's configuration (see the "Configuration" section in the README).
[enclave-context]: https://docs.kurtosistech.com/kurtosis/core-lib-documentation#enclavecontext
-[main-function]: https://github.com/ethpandaops/ethereum-package/blob/main/main.star#22
-[package-io]: https://github.com/ethpandaops/ethereum-package/tree/main/src/package_io
-[participant-network]: https://github.com/ethpandaops/ethereum-package/tree/main/src/participant_network
-[ethereum-genesis-generator]: https://github.com/ethpandaops/ethereum-genesis-generator
-[static-files]: https://github.com/ethpandaops/ethereum-package/tree/main/static_files
-[testnet-verifier]: https://github.com/ethpandaops/ethereum-package/tree/main/src/testnet_verifier
+[main-function]: https://github.com/theQRL/zond-package/blob/main/main.star#22
+[package-io]: https://github.com/theQRL/zond-package/tree/main/src/package_io
+[participant-network]: https://github.com/theQRL/zond-package/tree/main/src/participant_network
+[zond-genesis-generator]: https://github.com/theQRL/zond-genesis-generator
+[static-files]: https://github.com/theQRL/zond-package/tree/main/static_files
+[testnet-verifier]: https://github.com/theQRL/zond-package/tree/main/src/testnet_verifier
diff --git a/kurtosis-package-icon.png b/kurtosis-package-icon.png
deleted file mode 100644
index dde9434..0000000
Binary files a/kurtosis-package-icon.png and /dev/null differ
diff --git a/kurtosis.yml b/kurtosis.yml
index 6b37a1c..bd4a823 100644
--- a/kurtosis.yml
+++ b/kurtosis.yml
@@ -1 +1,2 @@
-name: "github.com/ethpandaops/ethereum-package"
+# TODO(now.youtrack.cloud/issue/TQ-38)
+name: "github.com/rgeraldes24/zond-package"
diff --git a/main.star b/main.star
index 56c3107..ddaac43 100644
--- a/main.star
+++ b/main.star
@@ -14,8 +14,6 @@ validator_ranges = import_module(
transaction_spammer = import_module(
"./src/transaction_spammer/transaction_spammer.star"
)
-blob_spammer = import_module("./src/blob_spammer/blob_spammer.star")
-spamoor_blob = import_module("./src/spamoor_blob/spamoor_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"
@@ -23,7 +21,6 @@ beacon_metrics_gazer = import_module(
dora = import_module("./src/dora/dora_launcher.star")
dugtrio = import_module("./src/dugtrio/dugtrio_launcher.star")
blutgang = import_module("./src/blutgang/blutgang_launcher.star")
-blobscan = import_module("./src/blobscan/blobscan_launcher.star")
forky = import_module("./src/forky/forky_launcher.star")
tracoor = import_module("./src/tracoor/tracoor_launcher.star")
apache = import_module("./src/apache/apache_launcher.star")
@@ -71,14 +68,13 @@ FIRST_NODE_FINALIZATION_FACT = "cl-boot-finalization-fact"
HTTP_PORT_ID_FOR_FACT = "http"
MEV_BOOST_SHOULD_CHECK_RELAY = True
-PATH_TO_PARSED_BEACON_STATE = "/genesis/output/parsedBeaconState.json"
def run(plan, args={}):
- """Launches an arbitrarily complex ethereum testnet based on the arguments provided
+ """Launches an arbitrarily complex zond testnet based on the arguments provided
Args:
- args: A YAML or JSON argument to configure the network; example https://github.com/ethpandaops/ethereum-package/blob/main/network_params.yaml
+ args: A YAML or JSON argument to configure the network; example https://github.com/theQRL/zond-package/blob/main/network_params.yaml
"""
args_with_right_defaults = input_parser.input_parser(plan, args)
@@ -158,7 +154,6 @@ def run(plan, args={}):
(
all_participants,
final_genesis_timestamp,
- genesis_validators_root,
el_cl_data_files_artifact_uuid,
network_id,
) = participant_network.launch_participant_network(
@@ -307,7 +302,7 @@ def run(plan, args={}):
mev_params,
network_id,
beacon_uris,
- genesis_validators_root,
+ # genesis_validators_root,
blocksim_uri,
network_params.seconds_per_slot,
persistent,
@@ -429,7 +424,6 @@ def run(plan, args={}):
network_params=network_params,
network_id=network_id,
final_genesis_timestamp=final_genesis_timestamp,
- genesis_validators_root=genesis_validators_root,
)
return output
@@ -449,20 +443,6 @@ def run(plan, args={}):
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")
# We need a way to do time.sleep
# TODO add code that waits for CL genesis
elif additional_service == "el_forkmon":
@@ -564,21 +544,6 @@ def run(plan, args={}):
args_with_right_defaults.docker_cache_params,
)
plan.print("Successfully launched blutgang")
- elif additional_service == "blobscan":
- plan.print("Launching blobscan")
- blobscan.launch_blobscan(
- plan,
- all_cl_contexts,
- all_el_contexts,
- network_id,
- network_params,
- persistent,
- global_node_selectors,
- args_with_right_defaults.port_publisher,
- index,
- args_with_right_defaults.docker_cache_params,
- )
- plan.print("Successfully launched blobscan")
elif additional_service == "forky":
plan.print("Launching forky")
forky_config_template = read_file(
@@ -684,15 +649,6 @@ 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,
- )
else:
fail("Invalid additional service %s" % (additional_service))
if launch_prometheus_grafana:
@@ -726,7 +682,7 @@ def run(plan, args={}):
first_cl_client = all_cl_contexts[0]
first_client_beacon_name = first_cl_client.beacon_service_name
epoch_recipe = GetHttpRequestRecipe(
- endpoint="/eth/v1/beacon/states/head/finality_checkpoints",
+ endpoint="/zond/v1/beacon/states/head/finality_checkpoints",
port_id=HTTP_PORT_ID_FOR_FACT,
extract={"finalized_epoch": ".data.finalized.epoch"},
)
@@ -756,7 +712,6 @@ def run(plan, args={}):
network_params=network_params,
network_id=network_id,
final_genesis_timestamp=final_genesis_timestamp,
- genesis_validators_root=genesis_validators_root,
)
return output
diff --git a/network_params.yaml b/network_params.yaml
index fc42720..7caea89 100644
--- a/network_params.yaml
+++ b/network_params.yaml
@@ -1,7 +1,7 @@
participants:
# EL
- - el_type: geth
- el_image: ethereum/client-go:latest
+ - el_type: gzond
+ el_image: theqrl/gzond:latest
el_log_level: ""
el_extra_env_vars: {}
el_extra_labels: {}
@@ -13,8 +13,8 @@ participants:
el_min_mem: 0
el_max_mem: 0
# CL
- cl_type: lighthouse
- cl_image: sigp/lighthouse:latest-unstable
+ cl_type: qrysm
+ cl_image: theqrl/qrysm-beacon-chain:latest
cl_log_level: ""
cl_extra_env_vars: {}
cl_extra_labels: {}
@@ -28,8 +28,8 @@ participants:
supernode: false
use_separate_vc: true
# Validator
- vc_type: lighthouse
- vc_image: sigp/lighthouse:latest-unstable
+ vc_type: qrysm
+ vc_image: theqrl/qrysm-validator:latest
vc_log_level: ""
vc_extra_env_vars: {}
vc_extra_labels: {}
@@ -62,15 +62,13 @@ participants:
prometheus_config:
scrape_interval: 15s
labels: {}
- blobber_enabled: false
- blobber_extra_params: []
builder_network_params: null
keymanager_enabled: false
network_params:
network: kurtosis
network_id: "3151908"
- deposit_contract_address: "0x4242424242424242424242424242424242424242"
- seconds_per_slot: 12
+ deposit_contract_address: "Z4242424242424242424242424242424242424242"
+ seconds_per_slot: 60
num_validator_keys_per_node: 64
preregistered_validator_keys_mnemonic:
"giant issue aisle success illegal bike spike
@@ -85,27 +83,18 @@ network_params:
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/
+ network_sync_base_url: https://snapshots.theqrl.org/
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
+ devnet_repo: theqrl
prefunded_accounts: {}
additional_services: []
dora_params:
image: ""
tx_spammer_params:
tx_spammer_extra_args: []
-spamoor_blob_params:
- spamoor_extra_args: []
prometheus_params:
storage_tsdb_retention_time: "1d"
storage_tsdb_retention_size: "512MB"
@@ -124,7 +113,6 @@ assertoor_params:
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: []
@@ -139,7 +127,7 @@ mev_type: null
mev_params:
mev_relay_image: flashbots/mev-boost-relay
mev_builder_image: ethpandaops/flashbots-builder:main
- mev_builder_cl_image: sigp/lighthouse:latest
+ # mev_builder_cl_image: sigp/lighthouse:latest
mev_boost_image: flashbots/mev-boost
mev_boost_args: ["mev-boost", "--relay-check"]
mev_relay_api_extra_args: []
@@ -168,15 +156,14 @@ xatu_sentry_params:
- 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.5.1
+zond_genesis_generator_params:
+ image: theqrl/zond-genesis-generator:latest
port_publisher:
nat_exit_ip: KURTOSIS_IP_ADDR_PLACEHOLDER
el:
diff --git a/release-please-config.json b/release-please-config.json
index af2bd2a..29f95df 100644
--- a/release-please-config.json
+++ b/release-please-config.json
@@ -6,7 +6,7 @@
"bump-minor-pre-major": true,
"packages": {
".": {
- "package-name": "ethereum-package"
+ "package-name": "zond-package"
}
}
}
diff --git a/run.gif b/run.gif
deleted file mode 100644
index 7eb5344..0000000
Binary files a/run.gif and /dev/null differ
diff --git a/src/assertoor/assertoor_launcher.star b/src/assertoor/assertoor_launcher.star
index b99c522..6355093 100644
--- a/src/assertoor/assertoor_launcher.star
+++ b/src/assertoor/assertoor_launcher.star
@@ -121,10 +121,6 @@ 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,
@@ -173,7 +169,6 @@ def new_config_template_data(
"RunBlockProposalCheck": assertoor_params.run_block_proposal_check,
"RunLifecycleTest": assertoor_params.run_lifecycle_test,
"RunTransactionTest": assertoor_params.run_transaction_test,
- "RunBlobTransactionTest": assertoor_params.run_blob_transaction_test,
"RunOpcodesTransactionTest": assertoor_params.run_opcodes_transaction_test,
"AdditionalTests": additional_tests,
}
diff --git a/src/blob_spammer/blob_spammer.star b/src/blob_spammer/blob_spammer.star
deleted file mode 100644
index 6adcaae..0000000
--- a/src/blob_spammer/blob_spammer.star
+++ /dev/null
@@ -1,76 +0,0 @@
-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,
- )
diff --git a/src/blobber/blobber_context.star b/src/blobber/blobber_context.star
deleted file mode 100644
index 1d778f7..0000000
--- a/src/blobber/blobber_context.star
+++ /dev/null
@@ -1,5 +0,0 @@
-def new_blobber_context(ip_addr, port_num):
- return struct(
- ip_addr=ip_addr,
- port_num=port_num,
- )
diff --git a/src/blobber/blobber_launcher.star b/src/blobber/blobber_launcher.star
deleted file mode 100644
index 1af3cde..0000000
--- a/src/blobber/blobber_launcher.star
+++ /dev/null
@@ -1,99 +0,0 @@
-shared_utils = import_module("../shared_utils/shared_utils.star")
-input_parser = import_module("../package_io/input_parser.star")
-constants = import_module("../package_io/constants.star")
-cl_context = import_module("../cl/cl_context.star")
-
-blobber_context = import_module("../blobber/blobber_context.star")
-
-BLOBBER_BEACON_PORT_NUM = 9000
-BLOBBER_BEACON_PORT_TCP_ID = "discovery-tcp"
-BLOBBER_BEACON_PORT_UDP_ID = "discovery-udp"
-BLOBBER_VALIDATOR_PROXY_PORT_NUM = 5000
-BLOBBER_VALIDATOR_PROXY_PORT_ID = "http"
-
-DEFAULT_BLOBBER_IMAGE = "ethpandaops/blobber:1.1.0"
-
-VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS = "/validator-keys"
-
-BLOBBER_USED_PORTS = {
- BLOBBER_VALIDATOR_PROXY_PORT_ID: shared_utils.new_port_spec(
- BLOBBER_VALIDATOR_PROXY_PORT_NUM, shared_utils.TCP_PROTOCOL, wait="5s"
- ),
- BLOBBER_BEACON_PORT_TCP_ID: shared_utils.new_port_spec(
- BLOBBER_BEACON_PORT_NUM, shared_utils.TCP_PROTOCOL, wait=None
- ),
- BLOBBER_BEACON_PORT_UDP_ID: shared_utils.new_port_spec(
- BLOBBER_BEACON_PORT_NUM, shared_utils.UDP_PROTOCOL, wait=None
- ),
-}
-
-# The min/max CPU/memory that blobbers can use
-MIN_CPU = 10
-MAX_CPU = 500
-MIN_MEMORY = 10
-MAX_MEMORY = 300
-
-
-def launch(
- plan,
- service_name,
- node_keystore_files,
- beacon_http_url,
- extra_params,
- node_selectors,
-):
- blobber_service_name = "{0}".format(service_name)
-
- blobber_config = get_config(
- service_name,
- node_keystore_files,
- beacon_http_url,
- extra_params,
- node_selectors,
- )
-
- blobber_service = plan.add_service(blobber_service_name, blobber_config)
- return blobber_context.new_blobber_context(
- blobber_service.ip_address,
- blobber_service.ports[BLOBBER_VALIDATOR_PROXY_PORT_NUM],
- )
-
-
-def get_config(
- service_name,
- node_keystore_files,
- beacon_http_url,
- extra_params,
- node_selectors,
-):
- validator_root_dirpath = shared_utils.path_join(
- VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS,
- node_keystore_files.raw_root_dirpath,
- )
- cmd = [
- "--beacon-port-start={0}".format(BLOBBER_BEACON_PORT_NUM),
- "--cl={0}".format(beacon_http_url),
- "--validator-key-folder={0}".format(validator_root_dirpath),
- "--enable-unsafe-mode",
- # Does this get affected by public ip address changes?
- "--external-ip={0}".format(constants.PRIVATE_IP_ADDRESS_PLACEHOLDER),
- "--validator-proxy-port-start={0}".format(BLOBBER_VALIDATOR_PROXY_PORT_NUM),
- ]
-
- if len(extra_params) > 0:
- cmd.extend([param for param in extra_params])
-
- return ServiceConfig(
- image=DEFAULT_BLOBBER_IMAGE,
- ports=BLOBBER_USED_PORTS,
- files={
- VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS: node_keystore_files.files_artifact_uuid
- },
- cmd=cmd,
- private_ip_address_placeholder=constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- min_cpu=MIN_CPU,
- max_cpu=MAX_CPU,
- min_memory=MIN_MEMORY,
- max_memory=MAX_MEMORY,
- node_selectors=node_selectors,
- )
diff --git a/src/blobscan/blobscan_launcher.star b/src/blobscan/blobscan_launcher.star
deleted file mode 100644
index 12dbbf3..0000000
--- a/src/blobscan/blobscan_launcher.star
+++ /dev/null
@@ -1,277 +0,0 @@
-shared_utils = import_module("../shared_utils/shared_utils.star")
-postgres = import_module("github.com/kurtosis-tech/postgres-package/main.star")
-redis = import_module("github.com/kurtosis-tech/redis-package/main.star")
-constants = import_module("../package_io/constants.star")
-
-WEB_SERVICE_NAME = "blobscan-web"
-API_SERVICE_NAME = "blobscan-api"
-INDEXER_SERVICE_NAME = "blobscan-indexer"
-SECRET_KEY = "supersecure"
-WEB_HTTP_PORT_NUMBER = 3000
-API_HTTP_PORT_NUMBER = 3001
-
-WEB_PORTS = {
- constants.HTTP_PORT_ID: shared_utils.new_port_spec(
- WEB_HTTP_PORT_NUMBER,
- shared_utils.TCP_PROTOCOL,
- shared_utils.HTTP_APPLICATION_PROTOCOL,
- )
-}
-
-API_PORTS = {
- constants.HTTP_PORT_ID: shared_utils.new_port_spec(
- API_HTTP_PORT_NUMBER,
- shared_utils.TCP_PROTOCOL,
- shared_utils.HTTP_APPLICATION_PROTOCOL,
- )
-}
-
-ENTRYPOINT_ARGS = ["/bin/sh", "-c"]
-
-# The min/max CPU/memory that blobscan-indexer can use
-INDEX_MIN_CPU = 10
-INDEX_MAX_CPU = 1000
-INDEX_MIN_MEMORY = 32
-INDEX_MAX_MEMORY = 1024
-
-# The min/max CPU/memory that blobscan-api can use
-API_MIN_CPU = 100
-API_MAX_CPU = 1000
-API_MIN_MEMORY = 1024
-API_MAX_MEMORY = 2048
-
-# The min/max CPU/memory that blobscan-web can use
-WEB_MIN_CPU = 100
-WEB_MAX_CPU = 1000
-WEB_MIN_MEMORY = 512
-WEB_MAX_MEMORY = 2048
-
-# The min/max CPU/memory that postgres can use
-POSTGRES_MIN_CPU = 10
-POSTGRES_MAX_CPU = 1000
-POSTGRES_MIN_MEMORY = 32
-POSTGRES_MAX_MEMORY = 1024
-
-# The min/max CPU/memory that redis can use
-REDIS_MIN_CPU = 10
-REDIS_MAX_CPU = 1000
-REDIS_MIN_MEMORY = 32
-REDIS_MAX_MEMORY = 1024
-
-
-def launch_blobscan(
- plan,
- cl_contexts,
- el_contexts,
- network_id,
- network_params,
- persistent,
- global_node_selectors,
- port_publisher,
- additional_service_index,
- docker_cache_params,
-):
- node_selectors = global_node_selectors
- beacon_node_rpc_uri = "{0}".format(cl_contexts[0].beacon_http_url)
- execution_node_rpc_uri = "{0}".format(el_contexts[0].rpc_http_url)
-
- postgres_output = postgres.run(
- plan,
- service_name="blobscan-postgres",
- min_cpu=POSTGRES_MIN_CPU,
- max_cpu=POSTGRES_MAX_CPU,
- min_memory=POSTGRES_MIN_MEMORY,
- max_memory=POSTGRES_MAX_MEMORY,
- persistent=persistent,
- node_selectors=node_selectors,
- image=shared_utils.docker_cache_image_calc(
- docker_cache_params, "library/postgres:alpine"
- ),
- )
-
- redis_output = redis.run(
- plan,
- service_name="blobscan-redis",
- min_cpu=REDIS_MIN_CPU,
- max_cpu=REDIS_MAX_CPU,
- min_memory=REDIS_MIN_MEMORY,
- max_memory=REDIS_MAX_MEMORY,
- persistent=persistent,
- node_selectors=node_selectors,
- image=shared_utils.docker_cache_image_calc(
- docker_cache_params, "library/redis:alpine"
- ),
- )
-
- api_config = get_api_config(
- network_id,
- postgres_output.url,
- network_params.network,
- redis_output.url,
- node_selectors,
- port_publisher,
- additional_service_index,
- docker_cache_params,
- )
- blobscan_config = plan.add_service(API_SERVICE_NAME, api_config)
-
- blobscan_api_url = "http://{0}:{1}".format(
- blobscan_config.ip_address, blobscan_config.ports[constants.HTTP_PORT_ID].number
- )
-
- web_config = get_web_config(
- postgres_output.url,
- network_params.network,
- beacon_node_rpc_uri,
- execution_node_rpc_uri,
- node_selectors,
- port_publisher,
- additional_service_index,
- docker_cache_params,
- )
- plan.add_service(WEB_SERVICE_NAME, web_config)
-
- indexer_config = get_indexer_config(
- beacon_node_rpc_uri,
- blobscan_api_url,
- execution_node_rpc_uri,
- network_params.network,
- node_selectors,
- docker_cache_params,
- )
- plan.add_service(INDEXER_SERVICE_NAME, indexer_config)
-
-
-def get_api_config(
- network_id,
- postgres_url,
- network_name,
- redis_url,
- node_selectors,
- port_publisher,
- additional_service_index,
- docker_cache_params,
-):
- IMAGE_NAME = "blossomlabs/blobscan-api:latest"
-
- 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=API_PORTS,
- public_ports=public_ports,
- env_vars={
- "CHAIN_ID": network_id,
- "DATABASE_URL": postgres_url,
- "REDIS_URI": redis_url,
- "SECRET_KEY": SECRET_KEY,
- "BLOBSCAN_API_PORT": str(API_HTTP_PORT_NUMBER),
- "POSTGRES_STORAGE_ENABLED": "true",
- "NETWORK_NAME": network_name
- if network_name in constants.PUBLIC_NETWORKS
- else "devnet",
- },
- ready_conditions=ReadyCondition(
- recipe=GetHttpRequestRecipe(
- port_id="http",
- endpoint="/healthcheck",
- ),
- field="code",
- assertion="==",
- target_value=200,
- interval="5s",
- timeout="120s",
- ),
- min_cpu=API_MIN_CPU,
- max_cpu=API_MAX_CPU,
- min_memory=API_MIN_MEMORY,
- max_memory=API_MAX_MEMORY,
- node_selectors=node_selectors,
- )
-
-
-def get_web_config(
- postgres_url,
- network_name,
- beacon_node_rpc,
- execution_node_rpc,
- node_selectors,
- port_publisher,
- additional_service_index,
- docker_cache_params,
-):
- # TODO: https://github.com/kurtosis-tech/kurtosis/issues/1861
- # Configure NEXT_PUBLIC_BEACON_BASE_URL and NEXT_PUBLIC_EXPLORER_BASE env vars
- # once retrieving external URLs from services are supported in Kurtosis.
- IMAGE_NAME = "blossomlabs/blobscan-web:latest"
-
- public_ports = shared_utils.get_additional_service_standard_public_port(
- port_publisher,
- constants.HTTP_PORT_ID,
- additional_service_index,
- 1,
- )
-
- return ServiceConfig(
- image=shared_utils.docker_cache_image_calc(
- docker_cache_params,
- IMAGE_NAME,
- ),
- ports=WEB_PORTS,
- public_ports=public_ports,
- env_vars={
- "DATABASE_URL": postgres_url,
- "NEXT_PUBLIC_NETWORK_NAME": network_name
- if network_name in constants.PUBLIC_NETWORKS
- else "devnet",
- "SECRET_KEY": SECRET_KEY,
- "POSTGRES_STORAGE_ENABLED": "true",
- },
- min_cpu=WEB_MIN_CPU,
- max_cpu=WEB_MAX_CPU,
- min_memory=WEB_MIN_MEMORY,
- max_memory=WEB_MAX_MEMORY,
- node_selectors=node_selectors,
- )
-
-
-def get_indexer_config(
- beacon_node_rpc,
- blobscan_api_url,
- execution_node_rpc,
- network_name,
- node_selectors,
- docker_cache_params,
-):
- IMAGE_NAME = "blossomlabs/blobscan-indexer:master"
-
- return ServiceConfig(
- image=shared_utils.docker_cache_image_calc(
- docker_cache_params,
- IMAGE_NAME,
- ),
- env_vars={
- "BEACON_NODE_ENDPOINT": beacon_node_rpc,
- "BLOBSCAN_API_ENDPOINT": blobscan_api_url,
- "EXECUTION_NODE_ENDPOINT": execution_node_rpc,
- "NETWORK_NAME": network_name
- if network_name in constants.PUBLIC_NETWORKS
- else "devnet",
- "SECRET_KEY": SECRET_KEY,
- },
- entrypoint=ENTRYPOINT_ARGS,
- cmd=[" && ".join(["sleep 90", "/app/blob-indexer"])],
- min_cpu=INDEX_MIN_CPU,
- max_cpu=INDEX_MAX_CPU,
- min_memory=INDEX_MIN_MEMORY,
- max_memory=INDEX_MAX_MEMORY,
- node_selectors=node_selectors,
- )
diff --git a/src/cl/cl_launcher.star b/src/cl/cl_launcher.star
index 603bd72..fdade6f 100644
--- a/src/cl/cl_launcher.star
+++ b/src/cl/cl_launcher.star
@@ -1,9 +1,4 @@
-lighthouse = import_module("./lighthouse/lighthouse_launcher.star")
-lodestar = import_module("./lodestar/lodestar_launcher.star")
-nimbus = import_module("./nimbus/nimbus_launcher.star")
-prysm = import_module("./prysm/prysm_launcher.star")
-teku = import_module("./teku/teku_launcher.star")
-grandine = import_module("./grandine/grandine_launcher.star")
+qrysm = import_module("./qrysm/qrysm_launcher.star")
constants = import_module("../package_io/constants.star")
input_parser = import_module("../package_io/input_parser.star")
@@ -27,57 +22,19 @@ def launch(
persistent,
num_participants,
validator_data,
- prysm_password_relative_filepath,
- prysm_password_artifact_uuid,
+ qrysm_password_relative_filepath,
+ qrysm_password_artifact_uuid,
):
plan.print("Launching CL network")
cl_launchers = {
- constants.CL_TYPE.lighthouse: {
- "launcher": lighthouse.new_lighthouse_launcher(
- el_cl_data, jwt_file, network_params
- ),
- "launch_method": lighthouse.launch,
- },
- constants.CL_TYPE.lodestar: {
- "launcher": lodestar.new_lodestar_launcher(
- el_cl_data, jwt_file, network_params
- ),
- "launch_method": lodestar.launch,
- },
- constants.CL_TYPE.nimbus: {
- "launcher": nimbus.new_nimbus_launcher(
- el_cl_data,
- jwt_file,
- network_params,
- keymanager_file,
- ),
- "launch_method": nimbus.launch,
- },
- constants.CL_TYPE.prysm: {
- "launcher": prysm.new_prysm_launcher(
- el_cl_data,
- jwt_file,
- network_params,
- ),
- "launch_method": prysm.launch,
- },
- constants.CL_TYPE.teku: {
- "launcher": teku.new_teku_launcher(
- el_cl_data,
- jwt_file,
- network_params,
- keymanager_file,
- ),
- "launch_method": teku.launch,
- },
- constants.CL_TYPE.grandine: {
- "launcher": grandine.new_grandine_launcher(
+ constants.CL_TYPE.qrysm: {
+ "launcher": qrysm.new_qrysm_launcher(
el_cl_data,
jwt_file,
network_params,
),
- "launch_method": grandine.launch,
+ "launch_method": qrysm.launch,
},
}
diff --git a/src/cl/cl_node_ready_conditions.star b/src/cl/cl_node_ready_conditions.star
index 39ada91..850c9cd 100644
--- a/src/cl/cl_node_ready_conditions.star
+++ b/src/cl/cl_node_ready_conditions.star
@@ -1,5 +1,5 @@
def get_ready_conditions(port_id):
- recipe = GetHttpRequestRecipe(endpoint="/eth/v1/node/health", port_id=port_id)
+ recipe = GetHttpRequestRecipe(endpoint="/zond/v1/node/health", port_id=port_id)
ready_conditions = ReadyCondition(
recipe=recipe,
diff --git a/src/cl/grandine/grandine_launcher.star b/src/cl/grandine/grandine_launcher.star
deleted file mode 100644
index 9ca187e..0000000
--- a/src/cl/grandine/grandine_launcher.star
+++ /dev/null
@@ -1,359 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-cl_context = import_module("../../cl/cl_context.star")
-cl_node_ready_conditions = import_module("../../cl/cl_node_ready_conditions.star")
-cl_shared = import_module("../cl_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-vc_shared = import_module("../../vc/shared.star")
-# ---------------------------------- Beacon client -------------------------------------
-# The Docker container runs as the "grandine" user so we can't write to root
-BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER = "/data/grandine/grandine-beacon-data"
-
-# Port nums
-BEACON_DISCOVERY_PORT_NUM = 9000
-BEACON_HTTP_PORT_NUM = 4000
-BEACON_METRICS_PORT_NUM = 8008
-
-BEACON_METRICS_PATH = "/metrics"
-
-MIN_PEERS = 1
-
-ENTRYPOINT_ARGS = ["sh", "-c"]
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "ERROR",
- constants.GLOBAL_LOG_LEVEL.warn: "WARN",
- constants.GLOBAL_LOG_LEVEL.info: "INFO",
- constants.GLOBAL_LOG_LEVEL.debug: "DEBUG",
- constants.GLOBAL_LOG_LEVEL.trace: "TRACE",
-}
-
-
-def launch(
- plan,
- launcher,
- beacon_service_name,
- participant,
- global_log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.cl_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- config = get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
- )
-
- beacon_service = plan.add_service(beacon_service_name, config)
-
- beacon_http_port = beacon_service.ports[constants.HTTP_PORT_ID]
- beacon_http_url = "http://{0}:{1}".format(
- beacon_service.ip_address, beacon_http_port.number
- )
-
- beacon_metrics_port = beacon_service.ports[constants.METRICS_PORT_ID]
- beacon_metrics_url = "{0}:{1}".format(
- beacon_service.ip_address, beacon_metrics_port.number
- )
-
- beacon_node_identity_recipe = GetHttpRequestRecipe(
- endpoint="/eth/v1/node/identity",
- port_id=constants.HTTP_PORT_ID,
- extract={
- "enr": ".data.enr",
- "multiaddr": ".data.p2p_addresses[0]",
- "peer_id": ".data.peer_id",
- },
- )
- response = plan.request(
- recipe=beacon_node_identity_recipe, service_name=beacon_service_name
- )
- beacon_node_enr = response["extract.enr"]
- beacon_multiaddr = response["extract.multiaddr"]
- beacon_peer_id = response["extract.peer_id"]
-
- beacon_node_metrics_info = node_metrics.new_node_metrics_info(
- beacon_service_name, BEACON_METRICS_PATH, beacon_metrics_url
- )
- nodes_metrics_info = [beacon_node_metrics_info]
- return cl_context.new_cl_context(
- client_name="grandine",
- enr=beacon_node_enr,
- ip_addr=beacon_service.ip_address,
- http_port=beacon_http_port.number,
- beacon_http_url=beacon_http_url,
- cl_nodes_metrics_info=nodes_metrics_info,
- beacon_service_name=beacon_service_name,
- multiaddr=beacon_multiaddr,
- peer_id=beacon_peer_id,
- snooper_enabled=participant.snooper_enabled,
- snooper_engine_context=snooper_engine_context,
- validator_keystore_files_artifact_uuid=node_keystore_files.files_artifact_uuid
- if node_keystore_files
- else "",
- supernode=participant.supernode,
- )
-
-
-def get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- validator_keys_dirpath = ""
- validator_secrets_dirpath = ""
- if node_keystore_files:
- validator_keys_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.teku_keys_relative_dirpath,
- )
- validator_secrets_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.teku_secrets_relative_dirpath,
- )
- # If snooper is enabled use the snooper engine context, otherwise use the execution client context
- if participant.snooper_enabled:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- snooper_engine_context.ip_addr,
- snooper_engine_context.engine_rpc_port_num,
- )
- else:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- el_context.ip_addr,
- el_context.engine_rpc_port_num,
- )
-
- public_ports = {}
- validator_public_port_assignment = {}
- discovery_port = BEACON_DISCOVERY_PORT_NUM
- if port_publisher.cl_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "cl", port_publisher, participant_index
- )
- validator_public_port_assignment = {
- constants.VALIDATOR_HTTP_PORT_ID: public_ports_for_component[3]
- }
- public_ports, discovery_port = cl_shared.get_general_cl_public_port_specs(
- public_ports_for_component
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.HTTP_PORT_ID: BEACON_HTTP_PORT_NUM,
- constants.METRICS_PORT_ID: BEACON_METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = [
- "--network={0}".format(
- launcher.network
- if launcher.network in constants.PUBLIC_NETWORKS
- else "custom"
- ),
- "--data-dir=" + BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER,
- "--http-address=0.0.0.0",
- "--http-port={0}".format(BEACON_HTTP_PORT_NUM),
- "--libp2p-port={0}".format(discovery_port),
- "--discovery-port={0}".format(discovery_port),
- "--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--eth1-rpc-urls=" + EXECUTION_ENGINE_ENDPOINT,
- # vvvvvvvvvvvvvvvvvvv REMOVE THESE WHEN CONNECTING TO EXTERNAL NET vvvvvvvvvvvvvvvvvvvvv
- "--disable-enr-auto-update",
- "--enr-address=" + port_publisher.nat_exit_ip,
- "--enr-udp-port={0}".format(discovery_port),
- "--enr-tcp-port={0}".format(discovery_port),
- # ^^^^^^^^^^^^^^^^^^^ REMOVE THESE WHEN CONNECTING TO EXTERNAL NET ^^^^^^^^^^^^^^^^^^^^^
- # vvvvvvvvvvvvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics",
- "--metrics-address=0.0.0.0",
- "--metrics-port={0}".format(BEACON_METRICS_PORT_NUM),
- # ^^^^^^^^^^^^^^^^^^^ METRICS CONFIG ^^^^^^^^^^^^^^^^^^^^^
- # To enable syncing other networks too without checkpoint syncing
- ]
- validator_default_cmd = [
- "--keystore-dir=" + validator_keys_dirpath,
- "--keystore-password-file=" + validator_secrets_dirpath,
- "--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
- "--graffiti=" + full_name,
- "--enable-private-discovery",
- ]
-
- keymanager_api_cmd = [
- "--enable-validator-api",
- "--validator-api-address=0.0.0.0",
- "--validator-api-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
- "--validator-api-allowed-origins=*",
- # "--validator-api-bearer-file=" + constants.KEYMANAGER_MOUNT_PATH_ON_CONTAINER, Not yet supported
- ]
-
- supernode_cmd = [
- "--subscribe-all-data-column-subnets",
- ]
-
- if participant.supernode:
- cmd.extend(supernode_cmd)
-
- if checkpoint_sync_enabled:
- cmd.append("--checkpoint-sync-url=" + checkpoint_sync_url)
-
- if launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append(
- "--configuration-directory="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- )
- if (
- launcher.network == constants.NETWORK_NAME.kurtosis
- or constants.NETWORK_NAME.shadowfork in launcher.network
- ):
- if bootnode_contexts != None:
- cmd.append(
- "--boot-nodes="
- + ",".join(
- [
- ctx.enr
- for ctx in bootnode_contexts[: constants.MAX_ENR_ENTRIES]
- ]
- )
- )
- elif launcher.network == constants.NETWORK_NAME.ephemery:
- cmd.append(
- "--boot-nodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
- elif constants.NETWORK_NAME.shadowfork in launcher.network:
- cmd.append(
- "--boot-nodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
- else: # Devnets
- cmd.append(
- "--boot-nodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
-
- if len(participant.cl_extra_params) > 0:
- # we do the list comprehension as the default participant.extra_params is a proto repeated string
- cmd.extend([param for param in participant.cl_extra_params])
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if node_keystore_files != None and not participant.use_separate_vc:
- cmd.extend(validator_default_cmd)
- files[
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER
- ] = node_keystore_files.files_artifact_uuid
-
- if participant.keymanager_enabled:
- cmd.extend(keymanager_api_cmd)
- used_ports.update(vc_shared.VALIDATOR_KEYMANAGER_USED_PORTS)
- public_ports.update(
- shared_utils.get_port_specs(validator_public_port_assignment)
- )
-
- if persistent:
- files[BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER] = Directory(
- persistent_key="data-{0}".format(beacon_service_name),
- size=int(participant.cl_volume_size)
- if int(participant.cl_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.CL_TYPE.grandine + "_volume_size"
- ],
- )
- config_args = {
- "image": participant.cl_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "env_vars": participant.cl_extra_env_vars,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "ready_conditions": cl_node_ready_conditions.get_ready_conditions(
- constants.HTTP_PORT_ID
- ),
- "labels": shared_utils.label_maker(
- client=constants.CL_TYPE.grandine,
- client_type=constants.CLIENT_TYPES.cl,
- image=participant.cl_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=el_context.client_name,
- extra_labels=participant.cl_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- "user": User(uid=0, gid=0),
- }
-
- if int(participant.cl_min_cpu) > 0:
- config_args["min_cpu"] = int(participant.cl_min_cpu)
- if int(participant.cl_max_cpu) > 0:
- config_args["max_cpu"] = int(participant.cl_max_cpu)
- if int(participant.cl_min_mem) > 0:
- config_args["min_memory"] = int(participant.cl_min_mem)
- if int(participant.cl_max_mem) > 0:
- config_args["max_memory"] = int(participant.cl_max_mem)
- return ServiceConfig(**config_args)
-
-
-def new_grandine_launcher(
- el_cl_genesis_data,
- jwt_file,
- network_params,
-):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network_params.network,
- )
diff --git a/src/cl/lighthouse/lighthouse_launcher.star b/src/cl/lighthouse/lighthouse_launcher.star
deleted file mode 100644
index de6cd66..0000000
--- a/src/cl/lighthouse/lighthouse_launcher.star
+++ /dev/null
@@ -1,351 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-cl_context = import_module("../../cl/cl_context.star")
-cl_node_ready_conditions = import_module("../../cl/cl_node_ready_conditions.star")
-cl_shared = import_module("../cl_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-
-blobber_launcher = import_module("../../blobber/blobber_launcher.star")
-
-LIGHTHOUSE_BINARY_COMMAND = "lighthouse"
-
-RUST_BACKTRACE_ENVVAR_NAME = "RUST_BACKTRACE"
-RUST_FULL_BACKTRACE_KEYWORD = "full"
-
-# ---------------------------------- Beacon client -------------------------------------
-BEACON_DATA_DIRPATH_ON_BEACON_SERVICE_CONTAINER = "/data/lighthouse/beacon-data"
-
-# Port nums
-BEACON_DISCOVERY_PORT_NUM = 9000
-BEACON_HTTP_PORT_NUM = 4000
-BEACON_METRICS_PORT_NUM = 5054
-
-# The min/max CPU/memory that the beacon node can use
-BEACON_MIN_CPU = 50
-BEACON_MIN_MEMORY = 256
-
-METRICS_PATH = "/metrics"
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "error",
- constants.GLOBAL_LOG_LEVEL.warn: "warn",
- constants.GLOBAL_LOG_LEVEL.info: "info",
- constants.GLOBAL_LOG_LEVEL.debug: "debug",
- constants.GLOBAL_LOG_LEVEL.trace: "trace",
-}
-
-
-def launch(
- plan,
- launcher,
- beacon_service_name,
- participant,
- global_log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.cl_log_level, global_log_level, VERBOSITY_LEVELS
- )
- # Launch Beacon node
- beacon_config = get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
- )
-
- beacon_service = plan.add_service(beacon_service_name, beacon_config)
- beacon_http_port = beacon_service.ports[constants.HTTP_PORT_ID]
- beacon_http_url = "http://{0}:{1}".format(
- beacon_service.ip_address, beacon_http_port.number
- )
-
- # Blobber config
- if participant.blobber_enabled:
- blobber_service_name = "{0}-{1}".format("blobber", beacon_service_name)
- blobber_config = blobber_launcher.get_config(
- blobber_service_name,
- node_keystore_files,
- beacon_http_url,
- participant.blobber_extra_params,
- node_selectors,
- )
-
- blobber_service = plan.add_service(blobber_service_name, blobber_config)
- blobber_http_port = blobber_service.ports[
- blobber_launcher.BLOBBER_VALIDATOR_PROXY_PORT_ID
- ]
- blobber_http_url = "http://{0}:{1}".format(
- blobber_service.ip_address, blobber_http_port.number
- )
- beacon_http_url = blobber_http_url
-
- # TODO(old) add validator availability using the validator API: https://ethereum.github.io/beacon-APIs/?urls.primaryName=v1#/ValidatorRequiredApi | from eth2-merge-kurtosis-module
- beacon_node_identity_recipe = GetHttpRequestRecipe(
- endpoint="/eth/v1/node/identity",
- port_id=constants.HTTP_PORT_ID,
- extract={
- "enr": ".data.enr",
- "multiaddr": ".data.p2p_addresses[0]",
- "peer_id": ".data.peer_id",
- },
- )
- response = plan.request(
- recipe=beacon_node_identity_recipe, service_name=beacon_service_name
- )
- beacon_node_enr = response["extract.enr"]
- beacon_multiaddr = response["extract.multiaddr"]
- beacon_peer_id = response["extract.peer_id"]
-
- beacon_metrics_port = beacon_service.ports[constants.METRICS_PORT_ID]
- beacon_metrics_url = "{0}:{1}".format(
- beacon_service.ip_address, beacon_metrics_port.number
- )
- beacon_node_metrics_info = node_metrics.new_node_metrics_info(
- beacon_service_name, METRICS_PATH, beacon_metrics_url
- )
- nodes_metrics_info = [beacon_node_metrics_info]
- return cl_context.new_cl_context(
- client_name="lighthouse",
- enr=beacon_node_enr,
- ip_addr=beacon_service.ip_address,
- http_port=beacon_http_port.number,
- beacon_http_url=beacon_http_url,
- cl_nodes_metrics_info=nodes_metrics_info,
- beacon_service_name=beacon_service_name,
- multiaddr=beacon_multiaddr,
- peer_id=beacon_peer_id,
- snooper_enabled=participant.snooper_enabled,
- snooper_engine_context=snooper_engine_context,
- validator_keystore_files_artifact_uuid=node_keystore_files.files_artifact_uuid
- if node_keystore_files
- else "",
- supernode=participant.supernode,
- )
-
-
-def get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- # If snooper is enabled use the snooper engine context, otherwise use the execution client context
- if participant.snooper_enabled:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- snooper_engine_context.ip_addr,
- snooper_engine_context.engine_rpc_port_num,
- )
- else:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- el_context.ip_addr,
- el_context.engine_rpc_port_num,
- )
-
- public_ports = {}
- discovery_port = BEACON_DISCOVERY_PORT_NUM
- if port_publisher.cl_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "cl", port_publisher, participant_index
- )
- public_ports, discovery_port = cl_shared.get_general_cl_public_port_specs(
- public_ports_for_component
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.HTTP_PORT_ID: BEACON_HTTP_PORT_NUM,
- constants.METRICS_PORT_ID: BEACON_METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- # NOTE: If connecting to the merge devnet remotely we DON'T want the following flags; when they're not set, the node's external IP address is auto-detected
- # from the peers it communicates with but when they're set they basically say "override the autodetection and
- # use what I specify instead." This requires having a know external IP address and port, which we definitely won't
- # have with a network running in Kurtosis.
- # "--disable-enr-auto-update",
- # "--enr-address=" + externalIpAddress,
- # fmt.Sprintf("--enr-udp-port=%v", BEACON_DISCOVERY_PORT_NUM),
- # fmt.Sprintf("--enr-tcp-port=%v", beaconDiscoveryPortNum),
- cmd = [
- LIGHTHOUSE_BINARY_COMMAND,
- "beacon_node",
- "--debug-level=" + log_level,
- "--datadir=" + BEACON_DATA_DIRPATH_ON_BEACON_SERVICE_CONTAINER,
- # vvvvvvvvvvvvvvvvvvv REMOVE THESE WHEN CONNECTING TO EXTERNAL NET vvvvvvvvvvvvvvvvvvvvv
- "--disable-enr-auto-update",
- "--enr-address=" + port_publisher.nat_exit_ip,
- "--enr-udp-port={0}".format(discovery_port),
- "--enr-tcp-port={0}".format(discovery_port),
- # ^^^^^^^^^^^^^^^^^^^ REMOVE THESE WHEN CONNECTING TO EXTERNAL NET ^^^^^^^^^^^^^^^^^^^^^
- "--listen-address=0.0.0.0",
- "--port={0}".format(
- discovery_port
- ), # NOTE: Remove for connecting to external net!
- "--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)
- "--disable-packet-filter",
- "--execution-endpoints=" + EXECUTION_ENGINE_ENDPOINT,
- "--jwt-secrets=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
- # vvvvvvvvvvvvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics",
- "--metrics-address=0.0.0.0",
- "--metrics-allow-origin=*",
- "--metrics-port={0}".format(BEACON_METRICS_PORT_NUM),
- # ^^^^^^^^^^^^^^^^^^^ METRICS CONFIG ^^^^^^^^^^^^^^^^^^^^^
- # Enable this flag once we have https://github.com/sigp/lighthouse/issues/5054 fixed
- # "--allow-insecure-genesis-sync",
- "--enable-private-discovery",
- ]
-
- supernode_cmd = [
- "--subscribe-all-data-column-subnets",
- ]
-
- if participant.supernode:
- cmd.extend(supernode_cmd)
-
- if checkpoint_sync_enabled:
- cmd.append("--checkpoint-sync-url=" + checkpoint_sync_url)
-
- if launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append("--testnet-dir=" + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER)
- if (
- launcher.network == constants.NETWORK_NAME.kurtosis
- or constants.NETWORK_NAME.shadowfork in launcher.network
- ):
- if bootnode_contexts != None:
- cmd.append(
- "--boot-nodes="
- + ",".join(
- [
- ctx.enr
- for ctx in bootnode_contexts[: constants.MAX_ENR_ENTRIES]
- ]
- )
- )
- elif launcher.network == constants.NETWORK_NAME.ephemery:
- cmd.append(
- "--boot-nodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
- else: # Devnets
- cmd.append(
- "--boot-nodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
- else: # Public networks
- cmd.append("--network=" + launcher.network)
-
- if len(participant.cl_extra_params) > 0:
- # this is a repeated, we convert it into Starlark
- cmd.extend([param for param in participant.cl_extra_params])
-
- recipe = GetHttpRequestRecipe(
- endpoint="/eth/v1/node/identity", port_id=constants.HTTP_PORT_ID
- )
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if persistent:
- files[BEACON_DATA_DIRPATH_ON_BEACON_SERVICE_CONTAINER] = Directory(
- persistent_key="data-{0}".format(beacon_service_name),
- size=int(participant.cl_volume_size)
- if int(participant.cl_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.CL_TYPE.lighthouse + "_volume_size"
- ],
- )
- env_vars = {RUST_BACKTRACE_ENVVAR_NAME: RUST_FULL_BACKTRACE_KEYWORD}
- env_vars.update(participant.cl_extra_env_vars)
- config_args = {
- "image": participant.cl_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "env_vars": env_vars,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "ready_conditions": cl_node_ready_conditions.get_ready_conditions(
- constants.HTTP_PORT_ID
- ),
- "labels": shared_utils.label_maker(
- client=constants.CL_TYPE.lighthouse,
- client_type=constants.CLIENT_TYPES.cl,
- image=participant.cl_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=el_context.client_name,
- extra_labels=participant.cl_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if int(participant.cl_min_cpu) > 0:
- config_args["min_cpu"] = int(participant.cl_min_cpu)
- if int(participant.cl_max_cpu) > 0:
- config_args["max_cpu"] = int(participant.cl_max_cpu)
- if int(participant.cl_min_mem) > 0:
- config_args["min_memory"] = int(participant.cl_min_mem)
- if int(participant.cl_max_mem) > 0:
- config_args["max_memory"] = int(participant.cl_max_mem)
- return ServiceConfig(**config_args)
-
-
-def new_lighthouse_launcher(el_cl_genesis_data, jwt_file, network_params):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network_params.network,
- )
diff --git a/src/cl/lodestar/lodestar_launcher.star b/src/cl/lodestar/lodestar_launcher.star
deleted file mode 100644
index c8ea673..0000000
--- a/src/cl/lodestar/lodestar_launcher.star
+++ /dev/null
@@ -1,345 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-cl_context = import_module("../../cl/cl_context.star")
-cl_node_ready_conditions = import_module("../../cl/cl_node_ready_conditions.star")
-cl_shared = import_module("../cl_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-blobber_launcher = import_module("../../blobber/blobber_launcher.star")
-constants = import_module("../../package_io/constants.star")
-
-# ---------------------------------- Beacon client -------------------------------------
-BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER = "/data/lodestar/beacon-data"
-
-# Port nums
-BEACON_DISCOVERY_PORT_NUM = 9000
-BEACON_HTTP_PORT_NUM = 4000
-BEACON_METRICS_PORT_NUM = 8008
-
-METRICS_PATH = "/metrics"
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "error",
- constants.GLOBAL_LOG_LEVEL.warn: "warn",
- constants.GLOBAL_LOG_LEVEL.info: "info",
- constants.GLOBAL_LOG_LEVEL.debug: "debug",
- constants.GLOBAL_LOG_LEVEL.trace: "trace",
-}
-
-
-def launch(
- plan,
- launcher,
- beacon_service_name,
- participant,
- global_log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.cl_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- # Launch Beacon node
- beacon_config = get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
- )
-
- beacon_service = plan.add_service(beacon_service_name, beacon_config)
-
- beacon_http_port = beacon_service.ports[constants.HTTP_PORT_ID]
-
- beacon_http_url = "http://{0}:{1}".format(
- beacon_service.ip_address, beacon_http_port.number
- )
-
- # Blobber config
- if participant.blobber_enabled:
- blobber_service_name = "{0}-{1}".format("blobber", beacon_service_name)
- blobber_config = blobber_launcher.get_config(
- blobber_service_name,
- node_keystore_files,
- beacon_http_url,
- participant.blobber_extra_params,
- )
-
- blobber_service = plan.add_service(blobber_service_name, blobber_config)
- blobber_http_port = blobber_service.ports[
- blobber_launcher.BLOBBER_VALIDATOR_PROXY_PORT_ID
- ]
- blobber_http_url = "http://{0}:{1}".format(
- blobber_service.ip_address, blobber_http_port.number
- )
- beacon_http_url = blobber_http_url
-
- # TODO(old) add validator availability using the validator API: https://ethereum.github.io/beacon-APIs/?urls.primaryName=v1#/ValidatorRequiredApi | from eth2-merge-kurtosis-module
-
- beacon_node_identity_recipe = GetHttpRequestRecipe(
- endpoint="/eth/v1/node/identity",
- port_id=constants.HTTP_PORT_ID,
- extract={
- "enr": ".data.enr",
- "multiaddr": ".data.p2p_addresses[-1]",
- "peer_id": ".data.peer_id",
- },
- )
- response = plan.request(
- recipe=beacon_node_identity_recipe, service_name=beacon_service_name
- )
- beacon_node_enr = response["extract.enr"]
- beacon_multiaddr = response["extract.multiaddr"]
- beacon_peer_id = response["extract.peer_id"]
-
- beacon_metrics_port = beacon_service.ports[constants.METRICS_PORT_ID]
- beacon_metrics_url = "{0}:{1}".format(
- beacon_service.ip_address, beacon_metrics_port.number
- )
-
- beacon_node_metrics_info = node_metrics.new_node_metrics_info(
- beacon_service_name, METRICS_PATH, beacon_metrics_url
- )
- nodes_metrics_info = [beacon_node_metrics_info]
-
- return cl_context.new_cl_context(
- client_name="lodestar",
- enr=beacon_node_enr,
- ip_addr=beacon_service.ip_address,
- http_port=beacon_http_port.number,
- beacon_http_url=beacon_http_url,
- cl_nodes_metrics_info=nodes_metrics_info,
- beacon_service_name=beacon_service_name,
- multiaddr=beacon_multiaddr,
- peer_id=beacon_peer_id,
- snooper_enabled=participant.snooper_enabled,
- snooper_engine_context=snooper_engine_context,
- validator_keystore_files_artifact_uuid=node_keystore_files.files_artifact_uuid
- if node_keystore_files
- else "",
- supernode=participant.supernode,
- )
-
-
-def get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- el_client_rpc_url_str = "http://{0}:{1}".format(
- el_context.ip_addr,
- el_context.rpc_port_num,
- )
-
- # If snooper is enabled use the snooper engine context, otherwise use the execution client context
- if participant.snooper_enabled:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- snooper_engine_context.ip_addr,
- snooper_engine_context.engine_rpc_port_num,
- )
- else:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- el_context.ip_addr,
- el_context.engine_rpc_port_num,
- )
-
- public_ports = {}
- discovery_port = BEACON_DISCOVERY_PORT_NUM
- if port_publisher.cl_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "cl", port_publisher, participant_index
- )
- public_ports, discovery_port = cl_shared.get_general_cl_public_port_specs(
- public_ports_for_component
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.HTTP_PORT_ID: BEACON_HTTP_PORT_NUM,
- constants.METRICS_PORT_ID: BEACON_METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = [
- "beacon",
- "--logLevel=" + log_level,
- "--port={0}".format(discovery_port),
- "--discoveryPort={0}".format(discovery_port),
- "--dataDir=" + BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER,
- "--chain.persistInvalidSszObjects=true",
- "--eth1.depositContractDeployBlock=0",
- "--network.connectToDiscv5Bootnodes=true",
- "--discv5=true",
- "--eth1=true",
- "--eth1.providerUrls=" + el_client_rpc_url_str,
- "--execution.urls=" + EXECUTION_ENGINE_ENDPOINT,
- "--rest=true",
- "--rest.address=0.0.0.0",
- "--rest.namespace=*",
- "--rest.port={0}".format(BEACON_HTTP_PORT_NUM),
- "--nat=true",
- "--enr.ip=" + port_publisher.nat_exit_ip,
- "--enr.tcp={0}".format(discovery_port),
- "--enr.udp={0}".format(discovery_port),
- "--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- # vvvvvvvvvvvvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics",
- "--metrics.address=0.0.0.0",
- "--metrics.port={0}".format(BEACON_METRICS_PORT_NUM),
- # ^^^^^^^^^^^^^^^^^^^ METRICS CONFIG ^^^^^^^^^^^^^^^^^^^^^
- ]
-
- supernode_cmd = [
- "--supernode",
- ]
-
- if participant.supernode:
- cmd.extend(supernode_cmd)
-
- if checkpoint_sync_enabled:
- cmd.append("--checkpointSyncUrl=" + checkpoint_sync_url)
-
- if launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append(
- "--paramsFile="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/config.yaml"
- )
- cmd.append(
- "--genesisStateFile="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/genesis.ssz"
- )
- if (
- launcher.network == constants.NETWORK_NAME.kurtosis
- or constants.NETWORK_NAME.shadowfork in launcher.network
- ):
- if bootnode_contexts != None:
- cmd.append(
- "--bootnodes="
- + ",".join(
- [
- ctx.enr
- for ctx in bootnode_contexts[: constants.MAX_ENR_ENTRIES]
- ]
- )
- )
- elif launcher.network == constants.NETWORK_NAME.ephemery:
- cmd.append(
- "--bootnodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
- else: # Devnets
- cmd.append(
- "--bootnodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
- else: # Public testnet
- cmd.append("--network=" + launcher.network)
-
- if len(participant.cl_extra_params) > 0:
- # this is a repeated, we convert it into Starlark
- cmd.extend([param for param in participant.cl_extra_params])
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if persistent:
- files[BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER] = Directory(
- persistent_key="data-{0}".format(beacon_service_name),
- size=int(participant.cl_volume_size)
- if int(participant.cl_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.CL_TYPE.lodestar + "_volume_size"
- ],
- )
-
- env_vars = participant.cl_extra_env_vars
-
- if launcher.preset == "minimal":
- env_vars["LODESTAR_PRESET"] = "minimal"
-
- config_args = {
- "image": participant.cl_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "env_vars": env_vars,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "ready_conditions": cl_node_ready_conditions.get_ready_conditions(
- constants.HTTP_PORT_ID
- ),
- "labels": shared_utils.label_maker(
- client=constants.CL_TYPE.lodestar,
- client_type=constants.CLIENT_TYPES.cl,
- image=participant.cl_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=el_context.client_name,
- extra_labels=participant.cl_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if int(participant.cl_min_cpu) > 0:
- config_args["min_cpu"] = int(participant.cl_min_cpu)
- if int(participant.cl_max_cpu) > 0:
- config_args["max_cpu"] = int(participant.cl_max_cpu)
- if int(participant.cl_min_mem) > 0:
- config_args["min_memory"] = int(participant.cl_min_mem)
- if int(participant.cl_max_mem) > 0:
- config_args["max_memory"] = int(participant.cl_max_mem)
- return ServiceConfig(**config_args)
-
-
-def new_lodestar_launcher(el_cl_genesis_data, jwt_file, network_params):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network_params.network,
- preset=network_params.preset,
- )
diff --git a/src/cl/nimbus/nimbus_launcher.star b/src/cl/nimbus/nimbus_launcher.star
deleted file mode 100644
index 19b356b..0000000
--- a/src/cl/nimbus/nimbus_launcher.star
+++ /dev/null
@@ -1,367 +0,0 @@
-# ---------------------------------- Library Imports ----------------------------------
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-cl_context = import_module("../../cl/cl_context.star")
-cl_node_ready_conditions = import_module("../../cl/cl_node_ready_conditions.star")
-cl_shared = import_module("../cl_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-vc_shared = import_module("../../vc/shared.star")
-# ---------------------------------- Beacon client -------------------------------------
-# Nimbus requires that its data directory already exists (because it expects you to bind-mount it), so we
-# have to to create it
-BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER = "/data/nimbus/beacon-data"
-
-# Port nums
-BEACON_DISCOVERY_PORT_NUM = 9000
-BEACON_HTTP_PORT_NUM = 4000
-BEACON_METRICS_PORT_NUM = 8008
-
-# The min/max CPU/memory that the beacon node can use
-BEACON_MIN_CPU = 50
-BEACON_MIN_MEMORY = 256
-
-DEFAULT_BEACON_IMAGE_ENTRYPOINT = ["nimbus_beacon_node"]
-BEACON_NODE_ENTRYPOINT = "/home/user/nimbus-eth2/build/nimbus_beacon_node"
-BEACON_METRICS_PATH = "/metrics"
-
-VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS = "/data/nimbus/validator-keys"
-# ---------------------------------- Genesis Files ----------------------------------
-
-# Nimbus needs write access to the validator keys/secrets directories, and b/c the module container runs as root
-# while the Nimbus container does not, we can't just point the Nimbus binary to the paths in the shared dir because
-# it won't be able to open them. To get around this, we copy the validator keys/secrets to a path inside the Nimbus
-# container that is owned by the container's user
-
-# ---------------------------------- Metrics ----------------------------------
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "ERROR",
- constants.GLOBAL_LOG_LEVEL.warn: "WARN",
- constants.GLOBAL_LOG_LEVEL.info: "INFO",
- constants.GLOBAL_LOG_LEVEL.debug: "DEBUG",
- constants.GLOBAL_LOG_LEVEL.trace: "TRACE",
-}
-
-ENTRYPOINT_ARGS = ["sh", "-c"]
-
-
-def launch(
- plan,
- launcher,
- beacon_service_name,
- participant,
- global_log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.cl_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- beacon_config = get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
- )
-
- beacon_service = plan.add_service(beacon_service_name, beacon_config)
- beacon_http_port = beacon_service.ports[constants.HTTP_PORT_ID]
- beacon_metrics_port = beacon_service.ports[constants.METRICS_PORT_ID]
- beacon_http_url = "http://{0}:{1}".format(
- beacon_service.ip_address, beacon_http_port.number
- )
- beacon_metrics_url = "{0}:{1}".format(
- beacon_service.ip_address, beacon_metrics_port.number
- )
-
- beacon_node_identity_recipe = GetHttpRequestRecipe(
- endpoint="/eth/v1/node/identity",
- port_id=constants.HTTP_PORT_ID,
- extract={
- "enr": ".data.enr",
- "multiaddr": ".data.p2p_addresses[0]",
- "peer_id": ".data.peer_id",
- },
- )
- response = plan.request(
- recipe=beacon_node_identity_recipe, service_name=beacon_service_name
- )
- beacon_node_enr = response["extract.enr"]
- beacon_multiaddr = response["extract.multiaddr"]
- beacon_peer_id = response["extract.peer_id"]
-
- nimbus_node_metrics_info = node_metrics.new_node_metrics_info(
- beacon_service_name, BEACON_METRICS_PATH, beacon_metrics_url
- )
- nodes_metrics_info = [nimbus_node_metrics_info]
-
- return cl_context.new_cl_context(
- client_name="nimbus",
- enr=beacon_node_enr,
- ip_addr=beacon_service.ip_address,
- http_port=beacon_http_port.number,
- beacon_http_url=beacon_http_url,
- cl_nodes_metrics_info=nodes_metrics_info,
- beacon_service_name=beacon_service_name,
- multiaddr=beacon_multiaddr,
- peer_id=beacon_peer_id,
- snooper_enabled=participant.snooper_enabled,
- snooper_engine_context=snooper_engine_context,
- validator_keystore_files_artifact_uuid=node_keystore_files.files_artifact_uuid
- if node_keystore_files
- else "",
- supernode=participant.supernode,
- )
-
-
-def get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- validator_keys_dirpath = ""
- validator_secrets_dirpath = ""
- if node_keystore_files != None:
- validator_keys_dirpath = shared_utils.path_join(
- VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS,
- node_keystore_files.nimbus_keys_relative_dirpath,
- )
- validator_secrets_dirpath = shared_utils.path_join(
- VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS,
- node_keystore_files.raw_secrets_relative_dirpath,
- )
- # If snooper is enabled use the snooper engine context, otherwise use the execution client context
- if participant.snooper_enabled:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- snooper_engine_context.ip_addr,
- snooper_engine_context.engine_rpc_port_num,
- )
- else:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- el_context.ip_addr,
- el_context.engine_rpc_port_num,
- )
-
- public_ports = {}
- discovery_port = BEACON_DISCOVERY_PORT_NUM
- validator_public_port_assignment = {}
- if port_publisher.cl_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "cl", port_publisher, participant_index
- )
- validator_public_port_assignment = {
- constants.VALIDATOR_HTTP_PORT_ID: public_ports_for_component[3]
- }
- public_ports, discovery_port = cl_shared.get_general_cl_public_port_specs(
- public_ports_for_component
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.HTTP_PORT_ID: BEACON_HTTP_PORT_NUM,
- constants.METRICS_PORT_ID: BEACON_METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- nimbus_checkpoint_sync_subtask_str = "{0} trustedNodeSync --data-dir={1} --trusted-node-url={2} --network={3} --backfill=false".format(
- BEACON_NODE_ENTRYPOINT,
- BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER,
- checkpoint_sync_url,
- launcher.network
- if launcher.network in constants.PUBLIC_NETWORKS
- else constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER,
- )
-
- cmd = [
- "{0}".format(BEACON_NODE_ENTRYPOINT),
- "--non-interactive=true",
- "--log-level=" + log_level,
- "--udp-port={0}".format(discovery_port),
- "--tcp-port={0}".format(discovery_port),
- "--network={0}".format(
- launcher.network
- if launcher.network in constants.PUBLIC_NETWORKS
- else constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- ),
- "--data-dir=" + BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER,
- "--web3-url=" + EXECUTION_ENGINE_ENDPOINT,
- "--nat=extip:" + port_publisher.nat_exit_ip,
- "--enr-auto-update=false",
- "--history={0}".format("archive" if constants.ARCHIVE_MODE else "prune"),
- "--rest",
- "--rest-address=0.0.0.0",
- "--rest-allow-origin=*",
- "--rest-port={0}".format(BEACON_HTTP_PORT_NUM),
- # There's a bug where if we don't set this flag, the Nimbus nodes won't work:
- # https://discord.com/channels/641364059387854899/674288681737256970/922890280120750170
- # https://github.com/status-im/nimbus-eth2/issues/2451
- "--doppelganger-detection=false",
- # Nimbus can handle a max of 256 threads, if the host has more then nimbus crashes. Setting it to 4 so it doesn't crash on build servers
- "--num-threads=4",
- "--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- # vvvvvvvvvvvvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics",
- "--metrics-address=0.0.0.0",
- "--metrics-port={0}".format(BEACON_METRICS_PORT_NUM),
- # ^^^^^^^^^^^^^^^^^^^ METRICS CONFIG ^^^^^^^^^^^^^^^^^^^^^
- ]
-
- validator_default_cmd = [
- "--validators-dir=" + validator_keys_dirpath,
- "--secrets-dir=" + validator_secrets_dirpath,
- "--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
- "--graffiti=" + full_name,
- ]
-
- keymanager_api_cmd = [
- "--keymanager",
- "--keymanager-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
- "--keymanager-address=0.0.0.0",
- "--keymanager-allow-origin=*",
- "--keymanager-token-file=" + constants.KEYMANAGER_MOUNT_PATH_ON_CONTAINER,
- ]
-
- supernode_cmd = [
- "--subscribe-all-subnets",
- ]
-
- if participant.supernode:
- cmd.extend(supernode_cmd)
-
- if launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append(
- "--bootstrap-file="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/bootstrap_nodes.txt"
- )
- if (
- launcher.network == constants.NETWORK_NAME.kurtosis
- or constants.NETWORK_NAME.shadowfork in launcher.network
- ):
- if bootnode_contexts == None:
- cmd.append("--subscribe-all-subnets")
- else:
- for ctx in bootnode_contexts[: constants.MAX_ENR_ENTRIES]:
- cmd.append("--bootstrap-node=" + ctx.enr)
-
- if len(participant.cl_extra_params) > 0:
- cmd.extend([param for param in participant.cl_extra_params])
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if node_keystore_files != None and not participant.use_separate_vc:
- cmd.extend(validator_default_cmd)
- files[
- VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS
- ] = node_keystore_files.files_artifact_uuid
- files[constants.KEYMANAGER_MOUNT_PATH_ON_CLIENTS] = launcher.keymanager_file
-
- if participant.keymanager_enabled:
- cmd.extend(keymanager_api_cmd)
- used_ports.update(vc_shared.VALIDATOR_KEYMANAGER_USED_PORTS)
- public_ports.update(
- shared_utils.get_port_specs(validator_public_port_assignment)
- )
-
- if persistent:
- files[BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER] = Directory(
- persistent_key="data-{0}".format(beacon_service_name),
- size=int(participant.cl_volume_size)
- if int(participant.cl_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.CL_TYPE.nimbus + "_volume_size"
- ],
- )
-
- cmd_str = " ".join(cmd)
- if checkpoint_sync_enabled:
- command_str = " && ".join([nimbus_checkpoint_sync_subtask_str, cmd_str])
- else:
- command_str = cmd_str
-
- config_args = {
- "image": participant.cl_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": [command_str],
- "files": files,
- "env_vars": participant.cl_extra_env_vars,
- "entrypoint": ENTRYPOINT_ARGS,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "ready_conditions": cl_node_ready_conditions.get_ready_conditions(
- constants.HTTP_PORT_ID
- ),
- "labels": shared_utils.label_maker(
- client=constants.CL_TYPE.nimbus,
- client_type=constants.CLIENT_TYPES.cl,
- image=participant.cl_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=el_context.client_name,
- extra_labels=participant.cl_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- "user": User(uid=0, gid=0),
- }
-
- if int(participant.cl_min_cpu) > 0:
- config_args["min_cpu"] = int(participant.cl_min_cpu)
- if int(participant.cl_max_cpu) > 0:
- config_args["max_cpu"] = int(participant.cl_max_cpu)
- if int(participant.cl_min_mem) > 0:
- config_args["min_memory"] = int(participant.cl_min_mem)
- if int(participant.cl_max_mem) > 0:
- config_args["max_memory"] = int(participant.cl_max_mem)
- return ServiceConfig(**config_args)
-
-
-def new_nimbus_launcher(el_cl_genesis_data, jwt_file, network_params, keymanager_file):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network_params.network,
- keymanager_file=keymanager_file,
- )
diff --git a/src/cl/prysm/prysm_launcher.star b/src/cl/qrysm/qrysm_launcher.star
similarity index 95%
rename from src/cl/prysm/prysm_launcher.star
rename to src/cl/qrysm/qrysm_launcher.star
index b181b3c..1022ceb 100644
--- a/src/cl/prysm/prysm_launcher.star
+++ b/src/cl/qrysm/qrysm_launcher.star
@@ -7,7 +7,7 @@ node_metrics = import_module("../../node_metrics_info.star")
constants = import_module("../../package_io/constants.star")
# ---------------------------------- Beacon client -------------------------------------
-BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER = "/data/prysm/beacon-data/"
+BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER = "/data/qrysm/beacon-data/"
# Port nums
DISCOVERY_TCP_PORT_NUM = 13000
@@ -85,7 +85,7 @@ def launch(
# TODO(old) add validator availability using the validator API: https://ethereum.github.io/beacon-APIs/?urls.primaryName=v1#/ValidatorRequiredApi | from eth2-merge-kurtosis-module
beacon_node_identity_recipe = GetHttpRequestRecipe(
- endpoint="/eth/v1/node/identity",
+ endpoint="/zond/v1/node/identity",
port_id=constants.HTTP_PORT_ID,
extract={
"enr": ".data.enr",
@@ -110,7 +110,7 @@ def launch(
nodes_metrics_info = [beacon_node_metrics_info]
return cl_context.new_cl_context(
- client_name="prysm",
+ client_name="qrysm",
enr=beacon_node_enr,
ip_addr=beacon_service.ip_address,
http_port=beacon_http_port.number,
@@ -199,9 +199,12 @@ def get_beacon_config(
"--execution-endpoint=" + EXECUTION_ENGINE_ENDPOINT,
"--rpc-host=0.0.0.0",
"--rpc-port={0}".format(RPC_PORT_NUM),
- "--http-host=0.0.0.0",
- "--http-cors-domain=*",
- "--http-port={0}".format(BEACON_HTTP_PORT_NUM),
+ "--grpc-gateway-host=0.0.0.0",
+ "--grpc-gateway-corsdomain=*",
+ "--grpc-gateway-port={0}".format(BEACON_HTTP_PORT_NUM),
+ # "--http-host=0.0.0.0",
+ # "--http-cors-domain=*",
+ # "--http-port={0}".format(BEACON_HTTP_PORT_NUM),
"--p2p-host-ip=" + port_publisher.nat_exit_ip,
"--p2p-tcp-port={0}".format(discovery_port),
"--p2p-udp-port={0}".format(discovery_port_udp),
@@ -290,7 +293,7 @@ def get_beacon_config(
size=int(participant.cl_volume_size)
if int(participant.cl_volume_size) > 0
else constants.VOLUME_SIZE[launcher.network][
- constants.CL_TYPE.prysm + "_volume_size"
+ constants.CL_TYPE.qrysm + "_volume_size"
],
)
@@ -306,7 +309,7 @@ def get_beacon_config(
constants.HTTP_PORT_ID
),
"labels": shared_utils.label_maker(
- client=constants.CL_TYPE.prysm,
+ client=constants.CL_TYPE.qrysm,
client_type=constants.CLIENT_TYPES.cl,
image=participant.cl_image[-constants.MAX_LABEL_LENGTH :],
connected_client=el_context.client_name,
@@ -328,7 +331,7 @@ def get_beacon_config(
return ServiceConfig(**config_args)
-def new_prysm_launcher(
+def new_qrysm_launcher(
el_cl_genesis_data,
jwt_file,
network_params,
diff --git a/src/cl/teku/teku_launcher.star b/src/cl/teku/teku_launcher.star
deleted file mode 100644
index 7a0545e..0000000
--- a/src/cl/teku/teku_launcher.star
+++ /dev/null
@@ -1,376 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-cl_context = import_module("../../cl/cl_context.star")
-cl_node_ready_conditions = import_module("../../cl/cl_node_ready_conditions.star")
-cl_shared = import_module("../cl_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-vc_shared = import_module("../../vc/shared.star")
-
-# ---------------------------------- Beacon client -------------------------------------
-TEKU_BINARY_FILEPATH_IN_IMAGE = "/opt/teku/bin/teku"
-
-# The Docker container runs as the "teku" user so we can't write to root
-BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER = "/data/teku/teku-beacon-data"
-
-# Port nums
-BEACON_DISCOVERY_PORT_NUM = 9000
-BEACON_HTTP_PORT_NUM = 4000
-BEACON_METRICS_PORT_NUM = 8008
-
-BEACON_METRICS_PATH = "/metrics"
-
-MIN_PEERS = 1
-
-ENTRYPOINT_ARGS = ["sh", "-c"]
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "ERROR",
- constants.GLOBAL_LOG_LEVEL.warn: "WARN",
- constants.GLOBAL_LOG_LEVEL.info: "INFO",
- constants.GLOBAL_LOG_LEVEL.debug: "DEBUG",
- constants.GLOBAL_LOG_LEVEL.trace: "TRACE",
-}
-
-
-def launch(
- plan,
- launcher,
- beacon_service_name,
- participant,
- global_log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.cl_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- config = get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
- )
-
- beacon_service = plan.add_service(beacon_service_name, config)
-
- beacon_http_port = beacon_service.ports[constants.HTTP_PORT_ID]
- beacon_http_url = "http://{0}:{1}".format(
- beacon_service.ip_address, beacon_http_port.number
- )
-
- beacon_metrics_port = beacon_service.ports[constants.METRICS_PORT_ID]
- beacon_metrics_url = "{0}:{1}".format(
- beacon_service.ip_address, beacon_metrics_port.number
- )
-
- beacon_node_identity_recipe = GetHttpRequestRecipe(
- endpoint="/eth/v1/node/identity",
- port_id=constants.HTTP_PORT_ID,
- extract={
- "enr": ".data.enr",
- "multiaddr": ".data.p2p_addresses[0]",
- "peer_id": ".data.peer_id",
- },
- )
- response = plan.request(
- recipe=beacon_node_identity_recipe, service_name=beacon_service_name
- )
- beacon_node_enr = response["extract.enr"]
- beacon_multiaddr = response["extract.multiaddr"]
- beacon_peer_id = response["extract.peer_id"]
-
- beacon_node_metrics_info = node_metrics.new_node_metrics_info(
- beacon_service_name, BEACON_METRICS_PATH, beacon_metrics_url
- )
- nodes_metrics_info = [beacon_node_metrics_info]
-
- return cl_context.new_cl_context(
- client_name="teku",
- enr=beacon_node_enr,
- ip_addr=beacon_service.ip_address,
- http_port=beacon_http_port.number,
- beacon_http_url=beacon_http_url,
- cl_nodes_metrics_info=nodes_metrics_info,
- beacon_service_name=beacon_service_name,
- multiaddr=beacon_multiaddr,
- peer_id=beacon_peer_id,
- snooper_enabled=participant.snooper_enabled,
- snooper_engine_context=snooper_engine_context,
- validator_keystore_files_artifact_uuid=node_keystore_files.files_artifact_uuid
- if node_keystore_files
- else "",
- supernode=participant.supernode,
- )
-
-
-def get_beacon_config(
- plan,
- launcher,
- beacon_service_name,
- participant,
- log_level,
- bootnode_contexts,
- el_context,
- full_name,
- node_keystore_files,
- snooper_engine_context,
- persistent,
- tolerations,
- node_selectors,
- checkpoint_sync_enabled,
- checkpoint_sync_url,
- port_publisher,
- participant_index,
-):
- validator_keys_dirpath = ""
- validator_secrets_dirpath = ""
- if node_keystore_files:
- validator_keys_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.teku_keys_relative_dirpath,
- )
- validator_secrets_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.teku_secrets_relative_dirpath,
- )
- # If snooper is enabled use the snooper engine context, otherwise use the execution client context
- if participant.snooper_enabled:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- snooper_engine_context.ip_addr,
- snooper_engine_context.engine_rpc_port_num,
- )
- else:
- EXECUTION_ENGINE_ENDPOINT = "http://{0}:{1}".format(
- el_context.ip_addr,
- el_context.engine_rpc_port_num,
- )
-
- public_ports = {}
- discovery_port = BEACON_DISCOVERY_PORT_NUM
- validator_public_port_assignment = {}
- if port_publisher.cl_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "cl", port_publisher, participant_index
- )
- validator_public_port_assignment = {
- constants.VALIDATOR_HTTP_PORT_ID: public_ports_for_component[3]
- }
- public_ports, discovery_port = cl_shared.get_general_cl_public_port_specs(
- public_ports_for_component
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.HTTP_PORT_ID: BEACON_HTTP_PORT_NUM,
- constants.METRICS_PORT_ID: BEACON_METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = [
- "--logging=" + log_level,
- "--log-destination=CONSOLE",
- "--network={0}".format(
- launcher.network
- if launcher.network in constants.PUBLIC_NETWORKS
- else constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/config.yaml"
- ),
- "--data-path=" + BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER,
- "--data-storage-mode={0}".format(
- "ARCHIVE" if constants.ARCHIVE_MODE else "PRUNE"
- ),
- "--p2p-enabled=true",
- "--p2p-peer-lower-bound={0}".format(MIN_PEERS),
- "--p2p-advertised-ip=" + port_publisher.nat_exit_ip,
- "--p2p-discovery-site-local-addresses-enabled=true",
- "--p2p-port={0}".format(discovery_port),
- "--rest-api-enabled=true",
- "--rest-api-docs-enabled=true",
- "--rest-api-interface=0.0.0.0",
- "--rest-api-port={0}".format(BEACON_HTTP_PORT_NUM),
- "--rest-api-host-allowlist=*",
- "--data-storage-non-canonical-blocks-enabled=true",
- "--ee-jwt-secret-file=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--ee-endpoint=" + EXECUTION_ENGINE_ENDPOINT,
- # vvvvvvvvvvvvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics-enabled",
- "--metrics-interface=0.0.0.0",
- "--metrics-host-allowlist=*",
- "--metrics-categories=BEACON,PROCESS,LIBP2P,JVM,NETWORK,PROCESS",
- "--metrics-port={0}".format(BEACON_METRICS_PORT_NUM),
- # ^^^^^^^^^^^^^^^^^^^ METRICS CONFIG ^^^^^^^^^^^^^^^^^^^^^
- # To enable syncing other networks too without checkpoint syncing
- "--ignore-weak-subjectivity-period-enabled=true",
- ]
- validator_default_cmd = [
- "--validator-keys={0}:{1}".format(
- validator_keys_dirpath,
- validator_secrets_dirpath,
- ),
- "--validators-proposer-default-fee-recipient="
- + constants.VALIDATING_REWARDS_ACCOUNT,
- "--validators-graffiti=" + full_name,
- ]
-
- keymanager_api_cmd = [
- "--validator-api-enabled=true",
- "--validator-api-host-allowlist=*",
- "--validator-api-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
- "--validator-api-interface=0.0.0.0",
- "--validator-api-bearer-file=" + constants.KEYMANAGER_MOUNT_PATH_ON_CONTAINER,
- "--Xvalidator-api-ssl-enabled=false",
- "--Xvalidator-api-unsafe-hosts-enabled=true",
- ]
-
- supernode_cmd = [
- "--p2p-subscribe-all-custody-subnets-enabled=true",
- ]
-
- if participant.supernode:
- cmd.extend(supernode_cmd)
-
- if checkpoint_sync_enabled:
- cmd.append("--checkpoint-sync-url=" + checkpoint_sync_url)
-
- if launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append(
- "--initial-state="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/genesis.ssz"
- )
- if (
- launcher.network == constants.NETWORK_NAME.kurtosis
- or constants.NETWORK_NAME.shadowfork in launcher.network
- ):
- if bootnode_contexts != None:
- cmd.append(
- "--p2p-discovery-bootnodes="
- + ",".join(
- [
- ctx.enr
- for ctx in bootnode_contexts[: constants.MAX_ENR_ENTRIES]
- ]
- )
- )
- elif launcher.network == constants.NETWORK_NAME.ephemery:
- cmd.append(
- "--p2p-discovery-bootnodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
- elif constants.NETWORK_NAME.shadowfork in launcher.network:
- cmd.append(
- "--p2p-discovery-bootnodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
- else: # Devnets
- cmd.append(
- "--p2p-discovery-bootnodes="
- + shared_utils.get_devnet_enrs_list(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
-
- if len(participant.cl_extra_params) > 0:
- # we do the list comprehension as the default extra_params is a proto repeated string
- cmd.extend([param for param in participant.cl_extra_params])
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if node_keystore_files != None and not participant.use_separate_vc:
- cmd.extend(validator_default_cmd)
- files[
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER
- ] = node_keystore_files.files_artifact_uuid
-
- if participant.keymanager_enabled:
- files[constants.KEYMANAGER_MOUNT_PATH_ON_CLIENTS] = launcher.keymanager_file
- cmd.extend(keymanager_api_cmd)
- used_ports.update(vc_shared.VALIDATOR_KEYMANAGER_USED_PORTS)
- public_ports.update(
- shared_utils.get_port_specs(validator_public_port_assignment)
- )
-
- if persistent:
- files[BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER] = Directory(
- persistent_key="data-{0}".format(beacon_service_name),
- size=int(participant.cl_volume_size)
- if int(participant.cl_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.CL_TYPE.teku + "_volume_size"
- ],
- )
-
- config_args = {
- "image": participant.cl_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "env_vars": participant.cl_extra_env_vars,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "ready_conditions": cl_node_ready_conditions.get_ready_conditions(
- constants.HTTP_PORT_ID
- ),
- "labels": shared_utils.label_maker(
- client=constants.CL_TYPE.teku,
- client_type=constants.CLIENT_TYPES.cl,
- image=participant.cl_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=el_context.client_name,
- extra_labels=participant.cl_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- "user": User(uid=0, gid=0),
- }
-
- if int(participant.cl_min_cpu) > 0:
- config_args["min_cpu"] = int(participant.cl_min_cpu)
- if int(participant.cl_max_cpu) > 0:
- config_args["max_cpu"] = int(participant.cl_max_cpu)
- if int(participant.cl_min_mem) > 0:
- config_args["min_memory"] = int(participant.cl_min_mem)
- if int(participant.cl_max_mem) > 0:
- config_args["max_memory"] = int(participant.cl_max_mem)
- return ServiceConfig(**config_args)
-
-
-def new_teku_launcher(el_cl_genesis_data, jwt_file, network_params, keymanager_file):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network_params.network,
- keymanager_file=keymanager_file,
- )
diff --git a/src/el/besu/besu_launcher.star b/src/el/besu/besu_launcher.star
deleted file mode 100644
index 86e5f76..0000000
--- a/src/el/besu/besu_launcher.star
+++ /dev/null
@@ -1,262 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-el_context = import_module("../../el/el_context.star")
-el_admin_node_info = import_module("../../el/el_admin_node_info.star")
-el_shared = import_module("../el_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-
-# The dirpath of the execution data directory on the client container
-EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER = "/data/besu/execution-data"
-
-METRICS_PATH = "/metrics"
-
-RPC_PORT_NUM = 8545
-WS_PORT_NUM = 8546
-DISCOVERY_PORT_NUM = 30303
-ENGINE_HTTP_RPC_PORT_NUM = 8551
-METRICS_PORT_NUM = 9001
-
-JAVA_OPTS = {"JAVA_OPTS": "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n"}
-
-ENTRYPOINT_ARGS = ["sh", "-c"]
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "ERROR",
- constants.GLOBAL_LOG_LEVEL.warn: "WARN",
- constants.GLOBAL_LOG_LEVEL.info: "INFO",
- constants.GLOBAL_LOG_LEVEL.debug: "DEBUG",
- constants.GLOBAL_LOG_LEVEL.trace: "TRACE",
-}
-
-
-def launch(
- plan,
- launcher,
- service_name,
- participant,
- global_log_level,
- existing_el_clients,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.el_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- cl_client_name = service_name.split("-")[3]
-
- config = get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
- )
-
- service = plan.add_service(service_name, config)
-
- enode = el_admin_node_info.get_enode_for_node(
- plan, service_name, constants.RPC_PORT_ID
- )
-
- metrics_url = "{0}:{1}".format(service.ip_address, METRICS_PORT_NUM)
- besu_metrics_info = node_metrics.new_node_metrics_info(
- service_name, METRICS_PATH, metrics_url
- )
- http_url = "http://{0}:{1}".format(service.ip_address, RPC_PORT_NUM)
- ws_url = "ws://{0}:{1}".format(service.ip_address, WS_PORT_NUM)
-
- return el_context.new_el_context(
- client_name="besu",
- enode=enode,
- ip_addr=service.ip_address,
- rpc_port_num=RPC_PORT_NUM,
- ws_port_num=WS_PORT_NUM,
- engine_rpc_port_num=ENGINE_HTTP_RPC_PORT_NUM,
- rpc_http_url=http_url,
- ws_url=ws_url,
- service_name=service_name,
- el_metrics_info=[besu_metrics_info],
- )
-
-
-def get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- public_ports = {}
- discovery_port = DISCOVERY_PORT_NUM
- if port_publisher.el_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "el", port_publisher, participant_index
- )
- public_ports, discovery_port = el_shared.get_general_el_public_port_specs(
- public_ports_for_component
- )
- additional_public_port_assignments = {
- constants.RPC_PORT_ID: public_ports_for_component[2],
- constants.WS_PORT_ID: public_ports_for_component[3],
- constants.METRICS_PORT_ID: public_ports_for_component[4],
- }
- public_ports.update(
- shared_utils.get_port_specs(additional_public_port_assignments)
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.ENGINE_RPC_PORT_ID: ENGINE_HTTP_RPC_PORT_NUM,
- constants.RPC_PORT_ID: RPC_PORT_NUM,
- constants.WS_PORT_ID: WS_PORT_NUM,
- constants.METRICS_PORT_ID: METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = [
- "besu",
- "--logging=" + log_level,
- "--data-path=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- "--host-allowlist=*",
- "--rpc-http-enabled=true",
- "--rpc-http-host=0.0.0.0",
- "--rpc-http-port={0}".format(RPC_PORT_NUM),
- "--rpc-http-api=ADMIN,CLIQUE,ETH,NET,DEBUG,TXPOOL,ENGINE,TRACE,WEB3",
- "--rpc-http-cors-origins=*",
- "--rpc-http-max-active-connections=300",
- "--rpc-ws-enabled=true",
- "--rpc-ws-host=0.0.0.0",
- "--rpc-ws-port={0}".format(WS_PORT_NUM),
- "--rpc-ws-api=ADMIN,CLIQUE,ETH,NET,DEBUG,TXPOOL,ENGINE,TRACE,WEB3",
- "--p2p-enabled=true",
- "--p2p-host=" + port_publisher.nat_exit_ip,
- "--p2p-port={0}".format(discovery_port),
- "--engine-rpc-enabled=true",
- "--engine-jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--engine-host-allowlist=*",
- "--engine-rpc-port={0}".format(ENGINE_HTTP_RPC_PORT_NUM),
- "--sync-mode=FULL",
- "--data-storage-format={0}".format(
- "VERKLE" if "verkle-gen" in launcher.network else "BONSAI"
- ),
- "--metrics-enabled=true",
- "--metrics-host=0.0.0.0",
- "--metrics-port={0}".format(METRICS_PORT_NUM),
- "--min-gas-price=1000000000",
- "--bonsai-limit-trie-logs-enabled=false"
- if "verkle" not in launcher.network
- else "",
- ]
- if launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append(
- "--genesis-file="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/besu.json"
- )
- else:
- cmd.append("--network=" + launcher.network)
-
- if launcher.network == constants.NETWORK_NAME.kurtosis:
- if len(existing_el_clients) > 0:
- cmd.append(
- "--bootnodes="
- + ",".join(
- [
- ctx.enode
- for ctx in existing_el_clients[: constants.MAX_ENODE_ENTRIES]
- ]
- )
- )
- elif (
- launcher.network not in constants.PUBLIC_NETWORKS
- and constants.NETWORK_NAME.shadowfork not in launcher.network
- ):
- cmd.append(
- "--bootnodes="
- + shared_utils.get_devnet_enodes(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
-
- if len(participant.el_extra_params) > 0:
- # we do this as extra_params isn't a normal [] but a proto repeated array
- cmd.extend([param for param in participant.el_extra_params])
-
- cmd_str = " ".join(cmd)
-
- env_vars = participant.el_extra_env_vars | JAVA_OPTS
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if persistent:
- files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
- persistent_key="data-{0}".format(service_name),
- size=int(participant.el_volume_size)
- if int(participant.el_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.EL_TYPE.besu + "_volume_size"
- ],
- )
-
- config_args = {
- "image": participant.el_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": [cmd_str],
- "files": files,
- "entrypoint": ENTRYPOINT_ARGS,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "env_vars": env_vars,
- "labels": shared_utils.label_maker(
- client=constants.EL_TYPE.besu,
- client_type=constants.CLIENT_TYPES.el,
- image=participant.el_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_client_name,
- extra_labels=participant.el_extra_labels,
- supernode=participant.supernode,
- ),
- "user": User(uid=0, gid=0),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.el_min_cpu > 0:
- config_args["min_cpu"] = participant.el_min_cpu
- if participant.el_max_cpu > 0:
- config_args["max_cpu"] = participant.el_max_cpu
- if participant.el_min_mem > 0:
- config_args["min_memory"] = participant.el_min_mem
- if participant.el_max_mem > 0:
- config_args["max_memory"] = participant.el_max_mem
- return ServiceConfig(**config_args)
-
-
-def new_besu_launcher(el_cl_genesis_data, jwt_file, network):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network,
- )
diff --git a/src/el/el_launcher.star b/src/el/el_launcher.star
index 577bdb6..b335536 100644
--- a/src/el/el_launcher.star
+++ b/src/el/el_launcher.star
@@ -2,13 +2,7 @@ constants = import_module("../package_io/constants.star")
input_parser = import_module("../package_io/input_parser.star")
shared_utils = import_module("../shared_utils/shared_utils.star")
-geth = import_module("./geth/geth_launcher.star")
-besu = import_module("./besu/besu_launcher.star")
-erigon = import_module("./erigon/erigon_launcher.star")
-nethermind = import_module("./nethermind/nethermind_launcher.star")
-reth = import_module("./reth/reth_launcher.star")
-ethereumjs = import_module("./ethereumjs/ethereumjs_launcher.star")
-nimbus_eth1 = import_module("./nimbus-eth1/nimbus_launcher.star")
+gzond = import_module("./gzond/gzond_launcher.star")
def launch(
@@ -28,75 +22,14 @@ def launch(
mev_params,
):
el_launchers = {
- constants.EL_TYPE.geth: {
- "launcher": geth.new_geth_launcher(
+ constants.EL_TYPE.gzond: {
+ "launcher": gzond.new_gzond_launcher(
el_cl_data,
jwt_file,
network_params.network,
network_id,
- el_cl_data.prague_time,
),
- "launch_method": geth.launch,
- },
- constants.EL_TYPE.besu: {
- "launcher": besu.new_besu_launcher(
- el_cl_data,
- jwt_file,
- network_params.network,
- ),
- "launch_method": besu.launch,
- },
- constants.EL_TYPE.erigon: {
- "launcher": erigon.new_erigon_launcher(
- el_cl_data,
- jwt_file,
- network_params.network,
- network_id,
- el_cl_data.prague_time,
- ),
- "launch_method": erigon.launch,
- },
- constants.EL_TYPE.nethermind: {
- "launcher": nethermind.new_nethermind_launcher(
- el_cl_data,
- jwt_file,
- network_params.network,
- ),
- "launch_method": nethermind.launch,
- },
- constants.EL_TYPE.reth: {
- "launcher": reth.new_reth_launcher(
- el_cl_data,
- jwt_file,
- network_params.network,
- ),
- "launch_method": reth.launch,
- },
- constants.EL_TYPE.reth_builder: {
- "launcher": reth.new_reth_launcher(
- el_cl_data,
- jwt_file,
- network_params.network,
- builder_type=mev_builder_type,
- mev_params=mev_params,
- ),
- "launch_method": reth.launch,
- },
- constants.EL_TYPE.ethereumjs: {
- "launcher": ethereumjs.new_ethereumjs_launcher(
- el_cl_data,
- jwt_file,
- network_params.network,
- ),
- "launch_method": ethereumjs.launch,
- },
- constants.EL_TYPE.nimbus: {
- "launcher": nimbus_eth1.new_nimbus_launcher(
- el_cl_data,
- jwt_file,
- network_params.network,
- ),
- "launch_method": nimbus_eth1.launch,
+ "launch_method": gzond.launch,
},
}
diff --git a/src/el/erigon/erigon_launcher.star b/src/el/erigon/erigon_launcher.star
deleted file mode 100644
index 44ddae9..0000000
--- a/src/el/erigon/erigon_launcher.star
+++ /dev/null
@@ -1,261 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-el_admin_node_info = import_module("../../el/el_admin_node_info.star")
-el_context = import_module("../../el/el_context.star")
-el_shared = import_module("../el_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-
-# The dirpath of the execution data directory on the client container
-EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER = "/data/erigon/execution-data"
-
-METRICS_PATH = "/metrics"
-
-WS_RPC_PORT_NUM = 8545
-DISCOVERY_PORT_NUM = 30303
-ENGINE_RPC_PORT_NUM = 8551
-METRICS_PORT_NUM = 9001
-
-ENTRYPOINT_ARGS = ["sh", "-c"]
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "1",
- constants.GLOBAL_LOG_LEVEL.warn: "2",
- constants.GLOBAL_LOG_LEVEL.info: "3",
- constants.GLOBAL_LOG_LEVEL.debug: "4",
- constants.GLOBAL_LOG_LEVEL.trace: "5",
-}
-
-
-def launch(
- plan,
- launcher,
- service_name,
- participant,
- global_log_level,
- existing_el_clients,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.el_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- cl_client_name = service_name.split("-")[3]
-
- config = get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
- )
-
- service = plan.add_service(service_name, config)
-
- enode, enr = el_admin_node_info.get_enode_enr_for_node(
- plan, service_name, constants.WS_RPC_PORT_ID
- )
-
- metrics_url = "{0}:{1}".format(service.ip_address, METRICS_PORT_NUM)
- erigon_metrics_info = node_metrics.new_node_metrics_info(
- service_name, METRICS_PATH, metrics_url
- )
-
- http_url = "http://{0}:{1}".format(service.ip_address, WS_RPC_PORT_NUM)
- ws_url = "ws://{0}:{1}".format(service.ip_address, WS_RPC_PORT_NUM)
-
- return el_context.new_el_context(
- client_name="erigon",
- enode=enode,
- ip_addr=service.ip_address,
- rpc_port_num=WS_RPC_PORT_NUM,
- ws_port_num=WS_RPC_PORT_NUM,
- engine_rpc_port_num=ENGINE_RPC_PORT_NUM,
- rpc_http_url=http_url,
- ws_url=ws_url,
- enr=enr,
- service_name=service_name,
- el_metrics_info=[erigon_metrics_info],
- )
-
-
-def get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- init_datadir_cmd_str = "erigon init --datadir={0} {1}".format(
- EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/genesis.json",
- )
-
- public_ports = {}
- discovery_port = DISCOVERY_PORT_NUM
- if port_publisher.el_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "el", port_publisher, participant_index
- )
- public_ports, discovery_port = el_shared.get_general_el_public_port_specs(
- public_ports_for_component
- )
- additional_public_port_assignments = {
- constants.WS_RPC_PORT_ID: public_ports_for_component[2],
- constants.METRICS_PORT_ID: public_ports_for_component[3],
- }
- public_ports.update(
- shared_utils.get_port_specs(additional_public_port_assignments)
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.ENGINE_RPC_PORT_ID: ENGINE_RPC_PORT_NUM,
- constants.WS_RPC_PORT_ID: WS_RPC_PORT_NUM,
- constants.METRICS_PORT_ID: METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = [
- "erigon",
- "{0}".format(
- "--override.prague=" + str(launcher.prague_time)
- if constants.NETWORK_NAME.shadowfork in launcher.network
- else ""
- ),
- "--networkid={0}".format(launcher.networkid),
- "--log.console.verbosity=" + log_level,
- "--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- "--port={0}".format(discovery_port),
- "--http.api=eth,erigon,engine,web3,net,debug,trace,txpool,admin",
- "--http.vhosts=*",
- "--ws",
- "--allow-insecure-unlock",
- "--nat=extip:" + port_publisher.nat_exit_ip,
- "--http",
- "--http.addr=0.0.0.0",
- "--http.corsdomain=*",
- "--http.port={0}".format(WS_RPC_PORT_NUM),
- "--authrpc.jwtsecret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--authrpc.addr=0.0.0.0",
- "--authrpc.port={0}".format(ENGINE_RPC_PORT_NUM),
- "--authrpc.vhosts=*",
- "--metrics",
- "--metrics.addr=0.0.0.0",
- "--metrics.port={0}".format(METRICS_PORT_NUM),
- "--db.size.limit={0}MB".format(
- int(participant.el_volume_size)
- if int(participant.el_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.EL_TYPE.besu + "_volume_size"
- ],
- ),
- ]
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if persistent:
- files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
- persistent_key="data-{0}".format(service_name),
- size=int(participant.el_volume_size)
- if int(participant.el_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.EL_TYPE.erigon + "_volume_size"
- ],
- )
-
- if launcher.network == constants.NETWORK_NAME.kurtosis:
- if len(existing_el_clients) > 0:
- cmd.append(
- "--bootnodes="
- + ",".join(
- [
- ctx.enode
- for ctx in existing_el_clients[: constants.MAX_ENODE_ENTRIES]
- ]
- )
- )
- elif (
- launcher.network not in constants.PUBLIC_NETWORKS
- and constants.NETWORK_NAME.shadowfork not in launcher.network
- ):
- cmd.append(
- "--bootnodes="
- + shared_utils.get_devnet_enodes(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
-
- if len(participant.el_extra_params) > 0:
- cmd.extend([param for param in participant.el_extra_params])
-
- if launcher.network not in constants.PUBLIC_NETWORKS:
- command_arg = [init_datadir_cmd_str, " ".join(cmd)]
- command_arg_str = " && ".join(command_arg)
- else:
- command_arg_str = " ".join(cmd)
-
- env_vars = participant.el_extra_env_vars
- config_args = {
- "image": participant.el_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": [command_arg_str],
- "files": files,
- "entrypoint": ENTRYPOINT_ARGS,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "env_vars": env_vars,
- "labels": shared_utils.label_maker(
- client=constants.EL_TYPE.erigon,
- client_type=constants.CLIENT_TYPES.el,
- image=participant.el_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_client_name,
- extra_labels=participant.el_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- "user": User(uid=0, gid=0),
- }
-
- if participant.el_min_cpu > 0:
- config_args["min_cpu"] = participant.el_min_cpu
- if participant.el_max_cpu > 0:
- config_args["max_cpu"] = participant.el_max_cpu
- if participant.el_min_mem > 0:
- config_args["min_memory"] = participant.el_min_mem
- if participant.el_max_mem > 0:
- config_args["max_memory"] = participant.el_max_mem
- return ServiceConfig(**config_args)
-
-
-def new_erigon_launcher(el_cl_genesis_data, jwt_file, network, networkid, prague_time):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network,
- networkid=networkid,
- prague_time=prague_time,
- )
diff --git a/src/el/ethereumjs/ethereumjs_launcher.star b/src/el/ethereumjs/ethereumjs_launcher.star
deleted file mode 100644
index dc85517..0000000
--- a/src/el/ethereumjs/ethereumjs_launcher.star
+++ /dev/null
@@ -1,244 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../..//package_io/input_parser.star")
-el_context = import_module("../../el/el_context.star")
-el_admin_node_info = import_module("../../el/el_admin_node_info.star")
-el_shared = import_module("../el_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-
-RPC_PORT_NUM = 8545
-WS_PORT_NUM = 8546
-WS_PORT_ENGINE_NUM = 8547
-DISCOVERY_PORT_NUM = 30303
-ENGINE_RPC_PORT_NUM = 8551
-METRICS_PORT_NUM = 9001
-
-METRICS_PATH = "/metrics"
-
-# The dirpath of the execution data directory on the client container
-EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER = "/data/ethereumjs/execution-data"
-
-ENTRYPOINT_ARGS = []
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "error",
- constants.GLOBAL_LOG_LEVEL.warn: "warn",
- constants.GLOBAL_LOG_LEVEL.info: "info",
- constants.GLOBAL_LOG_LEVEL.debug: "debug",
- constants.GLOBAL_LOG_LEVEL.trace: "trace",
-}
-
-
-def launch(
- plan,
- launcher,
- service_name,
- participant,
- global_log_level,
- existing_el_clients,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.el_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- cl_client_name = service_name.split("-")[3]
-
- config = get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
- )
-
- service = plan.add_service(service_name, config)
-
- enode = el_admin_node_info.get_enode_for_node(
- plan, service_name, constants.RPC_PORT_ID
- )
-
- # TODO: Passing empty string for metrics_url for now https://github.com/ethpandaops/ethereum-package/issues/127
- # metrics_url = "http://{0}:{1}".format(service.ip_address, METRICS_PORT_NUM)
- ethjs_metrics_info = None
-
- http_url = "http://{0}:{1}".format(service.ip_address, RPC_PORT_NUM)
- ws_url = "ws://{0}:{1}".format(service.ip_address, WS_PORT_NUM)
-
- return el_context.new_el_context(
- client_name="ethereumjs",
- enode=enode,
- ip_addr=service.ip_address,
- rpc_port_num=RPC_PORT_NUM,
- ws_port_num=WS_PORT_NUM,
- engine_rpc_port_num=ENGINE_RPC_PORT_NUM,
- rpc_http_url=http_url,
- ws_url=ws_url,
- service_name=service_name,
- el_metrics_info=[ethjs_metrics_info],
- )
-
-
-def get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- public_ports = {}
- discovery_port = DISCOVERY_PORT_NUM
- if port_publisher.el_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "el", port_publisher, participant_index
- )
- public_ports, discovery_port = el_shared.get_general_el_public_port_specs(
- public_ports_for_component
- )
- additional_public_port_assignments = {
- constants.RPC_PORT_ID: public_ports_for_component[2],
- constants.WS_PORT_ID: public_ports_for_component[3],
- constants.ENGINE_WS_PORT_ID: public_ports_for_component[4],
- }
- public_ports.update(
- shared_utils.get_port_specs(additional_public_port_assignments)
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.ENGINE_RPC_PORT_ID: ENGINE_RPC_PORT_NUM,
- constants.RPC_PORT_ID: RPC_PORT_NUM,
- constants.WS_PORT_ID: WS_PORT_NUM,
- constants.ENGINE_WS_PORT_ID: WS_PORT_ENGINE_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = [
- "--dataDir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- "--port={0}".format(discovery_port),
- "--rpc",
- "--rpcAddr=0.0.0.0",
- "--rpcPort={0}".format(RPC_PORT_NUM),
- "--rpcCors=*",
- "--rpcEngine",
- "--rpcEngineAddr=0.0.0.0",
- "--rpcEnginePort={0}".format(ENGINE_RPC_PORT_NUM),
- "--ws",
- "--wsAddr=0.0.0.0",
- "--wsPort={0}".format(WS_PORT_NUM),
- "--wsEnginePort={0}".format(WS_PORT_ENGINE_NUM),
- "--wsEngineAddr=0.0.0.0",
- "--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--extIP={0}".format(port_publisher.nat_exit_ip),
- "--sync=full",
- "--isSingleNode=true",
- "--logLevel={0}".format(log_level),
- ]
-
- if launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append(
- "--gethGenesis="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/genesis.json",
- )
- else:
- cmd.append("--network=" + launcher.network)
-
- if launcher.network == constants.NETWORK_NAME.kurtosis:
- if len(existing_el_clients) > 0:
- cmd.append(
- "--bootnodes="
- + ",".join(
- [
- ctx.enode
- for ctx in existing_el_clients[: constants.MAX_ENODE_ENTRIES]
- ]
- )
- )
- elif (
- launcher.network not in constants.PUBLIC_NETWORKS
- and constants.NETWORK_NAME.shadowfork not in launcher.network
- ):
- cmd.append(
- "--bootnodes="
- + shared_utils.get_devnet_enodes(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
-
- if len(participant.el_extra_params) > 0:
- # this is a repeated, we convert it into Starlark
- cmd.extend([param for param in participant.el_extra_params])
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if persistent:
- files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
- persistent_key="data-{0}".format(service_name),
- size=int(participant.el_volume_size)
- if int(participant.el_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.EL_TYPE.ethereumjs + "_volume_size"
- ],
- )
- env_vars = participant.el_extra_env_vars
- config_args = {
- "image": participant.el_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "entrypoint": ENTRYPOINT_ARGS,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "env_vars": env_vars,
- "labels": shared_utils.label_maker(
- client=constants.EL_TYPE.ethereumjs,
- client_type=constants.CLIENT_TYPES.el,
- image=participant.el_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_client_name,
- extra_labels=participant.el_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.el_min_cpu > 0:
- config_args["min_cpu"] = participant.el_min_cpu
- if participant.el_max_cpu > 0:
- config_args["max_cpu"] = participant.el_max_cpu
- if participant.el_min_mem > 0:
- config_args["min_memory"] = participant.el_min_mem
- if participant.el_max_mem > 0:
- config_args["max_memory"] = participant.el_max_mem
- return ServiceConfig(**config_args)
-
-
-def new_ethereumjs_launcher(el_cl_genesis_data, jwt_file, network):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network,
- )
diff --git a/src/el/geth/geth_launcher.star b/src/el/gzond/gzond_launcher.star
similarity index 77%
rename from src/el/geth/geth_launcher.star
rename to src/el/gzond/gzond_launcher.star
index 36bb61b..2eb0fa8 100644
--- a/src/el/geth/geth_launcher.star
+++ b/src/el/gzond/gzond_launcher.star
@@ -15,13 +15,13 @@ DISCOVERY_PORT_NUM = 30303
ENGINE_RPC_PORT_NUM = 8551
METRICS_PORT_NUM = 9001
-# TODO(old) Scale this dynamically based on CPUs available and Geth nodes mining
+# TODO(old) Scale this dynamically based on CPUs available and Gzond nodes mining
NUM_MINING_THREADS = 1
METRICS_PATH = "/debug/metrics/prometheus"
# The dirpath of the execution data directory on the client container
-EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER = "/data/geth/execution-data"
+EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER = "/data/gzond/execution-data"
ENTRYPOINT_ARGS = ["sh", "-c"]
@@ -34,7 +34,6 @@ VERBOSITY_LEVELS = {
}
BUILDER_IMAGE_STR = "builder"
-SUAVE_ENABLED_GETH_IMAGE_STR = "suave"
def launch(
@@ -78,7 +77,7 @@ def launch(
)
metrics_url = "{0}:{1}".format(service.ip_address, METRICS_PORT_NUM)
- geth_metrics_info = node_metrics.new_node_metrics_info(
+ gzond_metrics_info = node_metrics.new_node_metrics_info(
service_name, METRICS_PATH, metrics_url
)
@@ -86,7 +85,7 @@ def launch(
ws_url = "ws://{0}:{1}".format(service.ip_address, WS_PORT_NUM)
return el_context.new_el_context(
- client_name="geth",
+ client_name="gzond",
enode=enode,
ip_addr=service.ip_address,
rpc_port_num=RPC_PORT_NUM,
@@ -96,7 +95,7 @@ def launch(
ws_url=ws_url,
enr=enr,
service_name=service_name,
- el_metrics_info=[geth_metrics_info],
+ el_metrics_info=[gzond_metrics_info],
)
@@ -121,33 +120,16 @@ def get_config(
gcmode_archive = True
else:
gcmode_archive = False
- # TODO: Remove this once electra fork has path based storage scheme implemented
- if (
- constants.NETWORK_NAME.verkle in launcher.network
- ) and constants.NETWORK_NAME.shadowfork not in launcher.network:
- if constants.NETWORK_NAME.verkle + "-gen" in launcher.network: # verkle-gen
- init_datadir_cmd_str = "geth --datadir={0} --cache.preimages --override.prague={1} init {2}".format(
- EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- launcher.prague_time,
- constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/genesis.json",
- )
- else: # verkle
- init_datadir_cmd_str = (
- "geth --datadir={0} --cache.preimages init {1}".format(
- EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/genesis.json",
- )
- )
- elif constants.NETWORK_NAME.shadowfork in launcher.network: # shadowfork
+ if constants.NETWORK_NAME.shadowfork in launcher.network: # shadowfork
init_datadir_cmd_str = "echo shadowfork"
elif gcmode_archive: # Disable path based storage scheme archive mode
- init_datadir_cmd_str = "geth init --state.scheme=hash --datadir={0} {1}".format(
+ init_datadir_cmd_str = "gzond init --state.scheme=hash --datadir={0} {1}".format(
EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/genesis.json",
)
else:
- init_datadir_cmd_str = "geth init --datadir={0} {1}".format(
+ init_datadir_cmd_str = "gzond init --datadir={0} {1}".format(
EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/genesis.json",
)
@@ -181,16 +163,7 @@ def get_config(
used_ports = shared_utils.get_port_specs(used_port_assignments)
cmd = [
- "geth",
- # Disable path based storage scheme for electra fork and verkle
- # TODO: REMOVE Once geth default db is path based, and builder rebased
- "{0}".format(
- "--state.scheme=hash"
- if "verkle" in launcher.network or gcmode_archive
- else ""
- ),
- # Override prague fork timestamp for electra fork
- "{0}".format("--cache.preimages" if "verkle" in launcher.network else ""),
+ "gzond",
"{0}".format(
"--{}".format(launcher.network)
if launcher.network in constants.PUBLIC_NETWORKS
@@ -218,7 +191,6 @@ def get_config(
"--authrpc.vhosts=*",
"--authrpc.jwtsecret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
"--syncmode=full" if not gcmode_archive else "--gcmode=archive",
- "--rpc.allow-unprotected-txs",
"--metrics",
"--metrics.addr=0.0.0.0",
"--metrics.port={0}".format(METRICS_PORT_NUM),
@@ -233,12 +205,6 @@ def get_config(
if "--ws.api" in arg:
cmd[index] = "--ws.api=admin,engine,net,eth,web3,debug,mev,flashbots"
- if SUAVE_ENABLED_GETH_IMAGE_STR in participant.el_image:
- for index, arg in enumerate(cmd):
- if "--http.api" in arg:
- cmd[index] = "--http.api=admin,engine,net,eth,web3,debug,suavex"
- if "--ws.api" in arg:
- cmd[index] = "--ws.api=admin,engine,net,eth,web3,debug,suavex"
if (
launcher.network == constants.NETWORK_NAME.kurtosis
@@ -254,13 +220,6 @@ def get_config(
]
)
)
- if constants.NETWORK_NAME.shadowfork in launcher.network: # shadowfork
- cmd.append("--override.prague=" + str(launcher.prague_time))
- if "verkle" in launcher.network: # verkle-shadowfork
- cmd.append("--override.overlay-stride=10000")
- cmd.append("--override.blockproof=true")
- cmd.append("--clear.verkle.costs=true")
-
elif (
launcher.network not in constants.PUBLIC_NETWORKS
and constants.NETWORK_NAME.shadowfork not in launcher.network
@@ -296,7 +255,7 @@ def get_config(
size=int(participant.el_volume_size)
if int(participant.el_volume_size) > 0
else constants.VOLUME_SIZE[launcher.network][
- constants.EL_TYPE.geth + "_volume_size"
+ constants.EL_TYPE.gzond + "_volume_size"
],
)
env_vars = participant.el_extra_env_vars
@@ -310,7 +269,7 @@ def get_config(
"private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
"env_vars": env_vars,
"labels": shared_utils.label_maker(
- client=constants.EL_TYPE.geth,
+ client=constants.EL_TYPE.gzond,
client_type=constants.CLIENT_TYPES.el,
image=participant.el_image[-constants.MAX_LABEL_LENGTH :],
connected_client=cl_client_name,
@@ -332,17 +291,15 @@ def get_config(
return ServiceConfig(**config_args)
-def new_geth_launcher(
+def new_gzond_launcher(
el_cl_genesis_data,
jwt_file,
network,
networkid,
- prague_time,
):
return struct(
el_cl_genesis_data=el_cl_genesis_data,
jwt_file=jwt_file,
network=network,
networkid=networkid,
- prague_time=prague_time,
)
diff --git a/src/el/nethermind/nethermind_launcher.star b/src/el/nethermind/nethermind_launcher.star
deleted file mode 100644
index c82f25d..0000000
--- a/src/el/nethermind/nethermind_launcher.star
+++ /dev/null
@@ -1,249 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-el_context = import_module("../../el/el_context.star")
-el_admin_node_info = import_module("../../el/el_admin_node_info.star")
-el_shared = import_module("../el_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-
-# The dirpath of the execution data directory on the client container
-EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER = "/data/nethermind/execution-data"
-
-METRICS_PATH = "/metrics"
-
-RPC_PORT_NUM = 8545
-WS_PORT_NUM = 8546
-DISCOVERY_PORT_NUM = 30303
-ENGINE_RPC_PORT_NUM = 8551
-METRICS_PORT_NUM = 9001
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "ERROR",
- constants.GLOBAL_LOG_LEVEL.warn: "WARN",
- constants.GLOBAL_LOG_LEVEL.info: "INFO",
- constants.GLOBAL_LOG_LEVEL.debug: "DEBUG",
- constants.GLOBAL_LOG_LEVEL.trace: "TRACE",
-}
-
-
-def launch(
- plan,
- launcher,
- service_name,
- participant,
- global_log_level,
- existing_el_clients,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.el_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- cl_client_name = service_name.split("-")[3]
-
- config = get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
- )
-
- service = plan.add_service(service_name, config)
-
- enode = el_admin_node_info.get_enode_for_node(
- plan, service_name, constants.RPC_PORT_ID
- )
-
- metrics_url = "{0}:{1}".format(service.ip_address, METRICS_PORT_NUM)
- nethermind_metrics_info = node_metrics.new_node_metrics_info(
- service_name, METRICS_PATH, metrics_url
- )
-
- http_url = "http://{0}:{1}".format(service.ip_address, RPC_PORT_NUM)
- ws_url = "ws://{0}:{1}".format(service.ip_address, WS_PORT_NUM)
-
- return el_context.new_el_context(
- client_name="nethermind",
- enode=enode,
- ip_addr=service.ip_address,
- rpc_port_num=RPC_PORT_NUM,
- ws_port_num=WS_PORT_NUM,
- engine_rpc_port_num=ENGINE_RPC_PORT_NUM,
- rpc_http_url=http_url,
- ws_url=ws_url,
- service_name=service_name,
- el_metrics_info=[nethermind_metrics_info],
- )
-
-
-def get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- public_ports = {}
- discovery_port = DISCOVERY_PORT_NUM
- if port_publisher.el_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "el", port_publisher, participant_index
- )
- public_ports, discovery_port = el_shared.get_general_el_public_port_specs(
- public_ports_for_component
- )
- additional_public_port_assignments = {
- constants.RPC_PORT_ID: public_ports_for_component[2],
- constants.WS_PORT_ID: public_ports_for_component[3],
- constants.METRICS_PORT_ID: public_ports_for_component[4],
- }
- public_ports.update(
- shared_utils.get_port_specs(additional_public_port_assignments)
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.ENGINE_RPC_PORT_ID: ENGINE_RPC_PORT_NUM,
- constants.RPC_PORT_ID: RPC_PORT_NUM,
- constants.WS_PORT_ID: WS_PORT_NUM,
- constants.METRICS_PORT_ID: METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = [
- "--log=" + log_level,
- "--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- "--Init.WebSocketsEnabled=true",
- "--JsonRpc.Enabled=true",
- "--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),
- "--JsonRpc.EngineHost=0.0.0.0",
- "--JsonRpc.EnginePort={0}".format(ENGINE_RPC_PORT_NUM),
- "--Network.ExternalIp={0}".format(port_publisher.nat_exit_ip),
- "--Network.DiscoveryPort={0}".format(discovery_port),
- "--Network.P2PPort={0}".format(discovery_port),
- "--JsonRpc.JwtSecretFile=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--Metrics.Enabled=true",
- "--Metrics.ExposePort={0}".format(METRICS_PORT_NUM),
- "--Metrics.ExposeHost=0.0.0.0",
- ]
-
- if constants.NETWORK_NAME.shadowfork in launcher.network:
- cmd.append(
- "--Init.ChainSpecPath="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/chainspec.json"
- )
- cmd.append("--config=" + launcher.network.split("-")[0])
- cmd.append("--Init.BaseDbPath=" + launcher.network.split("-")[0])
- elif launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append("--config=none")
- cmd.append(
- "--Init.ChainSpecPath="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/chainspec.json"
- )
- else:
- cmd.append("--config=" + launcher.network)
-
- if (
- launcher.network == constants.NETWORK_NAME.kurtosis
- or constants.NETWORK_NAME.shadowfork in launcher.network
- ):
- if len(existing_el_clients) > 0:
- cmd.append(
- "--Discovery.Bootnodes="
- + ",".join(
- [
- ctx.enode
- for ctx in existing_el_clients[: constants.MAX_ENODE_ENTRIES]
- ]
- )
- )
- elif (
- launcher.network not in constants.PUBLIC_NETWORKS
- and constants.NETWORK_NAME.shadowfork not in launcher.network
- ):
- cmd.append(
- "--Discovery.Bootnodes="
- + shared_utils.get_devnet_enodes(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
-
- if len(participant.el_extra_params) > 0:
- # this is a repeated, we convert it into Starlark
- cmd.extend([param for param in participant.el_extra_params])
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if persistent:
- files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
- persistent_key="data-{0}".format(service_name),
- size=int(participant.el_volume_size)
- if int(participant.el_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.EL_TYPE.nethermind + "_volume_size"
- ],
- )
- env_vars = participant.el_extra_env_vars
- config_args = {
- "image": participant.el_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "env_vars": env_vars,
- "labels": shared_utils.label_maker(
- client=constants.EL_TYPE.nethermind,
- client_type=constants.CLIENT_TYPES.el,
- image=participant.el_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_client_name,
- extra_labels=participant.el_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.el_min_cpu > 0:
- config_args["min_cpu"] = participant.el_min_cpu
- if participant.el_max_cpu > 0:
- config_args["max_cpu"] = participant.el_max_cpu
- if participant.el_min_mem > 0:
- config_args["min_memory"] = participant.el_min_mem
- if participant.el_max_mem > 0:
- config_args["max_memory"] = participant.el_max_mem
- return ServiceConfig(**config_args)
-
-
-def new_nethermind_launcher(el_cl_genesis_data, jwt_file, network):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data, jwt_file=jwt_file, network=network
- )
diff --git a/src/el/nimbus-eth1/nimbus_launcher.star b/src/el/nimbus-eth1/nimbus_launcher.star
deleted file mode 100644
index 61981b0..0000000
--- a/src/el/nimbus-eth1/nimbus_launcher.star
+++ /dev/null
@@ -1,237 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-el_context = import_module("../../el/el_context.star")
-el_admin_node_info = import_module("../../el/el_admin_node_info.star")
-el_shared = import_module("../el_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-
-WS_RPC_PORT_NUM = 8545
-DISCOVERY_PORT_NUM = 30303
-ENGINE_RPC_PORT_NUM = 8551
-METRICS_PORT_NUM = 9001
-
-# Paths
-METRICS_PATH = "/metrics"
-
-# The dirpath of the execution data directory on the client container
-EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER = "/data/nimbus/execution-data"
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "ERROR",
- constants.GLOBAL_LOG_LEVEL.warn: "WARN",
- constants.GLOBAL_LOG_LEVEL.info: "INFO",
- constants.GLOBAL_LOG_LEVEL.debug: "DEBUG",
- constants.GLOBAL_LOG_LEVEL.trace: "TRACE",
-}
-
-
-def launch(
- plan,
- launcher,
- service_name,
- participant,
- global_log_level,
- existing_el_clients,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.el_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- cl_client_name = service_name.split("-")[3]
-
- config = get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
- )
-
- service = plan.add_service(service_name, config)
-
- enode = el_admin_node_info.get_enode_for_node(
- plan, service_name, constants.WS_RPC_PORT_ID
- )
-
- metric_url = "{0}:{1}".format(service.ip_address, METRICS_PORT_NUM)
- nimbus_metrics_info = node_metrics.new_node_metrics_info(
- service_name, METRICS_PATH, metric_url
- )
-
- http_url = "http://{0}:{1}".format(service.ip_address, WS_RPC_PORT_NUM)
- ws_url = "ws://{0}:{1}".format(service.ip_address, WS_RPC_PORT_NUM)
-
- return el_context.new_el_context(
- client_name="nimbus",
- enode=enode,
- ip_addr=service.ip_address,
- rpc_port_num=WS_RPC_PORT_NUM,
- ws_port_num=WS_RPC_PORT_NUM,
- engine_rpc_port_num=ENGINE_RPC_PORT_NUM,
- rpc_http_url=http_url,
- ws_url=ws_url,
- service_name=service_name,
- el_metrics_info=[nimbus_metrics_info],
- )
-
-
-def get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- public_ports = {}
- discovery_port = DISCOVERY_PORT_NUM
- if port_publisher.el_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "el", port_publisher, participant_index
- )
- public_ports, discovery_port = el_shared.get_general_el_public_port_specs(
- public_ports_for_component
- )
- additional_public_port_assignments = {
- constants.WS_RPC_PORT_ID: public_ports_for_component[2],
- constants.METRICS_PORT_ID: public_ports_for_component[3],
- }
- public_ports.update(
- shared_utils.get_port_specs(additional_public_port_assignments)
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.ENGINE_RPC_PORT_ID: ENGINE_RPC_PORT_NUM,
- constants.WS_RPC_PORT_ID: WS_RPC_PORT_NUM,
- constants.METRICS_PORT_ID: METRICS_PORT_NUM,
- }
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = [
- "--log-level={0}".format(log_level),
- "--data-dir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- "--net-key={0}/nodekey".format(EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER),
- "--http-port={0}".format(WS_RPC_PORT_NUM),
- "--http-address=0.0.0.0",
- "--rpc",
- "--rpc-api=eth,debug",
- "--ws",
- "--ws-api=eth,debug",
- "--engine-api",
- "--engine-api-address=0.0.0.0",
- "--engine-api-port={0}".format(ENGINE_RPC_PORT_NUM),
- "--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--metrics",
- "--metrics-address=0.0.0.0",
- "--metrics-port={0}".format(METRICS_PORT_NUM),
- "--nat=extip:{0}".format(port_publisher.nat_exit_ip),
- "--tcp-port={0}".format(discovery_port),
- ]
- if launcher.network not in constants.PUBLIC_NETWORKS:
- cmd.append(
- "--custom-network="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/genesis.json"
- )
- else:
- cmd.append("--network=" + launcher.network)
-
- if launcher.network == constants.NETWORK_NAME.kurtosis:
- if len(existing_el_clients) > 0:
- cmd.append(
- "--bootstrap-node="
- + ",".join(
- [
- ctx.enode
- for ctx in existing_el_clients[: constants.MAX_ENODE_ENTRIES]
- ]
- )
- )
- elif (
- launcher.network not in constants.PUBLIC_NETWORKS
- and constants.NETWORK_NAME.shadowfork not in launcher.network
- ):
- cmd.append(
- "--bootstrap-node="
- + shared_utils.get_devnet_enodes(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
-
- if len(participant.el_extra_params) > 0:
- # this is a repeated, we convert it into Starlark
- cmd.extend([param for param in participant.el_extra_params])
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if persistent:
- files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
- persistent_key="data-{0}".format(service_name),
- size=int(participant.el_volume_size)
- if int(participant.el_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.EL_TYPE.nimbus + "_volume_size"
- ],
- )
- env_vars = participant.el_extra_env_vars
- config_args = {
- "image": participant.el_image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "env_vars": env_vars,
- "labels": shared_utils.label_maker(
- client=constants.EL_TYPE.nimbus,
- client_type=constants.CLIENT_TYPES.el,
- image=participant.el_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_client_name,
- extra_labels=participant.el_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.el_min_cpu > 0:
- config_args["min_cpu"] = participant.el_min_cpu
- if participant.el_max_cpu > 0:
- config_args["max_cpu"] = participant.el_max_cpu
- if participant.el_min_mem > 0:
- config_args["min_memory"] = participant.el_min_mem
- if participant.el_max_mem > 0:
- config_args["max_memory"] = participant.el_max_mem
- return ServiceConfig(**config_args)
-
-
-def new_nimbus_launcher(el_cl_genesis_data, jwt_file, network):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network,
- )
diff --git a/src/el/reth/reth_launcher.star b/src/el/reth/reth_launcher.star
deleted file mode 100644
index 2ad8e3a..0000000
--- a/src/el/reth/reth_launcher.star
+++ /dev/null
@@ -1,295 +0,0 @@
-shared_utils = import_module("../../shared_utils/shared_utils.star")
-input_parser = import_module("../../package_io/input_parser.star")
-el_context = import_module("../el_context.star")
-el_admin_node_info = import_module("../el_admin_node_info.star")
-el_shared = import_module("../el_shared.star")
-node_metrics = import_module("../../node_metrics_info.star")
-constants = import_module("../../package_io/constants.star")
-mev_rs_builder = import_module("../../mev/mev-rs/mev_builder/mev_builder_launcher.star")
-lighthouse = import_module("../../cl/lighthouse/lighthouse_launcher.star")
-flashbots_rbuilder = import_module(
- "../../mev/flashbots/mev_builder/mev_builder_launcher.star"
-)
-
-RPC_PORT_NUM = 8545
-WS_PORT_NUM = 8546
-DISCOVERY_PORT_NUM = 30303
-ENGINE_RPC_PORT_NUM = 8551
-METRICS_PORT_NUM = 9001
-RBUILDER_PORT_NUM = 8645
-# Paths
-METRICS_PATH = "/metrics"
-
-# The dirpath of the execution data directory on the client container
-EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER = "/data/reth/execution-data"
-
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "v",
- constants.GLOBAL_LOG_LEVEL.warn: "vv",
- constants.GLOBAL_LOG_LEVEL.info: "vvv",
- constants.GLOBAL_LOG_LEVEL.debug: "vvvv",
- constants.GLOBAL_LOG_LEVEL.trace: "vvvvv",
-}
-
-
-def launch(
- plan,
- launcher,
- service_name,
- participant,
- global_log_level,
- existing_el_clients,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.el_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- cl_client_name = service_name.split("-")[3]
-
- config = get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
- )
-
- service = plan.add_service(service_name, config)
-
- enode = el_admin_node_info.get_enode_for_node(
- plan, service_name, constants.RPC_PORT_ID
- )
-
- metric_url = "{0}:{1}".format(service.ip_address, METRICS_PORT_NUM)
- reth_metrics_info = node_metrics.new_node_metrics_info(
- service_name, METRICS_PATH, metric_url
- )
-
- http_url = "http://{0}:{1}".format(service.ip_address, RPC_PORT_NUM)
- ws_url = "ws://{0}:{1}".format(service.ip_address, WS_PORT_NUM)
-
- return el_context.new_el_context(
- client_name="reth",
- enode=enode,
- ip_addr=service.ip_address,
- rpc_port_num=RPC_PORT_NUM,
- ws_port_num=WS_PORT_NUM,
- engine_rpc_port_num=ENGINE_RPC_PORT_NUM,
- rpc_http_url=http_url,
- ws_url=ws_url,
- service_name=service_name,
- el_metrics_info=[reth_metrics_info],
- )
-
-
-def get_config(
- plan,
- launcher,
- participant,
- service_name,
- existing_el_clients,
- cl_client_name,
- log_level,
- persistent,
- tolerations,
- node_selectors,
- port_publisher,
- participant_index,
-):
- public_ports = {}
- discovery_port = DISCOVERY_PORT_NUM
- if port_publisher.el_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "el", port_publisher, participant_index
- )
- public_ports, discovery_port = el_shared.get_general_el_public_port_specs(
- public_ports_for_component
- )
- additional_public_port_assignments = {
- constants.RPC_PORT_ID: public_ports_for_component[2],
- constants.WS_PORT_ID: public_ports_for_component[3],
- constants.METRICS_PORT_ID: public_ports_for_component[4],
- }
- public_ports.update(
- shared_utils.get_port_specs(additional_public_port_assignments)
- )
-
- used_port_assignments = {
- constants.TCP_DISCOVERY_PORT_ID: discovery_port,
- constants.UDP_DISCOVERY_PORT_ID: discovery_port,
- constants.ENGINE_RPC_PORT_ID: ENGINE_RPC_PORT_NUM,
- constants.RPC_PORT_ID: RPC_PORT_NUM,
- constants.WS_PORT_ID: WS_PORT_NUM,
- constants.METRICS_PORT_ID: METRICS_PORT_NUM,
- }
-
- if (
- launcher.builder_type == constants.FLASHBOTS_MEV_TYPE
- or launcher.builder_type == constants.COMMIT_BOOST_MEV_TYPE
- ):
- used_port_assignments[constants.RBUILDER_PORT_ID] = RBUILDER_PORT_NUM
-
- used_ports = shared_utils.get_port_specs(used_port_assignments)
-
- cmd = []
-
- if launcher.builder_type == "mev-rs":
- cmd.append("build")
-
- cmd.extend(
- [
- "node",
- "-{0}".format(log_level),
- "--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
- "--chain={0}".format(
- launcher.network
- if launcher.network in constants.PUBLIC_NETWORKS
- else constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/genesis.json"
- ),
- "--http",
- "--http.port={0}".format(RPC_PORT_NUM),
- "--http.addr=0.0.0.0",
- "--http.corsdomain=*",
- "--http.api=admin,net,eth,web3,debug,txpool,trace{0}".format(
- ",flashbots"
- if launcher.builder_type == constants.FLASHBOTS_MEV_TYPE
- or launcher.builder_type == constants.COMMIT_BOOST_MEV_TYPE
- else ""
- ),
- "--ws",
- "--ws.addr=0.0.0.0",
- "--ws.port={0}".format(WS_PORT_NUM),
- "--ws.api=net,eth",
- "--ws.origins=*",
- "--nat=extip:" + port_publisher.nat_exit_ip,
- "--authrpc.port={0}".format(ENGINE_RPC_PORT_NUM),
- "--authrpc.jwtsecret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
- "--authrpc.addr=0.0.0.0",
- "--metrics=0.0.0.0:{0}".format(METRICS_PORT_NUM),
- "--discovery.port={0}".format(discovery_port),
- "--port={0}".format(discovery_port),
- ]
- )
-
- if launcher.network == constants.NETWORK_NAME.kurtosis:
- if len(existing_el_clients) > 0:
- cmd.append(
- "--bootnodes="
- + ",".join(
- [
- ctx.enode
- for ctx in existing_el_clients[: constants.MAX_ENODE_ENTRIES]
- ]
- )
- )
- elif (
- launcher.network not in constants.PUBLIC_NETWORKS
- and constants.NETWORK_NAME.shadowfork not in launcher.network
- ):
- cmd.append(
- "--bootnodes="
- + shared_utils.get_devnet_enodes(
- plan, launcher.el_cl_genesis_data.files_artifact_uuid
- )
- )
-
- if len(participant.el_extra_params) > 0:
- # this is a repeated, we convert it into Starlark
- cmd.extend([param for param in participant.el_extra_params])
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.el_cl_genesis_data.files_artifact_uuid,
- constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file,
- }
-
- if persistent:
- files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
- persistent_key="data-{0}".format(service_name),
- size=int(participant.el_volume_size)
- if int(participant.el_volume_size) > 0
- else constants.VOLUME_SIZE[launcher.network][
- constants.EL_TYPE.reth + "_volume_size"
- ],
- )
- env_vars = {}
- image = participant.el_image
- if launcher.builder_type == constants.MEV_RS_MEV_TYPE:
- files[
- mev_rs_builder.MEV_BUILDER_MOUNT_DIRPATH_ON_SERVICE
- ] = mev_rs_builder.MEV_BUILDER_FILES_ARTIFACT_NAME
- elif (
- launcher.builder_type == constants.FLASHBOTS_MEV_TYPE
- or launcher.builder_type == constants.COMMIT_BOOST_MEV_TYPE
- ):
- 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
- ] = flashbots_rbuilder.MEV_BUILDER_FILES_ARTIFACT_NAME
- env_vars.update(
- {
- "CL_ENDPOINT": "http://cl-{0}-{1}-{2}:{3}".format(
- participant_index + 1,
- cl_client_name,
- constants.EL_TYPE.reth_builder,
- lighthouse.BEACON_HTTP_PORT_NUM,
- ),
- }
- )
-
- config_args = {
- "image": image,
- "ports": used_ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "private_ip_address_placeholder": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
- "env_vars": env_vars | participant.el_extra_env_vars,
- "labels": shared_utils.label_maker(
- client=constants.EL_TYPE.reth,
- client_type=constants.CLIENT_TYPES.el,
- image=participant.el_image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_client_name,
- extra_labels=participant.el_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.el_min_cpu > 0:
- config_args["min_cpu"] = participant.el_min_cpu
- if participant.el_max_cpu > 0:
- config_args["max_cpu"] = participant.el_max_cpu
- if participant.el_min_mem > 0:
- config_args["min_memory"] = participant.el_min_mem
- if participant.el_max_mem > 0:
- config_args["max_memory"] = participant.el_max_mem
- return ServiceConfig(**config_args)
-
-
-def new_reth_launcher(
- el_cl_genesis_data, jwt_file, network, builder_type=False, mev_params=None
-):
- return struct(
- el_cl_genesis_data=el_cl_genesis_data,
- jwt_file=jwt_file,
- network=network,
- builder_type=builder_type,
- mev_params=mev_params,
- )
diff --git a/src/full_beaconchain/full_beaconchain_launcher.star b/src/full_beaconchain/full_beaconchain_launcher.star
index 92d90eb..61adfc0 100644
--- a/src/full_beaconchain/full_beaconchain_launcher.star
+++ b/src/full_beaconchain/full_beaconchain_launcher.star
@@ -238,7 +238,7 @@ def launch_full_beacon(
"-blocks.concurrency",
"1",
"-blocks.tracemode",
- "geth",
+ "gzond",
"-data.concurrency",
"1",
"-balances.enabled",
diff --git a/src/mev/flashbots/mev_builder/mev_builder_launcher.star b/src/mev/flashbots/mev_builder/mev_builder_launcher.star
index 86c91f1..7e89150 100644
--- a/src/mev/flashbots/mev_builder/mev_builder_launcher.star
+++ b/src/mev/flashbots/mev_builder/mev_builder_launcher.star
@@ -3,7 +3,6 @@ input_parser = import_module("../../../package_io/input_parser.star")
static_files = import_module("../../../static_files/static_files.star")
constants = import_module("../../../package_io/constants.star")
flashbots_relay = import_module("../mev_relay/mev_relay_launcher.star")
-lighthouse = import_module("../../../cl/lighthouse/lighthouse_launcher.star")
# MEV Builder flags
MEV_BUILDER_CONFIG_FILENAME = "config.toml"
@@ -74,12 +73,13 @@ def new_builder_config_template_data(
if network_params.network in constants.PUBLIC_NETWORKS
else "/network-configs/genesis.json",
"DataDir": "/data/reth/execution-data",
- "CLEndpoint": "http://cl-{0}-{1}-{2}:{3}".format(
- num_of_participants,
- constants.CL_TYPE.lighthouse,
- constants.EL_TYPE.reth_builder,
- lighthouse.BEACON_HTTP_PORT_NUM,
- ),
+ "CLEndpoint": "",
+ # "CLEndpoint": "http://cl-{0}-{1}-{2}:{3}".format(
+ # num_of_participants,
+ # constants.CL_TYPE.lighthouse,
+ # constants.EL_TYPE.reth_builder,
+ # lighthouse.BEACON_HTTP_PORT_NUM,
+ # ),
"GenesisForkVersion": constants.GENESIS_FORK_VERSION,
"Relay": "mev-relay-api",
"RelayPort": flashbots_relay.MEV_RELAY_ENDPOINT_PORT,
diff --git a/src/mev/flashbots/mev_relay/mev_relay_launcher.star b/src/mev/flashbots/mev_relay/mev_relay_launcher.star
index 26dc15e..86eaa75 100644
--- a/src/mev/flashbots/mev_relay/mev_relay_launcher.star
+++ b/src/mev/flashbots/mev_relay/mev_relay_launcher.star
@@ -41,7 +41,7 @@ def launch_mev_relay(
mev_params,
network_id,
beacon_uris,
- validator_root,
+ # validator_root,
blocksim_uri,
seconds_per_slot,
persistent,
@@ -79,11 +79,7 @@ def launch_mev_relay(
env_vars = {
"GENESIS_FORK_VERSION": constants.GENESIS_FORK_VERSION,
- "BELLATRIX_FORK_VERSION": constants.BELLATRIX_FORK_VERSION,
- "CAPELLA_FORK_VERSION": constants.CAPELLA_FORK_VERSION,
- "DENEB_FORK_VERSION": constants.DENEB_FORK_VERSION,
- "ELECTRA_FORK_VERSION": constants.ELECTRA_FORK_VERSION,
- "GENESIS_VALIDATORS_ROOT": validator_root,
+ #"GENESIS_VALIDATORS_ROOT": validator_root,
"SEC_PER_SLOT": str(seconds_per_slot),
"LOG_LEVEL": "debug",
"DB_TABLE_PREFIX": "custom",
diff --git a/src/network_launcher/devnet.star b/src/network_launcher/devnet.star
index 665da90..24a5aa1 100644
--- a/src/network_launcher/devnet.star
+++ b/src/network_launcher/devnet.star
@@ -4,7 +4,7 @@ el_cl_genesis_data = import_module(
)
-def launch(plan, network, prague_time, repo):
+def launch(plan, network, repo):
# We are running a devnet
url = shared_utils.calculate_devnet_url(network, repo)
el_cl_genesis_uuid = plan.upload_files(
@@ -18,12 +18,9 @@ def launch(plan, network, prague_time, repo):
store=[StoreSpec(src="/network-configs/", name="el_cl_genesis_data")],
files={"/opt": el_cl_genesis_uuid},
)
- genesis_validators_root = read_file(url + "/genesis_validators_root.txt")
el_cl_data = el_cl_genesis_data.new_el_cl_genesis_data(
el_cl_genesis_data_uuid.files_artifacts[0],
- genesis_validators_root,
- prague_time,
)
final_genesis_timestamp = shared_utils.read_genesis_timestamp_from_config(
plan, el_cl_genesis_data_uuid.files_artifacts[0]
diff --git a/src/network_launcher/ephemery.star b/src/network_launcher/ephemery.star
index 534955b..310f0a0 100644
--- a/src/network_launcher/ephemery.star
+++ b/src/network_launcher/ephemery.star
@@ -4,7 +4,7 @@ el_cl_genesis_data = import_module(
)
-def launch(plan, prague_time):
+def launch(plan):
el_cl_genesis_data_uuid = plan.run_sh(
name="fetch-ephemery-genesis-data",
description="Creating network configs",
@@ -15,15 +15,11 @@ def launch(plan, prague_time):
curl -Lo network-config.tar.gz https://github.com/ephemery-testnet/ephemery-genesis/releases/download/$release/network-config.tar.gz ;\
tar xzf network-config.tar.gz -C /ephemery-release ;\
mv /ephemery-release/metadata/* /network-configs/ ;\
- cat /network-configs/genesis_validators_root.txt ;\
'",
store=[StoreSpec(src="/network-configs/", name="el_cl_genesis_data")],
)
- genesis_validators_root = el_cl_genesis_data_uuid.output
el_cl_data = el_cl_genesis_data.new_el_cl_genesis_data(
el_cl_genesis_data_uuid.files_artifacts[0],
- genesis_validators_root,
- prague_time,
)
final_genesis_timestamp = shared_utils.read_genesis_timestamp_from_config(
plan, el_cl_genesis_data_uuid.files_artifacts[0]
diff --git a/src/network_launcher/kurtosis.star b/src/network_launcher/kurtosis.star
index 841f077..ffb1b56 100644
--- a/src/network_launcher/kurtosis.star
+++ b/src/network_launcher/kurtosis.star
@@ -57,14 +57,14 @@ def launch(
plan.print("Generating EL CL data")
- ethereum_genesis_generator_image = shared_utils.docker_cache_image_calc(
+ zond_genesis_generator_image = shared_utils.docker_cache_image_calc(
args_with_right_defaults.docker_cache_params,
- args_with_right_defaults.ethereum_genesis_generator_params.image,
+ args_with_right_defaults.zond_genesis_generator_params.image,
)
return (
total_number_of_validator_keys,
- ethereum_genesis_generator_image,
+ zond_genesis_generator_image,
final_genesis_timestamp,
validator_data,
)
diff --git a/src/network_launcher/public_network.star b/src/network_launcher/public_network.star
index 18f25d8..77505c2 100644
--- a/src/network_launcher/public_network.star
+++ b/src/network_launcher/public_network.star
@@ -5,7 +5,7 @@ el_cl_genesis_data = import_module(
constants = import_module("../package_io/constants.star")
-def launch(plan, network, prague_time):
+def launch(plan, network):
# We are running a public network
dummy_genesis_data = plan.run_sh(
name="dummy-genesis-data",
@@ -15,8 +15,6 @@ def launch(plan, network, prague_time):
)
el_cl_data = el_cl_genesis_data.new_el_cl_genesis_data(
dummy_genesis_data.files_artifacts[0],
- constants.GENESIS_VALIDATORS_ROOT[network],
- prague_time,
)
final_genesis_timestamp = constants.GENESIS_TIME[network]
network_id = constants.NETWORK_ID[network]
diff --git a/src/network_launcher/shadowfork.star b/src/network_launcher/shadowfork.star
index e9261de..bb53e73 100644
--- a/src/network_launcher/shadowfork.star
+++ b/src/network_launcher/shadowfork.star
@@ -32,7 +32,7 @@ def shadowfork_prep(
curl -o /shadowfork/latest_block.json "
+ network_params.network_sync_base_url
+ base_network
- + "/geth/"
+ + "/gzond/"
+ shadowfork_block
+ "/_snapshot_eth_getBlockByNumber.json",
store=[StoreSpec(src="/shadowfork", name="latest_blocks")],
diff --git a/src/package_io/constants.star b/src/package_io/constants.star
index b23e23a..1b4a3e9 100644
--- a/src/package_io/constants.star
+++ b/src/package_io/constants.star
@@ -1,30 +1,13 @@
EL_TYPE = struct(
- geth="geth",
- erigon="erigon",
- nethermind="nethermind",
- besu="besu",
- reth="reth",
- reth_builder="reth-builder",
- ethereumjs="ethereumjs",
- nimbus="nimbus",
+ gzond="gzond",
)
CL_TYPE = struct(
- lighthouse="lighthouse",
- teku="teku",
- nimbus="nimbus",
- prysm="prysm",
- lodestar="lodestar",
- grandine="grandine",
+ qrysm="qrysm",
)
VC_TYPE = struct(
- lighthouse="lighthouse",
- lodestar="lodestar",
- nimbus="nimbus",
- prysm="prysm",
- teku="teku",
- vero="vero",
+ qrysm="qrysm",
)
REMOTE_SIGNER_TYPE = struct(web3signer="web3signer")
@@ -60,12 +43,10 @@ RBUILDER_PORT_ID = "rbuilder-rpc"
LITTLE_BIGTABLE_PORT_ID = "littlebigtable"
VALDIATOR_GRPC_PORT_ID = "grpc"
-VALIDATING_REWARDS_ACCOUNT = "0x8943545177806ED17B9F23F0a21ee5948eCaa776"
+VALIDATING_REWARDS_ACCOUNT = "Z8943545177806ED17B9F23F0a21ee5948eCaa776"
MAX_ENR_ENTRIES = 20
MAX_ENODE_ENTRIES = 20
-GENESIS_VALIDATORS_ROOT_PLACEHOLDER = "GENESIS_VALIDATORS_ROOT_PLACEHOLDER"
-
ARCHIVE_MODE = True
GENESIS_DATA_MOUNTPOINT_ON_CLIENTS = "/network-configs"
@@ -88,8 +69,8 @@ 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_ETHEREUM_GENESIS_GENERATOR_IMAGE = (
- "ethpandaops/ethereum-genesis-generator:3.6.0"
+DEFAULT_ZOND_GENESIS_GENERATOR_IMAGE = (
+ "theqrl/zond-genesis-generator:latest"
)
DEFAULT_FLASHBOTS_RELAY_IMAGE = "flashbots/mev-boost-relay:0.29.2a3"
DEFAULT_FLASHBOTS_BUILDER_IMAGE = "ethpandaops/reth-rbuilder:develop"
@@ -108,19 +89,6 @@ DEFAULT_MNEMONIC = "giant issue aisle success illegal bike spike question tent b
PRIVATE_IP_ADDRESS_PLACEHOLDER = "KURTOSIS_IP_ADDR_PLACEHOLDER"
GENESIS_FORK_VERSION = "0x10000038"
-ALTAIR_FORK_VERSION = "0x20000038"
-BELLATRIX_FORK_VERSION = "0x30000038"
-CAPELLA_FORK_VERSION = "0x40000038"
-DENEB_FORK_VERSION = "0x50000038"
-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
@@ -132,150 +100,49 @@ CONTAINER_REGISTRY = struct(
NETWORK_NAME = struct(
mainnet="mainnet",
- sepolia="sepolia",
- holesky="holesky",
ephemery="ephemery",
kurtosis="kurtosis",
- verkle="verkle",
shadowfork="shadowfork",
)
PUBLIC_NETWORKS = (
"mainnet",
- "sepolia",
- "holesky",
)
NETWORK_ID = {
"mainnet": "1",
- "sepolia": "11155111",
- "holesky": "17000",
}
CHECKPOINT_SYNC_URL = {
"mainnet": "https://beaconstate.info",
"ephemery": "https://checkpoint-sync.ephemery.ethpandaops.io/",
- "sepolia": "https://checkpoint-sync.sepolia.ethpandaops.io/",
- "holesky": "https://checkpoint-sync.holesky.ethpandaops.io/",
-}
-
-GENESIS_VALIDATORS_ROOT = {
- "mainnet": "0x4b363db94e286120d76eb905340fdd4e54bfe9f06bf33ff6cf5ad27f511bfe95",
- "sepolia": "0xd8ea171f3c94aea21ebc42a1ed61052acf3f9209c00e4efbaaddac09ed9b8078",
- "holesky": "0x9143aa7c615a7f7115e2b6aac319c03529df8242ae705fba9df39b79c59fa8b1",
}
DEPOSIT_CONTRACT_ADDRESS = {
- "mainnet": "0x00000000219ab540356cBB839Cbe05303d7705Fa",
- "sepolia": "0x7f02C3E3c98b133055B8B348B2Ac625669Ed295D",
- "holesky": "0x4242424242424242424242424242424242424242",
- "ephemery": "0x4242424242424242424242424242424242424242",
+ "mainnet": "Z00000000219ab540356cBB839Cbe05303d7705Fa",
+ "ephemery": "Z4242424242424242424242424242424242424242",
}
GENESIS_TIME = {
"mainnet": 1606824023,
- "sepolia": 1655733600,
- "holesky": 1695902400,
}
VOLUME_SIZE = {
"mainnet": {
- "geth_volume_size": 1000000, # 1TB
- "erigon_volume_size": 3000000, # 3TB
- "nethermind_volume_size": 1000000, # 1TB
- "besu_volume_size": 1000000, # 1TB
- "reth_volume_size": 3000000, # 3TB
- "reth_builder_volume_size": 3000000, # 3TB
- "ethereumjs_volume_size": 1000000, # 1TB
- "nimbus_eth1_volume_size": 1000000, # 1TB
- "prysm_volume_size": 500000, # 500GB
- "lighthouse_volume_size": 500000, # 500GB
- "teku_volume_size": 500000, # 500GB
- "nimbus_volume_size": 500000, # 500GB
- "lodestar_volume_size": 500000, # 500GB
- "grandine_volume_size": 500000, # 500GB
- },
- "sepolia": {
- "geth_volume_size": 300000, # 300GB
- "erigon_volume_size": 500000, # 500GB
- "nethermind_volume_size": 300000, # 300GB
- "besu_volume_size": 300000, # 300GB
- "reth_volume_size": 500000, # 500GB
- "reth_builder_volume_size": 500000, # 500GB
- "ethereumjs_volume_size": 300000, # 300GB
- "nimbus_eth1_volume_size": 300000, # 300GB
- "prysm_volume_size": 150000, # 150GB
- "lighthouse_volume_size": 150000, # 150GB
- "teku_volume_size": 150000, # 150GB
- "nimbus_volume_size": 150000, # 150GB
- "lodestar_volume_size": 150000, # 150GB
- "grandine_volume_size": 150000, # 150GB
- },
- "holesky": {
- "geth_volume_size": 100000, # 100GB
- "erigon_volume_size": 200000, # 200GB
- "nethermind_volume_size": 100000, # 100GB
- "besu_volume_size": 100000, # 100GB
- "reth_volume_size": 200000, # 200GB
- "reth_builder_volume_size": 200000, # 200GB
- "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
+ "gzond_volume_size": 1000000, # 1TB
+ "qrysm_volume_size": 500000, # 500GB
},
"devnets": {
- "geth_volume_size": 100000, # 100GB
- "erigon_volume_size": 200000, # 200GB
- "nethermind_volume_size": 100000, # 100GB
- "besu_volume_size": 100000, # 100GB
- "reth_volume_size": 200000, # 200GB
- "reth_builder_volume_size": 200000, # 200GB
- "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
+ "gzond_volume_size": 100000, # 100GB
+ "qrysm_volume_size": 100000, # 100GB
},
"ephemery": {
- "geth_volume_size": 5000, # 5GB
- "erigon_volume_size": 3000, # 3GB
- "nethermind_volume_size": 3000, # 3GB
- "besu_volume_size": 3000, # 3GB
- "reth_volume_size": 3000, # 3GB
- "reth_builder_volume_size": 3000, # 3GB
- "ethereumjs_volume_size": 3000, # 3GB
- "nimbus_eth1_volume_size": 3000, # 3GB
- "prysm_volume_size": 1000, # 1GB
- "lighthouse_volume_size": 1000, # 1GB
- "teku_volume_size": 1000, # 1GB
- "nimbus_volume_size": 1000, # 1GB
- "lodestar_volume_size": 1000, # 1GB
- "grandine_volume_size": 1000, # 1GB
+ "gzond_volume_size": 5000, # 5GB
+ "qrysm_volume_size": 1000, # 1GB
},
"kurtosis": {
- "geth_volume_size": 5000, # 5GB
- "erigon_volume_size": 3000, # 3GB
- "nethermind_volume_size": 3000, # 3GB
- "besu_volume_size": 3000, # 3GB
- "reth_volume_size": 3000, # 3GB
- "reth_builder_volume_size": 3000, # 3GB
- "ethereumjs_volume_size": 3000, # 3GB
- "nimbus_eth1_volume_size": 3000, # 3GB
- "prysm_volume_size": 1000, # 1GB
- "lighthouse_volume_size": 1000, # 1GB
- "teku_volume_size": 1000, # 1GB
- "nimbus_volume_size": 1000, # 1GB
- "lodestar_volume_size": 1000, # 1GB
- "grandine_volume_size": 1000, # 1GB
+ "gzond_volume_size": 5000, # 5GB
+ "qrysm_volume_size": 1000, # 1GB
},
}
VOLUME_SIZE["mainnet-shadowfork"] = VOLUME_SIZE["mainnet"]
-VOLUME_SIZE["sepolia-shadowfork"] = VOLUME_SIZE["sepolia"]
-VOLUME_SIZE["holesky-shadowfork"] = VOLUME_SIZE["holesky"]
diff --git a/src/package_io/input_parser.star b/src/package_io/input_parser.star
index ed66c59..944fcdd 100644
--- a/src/package_io/input_parser.star
+++ b/src/package_io/input_parser.star
@@ -7,61 +7,29 @@ genesis_constants = import_module(
sanity_check = import_module("./sanity_check.star")
DEFAULT_EL_IMAGES = {
- "geth": "ethereum/client-go:latest",
- "erigon": "ethpandaops/erigon:main",
- "nethermind": "nethermindeth/nethermind:master",
- "besu": "hyperledger/besu:latest",
- "reth": "ghcr.io/paradigmxyz/reth",
- "ethereumjs": "ethpandaops/ethereumjs:master",
- "nimbus": "ethpandaops/nimbus-eth1:master",
+ "gzond": "theqrl/gzond:latest",
}
DEFAULT_CL_IMAGES = {
- "lighthouse": "ethpandaops/lighthouse:stable",
- "teku": "consensys/teku:latest",
- "nimbus": "statusim/nimbus-eth2:multiarch-latest",
- "prysm": "gcr.io/prysmaticlabs/prysm/beacon-chain:stable",
- "lodestar": "chainsafe/lodestar:latest",
- "grandine": "sifrai/grandine:stable",
+ "qrysm": "theqrl/qrysm-beacon-chain:latest",
}
DEFAULT_CL_IMAGES_MINIMAL = {
- "lighthouse": "ethpandaops/lighthouse:stable",
- "teku": "consensys/teku:latest",
- "nimbus": "ethpandaops/nimbus-eth2:stable-minimal",
- "prysm": "ethpandaops/prysm-beacon-chain:develop-minimal",
- "lodestar": "chainsafe/lodestar:latest",
- "grandine": "ethpandaops/grandine:develop-minimal",
+ "qrysm": "theqrl/qrysm-beacon-chain:develop-minimal",
}
DEFAULT_VC_IMAGES = {
- "lighthouse": "ethpandaops/lighthouse:stable",
- "lodestar": "chainsafe/lodestar:latest",
- "nimbus": "statusim/nimbus-validator-client:multiarch-latest",
- "prysm": "gcr.io/prysmaticlabs/prysm/validator:stable",
- "teku": "consensys/teku:latest",
- "grandine": "sifrai/grandine:stable",
- "vero": "ghcr.io/serenita-org/vero:master",
+ "qrysm": "theqrl/qrysm-validator:latest",
}
DEFAULT_VC_IMAGES_MINIMAL = {
- "lighthouse": "ethpandaops/lighthouse:stable",
- "lodestar": "chainsafe/lodestar:latest",
- "nimbus": "ethpandaops/nimbus-validator-client:stable-minimal",
- "prysm": "ethpandaops/prysm-validator:develop-minimal",
- "teku": "consensys/teku:latest",
- "grandine": "ethpandaops/grandine:develop-minimal",
- "vero": "ghcr.io/serenita-org/vero:master",
+ "qrysm": "theqrl/qrysm-validator:develop-minimal",
}
DEFAULT_REMOTE_SIGNER_IMAGES = {
"web3signer": "consensys/web3signer:latest",
}
-# Placeholder value for the deneb fork epoch if electra is being run
-# TODO: This is a hack, and should be removed once we electra is rebased on deneb
-HIGH_DENEB_VALUE_FORK_VERKLE = 2000000000
-
# MEV Params
MEV_BOOST_PORT = 18550
MEV_BOOST_SERVICE_NAME_PREFIX = "mev-boost"
@@ -86,7 +54,6 @@ ATTR_TO_BE_SKIPPED_AT_ROOT = (
"xatu_sentry_params",
"port_publisher",
"spamoor_params",
- "spamoor_blob_params",
)
@@ -120,7 +87,6 @@ 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()
if constants.NETWORK_NAME.shadowfork in result["network_params"]["network"]:
shadow_base = result["network_params"]["network"].split("-shadowfork")[0]
@@ -186,14 +152,10 @@ 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 == "zond_genesis_generator_params":
+ for sub_attr in input_args["zond_genesis_generator_params"]:
+ sub_value = input_args["zond_genesis_generator_params"][sub_attr]
+ result["zond_genesis_generator_params"][sub_attr] = sub_value
if result.get("disable_peer_scoring"):
result = enrich_disable_peer_scoring(result)
@@ -294,8 +256,6 @@ def input_parser(plan, input_args):
scrape_interval=participant["prometheus_config"]["scrape_interval"],
labels=participant["prometheus_config"]["labels"],
),
- blobber_enabled=participant["blobber_enabled"],
- blobber_extra_params=participant["blobber_extra_params"],
keymanager_enabled=participant["keymanager_enabled"],
)
for participant in result["participants"]
@@ -323,14 +283,6 @@ def input_parser(plan, input_args):
churn_limit_quotient=result["network_params"]["churn_limit_quotient"],
ejection_balance=result["network_params"]["ejection_balance"],
eth1_follow_distance=result["network_params"]["eth1_follow_distance"],
- altair_fork_epoch=result["network_params"]["altair_fork_epoch"],
- bellatrix_fork_epoch=result["network_params"]["bellatrix_fork_epoch"],
- capella_fork_epoch=result["network_params"]["capella_fork_epoch"],
- 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"
@@ -342,18 +294,6 @@ def input_parser(plan, input_args):
],
samples_per_slot=result["network_params"]["samples_per_slot"],
custody_requirement=result["network_params"]["custody_requirement"],
- max_blobs_per_block_electra=result["network_params"][
- "max_blobs_per_block_electra"
- ],
- target_blobs_per_block_electra=result["network_params"][
- "target_blobs_per_block_electra"
- ],
- max_blobs_per_block_fulu=result["network_params"][
- "max_blobs_per_block_fulu"
- ],
- target_blobs_per_block_fulu=result["network_params"][
- "target_blobs_per_block_fulu"
- ],
preset=result["network_params"]["preset"],
additional_preloaded_contracts=result["network_params"][
"additional_preloaded_contracts"
@@ -365,7 +305,7 @@ def input_parser(plan, input_args):
mev_params=struct(
mev_relay_image=result["mev_params"]["mev_relay_image"],
mev_builder_image=result["mev_params"]["mev_builder_image"],
- mev_builder_cl_image=result["mev_params"]["mev_builder_cl_image"],
+ # mev_builder_cl_image=result["mev_params"]["mev_builder_cl_image"],
mev_builder_extra_data=result["mev_params"]["mev_builder_extra_data"],
mev_boost_image=result["mev_params"]["mev_boost_image"],
mev_boost_args=result["mev_params"]["mev_boost_args"],
@@ -436,9 +376,6 @@ def input_parser(plan, input_args):
],
run_lifecycle_test=result["assertoor_params"]["run_lifecycle_test"],
run_transaction_test=result["assertoor_params"]["run_transaction_test"],
- run_blob_transaction_test=result["assertoor_params"][
- "run_blob_transaction_test"
- ],
run_opcodes_transaction_test=result["assertoor_params"][
"run_opcodes_transaction_test"
],
@@ -457,15 +394,6 @@ def input_parser(plan, input_args):
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"],
- ),
additional_services=result["additional_services"],
wait_for_finalization=result["wait_for_finalization"],
global_log_level=result["global_log_level"],
@@ -488,8 +416,8 @@ 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"],
+ zond_genesis_generator_params=struct(
+ image=result["zond_genesis_generator_params"]["image"],
),
port_publisher=struct(
nat_exit_ip=result["port_publisher"]["nat_exit_ip"],
@@ -581,28 +509,6 @@ def parse_network_params(plan, input_args):
vc_type = participant["vc_type"]
remote_signer_type = participant["remote_signer_type"]
- if (
- cl_type in (constants.CL_TYPE.nimbus)
- and (result["network_params"]["seconds_per_slot"] < 12)
- and result["network_params"]["preset"] == "mainnet"
- ):
- fail(
- "nimbus can't be run with slot times below 12 seconds with "
- + result["network_params"]["preset"]
- + " preset"
- )
-
- if (
- cl_type in (constants.CL_TYPE.nimbus)
- and (result["network_params"]["seconds_per_slot"] != 6)
- and result["network_params"]["preset"] == "minimal"
- ):
- fail(
- "nimbus can't be run with slot times different than 6 seconds with "
- + result["network_params"]["preset"]
- + " preset"
- )
-
el_image = participant["el_image"]
if el_image == "":
default_image = DEFAULT_EL_IMAGES.get(el_type, "")
@@ -629,20 +535,7 @@ def parse_network_params(plan, input_args):
participant["cl_image"] = default_image
if participant["use_separate_vc"] == None:
- # Default to false for CL clients that can run validator clients
- # in the same process.
- if (
- cl_type
- in (
- constants.CL_TYPE.nimbus,
- constants.CL_TYPE.teku,
- constants.CL_TYPE.grandine,
- )
- and vc_type == ""
- ):
- participant["use_separate_vc"] = False
- else:
- participant["use_separate_vc"] = True
+ participant["use_separate_vc"] = True
if participant["use_remote_signer"] and not participant["use_separate_vc"]:
fail("`use_remote_signer` requires `use_separate_vc`")
@@ -661,12 +554,8 @@ def parse_network_params(plan, input_args):
else:
default_image = DEFAULT_VC_IMAGES.get(vc_type, "")
else:
- if cl_type == "prysm":
+ if cl_type == "qrysm":
default_image = cl_image.replace("beacon-chain", "validator")
- elif cl_type == "nimbus":
- default_image = cl_image.replace(
- "nimbus-eth2", "nimbus-validator-client"
- )
else:
default_image = cl_image
if default_image == "":
@@ -703,16 +592,6 @@ def parse_network_params(plan, input_args):
if xatu_sentry_enabled == None:
participant["xatu_sentry_enabled"] = result["xatu_sentry_enabled"]
- blobber_enabled = participant["blobber_enabled"]
- if blobber_enabled:
- # unless we are running lighthouse, we don't support blobber
- if participant["cl_type"] != constants.CL_TYPE.lighthouse:
- fail(
- "blobber is not supported for {0} client".format(
- participant["cl_type"]
- )
- )
-
validator_count = participant["validator_count"]
if validator_count == None:
participant["validator_count"] = result["network_params"][
@@ -732,15 +611,6 @@ def parse_network_params(plan, input_args):
total_participant_count += participant["count"]
- if total_participant_count == 1:
- for index, participant in enumerate(result["participants"]):
- # If there is only one participant, we run lodestar as a single node mode
- if participant["cl_type"] == constants.CL_TYPE.lodestar:
- participant["cl_extra_params"].append("--sync.isSingleNode")
- participant["cl_extra_params"].append(
- "--network.allowPublishToZeroPeers"
- )
-
if result["network_params"]["network_id"].strip() == "":
fail("network_id is empty or spaces it needs to be of non zero length")
@@ -879,7 +749,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(),
+ "zond_genesis_generator_params": get_default_zond_genesis_generator_params(),
"port_publisher": {
"nat_exit_ip": constants.PRIVATE_IP_ADDRESS_PLACEHOLDER,
"public_port_start": None,
@@ -892,8 +762,8 @@ def default_network_params():
return {
"network": "kurtosis",
"network_id": "3151908",
- "deposit_contract_address": "0x4242424242424242424242424242424242424242",
- "seconds_per_slot": 12,
+ "deposit_contract_address": "Z4242424242424242424242424242424242424242",
+ "seconds_per_slot": 60,
"num_validator_keys_per_node": 64,
"preregistered_validator_keys_mnemonic": constants.DEFAULT_MNEMONIC,
"preregistered_validator_count": 0,
@@ -905,22 +775,10 @@ def default_network_params():
"eth1_follow_distance": 2048,
"min_validator_withdrawability_delay": 256,
"shard_committee_period": 256,
- "altair_fork_epoch": 0,
- "bellatrix_fork_epoch": 0,
- "capella_fork_epoch": 0,
- "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/",
+ "network_sync_base_url": "https://snapshots.theqrl.org/",
"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,
"preset": "mainnet",
"additional_preloaded_contracts": {},
"devnet_repo": "ethpandaops",
@@ -933,8 +791,8 @@ def default_minimal_network_params():
return {
"network": "kurtosis",
"network_id": "3151908",
- "deposit_contract_address": "0x4242424242424242424242424242424242424242",
- "seconds_per_slot": 6,
+ "deposit_contract_address": "Z4242424242424242424242424242424242424242",
+ "seconds_per_slot": 15,
"num_validator_keys_per_node": 64,
"preregistered_validator_keys_mnemonic": constants.DEFAULT_MNEMONIC,
"preregistered_validator_count": 0,
@@ -946,22 +804,10 @@ def default_minimal_network_params():
"eth1_follow_distance": 16,
"min_validator_withdrawability_delay": 256,
"shard_committee_period": 64,
- "altair_fork_epoch": 0,
- "bellatrix_fork_epoch": 0,
- "capella_fork_epoch": 0,
- "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/",
+ "network_sync_base_url": "https://snapshots.theqrl.org/",
"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,
"preset": "minimal",
"additional_preloaded_contracts": {},
"devnet_repo": "ethpandaops",
@@ -972,7 +818,7 @@ def default_minimal_network_params():
def default_participant():
return {
- "el_type": "geth",
+ "el_type": "gzond",
"el_image": "",
"el_log_level": "",
"el_extra_env_vars": {},
@@ -984,7 +830,7 @@ def default_participant():
"el_max_cpu": 0,
"el_min_mem": 0,
"el_max_mem": 0,
- "cl_type": "lighthouse",
+ "cl_type": "qrysm",
"cl_image": "",
"cl_log_level": "",
"cl_extra_env_vars": {},
@@ -1031,8 +877,6 @@ def default_participant():
"scrape_interval": "15s",
"labels": None,
},
- "blobber_enabled": False,
- "blobber_extra_params": [],
"builder_network_params": None,
"keymanager_enabled": None,
}
@@ -1066,10 +910,10 @@ def get_default_docker_cache_params():
def get_default_mev_params(mev_type, preset):
mev_relay_image = constants.DEFAULT_FLASHBOTS_RELAY_IMAGE
mev_builder_image = constants.DEFAULT_FLASHBOTS_BUILDER_IMAGE
- if preset == "minimal":
- mev_builder_cl_image = DEFAULT_CL_IMAGES_MINIMAL[constants.CL_TYPE.lighthouse]
- else:
- mev_builder_cl_image = DEFAULT_CL_IMAGES[constants.CL_TYPE.lighthouse]
+ # if preset == "minimal":
+ # mev_builder_cl_image = DEFAULT_CL_IMAGES_MINIMAL[constants.CL_TYPE.lighthouse]
+ # else:
+ # mev_builder_cl_image = DEFAULT_CL_IMAGES[constants.CL_TYPE.lighthouse]
mev_builder_extra_data = None
mev_boost_image = constants.DEFAULT_FLASHBOTS_MEV_BOOST_IMAGE
mev_boost_args = ["mev-boost", "--relay-check"]
@@ -1091,30 +935,30 @@ def get_default_mev_params(mev_type, preset):
"max_mem": 2048,
}
- if mev_type == constants.MEV_RS_MEV_TYPE:
- if preset == "minimal":
- mev_relay_image = constants.DEFAULT_MEV_RS_IMAGE_MINIMAL
- mev_builder_image = constants.DEFAULT_MEV_RS_IMAGE_MINIMAL
- mev_builder_cl_image = DEFAULT_CL_IMAGES_MINIMAL[
- constants.CL_TYPE.lighthouse
- ]
- mev_boost_image = constants.DEFAULT_MEV_RS_IMAGE_MINIMAL
- else:
- mev_relay_image = constants.DEFAULT_MEV_RS_IMAGE
- mev_builder_image = constants.DEFAULT_MEV_RS_IMAGE
- mev_builder_cl_image = DEFAULT_CL_IMAGES[constants.CL_TYPE.lighthouse]
- mev_boost_image = constants.DEFAULT_MEV_RS_IMAGE
- mev_builder_extra_data = "0x68656C6C6F20776F726C640A" # "hello world\n"
- mev_builder_extra_args = ["--mev-builder-config=" + "/config/config.toml"]
-
- if mev_type == constants.COMMIT_BOOST_MEV_TYPE:
- mev_relay_image = constants.DEFAULT_FLASHBOTS_RELAY_IMAGE
- mev_builder_image = constants.DEFAULT_FLASHBOTS_BUILDER_IMAGE
- mev_boost_image = constants.DEFAULT_COMMIT_BOOST_MEV_BOOST_IMAGE
- mev_builder_cl_image = DEFAULT_CL_IMAGES[constants.CL_TYPE.lighthouse]
- mev_builder_extra_data = (
- "0x436F6D6D69742D426F6F737420F09F93BB" # Commit-Boost 📻
- )
+ # if mev_type == constants.MEV_RS_MEV_TYPE:
+ # if preset == "minimal":
+ # mev_relay_image = constants.DEFAULT_MEV_RS_IMAGE_MINIMAL
+ # mev_builder_image = constants.DEFAULT_MEV_RS_IMAGE_MINIMAL
+ # mev_builder_cl_image = DEFAULT_CL_IMAGES_MINIMAL[
+ # constants.CL_TYPE.lighthouse
+ # ]
+ # mev_boost_image = constants.DEFAULT_MEV_RS_IMAGE_MINIMAL
+ # else:
+ # mev_relay_image = constants.DEFAULT_MEV_RS_IMAGE
+ # mev_builder_image = constants.DEFAULT_MEV_RS_IMAGE
+ # mev_builder_cl_image = DEFAULT_CL_IMAGES[constants.CL_TYPE.lighthouse]
+ # mev_boost_image = constants.DEFAULT_MEV_RS_IMAGE
+ # mev_builder_extra_data = "0x68656C6C6F20776F726C640A" # "hello world\n"
+ # mev_builder_extra_args = ["--mev-builder-config=" + "/config/config.toml"]
+
+ # if mev_type == constants.COMMIT_BOOST_MEV_TYPE:
+ # mev_relay_image = constants.DEFAULT_FLASHBOTS_RELAY_IMAGE
+ # mev_builder_image = constants.DEFAULT_FLASHBOTS_BUILDER_IMAGE
+ # mev_boost_image = constants.DEFAULT_COMMIT_BOOST_MEV_BOOST_IMAGE
+ # mev_builder_cl_image = DEFAULT_CL_IMAGES[constants.CL_TYPE.lighthouse]
+ # mev_builder_extra_data = (
+ # "0x436F6D6D69742D426F6F737420F09F93BB" # Commit-Boost 📻
+ # )
if mev_type == constants.MOCK_MEV_TYPE:
mev_builder_image = constants.DEFAULT_MOCK_MEV_IMAGE
@@ -1126,7 +970,7 @@ def get_default_mev_params(mev_type, preset):
"mock_mev_image": mev_builder_image
if mev_type == constants.MOCK_MEV_TYPE
else None,
- "mev_builder_cl_image": mev_builder_cl_image,
+ # "mev_builder_cl_image": mev_builder_cl_image,
"mev_builder_extra_data": mev_builder_extra_data,
"mev_builder_extra_args": mev_builder_extra_args,
"mev_boost_image": mev_boost_image,
@@ -1155,7 +999,6 @@ def get_default_assertoor_params():
"run_block_proposal_check": False,
"run_lifecycle_test": False,
"run_transaction_test": False,
- "run_blob_transaction_test": False,
"run_opcodes_transaction_test": False,
"tests": [],
}
@@ -1198,7 +1041,6 @@ def get_default_xatu_sentry_params():
"head",
"voluntary_exit",
"contribution_and_proof",
- "blob_sidecar",
],
}
@@ -1213,19 +1055,6 @@ def get_default_spamoor_params():
"spamoor_extra_args": [],
}
-
-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}
@@ -1258,16 +1087,8 @@ def get_port_publisher_params(parameter_type, input_args=None):
def enrich_disable_peer_scoring(parsed_arguments_dict):
for index, participant in enumerate(parsed_arguments_dict["participants"]):
- if participant["cl_type"] == "lighthouse":
- participant["cl_extra_params"].append("--disable-peer-scoring")
- if participant["cl_type"] == "prysm":
+ if participant["cl_type"] == "qrysm":
participant["cl_extra_params"].append("--disable-peer-scorer")
- if participant["cl_type"] == "teku":
- participant["cl_extra_params"].append("--Xp2p-gossip-scoring-enabled")
- if participant["cl_type"] == "lodestar":
- participant["cl_extra_params"].append("--disablePeerScoring")
- if participant["cl_type"] == "grandine":
- participant["cl_extra_params"].append("--disable-peer-scoring")
return parsed_arguments_dict
@@ -1285,44 +1106,12 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
mev_port,
)
- if participant["cl_type"] == "lighthouse":
- participant["cl_extra_params"].append("--builder={0}".format(mev_url))
- if participant["vc_type"] == "lighthouse":
- participant["vc_extra_params"].append("--builder-proposals")
- if participant["cl_type"] == "lodestar":
- participant["cl_extra_params"].append("--builder")
- participant["cl_extra_params"].append("--builder.urls={0}".format(mev_url))
- if participant["vc_type"] == "lodestar":
- participant["vc_extra_params"].append("--builder")
- if participant["cl_type"] == "nimbus":
- participant["cl_extra_params"].append("--payload-builder=true")
- participant["cl_extra_params"].append(
- "--payload-builder-url={0}".format(mev_url)
- )
- if participant["vc_type"] == "nimbus":
- participant["vc_extra_params"].append("--payload-builder=true")
- if participant["cl_type"] == "teku":
- participant["cl_extra_params"].append(
- "--builder-endpoint={0}".format(mev_url)
- )
- participant["cl_extra_params"].append(
- "--validators-builder-registration-default-enabled=true"
- )
- if participant["vc_type"] == "teku":
- participant["vc_extra_params"].append(
- "--validators-builder-registration-default-enabled=true"
- )
- if participant["cl_type"] == "prysm":
+ if participant["cl_type"] == "qrysm":
participant["cl_extra_params"].append(
"--http-mev-relay={0}".format(mev_url)
)
- if participant["vc_type"] == "prysm":
+ if participant["vc_type"] == "qrysm":
participant["vc_extra_params"].append("--enable-builder")
- if participant["cl_type"] == "grandine":
- participant["cl_extra_params"].append("--builder-url={0}".format(mev_url))
-
- if participant["vc_type"] == "vero":
- participant["vc_extra_params"].append("--use-external-builder")
num_participants = len(parsed_arguments_dict["participants"])
index_str = shared_utils.zfill_custom(
@@ -1337,7 +1126,7 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
mev_participant.update(
{
"el_image": parsed_arguments_dict["mev_params"]["mev_builder_image"],
- "cl_image": parsed_arguments_dict["mev_params"]["mev_builder_cl_image"],
+ # "cl_image": parsed_arguments_dict["mev_params"]["mev_builder_cl_image"],
"cl_log_level": parsed_arguments_dict["global_log_level"],
"cl_extra_params": [
"--always-prepare-payload",
@@ -1363,7 +1152,7 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
mev_participant.update(
{
"el_image": parsed_arguments_dict["mev_params"]["mev_builder_image"],
- "cl_image": parsed_arguments_dict["mev_params"]["mev_builder_cl_image"],
+ # "cl_image": parsed_arguments_dict["mev_params"]["mev_builder_cl_image"],
"cl_log_level": parsed_arguments_dict["global_log_level"],
"cl_extra_params": [
"--always-prepare-payload",
@@ -1417,7 +1206,7 @@ def docker_cache_image_override(plan, result):
"assertoor_params.image",
"mev_params.mev_relay_image",
"mev_params.mev_builder_image",
- "mev_params.mev_builder_cl_image",
+ # "mev_params.mev_builder_cl_image",
"mev_params.mev_boost_image",
"mev_params.mev_flood_image",
"xatu_sentry_params.xatu_sentry_image",
@@ -1425,8 +1214,7 @@ def docker_cache_image_override(plan, result):
"prometheus_params.image",
"grafana_params.image",
"spamoor_params.image",
- "spamoor_blob_params.image",
- "ethereum_genesis_generator_params.image",
+ "zond_genesis_generator_params.image",
]
if result["docker_cache_params"]["url"] == "":
@@ -1500,7 +1288,7 @@ def docker_cache_image_override(plan, result):
)
-def get_default_ethereum_genesis_generator_params():
+def get_default_zond_genesis_generator_params():
return {
- "image": constants.DEFAULT_ETHEREUM_GENESIS_GENERATOR_IMAGE,
+ "image": constants.DEFAULT_ZOND_GENESIS_GENERATOR_IMAGE,
}
diff --git a/src/package_io/sanity_check.star b/src/package_io/sanity_check.star
index 1089178..80c58ce 100644
--- a/src/package_io/sanity_check.star
+++ b/src/package_io/sanity_check.star
@@ -56,8 +56,6 @@ PARTICIPANT_CATEGORIES = {
"ethereum_metrics_exporter_enabled",
"xatu_sentry_enabled",
"prometheus_config",
- "blobber_enabled",
- "blobber_extra_params",
"builder_network_params",
"keymanager_enabled",
],
@@ -153,22 +151,10 @@ SUBCATEGORY_PARAMS = {
"eth1_follow_distance",
"min_validator_withdrawability_delay",
"shard_committee_period",
- "altair_fork_epoch",
- "bellatrix_fork_epoch",
- "capella_fork_epoch",
- "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",
"custody_requirement",
- "max_blobs_per_block_electra",
- "target_blobs_per_block_electra",
- "max_blobs_per_block_fulu",
- "target_blobs_per_block_fulu",
"preset",
"additional_preloaded_contracts",
"devnet_repo",
@@ -217,7 +203,6 @@ SUBCATEGORY_PARAMS = {
"run_stability_check",
"run_block_proposal_check",
"run_transaction_test",
- "run_blob_transaction_test",
"run_opcodes_transaction_test",
"run_lifecycle_test",
"tests",
@@ -225,7 +210,7 @@ SUBCATEGORY_PARAMS = {
"mev_params": [
"mev_relay_image",
"mev_builder_image",
- "mev_builder_cl_image",
+ # "mev_builder_cl_image",
"mev_boost_image",
"mev_boost_args",
"mev_relay_api_extra_args",
@@ -254,16 +239,7 @@ SUBCATEGORY_PARAMS = {
"max_wallets",
"spamoor_extra_args",
],
- "spamoor_blob_params": [
- "image",
- "scenario",
- "throughput",
- "max_blobs",
- "max_pending",
- "max_wallets",
- "spamoor_extra_args",
- ],
- "ethereum_genesis_generator_params": [
+ "zond_genesis_generator_params": [
"image",
],
"port_publisher": [
@@ -280,7 +256,6 @@ ADDITIONAL_SERVICES_PARAMS = [
"assertoor",
"broadcaster",
"tx_spammer",
- "blob_spammer",
"custom_flood",
"el_forkmon",
"blockscout",
@@ -288,14 +263,12 @@ ADDITIONAL_SERVICES_PARAMS = [
"dora",
"full_beaconchain_explorer",
"prometheus_grafana",
- "blobscan",
"dugtrio",
"blutgang",
"forky",
"apache",
"tracoor",
"spamoor",
- "spamoor_blob",
]
ADDITIONAL_CATEGORY_PARAMS = {
diff --git a/src/participant_network.star b/src/participant_network.star
index f1a433f..7ccf8b6 100644
--- a/src/participant_network.star
+++ b/src/participant_network.star
@@ -44,15 +44,8 @@ def launch_participant_network(
network_id = network_params.network_id
latest_block = ""
num_participants = len(args_with_right_defaults.participants)
- prague_time = 0
shadowfork_block = "latest"
total_number_of_validator_keys = 0
- if (
- constants.NETWORK_NAME.shadowfork in network_params.network
- and ("verkle" in network_params.network)
- and ("holesky" in network_params.network)
- ):
- shadowfork_block = "793312" # Hardcodes verkle shadowfork block for holesky
if (
network_params.network == constants.NETWORK_NAME.kurtosis
@@ -73,7 +66,7 @@ def launch_participant_network(
# We are running a kurtosis or shadowfork network
(
total_number_of_validator_keys,
- ethereum_genesis_generator_image,
+ zond_genesis_generator_image,
final_genesis_timestamp,
validator_data,
) = launch_kurtosis.launch(
@@ -86,7 +79,7 @@ def launch_participant_network(
el_cl_data = el_cl_genesis_data_generator.generate_el_cl_genesis_data(
plan,
- ethereum_genesis_generator_image,
+ zond_genesis_generator_image,
el_cl_genesis_config_template,
final_genesis_timestamp,
network_params,
@@ -100,7 +93,7 @@ def launch_participant_network(
final_genesis_timestamp,
network_id,
validator_data,
- ) = launch_ephemery.launch(plan, prague_time)
+ ) = launch_ephemery.launch(plan)
elif (
network_params.network in constants.PUBLIC_NETWORKS
and network_params.network != constants.NETWORK_NAME.ephemery
@@ -111,7 +104,7 @@ def launch_participant_network(
final_genesis_timestamp,
network_id,
validator_data,
- ) = launch_public_network.launch(plan, network_params.network, prague_time)
+ ) = launch_public_network.launch(plan, network_params.network)
else:
# We are running a devnet
(
@@ -122,7 +115,6 @@ def launch_participant_network(
) = launch_devnet.launch(
plan,
network_params.network,
- prague_time,
network_params.devnet_repo,
)
@@ -145,13 +137,13 @@ def launch_participant_network(
)
# Launch all consensus layer clients
- prysm_password_relative_filepath = (
- validator_data.prysm_password_relative_filepath
+ qrysm_password_relative_filepath = (
+ validator_data.qrysm_password_relative_filepath
if total_number_of_validator_keys > 0
else None
)
- prysm_password_artifact_uuid = (
- validator_data.prysm_password_artifact_uuid
+ qrysm_password_artifact_uuid = (
+ validator_data.qrysm_password_artifact_uuid
if total_number_of_validator_keys > 0
else None
)
@@ -173,8 +165,8 @@ def launch_participant_network(
persistent,
num_participants,
validator_data,
- prysm_password_relative_filepath,
- prysm_password_artifact_uuid,
+ qrysm_password_relative_filepath,
+ qrysm_password_artifact_uuid,
)
ethereum_metrics_exporter_context = None
@@ -186,9 +178,7 @@ def launch_participant_network(
# Some CL clients cannot run validator clients in the same process and need
# a separate validator client
_cls_that_need_separate_vc = [
- constants.CL_TYPE.prysm,
- constants.CL_TYPE.lodestar,
- constants.CL_TYPE.lighthouse,
+ constants.CL_TYPE.qrysm,
]
current_vc_index = 0
@@ -365,13 +355,12 @@ def launch_participant_network(
snooper_beacon_context=snooper_beacon_context,
node_keystore_files=vc_keystores,
participant=participant,
- prysm_password_relative_filepath=prysm_password_relative_filepath,
- prysm_password_artifact_uuid=prysm_password_artifact_uuid,
+ qrysm_password_relative_filepath=qrysm_password_relative_filepath,
+ qrysm_password_artifact_uuid=qrysm_password_artifact_uuid,
global_tolerations=global_tolerations,
node_selectors=node_selectors,
preset=network_params.preset,
network=network_params.network,
- electra_fork_epoch=network_params.electra_fork_epoch,
port_publisher=args_with_right_defaults.port_publisher,
vc_index=current_vc_index,
)
@@ -436,7 +425,6 @@ def launch_participant_network(
return (
all_participants,
final_genesis_timestamp,
- el_cl_data.genesis_validators_root,
el_cl_data.files_artifact_uuid,
network_id,
)
diff --git a/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_data.star b/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_data.star
index 9415793..e636b00 100644
--- a/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_data.star
+++ b/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_data.star
@@ -1,10 +1,6 @@
def new_el_cl_genesis_data(
files_artifact_uuid,
- genesis_validators_root,
- prague_time,
):
return struct(
files_artifact_uuid=files_artifact_uuid,
- genesis_validators_root=genesis_validators_root,
- prague_time=prague_time,
)
diff --git a/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star b/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star
index 5e5eefe..3bd5175 100644
--- a/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star
+++ b/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star
@@ -49,38 +49,17 @@ def generate_el_cl_genesis_data(
genesis = plan.run_sh(
name="run-generate-genesis",
description="Creating genesis",
- run="cp /opt/values.env /config/values.env && ./entrypoint.sh all && mkdir /network-configs && mv /data/metadata/* /network-configs/ && mv /data/parsed /network-configs/parsed",
+ run="cp /opt/values.env /config/values.env && ./entrypoint.sh all && mkdir /network-configs && mv /data/metadata/* /network-configs/",
image=image,
files=files,
store=[
StoreSpec(src="/network-configs/", name="el_cl_genesis_data"),
- StoreSpec(
- src="/network-configs/genesis_validators_root.txt",
- name="genesis_validators_root",
- ),
],
wait=None,
)
- genesis_validators_root = plan.run_sh(
- name="read-genesis-validators-root",
- description="Reading genesis validators root",
- run="cat /data/genesis_validators_root.txt",
- files={"/data": genesis.files_artifacts[1]},
- wait=None,
- )
-
- prague_time = plan.run_sh(
- name="read-prague-time",
- description="Reading prague time from genesis",
- run="jq .config.pragueTime /data/genesis.json | tr -d '\n'",
- files={"/data": genesis.files_artifacts[0]},
- )
-
result = el_cl_genesis_data.new_el_cl_genesis_data(
genesis.files_artifacts[0],
- genesis_validators_root.output,
- prague_time.output,
)
return result
@@ -107,33 +86,13 @@ def new_env_file_for_el_cl_genesis_data(
"ChurnLimitQuotient": network_params.churn_limit_quotient,
"EjectionBalance": network_params.ejection_balance,
"Eth1FollowDistance": network_params.eth1_follow_distance,
- "AltairForkEpoch": network_params.altair_fork_epoch,
- "BellatrixForkEpoch": network_params.bellatrix_fork_epoch,
- "CapellaForkEpoch": network_params.capella_fork_epoch,
- "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,
- "CapellaForkVersion": constants.CAPELLA_FORK_VERSION,
- "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,
"DataColumnSidecarSubnetCount": network_params.data_column_sidecar_subnet_count,
"SamplesPerSlot": network_params.samples_per_slot,
"CustodyRequirement": network_params.custody_requirement,
- "MaxBlobsPerBlockElectra": network_params.max_blobs_per_block_electra,
- "TargetBlobsPerBlockElectra": network_params.target_blobs_per_block_electra,
- "MaxBlobsPerBlockFulu": network_params.max_blobs_per_block_fulu,
- "TargetBlobsPerBlockFulu": network_params.target_blobs_per_block_fulu,
"Preset": network_params.preset,
"AdditionalPreloadedContracts": json.encode(
network_params.additional_preloaded_contracts
diff --git a/src/prelaunch_data_generator/genesis_constants/genesis_constants.star b/src/prelaunch_data_generator/genesis_constants/genesis_constants.star
index 0c34600..d8b51c5 100644
--- a/src/prelaunch_data_generator/genesis_constants/genesis_constants.star
+++ b/src/prelaunch_data_generator/genesis_constants/genesis_constants.star
@@ -9,107 +9,107 @@ def new_prefunded_account(address, private_key):
PRE_FUNDED_ACCOUNTS = [
# m/44'/60'/0'/0/0
new_prefunded_account(
- "0x8943545177806ED17B9F23F0a21ee5948eCaa776",
+ "Z8943545177806ED17B9F23F0a21ee5948eCaa776",
"bcdf20249abf0ed6d944c0288fad489e33f66b3960d9e6229c1cd214ed3bbe31",
),
# m/44'/60'/0'/0/1
new_prefunded_account(
- "0xE25583099BA105D9ec0A67f5Ae86D90e50036425",
+ "ZE25583099BA105D9ec0A67f5Ae86D90e50036425",
"39725efee3fb28614de3bacaffe4cc4bd8c436257e2c8bb887c4b5c4be45e76d",
),
# m/44'/60'/0'/0/2
new_prefunded_account(
- "0x614561D2d143621E126e87831AEF287678B442b8",
+ "Z614561D2d143621E126e87831AEF287678B442b8",
"53321db7c1e331d93a11a41d16f004d7ff63972ec8ec7c25db329728ceeb1710",
),
# m/44'/60'/0'/0/3
new_prefunded_account(
- "0xf93Ee4Cf8c6c40b329b0c0626F28333c132CF241",
+ "Zf93Ee4Cf8c6c40b329b0c0626F28333c132CF241",
"ab63b23eb7941c1251757e24b3d2350d2bc05c3c388d06f8fe6feafefb1e8c70",
),
# m/44'/60'/0'/0/4
new_prefunded_account(
- "0x802dCbE1B1A97554B4F50DB5119E37E8e7336417",
+ "Z802dCbE1B1A97554B4F50DB5119E37E8e7336417",
"5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491",
),
# m/44'/60'/0'/0/5
new_prefunded_account(
- "0xAe95d8DA9244C37CaC0a3e16BA966a8e852Bb6D6",
+ "ZAe95d8DA9244C37CaC0a3e16BA966a8e852Bb6D6",
"27515f805127bebad2fb9b183508bdacb8c763da16f54e0678b16e8f28ef3fff",
),
# m/44'/60'/0'/0/6
new_prefunded_account(
- "0x2c57d1CFC6d5f8E4182a56b4cf75421472eBAEa4",
+ "Z2c57d1CFC6d5f8E4182a56b4cf75421472eBAEa4",
"7ff1a4c1d57e5e784d327c4c7651e952350bc271f156afb3d00d20f5ef924856",
),
# m/44'/60'/0'/0/7
new_prefunded_account(
- "0x741bFE4802cE1C4b5b00F9Df2F5f179A1C89171A",
+ "Z741bFE4802cE1C4b5b00F9Df2F5f179A1C89171A",
"3a91003acaf4c21b3953d94fa4a6db694fa69e5242b2e37be05dd82761058899",
),
# m/44'/60'/0'/0/8
new_prefunded_account(
- "0xc3913d4D8bAb4914328651C2EAE817C8b78E1f4c",
+ "Zc3913d4D8bAb4914328651C2EAE817C8b78E1f4c",
"bb1d0f125b4fb2bb173c318cdead45468474ca71474e2247776b2b4c0fa2d3f5",
),
# m/44'/60'/0'/0/9
new_prefunded_account(
- "0x65D08a056c17Ae13370565B04cF77D2AfA1cB9FA",
+ "Z65D08a056c17Ae13370565B04cF77D2AfA1cB9FA",
"850643a0224065ecce3882673c21f56bcf6eef86274cc21cadff15930b59fc8c",
),
# m/44'/60'/0'/0/10
new_prefunded_account(
- "0x3e95dFbBaF6B348396E6674C7871546dCC568e56",
+ "Z3e95dFbBaF6B348396E6674C7871546dCC568e56",
"94eb3102993b41ec55c241060f47daa0f6372e2e3ad7e91612ae36c364042e44",
),
# m/44'/60'/0'/0/11
new_prefunded_account(
- "0x5918b2e647464d4743601a865753e64C8059Dc4F",
+ "Z5918b2e647464d4743601a865753e64C8059Dc4F",
"daf15504c22a352648a71ef2926334fe040ac1d5005019e09f6c979808024dc7",
),
# m/44'/60'/0'/0/12
new_prefunded_account(
- "0x589A698b7b7dA0Bec545177D3963A2741105C7C9",
+ "Z589A698b7b7dA0Bec545177D3963A2741105C7C9",
"eaba42282ad33c8ef2524f07277c03a776d98ae19f581990ce75becb7cfa1c23",
),
# m/44'/60'/0'/0/13
new_prefunded_account(
- "0x4d1CB4eB7969f8806E2CaAc0cbbB71f88C8ec413",
+ "Z4d1CB4eB7969f8806E2CaAc0cbbB71f88C8ec413",
"3fd98b5187bf6526734efaa644ffbb4e3670d66f5d0268ce0323ec09124bff61",
),
# m/44'/60'/0'/0/14
new_prefunded_account(
- "0xF5504cE2BcC52614F121aff9b93b2001d92715CA",
+ "ZF5504cE2BcC52614F121aff9b93b2001d92715CA",
"5288e2f440c7f0cb61a9be8afdeb4295f786383f96f5e35eb0c94ef103996b64",
),
# m/44'/60'/0'/0/15
new_prefunded_account(
- "0xF61E98E7D47aB884C244E39E031978E33162ff4b",
+ "ZF61E98E7D47aB884C244E39E031978E33162ff4b",
"f296c7802555da2a5a662be70e078cbd38b44f96f8615ae529da41122ce8db05",
),
# m/44'/60'/0'/0/16
new_prefunded_account(
- "0xf1424826861ffbbD25405F5145B5E50d0F1bFc90",
+ "Zf1424826861ffbbD25405F5145B5E50d0F1bFc90",
"bf3beef3bd999ba9f2451e06936f0423cd62b815c9233dd3bc90f7e02a1e8673",
),
# m/44'/60'/0'/0/17
new_prefunded_account(
- "0xfDCe42116f541fc8f7b0776e2B30832bD5621C85",
+ "ZfDCe42116f541fc8f7b0776e2B30832bD5621C85",
"6ecadc396415970e91293726c3f5775225440ea0844ae5616135fd10d66b5954",
),
# m/44'/60'/0'/0/18
new_prefunded_account(
- "0xD9211042f35968820A3407ac3d80C725f8F75c14",
+ "ZD9211042f35968820A3407ac3d80C725f8F75c14",
"a492823c3e193d6c595f37a18e3c06650cf4c74558cc818b16130b293716106f",
),
# m/44'/60'/0'/0/19
new_prefunded_account(
- "0xD8F3183DEF51A987222D845be228e0Bbb932C222",
+ "ZD8F3183DEF51A987222D845be228e0Bbb932C222",
"c5114526e042343c6d1899cad05e1c00ba588314de9b96929914ee0df18d46b2",
),
# m/44'/60'/0'/0/20
new_prefunded_account(
- "0xafF0CA253b97e54440965855cec0A8a2E2399896",
+ "ZafF0CA253b97e54440965855cec0A8a2E2399896",
"04b9f63ecf84210c5366c66d68fa1f5da1fa4f634fad6dfc86178e4d79ff9e59",
),
]
diff --git a/src/prelaunch_data_generator/validator_keystores/generate_keystores_result.star b/src/prelaunch_data_generator/validator_keystores/generate_keystores_result.star
index ada2095..2a501f2 100644
--- a/src/prelaunch_data_generator/validator_keystores/generate_keystores_result.star
+++ b/src/prelaunch_data_generator/validator_keystores/generate_keystores_result.star
@@ -1,13 +1,13 @@
# Package object containing information about the keystores that were generated for validators
# during genesis creation
def new_generate_keystores_result(
- prysm_password_artifact_uuid, prysm_password_relative_filepath, per_node_keystores
+ qrysm_password_artifact_uuid, qrysm_password_relative_filepath, per_node_keystores
):
return struct(
- # Files artifact UUID where the Prysm password is stored
- prysm_password_artifact_uuid=prysm_password_artifact_uuid,
+ # Files artifact UUID where the Qrysm password is stored
+ qrysm_password_artifact_uuid=qrysm_password_artifact_uuid,
# Relative to root of files artifact
- prysm_password_relative_filepath=prysm_password_relative_filepath,
+ qrysm_password_relative_filepath=qrysm_password_relative_filepath,
# Contains keystores-per-client-type for each node in the network
per_node_keystores=per_node_keystores,
)
diff --git a/src/prelaunch_data_generator/validator_keystores/keystore_files.star b/src/prelaunch_data_generator/validator_keystores/keystore_files.star
index d10f359..f3164d2 100644
--- a/src/prelaunch_data_generator/validator_keystores/keystore_files.star
+++ b/src/prelaunch_data_generator/validator_keystores/keystore_files.star
@@ -1,22 +1,10 @@
# One of these will be created per node we're trying to start
def new_keystore_files(
files_artifact_uuid,
- raw_root_dirpath,
- raw_keys_relative_dirpath,
- raw_secrets_relative_dirpath,
- nimbus_keys_relative_dirpath,
- prysm_relative_dirpath,
- teku_keys_relative_dirpath,
- teku_secrets_relative_dirpath,
+ qrysm_relative_dirpath,
):
return struct(
files_artifact_uuid=files_artifact_uuid,
# ------------ All directories below are relative to the root of the files artifact ----------------
- raw_root_dirpath=raw_root_dirpath,
- raw_keys_relative_dirpath=raw_keys_relative_dirpath,
- raw_secrets_relative_dirpath=raw_secrets_relative_dirpath,
- nimbus_keys_relative_dirpath=nimbus_keys_relative_dirpath,
- prysm_relative_dirpath=prysm_relative_dirpath,
- teku_keys_relative_dirpath=teku_keys_relative_dirpath,
- teku_secrets_relative_dirpath=teku_secrets_relative_dirpath,
+ qrysm_relative_dirpath=qrysm_relative_dirpath,
)
diff --git a/src/prelaunch_data_generator/validator_keystores/validator_keystore_generator.star b/src/prelaunch_data_generator/validator_keystores/validator_keystore_generator.star
index 7c0577b..5eca1e6 100644
--- a/src/prelaunch_data_generator/validator_keystores/validator_keystore_generator.star
+++ b/src/prelaunch_data_generator/validator_keystores/validator_keystore_generator.star
@@ -4,24 +4,17 @@ keystores_result = import_module("./generate_keystores_result.star")
NODE_KEYSTORES_OUTPUT_DIRPATH_FORMAT_STR = "/node-{0}-keystores{1}/"
-# Prysm keystores are encrypted with a password
-PRYSM_PASSWORD = "password"
-PRYSM_PASSWORD_FILEPATH_ON_GENERATOR = "/tmp/prysm-password.txt"
+# Qrysm keystores are encrypted with a password
+QRYSM_PASSWORD = "password"
+QRYSM_PASSWORD_FILEPATH_ON_GENERATOR = "/tmp/qrysm-password.txt"
KEYSTORES_GENERATION_TOOL_NAME = "/app/eth2-val-tools"
-ETH_VAL_TOOLS_IMAGE = "protolambda/eth2-val-tools:latest"
+VAL_TOOLS_IMAGE = "theqrl/zond-genesis-generator:latest"
SUCCESSFUL_EXEC_CMD_EXIT_CODE = 0
-RAW_KEYS_DIRNAME = "keys"
-RAW_SECRETS_DIRNAME = "secrets"
-
-NIMBUS_KEYS_DIRNAME = "nimbus-keys"
-PRYSM_DIRNAME = "prysm"
-
-TEKU_KEYS_DIRNAME = "teku-keys"
-TEKU_SECRETS_DIRNAME = "teku-secrets"
+QRYSM_DIRNAME = "qrysm"
KEYSTORE_GENERATION_FINISHED_FILEPATH_FORMAT = "/tmp/keystores_generated-{0}-{1}"
@@ -71,7 +64,7 @@ def get_config(files_artifact_mountpoints, docker_cache_params):
return ServiceConfig(
image=shared_utils.docker_cache_image_calc(
docker_cache_params,
- ETH_VAL_TOOLS_IMAGE,
+ VAL_TOOLS_IMAGE,
),
entrypoint=ENTRYPOINT_ARGS,
files=files_artifact_mountpoints,
@@ -86,6 +79,29 @@ def generate_validator_keystores(plan, mnemonic, participants, docker_cache_para
plan, {}, "cl-validator-keystore", docker_cache_params
)
+ write_qrysm_password_file_cmd = [
+ "sh",
+ "-c",
+ "echo '{0}' > {1}".format(
+ QRYSM_PASSWORD,
+ QRYSM_PASSWORD_FILEPATH_ON_GENERATOR,
+ ),
+ ]
+ write_qrysm_password_file_cmd_result = plan.exec(
+ service_name=service_name,
+ description="Storing qrysm password in a file",
+ recipe=ExecRecipe(command=write_qrysm_password_file_cmd),
+ )
+ plan.verify(
+ write_qrysm_password_file_cmd_result["code"],
+ "==",
+ SUCCESSFUL_EXEC_CMD_EXIT_CODE,
+ )
+
+ qrysm_password_artifact_name = plan.store_service_files(
+ service_name, QRYSM_PASSWORD_FILEPATH_ON_GENERATOR, name="qrysm-password"
+ )
+
all_output_dirpaths = []
all_sub_command_strs = []
running_total_validator_count = 0
@@ -95,28 +111,39 @@ def generate_validator_keystores(plan, mnemonic, participants, docker_cache_para
if participant.validator_count == 0:
all_output_dirpaths.append(output_dirpath)
continue
+ generate_keystores_cmds = []
start_index = running_total_validator_count
- stop_index = start_index + participant.validator_count
-
- generate_keystores_cmd = '{0} keystores --insecure --prysm-pass {1} --out-loc {2} --source-mnemonic "{3}" --source-min {4} --source-max {5}'.format(
- KEYSTORES_GENERATION_TOOL_NAME,
- PRYSM_PASSWORD,
- output_dirpath,
- mnemonic,
+ generate_validator_keys_cmd = '{0} new-seed --validator-start-index {1} --num-validators {2} --folder {3} --mnemonic "{4}" --keystore-password-file={5} --chain-name "dev"'.format(
+ "/usr/local/bin/deposit",
start_index,
- stop_index,
+ participant.validator_count,
+ shared_utils.path_join(output_dirpath, "validator_keys"),
+ mnemonic,
+ QRYSM_PASSWORD_FILEPATH_ON_GENERATOR,
+ )
+ generate_keystores_cmds.append(generate_validator_keys_cmd)
+ create_validator_wallets_cmd = '{0} wallet create --accept-terms-of-use=true --wallet-dir={1} --keymanager-kind={2} --wallet-password-file={3}'.format(
+ "/usr/local/bin/validator",
+ shared_utils.path_join(output_dirpath, "qrysm"),
+ "local",
+ QRYSM_PASSWORD_FILEPATH_ON_GENERATOR,
+ )
+ generate_keystores_cmds.append(create_validator_wallets_cmd)
+
+ import_validator_keys_cmd = '{0} accounts import --keys-dir={1} --wallet-dir={2} --wallet-password-file={3} --account-password-file={4}'.format(
+ "/usr/local/bin/validator",
+ shared_utils.path_join(output_dirpath, "validator_keys"),
+ shared_utils.path_join(output_dirpath, "qrysm"),
+ QRYSM_PASSWORD_FILEPATH_ON_GENERATOR,
+ QRYSM_PASSWORD_FILEPATH_ON_GENERATOR,
)
+ generate_keystores_cmds.append(import_validator_keys_cmd)
+
+ generate_keystores_cmd = " && ".join(generate_keystores_cmds)
all_output_dirpaths.append(output_dirpath)
all_sub_command_strs.append(generate_keystores_cmd)
- teku_permissions_cmd = "chmod 0777 -R " + output_dirpath + TEKU_KEYS_DIRNAME
- raw_secret_permissions_cmd = (
- "chmod 0600 -R " + output_dirpath + RAW_SECRETS_DIRNAME
- )
- all_sub_command_strs.append(teku_permissions_cmd)
- all_sub_command_strs.append(raw_secret_permissions_cmd)
-
running_total_validator_count += participant.validator_count
command_str = " && ".join(all_sub_command_strs)
@@ -157,45 +184,16 @@ def generate_validator_keystores(plan, mnemonic, participants, docker_cache_para
base_dirname_in_artifact = shared_utils.path_base(output_dirpath)
to_add = keystore_files_module.new_keystore_files(
artifact_name,
- shared_utils.path_join(base_dirname_in_artifact),
- shared_utils.path_join(base_dirname_in_artifact, RAW_KEYS_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, RAW_SECRETS_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, NIMBUS_KEYS_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, PRYSM_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, TEKU_KEYS_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, TEKU_SECRETS_DIRNAME),
+ shared_utils.path_join(base_dirname_in_artifact, QRYSM_DIRNAME),
)
keystore_files.append(to_add)
running_total_validator_count += participant.validator_count
- write_prysm_password_file_cmd = [
- "sh",
- "-c",
- "echo '{0}' > {1}".format(
- PRYSM_PASSWORD,
- PRYSM_PASSWORD_FILEPATH_ON_GENERATOR,
- ),
- ]
- write_prysm_password_file_cmd_result = plan.exec(
- service_name=service_name,
- description="Storing prysm password in a file",
- recipe=ExecRecipe(command=write_prysm_password_file_cmd),
- )
- plan.verify(
- write_prysm_password_file_cmd_result["code"],
- "==",
- SUCCESSFUL_EXEC_CMD_EXIT_CODE,
- )
-
- prysm_password_artifact_name = plan.store_service_files(
- service_name, PRYSM_PASSWORD_FILEPATH_ON_GENERATOR, name="prysm-password"
- )
-
result = keystores_result.new_generate_keystores_result(
- prysm_password_artifact_name,
- shared_utils.path_base(PRYSM_PASSWORD_FILEPATH_ON_GENERATOR),
+ qrysm_password_artifact_name,
+ shared_utils.path_base(QRYSM_PASSWORD_FILEPATH_ON_GENERATOR),
keystore_files,
)
@@ -231,23 +229,15 @@ def generate_valdiator_keystores_in_parallel(
)
finished_files_to_verify.append(generation_finished_filepath)
- generate_keystores_cmd = 'nohup {0} keystores --insecure --prysm-pass {1} --out-loc {2} --source-mnemonic "{3}" --source-min {4} --source-max {5} && touch {6}'.format(
+ generate_keystores_cmd = 'nohup {0} keystores --insecure --qrysm-pass {1} --out-loc {2} --source-mnemonic "{3}" --source-min {4} --source-max {5} && touch {6}'.format(
KEYSTORES_GENERATION_TOOL_NAME,
- PRYSM_PASSWORD,
+ QRYSM_PASSWORD,
output_dirpath,
mnemonic,
start_index,
stop_index,
generation_finished_filepath,
)
- teku_permissions_cmd = (
- " && chmod 777 -R " + output_dirpath + "/" + TEKU_KEYS_DIRNAME
- )
- raw_secret_permissions_cmd = (
- " && chmod 0600 -R " + output_dirpath + "/" + RAW_SECRETS_DIRNAME
- )
- generate_keystores_cmd += teku_permissions_cmd
- generate_keystores_cmd += raw_secret_permissions_cmd
all_generation_commands.append(generate_keystores_cmd)
all_output_dirpaths.append(output_dirpath)
@@ -314,43 +304,37 @@ def generate_valdiator_keystores_in_parallel(
base_dirname_in_artifact = shared_utils.path_base(output_dirpath)
to_add = keystore_files_module.new_keystore_files(
artifact_name,
- shared_utils.path_join(base_dirname_in_artifact),
- shared_utils.path_join(base_dirname_in_artifact, RAW_KEYS_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, RAW_SECRETS_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, NIMBUS_KEYS_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, PRYSM_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, TEKU_KEYS_DIRNAME),
- shared_utils.path_join(base_dirname_in_artifact, TEKU_SECRETS_DIRNAME),
+ shared_utils.path_join(base_dirname_in_artifact, QRYSM_DIRNAME),
)
keystore_files.append(to_add)
- write_prysm_password_file_cmd = [
+ write_qrysm_password_file_cmd = [
"sh",
"-c",
"echo '{0}' > {1}".format(
- PRYSM_PASSWORD,
- PRYSM_PASSWORD_FILEPATH_ON_GENERATOR,
+ QRYSM_PASSWORD,
+ QRYSM_PASSWORD_FILEPATH_ON_GENERATOR,
),
]
- write_prysm_password_file_cmd_result = plan.exec(
+ write_qrysm_password_file_cmd_result = plan.exec(
service_name=service_names[0],
- description="Storing prysm password in a file",
- recipe=ExecRecipe(command=write_prysm_password_file_cmd),
+ description="Storing qrysm password in a file",
+ recipe=ExecRecipe(command=write_qrysm_password_file_cmd),
)
plan.verify(
- write_prysm_password_file_cmd_result["code"],
+ write_qrysm_password_file_cmd_result["code"],
"==",
SUCCESSFUL_EXEC_CMD_EXIT_CODE,
)
- prysm_password_artifact_name = plan.store_service_files(
- service_names[0], PRYSM_PASSWORD_FILEPATH_ON_GENERATOR, name="prysm-password"
+ qrysm_password_artifact_name = plan.store_service_files(
+ service_names[0], QRYSM_PASSWORD_FILEPATH_ON_GENERATOR, name="qrysm-password"
)
result = keystores_result.new_generate_keystores_result(
- prysm_password_artifact_name,
- shared_utils.path_base(PRYSM_PASSWORD_FILEPATH_ON_GENERATOR),
+ qrysm_password_artifact_name,
+ shared_utils.path_base(QRYSM_PASSWORD_FILEPATH_ON_GENERATOR),
keystore_files,
)
diff --git a/src/shared_utils/shared_utils.star b/src/shared_utils/shared_utils.star
index 687d0dd..8c7c057 100644
--- a/src/shared_utils/shared_utils.star
+++ b/src/shared_utils/shared_utils.star
@@ -81,17 +81,17 @@ def label_maker(
# Create the labels dictionary
labels = {
- "ethereum-package.client": client,
- "ethereum-package.client-type": client_type,
- "ethereum-package.client-image": ensure_alphanumeric_bounds(
+ "zond-package.client": client,
+ "zond-package.client-type": client_type,
+ "zond-package.client-image": ensure_alphanumeric_bounds(
image.replace("/", "-").replace(":", "_").replace(".", "-").split("@")[0]
), # drop the sha256 part of the image from the label
- "ethereum-package.sha256": sha256,
- "ethereum-package.connected-client": connected_client,
+ "zond-package.sha256": sha256,
+ "zond-package.connected-client": connected_client,
}
if supernode:
- labels["ethereum-package.supernode"] = str(supernode)
+ labels["zond-package.supernode"] = str(supernode)
# Add extra_labels to the labels dictionary
labels.update(extra_labels)
diff --git a/src/spamoor_blob/spamoor_blob.star b/src/spamoor_blob/spamoor_blob.star
deleted file mode 100644
index a90ad9d..0000000
--- a/src/spamoor_blob/spamoor_blob.star
+++ /dev/null
@@ -1,64 +0,0 @@
-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 = 20
-MAX_MEMORY = 300
-
-
-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,
- )
diff --git a/src/static_files/static_files.star b/src/static_files/static_files.star
index 78d686d..bed93d5 100644
--- a/src/static_files/static_files.star
+++ b/src/static_files/static_files.star
@@ -65,7 +65,7 @@ GRAFANA_DASHBOARDS_CONFIG_DIRPATH = (
STATIC_FILES_DIRPATH + GRAFANA_CONFIG_DIRPATH + "/dashboards"
)
-# Geth + CL genesis generation
+# Gzond + CL genesis generation
GENESIS_GENERATION_CONFIG_DIRPATH = STATIC_FILES_DIRPATH + "/genesis-generation-config"
EL_GENESIS_GENERATION_CONFIG_DIRPATH = GENESIS_GENERATION_CONFIG_DIRPATH + "/el"
diff --git a/src/vc/lighthouse.star b/src/vc/lighthouse.star
deleted file mode 100644
index b14d759..0000000
--- a/src/vc/lighthouse.star
+++ /dev/null
@@ -1,139 +0,0 @@
-constants = import_module("../package_io/constants.star")
-input_parser = import_module("../package_io/input_parser.star")
-shared_utils = import_module("../shared_utils/shared_utils.star")
-vc_shared = import_module("./shared.star")
-
-RUST_BACKTRACE_ENVVAR_NAME = "RUST_BACKTRACE"
-RUST_FULL_BACKTRACE_KEYWORD = "full"
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "error",
- constants.GLOBAL_LOG_LEVEL.warn: "warn",
- constants.GLOBAL_LOG_LEVEL.info: "info",
- constants.GLOBAL_LOG_LEVEL.debug: "debug",
- constants.GLOBAL_LOG_LEVEL.trace: "trace",
-}
-
-
-def get_config(
- participant,
- el_cl_genesis_data,
- image,
- global_log_level,
- beacon_http_url,
- cl_context,
- el_context,
- full_name,
- node_keystore_files,
- tolerations,
- node_selectors,
- keymanager_enabled,
- port_publisher,
- vc_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.vc_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- validator_keys_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.raw_keys_relative_dirpath,
- )
- validator_secrets_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.raw_secrets_relative_dirpath,
- )
-
- cmd = [
- "lighthouse",
- "vc",
- "--debug-level=" + log_level,
- "--testnet-dir=" + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER,
- "--validators-dir=" + validator_keys_dirpath,
- # NOTE: When secrets-dir is specified, we can't add the --data-dir flag
- "--secrets-dir=" + validator_secrets_dirpath,
- # The node won't have a slashing protection database and will fail to start otherwise
- "--init-slashing-protection",
- "--beacon-nodes=" + beacon_http_url,
- # "--enable-doppelganger-protection", // Disabled to not have to wait 2 epochs before validator can start
- # burn address - If unset, the validator will scream in its logs
- "--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
- # vvvvvvvvvvvvvvvvvvv PROMETHEUS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics",
- "--metrics-address=0.0.0.0",
- "--metrics-allow-origin=*",
- "--metrics-port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
- # ^^^^^^^^^^^^^^^^^^^ PROMETHEUS CONFIG ^^^^^^^^^^^^^^^^^^^^^
- "--graffiti=" + full_name,
- ]
-
- keymanager_api_cmd = [
- "--http",
- "--http-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
- "--http-address=0.0.0.0",
- "--http-allow-origin=*",
- "--unencrypted-http-transport",
- ]
-
- if len(participant.vc_extra_params):
- cmd.extend([param for param in participant.vc_extra_params])
-
- files = {
- constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: el_cl_genesis_data.files_artifact_uuid,
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER: node_keystore_files.files_artifact_uuid,
- }
- env = {RUST_BACKTRACE_ENVVAR_NAME: RUST_FULL_BACKTRACE_KEYWORD}
- env.update(participant.vc_extra_env_vars)
-
- public_ports = {}
- public_keymanager_port_assignment = {}
- if port_publisher.vc_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "vc", port_publisher, vc_index
- )
- public_port_assignments = {
- constants.METRICS_PORT_ID: public_ports_for_component[0]
- }
- public_keymanager_port_assignment = {
- constants.VALIDATOR_HTTP_PORT_ID: public_ports_for_component[1]
- }
- public_ports = shared_utils.get_port_specs(public_port_assignments)
-
- ports = {}
- ports.update(vc_shared.VALIDATOR_CLIENT_USED_PORTS)
-
- if keymanager_enabled:
- cmd.extend(keymanager_api_cmd)
- ports.update(vc_shared.VALIDATOR_KEYMANAGER_USED_PORTS)
- public_ports.update(
- shared_utils.get_port_specs(public_keymanager_port_assignment)
- )
-
- config_args = {
- "image": image,
- "ports": ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "env_vars": env,
- "labels": shared_utils.label_maker(
- client=constants.VC_TYPE.lighthouse,
- client_type=constants.CLIENT_TYPES.validator,
- image=image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_context.client_name,
- extra_labels=participant.vc_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.vc_min_cpu > 0:
- config_args["min_cpu"] = participant.vc_min_cpu
- if participant.vc_max_cpu > 0:
- config_args["max_cpu"] = participant.vc_max_cpu
- if participant.vc_min_mem > 0:
- config_args["min_memory"] = participant.vc_min_mem
- if participant.vc_max_mem > 0:
- config_args["max_memory"] = participant.vc_max_mem
- return ServiceConfig(**config_args)
diff --git a/src/vc/lodestar.star b/src/vc/lodestar.star
deleted file mode 100644
index 0586710..0000000
--- a/src/vc/lodestar.star
+++ /dev/null
@@ -1,155 +0,0 @@
-constants = import_module("../package_io/constants.star")
-input_parser = import_module("../package_io/input_parser.star")
-shared_utils = import_module("../shared_utils/shared_utils.star")
-vc_shared = import_module("./shared.star")
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "error",
- constants.GLOBAL_LOG_LEVEL.warn: "warn",
- constants.GLOBAL_LOG_LEVEL.info: "info",
- constants.GLOBAL_LOG_LEVEL.debug: "debug",
- constants.GLOBAL_LOG_LEVEL.trace: "trace",
-}
-
-
-def get_config(
- participant,
- el_cl_genesis_data,
- keymanager_file,
- image,
- global_log_level,
- beacon_http_url,
- cl_context,
- el_context,
- remote_signer_context,
- full_name,
- node_keystore_files,
- tolerations,
- node_selectors,
- keymanager_enabled,
- preset,
- port_publisher,
- vc_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.vc_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- validator_keys_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.raw_keys_relative_dirpath,
- )
-
- validator_secrets_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.raw_secrets_relative_dirpath,
- )
-
- cmd = [
- "validator",
- "--logLevel=" + log_level,
- "--paramsFile="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/config.yaml",
- "--beaconNodes=" + beacon_http_url,
- "--suggestedFeeRecipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
- # vvvvvvvvvvvvvvvvvvv PROMETHEUS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics",
- "--metrics.address=0.0.0.0",
- "--metrics.port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
- # ^^^^^^^^^^^^^^^^^^^ PROMETHEUS CONFIG ^^^^^^^^^^^^^^^^^^^^^
- "--graffiti=" + full_name,
- "--useProduceBlockV3",
- "--disableKeystoresThreadPool",
- ]
-
- if remote_signer_context == None:
- cmd.extend(
- [
- "--keystoresDir=" + validator_keys_dirpath,
- "--secretsDir=" + validator_secrets_dirpath,
- ]
- )
- else:
- cmd.extend(
- [
- "--externalSigner.url={0}".format(remote_signer_context.http_url),
- "--externalSigner.fetch",
- ]
- )
-
- keymanager_api_cmd = [
- "--keymanager",
- "--keymanager.authEnabled=true",
- "--keymanager.port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
- "--keymanager.address=0.0.0.0",
- "--keymanager.cors=*",
- "--keymanager.tokenFile=" + constants.KEYMANAGER_MOUNT_PATH_ON_CONTAINER,
- ]
-
- if len(participant.vc_extra_params) > 0:
- # this is a repeated, 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,
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER: node_keystore_files.files_artifact_uuid,
- }
-
- public_ports = {}
- public_keymanager_port_assignment = {}
- if port_publisher.vc_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "vc", port_publisher, vc_index
- )
- public_port_assignments = {
- constants.METRICS_PORT_ID: public_ports_for_component[0]
- }
- public_keymanager_port_assignment = {
- constants.VALIDATOR_HTTP_PORT_ID: public_ports_for_component[1]
- }
- public_ports = shared_utils.get_port_specs(public_port_assignments)
-
- ports = {}
- ports.update(vc_shared.VALIDATOR_CLIENT_USED_PORTS)
-
- if keymanager_enabled:
- files[constants.KEYMANAGER_MOUNT_PATH_ON_CLIENTS] = keymanager_file
- cmd.extend(keymanager_api_cmd)
- ports.update(vc_shared.VALIDATOR_KEYMANAGER_USED_PORTS)
- public_ports.update(
- shared_utils.get_port_specs(public_keymanager_port_assignment)
- )
-
- env_vars = participant.vc_extra_env_vars
- if preset == "minimal":
- env_vars["LODESTAR_PRESET"] = "minimal"
-
- config_args = {
- "image": image,
- "ports": ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "files": files,
- "env_vars": env_vars,
- "labels": shared_utils.label_maker(
- client=constants.VC_TYPE.lodestar,
- client_type=constants.CLIENT_TYPES.validator,
- image=image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_context.client_name,
- extra_labels=participant.vc_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.vc_min_cpu > 0:
- config_args["min_cpu"] = participant.vc_min_cpu
- if participant.vc_max_cpu > 0:
- config_args["max_cpu"] = participant.vc_max_cpu
- if participant.vc_min_mem > 0:
- config_args["min_memory"] = participant.vc_min_mem
- if participant.vc_max_mem > 0:
- config_args["max_memory"] = participant.vc_max_mem
- return ServiceConfig(**config_args)
diff --git a/src/vc/nimbus.star b/src/vc/nimbus.star
deleted file mode 100644
index 8bbdcd6..0000000
--- a/src/vc/nimbus.star
+++ /dev/null
@@ -1,128 +0,0 @@
-constants = import_module("../package_io/constants.star")
-shared_utils = import_module("../shared_utils/shared_utils.star")
-vc_shared = import_module("./shared.star")
-
-
-def get_config(
- participant,
- el_cl_genesis_data,
- image,
- keymanager_file,
- beacon_http_url,
- cl_context,
- el_context,
- remote_signer_context,
- full_name,
- node_keystore_files,
- tolerations,
- node_selectors,
- keymanager_enabled,
- port_publisher,
- vc_index,
-):
- validator_keys_dirpath = ""
- validator_secrets_dirpath = ""
- if node_keystore_files != None:
- validator_keys_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.nimbus_keys_relative_dirpath,
- )
- validator_secrets_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.raw_secrets_relative_dirpath,
- )
-
- cmd = [
- "--beacon-node=" + beacon_http_url,
- "--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
- # vvvvvvvvvvvvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics",
- "--metrics-address=0.0.0.0",
- "--metrics-port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
- "--graffiti=" + full_name,
- ]
-
- if remote_signer_context == None:
- cmd.extend(
- [
- "--validators-dir=" + validator_keys_dirpath,
- "--secrets-dir=" + validator_secrets_dirpath,
- ]
- )
- else:
- cmd.extend(
- [
- "--web3-signer-url={0}".format(remote_signer_context.http_url),
- ]
- )
-
- keymanager_api_cmd = [
- "--keymanager",
- "--keymanager-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
- "--keymanager-address=0.0.0.0",
- "--keymanager-allow-origin=*",
- "--keymanager-token-file=" + constants.KEYMANAGER_MOUNT_PATH_ON_CONTAINER,
- ]
-
- if len(participant.vc_extra_params) > 0:
- # this is a repeated, we convert it into Starlark
- cmd.extend([param for param in participant.vc_extra_params])
-
- files = {
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER: node_keystore_files.files_artifact_uuid,
- constants.KEYMANAGER_MOUNT_PATH_ON_CLIENTS: keymanager_file,
- }
-
- public_ports = {}
- public_keymanager_port_assignment = {}
- if port_publisher.vc_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "vc", port_publisher, vc_index
- )
- public_port_assignments = {
- constants.METRICS_PORT_ID: public_ports_for_component[0]
- }
- public_keymanager_port_assignment = {
- constants.VALIDATOR_HTTP_PORT_ID: public_ports_for_component[1]
- }
- public_ports = shared_utils.get_port_specs(public_port_assignments)
-
- ports = {}
- ports.update(vc_shared.VALIDATOR_CLIENT_USED_PORTS)
-
- if keymanager_enabled:
- cmd.extend(keymanager_api_cmd)
- ports.update(vc_shared.VALIDATOR_KEYMANAGER_USED_PORTS)
- public_ports.update(
- shared_utils.get_port_specs(public_keymanager_port_assignment)
- )
-
- config_args = {
- "image": image,
- "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.nimbus,
- client_type=constants.CLIENT_TYPES.validator,
- image=image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_context.client_name,
- extra_labels=participant.vc_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- "user": User(uid=0, gid=0),
- }
-
- if participant.vc_min_cpu > 0:
- config_args["min_cpu"] = participant.vc_min_cpu
- if participant.vc_max_cpu > 0:
- config_args["max_cpu"] = participant.vc_max_cpu
- if participant.vc_min_mem > 0:
- config_args["min_memory"] = participant.vc_min_mem
- if participant.vc_max_mem > 0:
- config_args["max_memory"] = participant.vc_max_mem
- return ServiceConfig(**config_args)
diff --git a/src/vc/prysm.star b/src/vc/qrysm.star
similarity index 89%
rename from src/vc/prysm.star
rename to src/vc/qrysm.star
index 10c9bf8..1cf421e 100644
--- a/src/vc/prysm.star
+++ b/src/vc/qrysm.star
@@ -2,8 +2,8 @@ constants = import_module("../package_io/constants.star")
shared_utils = import_module("../shared_utils/shared_utils.star")
vc_shared = import_module("./shared.star")
-PRYSM_PASSWORD_MOUNT_DIRPATH_ON_SERVICE_CONTAINER = "/prysm-password"
-PRYSM_BEACON_RPC_PORT = 4000
+QRYSM_PASSWORD_MOUNT_DIRPATH_ON_SERVICE_CONTAINER = "/qrysm-password"
+QRYSM_BEACON_RPC_PORT = 4000
def get_config(
@@ -17,8 +17,8 @@ def get_config(
remote_signer_context,
full_name,
node_keystore_files,
- prysm_password_relative_filepath,
- prysm_password_artifact_uuid,
+ qrysm_password_relative_filepath,
+ qrysm_password_artifact_uuid,
tolerations,
node_selectors,
keymanager_enabled,
@@ -27,11 +27,11 @@ def get_config(
):
validator_keys_dirpath = shared_utils.path_join(
constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.prysm_relative_dirpath,
+ node_keystore_files.qrysm_relative_dirpath,
)
validator_secrets_dirpath = shared_utils.path_join(
- PRYSM_PASSWORD_MOUNT_DIRPATH_ON_SERVICE_CONTAINER,
- prysm_password_relative_filepath,
+ QRYSM_PASSWORD_MOUNT_DIRPATH_ON_SERVICE_CONTAINER,
+ qrysm_password_relative_filepath,
)
cmd = [
@@ -74,8 +74,8 @@ def get_config(
"--keymanager-token-file=" + constants.KEYMANAGER_MOUNT_PATH_ON_CONTAINER,
]
- if cl_context.client_name != constants.CL_TYPE.prysm:
- # Use Beacon API if a Prysm VC wants to connect to a non-Prysm BN
+ if cl_context.client_name != constants.CL_TYPE.qrysm:
+ # Use Beacon API if a Qrysm VC wants to connect to a non-Qrysm BN
cmd.append("--enable-beacon-rest-api")
if len(participant.vc_extra_params) > 0:
@@ -85,7 +85,7 @@ def get_config(
files = {
constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: el_cl_genesis_data.files_artifact_uuid,
constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER: node_keystore_files.files_artifact_uuid,
- PRYSM_PASSWORD_MOUNT_DIRPATH_ON_SERVICE_CONTAINER: prysm_password_artifact_uuid,
+ QRYSM_PASSWORD_MOUNT_DIRPATH_ON_SERVICE_CONTAINER: qrysm_password_artifact_uuid,
}
public_ports = {}
@@ -121,7 +121,7 @@ def get_config(
"files": files,
"env_vars": participant.vc_extra_env_vars,
"labels": shared_utils.label_maker(
- client=constants.VC_TYPE.prysm,
+ client=constants.VC_TYPE.qrysm,
client_type=constants.CLIENT_TYPES.validator,
image=image[-constants.MAX_LABEL_LENGTH :],
connected_client=cl_context.client_name,
diff --git a/src/vc/teku.star b/src/vc/teku.star
deleted file mode 100644
index ff3d260..0000000
--- a/src/vc/teku.star
+++ /dev/null
@@ -1,141 +0,0 @@
-constants = import_module("../package_io/constants.star")
-shared_utils = import_module("../shared_utils/shared_utils.star")
-vc_shared = import_module("./shared.star")
-
-
-def get_config(
- participant,
- el_cl_genesis_data,
- keymanager_file,
- image,
- beacon_http_url,
- cl_context,
- el_context,
- remote_signer_context,
- full_name,
- node_keystore_files,
- tolerations,
- node_selectors,
- keymanager_enabled,
- port_publisher,
- vc_index,
-):
- validator_keys_dirpath = ""
- validator_secrets_dirpath = ""
- if node_keystore_files != None:
- validator_keys_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.teku_keys_relative_dirpath,
- )
- validator_secrets_dirpath = shared_utils.path_join(
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER,
- node_keystore_files.teku_secrets_relative_dirpath,
- )
-
- cmd = [
- "validator-client",
- "--network="
- + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER
- + "/config.yaml",
- "--beacon-node-api-endpoint=" + beacon_http_url,
- "--validators-proposer-default-fee-recipient="
- + constants.VALIDATING_REWARDS_ACCOUNT,
- "--validators-graffiti=" + full_name,
- # vvvvvvvvvvvvvvvvvvv METRICS CONFIG vvvvvvvvvvvvvvvvvvvvv
- "--metrics-enabled=true",
- "--metrics-host-allowlist=*",
- "--metrics-interface=0.0.0.0",
- "--metrics-port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
- ]
-
- if remote_signer_context == None:
- cmd.extend(
- [
- "--validator-keys={0}:{1}".format(
- validator_keys_dirpath,
- validator_secrets_dirpath,
- ),
- ]
- )
- else:
- cmd.extend(
- [
- "--validators-external-signer-url={0}".format(
- remote_signer_context.http_url
- ),
- "--validators-external-signer-public-keys=external-signer",
- ]
- )
-
- keymanager_api_cmd = [
- "--validator-api-enabled=true",
- "--validator-api-host-allowlist=*",
- "--validator-api-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
- "--validator-api-interface=0.0.0.0",
- "--validator-api-bearer-file=" + constants.KEYMANAGER_MOUNT_PATH_ON_CONTAINER,
- "--Xvalidator-api-ssl-enabled=false",
- "--Xvalidator-api-unsafe-hosts-enabled=true",
- ]
-
- if len(participant.vc_extra_params) > 0:
- # this is a repeated, 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,
- constants.VALIDATOR_KEYS_DIRPATH_ON_SERVICE_CONTAINER: node_keystore_files.files_artifact_uuid,
- }
-
- public_ports = {}
- public_keymanager_port_assignment = {}
- if port_publisher.vc_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "vc", port_publisher, vc_index
- )
- public_port_assignments = {
- constants.METRICS_PORT_ID: public_ports_for_component[0]
- }
- public_keymanager_port_assignment = {
- constants.VALIDATOR_HTTP_PORT_ID: public_ports_for_component[1]
- }
- public_ports = shared_utils.get_port_specs(public_port_assignments)
-
- ports = {}
- ports.update(vc_shared.VALIDATOR_CLIENT_USED_PORTS)
-
- if keymanager_enabled:
- files[constants.KEYMANAGER_MOUNT_PATH_ON_CLIENTS] = keymanager_file
- cmd.extend(keymanager_api_cmd)
- ports.update(vc_shared.VALIDATOR_KEYMANAGER_USED_PORTS)
- public_ports.update(
- shared_utils.get_port_specs(public_keymanager_port_assignment)
- )
-
- config_args = {
- "image": image,
- "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.teku,
- client_type=constants.CLIENT_TYPES.validator,
- image=image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_context.client_name,
- extra_labels=participant.vc_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.vc_min_cpu > 0:
- config_args["min_cpu"] = participant.vc_min_cpu
- if participant.vc_max_cpu > 0:
- config_args["max_cpu"] = participant.vc_max_cpu
- if participant.vc_min_mem > 0:
- config_args["min_memory"] = participant.vc_min_mem
- if participant.vc_max_mem > 0:
- config_args["max_memory"] = participant.vc_max_mem
- return ServiceConfig(**config_args)
diff --git a/src/vc/vc_launcher.star b/src/vc/vc_launcher.star
index 23a2e0f..aa49823 100644
--- a/src/vc/vc_launcher.star
+++ b/src/vc/vc_launcher.star
@@ -3,12 +3,7 @@ constants = import_module("../package_io/constants.star")
node_metrics = import_module("../node_metrics_info.star")
vc_context = import_module("./vc_context.star")
-lighthouse = import_module("./lighthouse.star")
-lodestar = import_module("./lodestar.star")
-nimbus = import_module("./nimbus.star")
-prysm = import_module("./prysm.star")
-teku = import_module("./teku.star")
-vero = import_module("./vero.star")
+qrysm = import_module("./qrysm.star")
vc_shared = import_module("./shared.star")
shared_utils = import_module("../shared_utils/shared_utils.star")
@@ -29,13 +24,12 @@ def launch(
snooper_beacon_context,
node_keystore_files,
participant,
- prysm_password_relative_filepath,
- prysm_password_artifact_uuid,
+ qrysm_password_relative_filepath,
+ qrysm_password_artifact_uuid,
global_tolerations,
node_selectors,
preset,
network, # TODO: remove when deneb rebase is done
- electra_fork_epoch, # TODO: remove when deneb rebase is done
port_publisher,
vc_index,
):
@@ -57,121 +51,26 @@ def launch(
)
keymanager_enabled = participant.keymanager_enabled
- if vc_type == constants.VC_TYPE.lighthouse:
- if remote_signer_context != None:
- fail("`use_remote_signer` flag not supported for lighthouse VC")
- config = lighthouse.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,
- cl_context=cl_context,
- el_context=el_context,
- full_name=full_name,
- node_keystore_files=node_keystore_files,
- tolerations=tolerations,
- node_selectors=node_selectors,
- keymanager_enabled=keymanager_enabled,
- port_publisher=port_publisher,
- vc_index=vc_index,
- )
- elif vc_type == constants.VC_TYPE.lodestar:
- config = lodestar.get_config(
+ if vc_type == constants.VC_TYPE.qrysm:
+ config = qrysm.get_config(
participant=participant,
el_cl_genesis_data=launcher.el_cl_genesis_data,
keymanager_file=keymanager_file,
image=image,
- global_log_level=global_log_level,
beacon_http_url=beacon_http_url,
cl_context=cl_context,
el_context=el_context,
remote_signer_context=remote_signer_context,
full_name=full_name,
node_keystore_files=node_keystore_files,
+ qrysm_password_relative_filepath=qrysm_password_relative_filepath,
+ qrysm_password_artifact_uuid=qrysm_password_artifact_uuid,
tolerations=tolerations,
node_selectors=node_selectors,
keymanager_enabled=keymanager_enabled,
- preset=preset,
- port_publisher=port_publisher,
- vc_index=vc_index,
- )
- elif vc_type == constants.VC_TYPE.teku:
- config = teku.get_config(
- participant=participant,
- el_cl_genesis_data=launcher.el_cl_genesis_data,
- keymanager_file=keymanager_file,
- image=image,
- beacon_http_url=beacon_http_url,
- cl_context=cl_context,
- el_context=el_context,
- remote_signer_context=remote_signer_context,
- full_name=full_name,
- node_keystore_files=node_keystore_files,
- tolerations=tolerations,
- node_selectors=node_selectors,
- keymanager_enabled=keymanager_enabled,
- port_publisher=port_publisher,
- vc_index=vc_index,
- )
- elif vc_type == constants.VC_TYPE.nimbus:
- config = nimbus.get_config(
- participant=participant,
- el_cl_genesis_data=launcher.el_cl_genesis_data,
- keymanager_file=keymanager_file,
- image=image,
- beacon_http_url=beacon_http_url,
- cl_context=cl_context,
- el_context=el_context,
- remote_signer_context=remote_signer_context,
- full_name=full_name,
- node_keystore_files=node_keystore_files,
- tolerations=tolerations,
- node_selectors=node_selectors,
- keymanager_enabled=keymanager_enabled,
- port_publisher=port_publisher,
- vc_index=vc_index,
- )
- elif vc_type == constants.VC_TYPE.prysm:
- config = prysm.get_config(
- participant=participant,
- el_cl_genesis_data=launcher.el_cl_genesis_data,
- keymanager_file=keymanager_file,
- image=image,
- beacon_http_url=beacon_http_url,
- cl_context=cl_context,
- el_context=el_context,
- remote_signer_context=remote_signer_context,
- full_name=full_name,
- node_keystore_files=node_keystore_files,
- prysm_password_relative_filepath=prysm_password_relative_filepath,
- prysm_password_artifact_uuid=prysm_password_artifact_uuid,
- tolerations=tolerations,
- node_selectors=node_selectors,
- keymanager_enabled=keymanager_enabled,
- port_publisher=port_publisher,
- vc_index=vc_index,
- )
- elif vc_type == constants.VC_TYPE.vero:
- if remote_signer_context == None:
- fail("vero VC requires `use_remote_signer` to be true")
- if keymanager_enabled:
- fail("vero VC doesn't support the Keymanager API")
- config = vero.get_config(
- participant=participant,
- image=image,
- global_log_level=global_log_level,
- beacon_http_url=beacon_http_url,
- cl_context=cl_context,
- remote_signer_context=remote_signer_context,
- full_name=full_name,
- tolerations=tolerations,
- node_selectors=node_selectors,
port_publisher=port_publisher,
vc_index=vc_index,
)
- elif vc_type == constants.VC_TYPE.grandine:
- fail("Grandine VC is not yet supported")
else:
fail("Unsupported vc_type: {0}".format(vc_type))
diff --git a/src/vc/vero.star b/src/vc/vero.star
deleted file mode 100644
index 4987c37..0000000
--- a/src/vc/vero.star
+++ /dev/null
@@ -1,85 +0,0 @@
-constants = import_module("../package_io/constants.star")
-input_parser = import_module("../package_io/input_parser.star")
-shared_utils = import_module("../shared_utils/shared_utils.star")
-vc_shared = import_module("./shared.star")
-
-
-VERBOSITY_LEVELS = {
- constants.GLOBAL_LOG_LEVEL.error: "ERROR",
- constants.GLOBAL_LOG_LEVEL.warn: "WARNING",
- constants.GLOBAL_LOG_LEVEL.info: "INFO",
- constants.GLOBAL_LOG_LEVEL.debug: "DEBUG",
-}
-
-
-def get_config(
- participant,
- image,
- global_log_level,
- beacon_http_url,
- cl_context,
- remote_signer_context,
- full_name,
- tolerations,
- node_selectors,
- port_publisher,
- vc_index,
-):
- log_level = input_parser.get_client_log_level_or_default(
- participant.vc_log_level, global_log_level, VERBOSITY_LEVELS
- )
-
- cmd = [
- "--remote-signer-url={0}".format(remote_signer_context.http_url),
- "--beacon-node-urls=" + beacon_http_url,
- "--fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
- "--graffiti=" + full_name,
- "--metrics-address=0.0.0.0",
- "--metrics-port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
- "--log-level=" + log_level,
- ]
-
- if len(participant.vc_extra_params) > 0:
- # this is a repeated, we convert it into Starlark
- cmd.extend([param for param in participant.vc_extra_params])
-
- public_ports = {}
- if port_publisher.vc_enabled:
- public_ports_for_component = shared_utils.get_public_ports_for_component(
- "vc", port_publisher, vc_index
- )
- public_port_assignments = {
- constants.METRICS_PORT_ID: public_ports_for_component[0]
- }
- public_ports = shared_utils.get_port_specs(public_port_assignments)
-
- ports = {}
- ports.update(vc_shared.VALIDATOR_CLIENT_USED_PORTS)
-
- config_args = {
- "image": image,
- "ports": ports,
- "public_ports": public_ports,
- "cmd": cmd,
- "env_vars": participant.vc_extra_env_vars,
- "labels": shared_utils.label_maker(
- client=constants.VC_TYPE.vero,
- client_type=constants.CLIENT_TYPES.validator,
- image=image[-constants.MAX_LABEL_LENGTH :],
- connected_client=cl_context.client_name,
- extra_labels=participant.vc_extra_labels,
- supernode=participant.supernode,
- ),
- "tolerations": tolerations,
- "node_selectors": node_selectors,
- }
-
- if participant.vc_min_cpu > 0:
- config_args["min_cpu"] = participant.vc_min_cpu
- if participant.vc_max_cpu > 0:
- config_args["max_cpu"] = participant.vc_max_cpu
- if participant.vc_min_mem > 0:
- config_args["min_memory"] = participant.vc_min_mem
- if participant.vc_max_mem > 0:
- config_args["max_memory"] = participant.vc_max_mem
- return ServiceConfig(**config_args)
diff --git a/static_files/assertoor-config/config.yaml.tmpl b/static_files/assertoor-config/config.yaml.tmpl
index 9055ee6..486533e 100644
--- a/static_files/assertoor-config/config.yaml.tmpl
+++ b/static_files/assertoor-config/config.yaml.tmpl
@@ -60,9 +60,6 @@ externalTests:
{{- if .RunTransactionTest }}
- file: /tests/eoa-transactions-test.yaml
{{- end }}
-{{- if .RunBlobTransactionTest }}
-- file: /tests/blob-transactions-test.yaml
-{{- end }}
{{- if .RunOpcodesTransactionTest }}
- file: /tests/all-opcodes-transaction-test.yaml
{{- end }}
diff --git a/static_files/assertoor-config/tests/blob-transactions-test.yaml b/static_files/assertoor-config/tests/blob-transactions-test.yaml
deleted file mode 100644
index 3a8864e..0000000
--- a/static_files/assertoor-config/tests/blob-transactions-test.yaml
+++ /dev/null
@@ -1,95 +0,0 @@
-id: blob-transactions-test
-name: "Blob Transaction Test"
-timeout: 1h
-config:
- walletPrivkey: ""
- validatorPairNames: []
- clientPairNames: []
-tasks:
-- name: check_clients_are_healthy
- title: "Check if at least one client is ready"
- timeout: 5m
- config:
- minClientCount: 1
-
-# check if all client pairs propose blocks with blob transactions
-- name: run_task_background
- title: "Check if all clients propose blocks with blob transactions"
- config:
- onBackgroundComplete: fail
- backgroundTask:
- name: generate_blob_transactions
- title: "Generate 2 blob transactions per block"
- config:
- childWallets: 20
- walletSeed: "blob-test"
- limitPending: 10
- limitPerBlock: 2
- randomTarget: true
- amount: 1000000
- randomAmount: true
- blobSidecars: 1
- configVars:
- privateKey: "walletPrivkey"
- foregroundTask:
- name: run_task_matrix
- title: "Check transaction inclusion with all client pairs"
- timeout: 30m
- configVars:
- matrixValues: "validatorPairNames"
- config:
- runConcurrent: true
- matrixVar: "validatorPairName"
- task:
- name: check_consensus_block_proposals
- title: "Wait for block proposal with >= 1 blobs from ${validatorPairName}"
- configVars:
- validatorNamePattern: "validatorPairName"
- config:
- minBlobCount: 1
-- name: "sleep"
- title: "Wait 30sec to clear up pending transactions"
- config:
- duration: 30s
-
-# check if blob transactions can be sent via each client pair
-- name: run_task_matrix
- title: "Check if blob transactions can be sent via each client pair"
- configVars:
- matrixValues: "clientPairNames"
- config:
- runConcurrent: false
- matrixVar: "clientPairName"
- task:
- name: run_tasks
- title: "Check if blob transactions can be sent via ${clientPairName}"
- config:
- tasks:
- - name: run_task_background
- title: "Check if blob transactions can be sent via ${clientPairName}"
- config:
- onBackgroundComplete: fail
- backgroundTask:
- name: generate_blob_transactions
- title: "Generate 2 blob transactions per block and send via ${clientPairName}"
- config:
- childWallets: 20
- walletSeed: "blob-test"
- limitPending: 10
- limitPerBlock: 2
- randomTarget: true
- amount: 1000000
- randomAmount: true
- blobSidecars: 1
- configVars:
- privateKey: "walletPrivkey"
- clientPattern: "clientPairName"
- foregroundTask:
- name: check_consensus_block_proposals
- title: "Wait for block proposal with >= 1 blobs"
- config:
- minBlobCount: 1
- - name: "sleep"
- title: "Wait 30sec to clear up pending transactions"
- config:
- duration: 30s
diff --git a/static_files/assertoor-config/tests/validator-lifecycle-test.yaml b/static_files/assertoor-config/tests/validator-lifecycle-test.yaml
index 2ad26c2..c101a8f 100644
--- a/static_files/assertoor-config/tests/validator-lifecycle-test.yaml
+++ b/static_files/assertoor-config/tests/validator-lifecycle-test.yaml
@@ -22,7 +22,7 @@ tasks:
limitTotal: 300
limitPerSlot: 20
limitPending: 50
- depositContract: "0x4242424242424242424242424242424242424242"
+ depositContract: "Z4242424242424242424242424242424242424242"
awaitReceipt: true
configVars:
walletPrivkey: "walletPrivkey"
@@ -83,25 +83,25 @@ tasks:
config:
minUnfinalizedEpochs: 5
-# check if all client pairs propose blocks with bls changes during un-finality
+# check if all client pairs propose blocks with dilithium changes during un-finality
- name: run_task_background
- title: "Check if all clients propose blocks with BLS changes during un-finality"
+ title: "Check if all clients propose blocks with Dilithium changes during un-finality"
config:
onBackgroundComplete: failOrIgnore
backgroundTask:
- name: generate_bls_changes
- title: "Generate 50 BLS changes (1 bls change per slot)"
+ name: generate_dilithium_changes
+ title: "Generate 50 Dilithium changes (1 dilithium change per slot)"
config:
limitTotal: 50
limitPerSlot: 1
indexCount: 100
- targetAddress: 0x65D08a056c17Ae13370565B04cF77D2AfA1cB9FA
+ targetAddress: Z65D08a056c17Ae13370565B04cF77D2AfA1cB9FA
configVars:
mnemonic: "validatorMnemonic"
foregroundTask:
name: run_task_matrix
- title: "Check bls change inclusion with all client pairs"
+ title: "Check dilithium change inclusion with all client pairs"
timeout: 1h
configVars:
matrixValues: "validatorPairNames"
@@ -114,7 +114,7 @@ tasks:
configVars:
validatorNamePattern: "validatorPairName"
config:
- minBlsChangeCount: 1
+ minDilithiumChangeCount: 1
# check if all client pairs propose blocks with exits during un-finality
- name: run_task_background
@@ -233,26 +233,26 @@ tasks:
config:
maxUnfinalizedEpochs: 4
-# check if all client pairs propose blocks with bls changes during finality
+# check if all client pairs propose blocks with dilithium changes during finality
- name: run_task_background
- title: "Check if all clients propose blocks with BLS changes during finality"
+ title: "Check if all clients propose blocks with Dilithium changes during finality"
config:
onBackgroundComplete: failOrIgnore
backgroundTask:
- name: generate_bls_changes
- title: "Generate 1 bls change per slot"
+ name: generate_dilithium_changes
+ title: "Generate 1 dilithium change per slot"
config:
startIndex: 150
limitTotal: 50
limitPerSlot: 1
indexCount: 50
- targetAddress: 0x65D08a056c17Ae13370565B04cF77D2AfA1cB9FA
+ targetAddress: Z65D08a056c17Ae13370565B04cF77D2AfA1cB9FA
configVars:
mnemonic: "validatorMnemonic"
foregroundTask:
name: run_task_matrix
- title: "Check bls change inclusion with all client pairs"
+ title: "Check dilithium change inclusion with all client pairs"
timeout: 1h
configVars:
matrixValues: "validatorPairNames"
@@ -261,11 +261,11 @@ tasks:
matrixVar: "validatorPairName"
task:
name: check_consensus_block_proposals
- title: "Wait for block proposal with BLS changes from ${validatorPairName}"
+ title: "Wait for block proposal with Dilithium changes from ${validatorPairName}"
configVars:
validatorNamePattern: "validatorPairName"
config:
- minBlsChangeCount: 1
+ minDilithiumChangeCount: 1
# check if all client pairs propose blocks with exits during finality
- name: run_task_background
@@ -384,11 +384,11 @@ cleanupTasks:
title: "Withdraw all funds"
config:
task:
- name: generate_bls_changes
- title: "Generate BLS changes for all validators"
+ name: generate_dilithium_changes
+ title: "Generate Dilithium changes for all validators"
config:
limitTotal: 300
indexCount: 300
- targetAddress: 0x65D08a056c17Ae13370565B04cF77D2AfA1cB9FA
+ targetAddress: Z65D08a056c17Ae13370565B04cF77D2AfA1cB9FA
configVars:
mnemonic: "validatorMnemonic"
diff --git a/static_files/dugtrio-config/config.yaml.tmpl b/static_files/dugtrio-config/config.yaml.tmpl
index d744887..4ece0ed 100644
--- a/static_files/dugtrio-config/config.yaml.tmpl
+++ b/static_files/dugtrio-config/config.yaml.tmpl
@@ -47,7 +47,7 @@ proxy:
# blocked api paths (regex patterns)
blockedPaths:
- - ^/eth/v[0-9]+/debug/.*
+ - ^/zond/v[0-9]+/debug/.*
# Frontend configuration
frontend:
diff --git a/static_files/full-beaconchain-config/config.yaml.tmpl b/static_files/full-beaconchain-config/config.yaml.tmpl
index 7facbb1..58cdcb2 100644
--- a/static_files/full-beaconchain-config/config.yaml.tmpl
+++ b/static_files/full-beaconchain-config/config.yaml.tmpl
@@ -19,13 +19,12 @@ bigtable:
emulator: true
emulatorHost: {{.LBTHost}}
emulatorPort: {{.LBTPort}}
-eth1ErigonEndpoint: '{{.ELNodeEndpoint}}'
-eth1GethEndpoint: '{{.ELNodeEndpoint}}'
+zond1GzondEndpoint: '{{.ELNodeEndpoint}}'
redisCacheEndpoint: '{{.RedisEndpoint}}'
tieredCacheProvider: 'redis'
frontend:
siteDomain: "localhost:8080"
- siteName: 'Open Source Ethereum (ETH) Testnet Explorer' # Name of the site, displayed in the title tag
+ siteName: 'Open Source Zond Testnet Explorer' # Name of the site, displayed in the title tag
siteSubtitle: "Showing a local testnet."
server:
host: '0.0.0.0' # Address to listen on
diff --git a/static_files/genesis-generation-config/el-cl/values.env.tmpl b/static_files/genesis-generation-config/el-cl/values.env.tmpl
index 3f4ec85..b0c92b4 100644
--- a/static_files/genesis-generation-config/el-cl/values.env.tmpl
+++ b/static_files/genesis-generation-config/el-cl/values.env.tmpl
@@ -7,24 +7,8 @@ export SLOT_DURATION_IN_SECONDS={{ .SecondsPerSlot }}
export DEPOSIT_CONTRACT_BLOCK="0x0000000000000000000000000000000000000000000000000000000000000000"
export NUMBER_OF_VALIDATORS={{ .NumValidatorKeysToPreregister }}
export GENESIS_FORK_VERSION="{{ .GenesisForkVersion }}"
-export ALTAIR_FORK_VERSION="{{ .AltairForkVersion }}"
-export ALTAIR_FORK_EPOCH="{{ .AltairForkEpoch }}"
-export BELLATRIX_FORK_VERSION="{{ .BellatrixForkVersion }}"
-export BELLATRIX_FORK_EPOCH="{{ .BellatrixForkEpoch }}"
-export CAPELLA_FORK_VERSION="{{ .CapellaForkVersion }}"
-export CAPELLA_FORK_EPOCH="{{ .CapellaForkEpoch }}"
-export DENEB_FORK_VERSION="{{ .DenebForkVersion }}"
-export DENEB_FORK_EPOCH="{{ .DenebForkEpoch }}"
-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 WITHDRAWAL_ADDRESS=Zf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134
export GENESIS_TIMESTAMP={{ .UnixTimestamp }}
export GENESIS_DELAY={{ .GenesisDelay }}
export GENESIS_GASLIMIT={{ .GenesisGasLimit }}
@@ -38,10 +22,6 @@ export SHARD_COMMITTEE_PERIOD={{ .ShardCommitteePeriod }}
export DATA_COLUMN_SIDECAR_SUBNET_COUNT={{ .DataColumnSidecarSubnetCount }}
export SAMPLES_PER_SLOT={{ .SamplesPerSlot }}
export CUSTODY_REQUIREMENT={{ .CustodyRequirement }}
-export MAX_BLOBS_PER_BLOCK_ELECTRA={{ .MaxBlobsPerBlockElectra }}
-export TARGET_BLOBS_PER_BLOCK_ELECTRA={{ .TargetBlobsPerBlockElectra }}
-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 }}
diff --git a/static_files/grafana-config/dashboards/default.json b/static_files/grafana-config/dashboards/default.json
index d1187a3..f09e231 100644
--- a/static_files/grafana-config/dashboards/default.json
+++ b/static_files/grafana-config/dashboards/default.json
@@ -111,7 +111,7 @@
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
- "expr": "rate(replay_blocks_count_sum{job=~\"cl-.*-prysm-geth|cl-.*-lighthouse-geth\"}[$__rate_interval])",
+ "expr": "rate(replay_blocks_count_sum{job=~\"cl-.*-qrysm-gzond\"}[$__rate_interval])",
"legendFormat": "{{job}}",
"range": true,
"refId": "A"
@@ -195,12 +195,12 @@
"options": {
"mode": "exclude",
"names": [
- "cl-3-prysm-geth",
- "cl-6-prysm-geth",
- "cl-1-lighthouse-geth",
- "cl-2-lighthouse-geth",
- "cl-5-prysm-geth",
- "cl-4-prysm-geth"
+ "cl-3-qrysm-gzond",
+ "cl-6-qrysm-gzond",
+ "cl-1-qrysm-gzond",
+ "cl-2-qrysm-gzond",
+ "cl-5-qrysm-gzond",
+ "cl-4-qrysm-gzond"
],
"prefix": "All except:",
"readOnly": true
@@ -246,7 +246,7 @@
},
"editorMode": "code",
"exemplar": true,
- "expr": "beacon_head_slot{job=~\"cl-.*-prysm-geth|cl-.*-lighthouse-geth\"}",
+ "expr": "beacon_head_slot{job=~\"cl-.*-qrysm-gzond\"}",
"interval": "",
"legendFormat": "{{job}}",
"range": true,
@@ -319,13 +319,13 @@
"options": {
"mode": "exclude",
"names": [
- "cl-5-prysm-geth",
- "cl-6-prysm-geth",
- "cl-4-prysm-geth",
- "cl-1-lighthouse-geth",
- "cl-3-prysm-geth",
- "cl-2-prysm-geth",
- "cl-2-lighthouse-geth"
+ "cl-5-qrysm-gzond",
+ "cl-6-qrysm-gzond",
+ "cl-4-qrysm-gzond",
+ "cl-1-qrysm-gzond",
+ "cl-3-qrysm-gzond",
+ "cl-2-qrysm-gzond",
+ "cl-2-qrysm-gzond"
],
"prefix": "All except:",
"readOnly": true
@@ -370,7 +370,7 @@
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
- "expr": "beacon_finalized_epoch{job=~\"cl-.*-prysm-geth|cl-.*-lighthouse-geth\"}",
+ "expr": "beacon_finalized_epoch{job=~\"cl-.*-qrysm-gzond\"}",
"hide": false,
"legendFormat": "{{job}}",
"range": true,
@@ -463,7 +463,7 @@
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
- "expr": "rate(hot_state_cache_hit{job=~\"cl-.*-prysm-geth\"}[1m])/(rate(hot_state_cache_miss{job=~\"cl-.*-prysm-geth\"}[1m])+rate(hot_state_cache_hit{job=~\"cl-.*-prysm-geth\"}[1m]))",
+ "expr": "rate(hot_state_cache_hit{job=~\"cl-.*-qrysm-gzond\"}[1m])/(rate(hot_state_cache_miss{job=~\"cl-.*-qrysm-gzond\"}[1m])+rate(hot_state_cache_hit{job=~\"cl-.*-qrysm-gzond\"}[1m]))",
"legendFormat": "{{job}}",
"range": true,
"refId": "A"
@@ -555,7 +555,7 @@
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
- "expr": "rate(next_slot_cache_hit{job=~\"cl-.*-prysm-geth\"}[1m])/(rate(next_slot_cache_miss{job=~\"cl-.*-prysm-geth\"}[1m])+rate(next_slot_cache_hit{job=~\"cl-.*-prysm-geth\"}[1m]))",
+ "expr": "rate(next_slot_cache_hit{job=~\"cl-.*-qrysm-gzond\"}[1m])/(rate(next_slot_cache_miss{job=~\"cl-.*-qrysm-gzond\"}[1m])+rate(next_slot_cache_hit{job=~\"cl-.*-qrysm-gzond\"}[1m]))",
"legendFormat": "{{job}}",
"range": true,
"refId": "A"
@@ -647,7 +647,7 @@
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
- "expr": "rate(attestation_cache_hit{job=~\"cl-.*-prysm-geth\"}[1m])/(rate(attestation_cache_miss{job=~\"cl-.*-prysm-geth\"}[1m])+rate(attestation_cache_hit{job=~\"cl-.*-prysm-geth\"}[1m]))",
+ "expr": "rate(attestation_cache_hit{job=~\"cl-.*-qrysm-gzond\"}[1m])/(rate(attestation_cache_miss{job=~\"cl-.*-qrysm-gzond\"}[1m])+rate(attestation_cache_hit{job=~\"cl-.*-qrysm-gzond\"}[1m]))",
"legendFormat": "{{job}}",
"range": true,
"refId": "A"
diff --git a/static_files/grafana-config/dashboards/ethereum-metrics-exporter-overview.json b/static_files/grafana-config/dashboards/ethereum-metrics-exporter-overview.json
index a0249f1..5e93ba5 100644
--- a/static_files/grafana-config/dashboards/ethereum-metrics-exporter-overview.json
+++ b/static_files/grafana-config/dashboards/ethereum-metrics-exporter-overview.json
@@ -696,79 +696,10 @@
},
"editorMode": "code",
"exemplar": true,
- "expr": "count(eth_con_node_version{version=~\".*Lighthouse.*\"})",
- "interval": "",
- "legendFormat": "Lighthouse",
- "range": true,
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "count(eth_con_node_version{version=~\".*Nimbus.*\"})",
- "hide": false,
- "interval": "",
- "legendFormat": "Nimbus",
- "range": true,
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "count(eth_con_node_version{version=~\".*teku.*\"})",
+ "expr": "count(eth_con_node_version{version=~\".*Qrysm.*\"})",
"hide": false,
"interval": "",
- "legendFormat": "Teku",
- "range": true,
- "refId": "C"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "count(eth_con_node_version{version=~\".*Lodestar.*\"})",
- "hide": false,
- "interval": "",
- "legendFormat": "Lodestar",
- "range": true,
- "refId": "D"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "count(eth_con_node_version{version=~\".*Grandine.*\"})",
- "hide": false,
- "interval": "",
- "legendFormat": "Grandine",
- "range": true,
- "refId": "E"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "count(eth_con_node_version{version=~\".*Prysm.*\"})",
- "hide": false,
- "interval": "",
- "legendFormat": "Prysm",
+ "legendFormat": "Qrysm",
"range": true,
"refId": "F"
}
@@ -827,54 +758,12 @@
},
"editorMode": "code",
"exemplar": true,
- "expr": "count(eth_exe_web3_client_version{version=~\".*Geth.*\"})",
+ "expr": "count(eth_exe_web3_client_version{version=~\".*Gzond.*\"})",
"interval": "",
- "legendFormat": "Geth",
+ "legendFormat": "Gzond",
"range": true,
"refId": "A"
},
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "count(eth_exe_web3_client_version{version=~\".*Nethermind.*\"})",
- "hide": false,
- "interval": "",
- "legendFormat": "Nethermind",
- "range": true,
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "count(eth_exe_web3_client_version{version=~\".*besu.*\"})",
- "hide": false,
- "interval": "",
- "legendFormat": "Besu",
- "range": true,
- "refId": "C"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "count(eth_exe_web3_client_version{version=~\".*erigon.*\"})",
- "hide": false,
- "interval": "",
- "legendFormat": "Erigon",
- "range": true,
- "refId": "D"
- },
{
"datasource": {
"type": "prometheus",
diff --git a/static_files/grafana-config/dashboards/ethereum-metrics-exporter.json b/static_files/grafana-config/dashboards/ethereum-metrics-exporter.json
index 9d75715..6558924 100644
--- a/static_files/grafana-config/dashboards/ethereum-metrics-exporter.json
+++ b/static_files/grafana-config/dashboards/ethereum-metrics-exporter.json
@@ -3558,8 +3558,8 @@
{
"current": {
"selected": false,
- "text": "1-lighthouse-geth",
- "value": "1-lighthouse-geth"
+ "text": "1-qrysm-gzond",
+ "value": "1-qrysm-gzond"
},
"datasource": {
"type": "prometheus",
diff --git a/static_files/grafana-config/dashboards/lighthouse-peerdas-dashboard.json b/static_files/grafana-config/dashboards/lighthouse-peerdas-dashboard.json
deleted file mode 100644
index a347c59..0000000
--- a/static_files/grafana-config/dashboards/lighthouse-peerdas-dashboard.json
+++ /dev/null
@@ -1,1563 +0,0 @@
-{
- "annotations": {
- "list": [
- {
- "builtIn": 1,
- "datasource": {
- "type": "grafana",
- "uid": "-- Grafana --"
- },
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "type": "dashboard"
- }
- ]
- },
- "editable": true,
- "fiscalYearStartMonth": 0,
- "graphTooltip": 0,
- "id": 6,
- "links": [],
- "panels": [
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 16,
- "panels": [],
- "title": "Data Column Sidecar & KZG",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "decimals": 0,
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 1
- },
- "id": 13,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "pluginVersion": "9.1.2",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "sum by(job) (increase(beacon_blobs_column_sidecar_processing_requests_total{job=~\"$job\"}[$__interval]))",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Data column sidecars submitted for processing",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "decimals": 0,
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 1
- },
- "id": 20,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "pluginVersion": "9.1.2",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "sum by(job) (increase(beacon_blobs_column_sidecar_processing_successes_total{job=~\"$job\"}[$__interval]))",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Data column sidecars verified for gossip",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "decimals": 0,
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 1
- },
- "id": 15,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "pluginVersion": "9.1.2",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "sum by(job) (increase(beacon_blobs_column_sidecar_processing_requests_total{job=~\"$job\"}[$__interval])) - sum by(job) (increase(beacon_blobs_column_sidecar_processing_successes_total{job=~\"$job\"}[$__interval]))",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Column processing failures",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "description": "Time taken to compute data column sidecar, including cells, proofs and inclusion proof",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 6,
- "x": 0,
- "y": 7
- },
- "id": 21,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, rate(data_column_sidecar_computation_seconds_bucket{job=~\"$job\"}[$__rate_interval]))",
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Time taken to compute data column sidecar",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 6,
- "x": 6,
- "y": 7
- },
- "id": 22,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, rate(data_column_sidecar_inclusion_proof_verification_seconds_bucket{job=~\"$job\"}[$__rate_interval]))",
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Time taken to verify data column sidecar inclusion proof",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "decimals": 0,
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 6,
- "x": 12,
- "y": 7
- },
- "id": 14,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "pluginVersion": "9.1.2",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "sum by (job) (increase(data_availability_reconstructed_columns_total{job=~\"$job\"}[$__interval]))",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Total count of reconstructed columns",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 6,
- "x": 18,
- "y": 7
- },
- "id": 25,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, rate(data_availability_reconstruction_time_seconds_bucket{job=~\"$job\"}[$__rate_interval]))",
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Time taken to reconstruct columns",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 13
- },
- "id": 23,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, rate(kzg_verification_data_column_single_seconds_bucket{job=~\"$job\"}[$__rate_interval]))",
- "hide": false,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Runtime of single data column kzg verification",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 13
- },
- "id": 24,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, rate(kzg_verification_data_column_batch_seconds_bucket{job=~\"$job\"}[$__rate_interval]))",
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Runtime of batched data column kzg verification",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 13
- },
- "id": 35,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, rate(beacon_blobs_column_sidecar_gossip_verification_seconds_bucket{job=~\"$job\"}[$__rate_interval]))",
- "instant": false,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Full runtime of data column sidecars gossip verification",
- "type": "timeseries"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 19
- },
- "id": 26,
- "panels": [],
- "title": "Gossip",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 8,
- "x": 0,
- "y": 20
- },
- "id": 27,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "sum by(job) (increase(gossipsub_topic_msg_sent_counts_total{job=~\"$job\", hash=~\".*/data_column_sidecar.*\"}[$__interval]))",
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Number of gossip messages sent to each topic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "description": "Number of gossip messages received from each topic (including duplicates)",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 8,
- "x": 8,
- "y": 20
- },
- "id": 28,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "sum by(job) (increase(gossipsub_topic_msg_recv_counts_unfiltered_total{job=~\"$job\", hash=~\".*/data_column_sidecar.*\"}[$__interval]))",
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Number of gossip messages received from each topic (duplicates)",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "description": "Number of gossip messages received from each topic (deduplicated)",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 8,
- "x": 16,
- "y": 20
- },
- "id": 32,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "sum by(job) (increase(gossipsub_topic_msg_recv_counts_total{job=~\"$job\", hash=~\".*/data_column_sidecar.*\"}[$__interval]))",
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Number of gossip messages received from each topic (deduplicated)",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "decbytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 8,
- "x": 0,
- "y": 27
- },
- "id": 30,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "sum by(job) (increase(gossipsub_topic_msg_sent_bytes_total{job=~\"$job\", hash=~\".*/data_column_sidecar.*\"}[$__interval]))",
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Number of bytes sent to each topic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "description": "Number of bytes received from each topic (including duplicates) ",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "decbytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 8,
- "x": 8,
- "y": 27
- },
- "id": 29,
- "interval": "30s",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "sum by(job) (increase(gossipsub_topic_msg_recv_bytes_total{job=~\"$job\", hash=~\".*/data_column_sidecar.*\"}[$__interval]))",
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Number of bytes received from each topic (duplicates)",
- "type": "timeseries"
- }
- ],
- "refresh": "",
- "schemaVersion": 39,
- "tags": [],
- "templating": {
- "list": [
- {
- "current": {
- "selected": true,
- "text": [
- "All"
- ],
- "value": [
- "$__all"
- ]
- },
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "definition": "label_values(job)",
- "hide": 0,
- "includeAll": true,
- "label": "Job",
- "multi": true,
- "name": "job",
- "options": [],
- "query": {
- "qryType": 1,
- "query": "label_values(job)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 1,
- "regex": "^cl.*",
- "skipUrlSync": false,
- "sort": 0,
- "type": "query"
- }
- ]
- },
- "time": {
- "from": "now-1h",
- "to": "now"
- },
- "timepicker": {},
- "timezone": "browser",
- "title": "Lighthouse PeerDAS metrics",
- "uid": "ddr7j9b1mlszks",
- "version": 3,
- "weekStart": ""
-}
diff --git a/static_files/grafana-config/dashboards/peerdas-dashboard.json b/static_files/grafana-config/dashboards/peerdas-dashboard.json
index 940778a..8ad4663 100644
--- a/static_files/grafana-config/dashboards/peerdas-dashboard.json
+++ b/static_files/grafana-config/dashboards/peerdas-dashboard.json
@@ -2601,36 +2601,11 @@
},
{
"selected": false,
- "text": "lighthouse",
- "value": "lighthouse"
- },
- {
- "selected": false,
- "text": "teku",
- "value": "teku"
- },
- {
- "selected": false,
- "text": "prysm",
- "value": "prysm"
- },
- {
- "selected": false,
- "text": "lodestar",
- "value": "lodestar"
- },
- {
- "selected": false,
- "text": "grandine",
- "value": "grandine"
- },
- {
- "selected": false,
- "text": "nimbus",
- "value": "nimbus"
+ "text": "qrysm",
+ "value": "qrysm"
}
],
- "query": "lighthouse, teku, prysm, lodestar, grandine, nimbus",
+ "query": "qrysm",
"queryValue": "",
"skipUrlSync": false,
"type": "custom"
diff --git a/static_files/grafana-config/dashboards/prysm-latency-dashboard.json b/static_files/grafana-config/dashboards/qrysm-latency-dashboard.json
similarity index 95%
rename from static_files/grafana-config/dashboards/prysm-latency-dashboard.json
rename to static_files/grafana-config/dashboards/qrysm-latency-dashboard.json
index cf8da4b..267be15 100644
--- a/static_files/grafana-config/dashboards/prysm-latency-dashboard.json
+++ b/static_files/grafana-config/dashboards/qrysm-latency-dashboard.json
@@ -1165,98 +1165,6 @@
"title": "Agg Attestion Verification Time",
"type": "timeseries"
},
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 6,
- "x": 12,
- "y": 25
- },
- "id": 13,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "PBFA97CFB590B2093"
- },
- "editorMode": "code",
- "expr": "rate(gossip_blob_sidecar_arrival_milliseconds_sum{client_type=\"beacon\"}[$__rate_interval])",
- "legendFormat": "{{service}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Blob Sidecar Arrival Delay",
- "type": "timeseries"
- },
{
"datasource": {
"type": "prometheus",
@@ -2021,7 +1929,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Prysm Latency Metrics",
+ "title": "Qrysm Latency Metrics",
"uid": "b7c878a3-ff5c-46e1-8961-7d4b417110bd",
"version": 28,
"weekStart": ""
diff --git a/static_files/keymanager/openssl.cnf b/static_files/keymanager/openssl.cnf
index 0afbc97..97e0332 100644
--- a/static_files/keymanager/openssl.cnf
+++ b/static_files/keymanager/openssl.cnf
@@ -8,7 +8,7 @@ countryName = EU
stateOrProvinceName = CA
localityName = San Francisco
organizationName = Kurtosis
-organizationalUnitName = ethereum-package
+organizationalUnitName = zond-package
[v3_req]
subjectKeyIdentifier = hash
diff --git a/version.txt b/version.txt
index fdc6698..6e8bf73 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-4.4.0
+0.1.0