diff --git a/.circleci/config.yml b/.circleci/config.yml index 4dc66b189..b13bc5793 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -282,6 +282,12 @@ jobs: - <<: *setup_kurtosis - checkout - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/disable-peer-scoring.json)" + petra: + executor: ubuntu_vm + steps: + - <<: *setup_kurtosis + - checkout + - run: kurtosis run ${PWD} "$(cat ./.circleci/tests/petra.json)" workflows: check_latest_version: @@ -389,3 +395,9 @@ workflows: branches: ignore: - main + + - petra: + filters: + branches: + ignore: + - main diff --git a/.circleci/tests/petra.json b/.circleci/tests/petra.json new file mode 100644 index 000000000..988b5113e --- /dev/null +++ b/.circleci/tests/petra.json @@ -0,0 +1,16 @@ +{ + "participants": [ + { + "el_client_type": "geth", + "el_client_image": "ethpandaops/geth:gballet-kaustinen-with-shapella-a45a9f2", + "cl_client_type": "lodestar", + "cl_client_image": "ethpandaops/lodestar:g11tech-verge", + "count": 2 + } + ], + "network_params": { + "electra_fork_epoch": 0, + "deneb_fork_epoch": 1000 + }, + "additional_services": [] +} diff --git a/src/el/geth/geth_launcher.star b/src/el/geth/geth_launcher.star index 47e815a0f..5920e1fd5 100644 --- a/src/el/geth/geth_launcher.star +++ b/src/el/geth/geth_launcher.star @@ -107,6 +107,7 @@ def launch( extra_params, extra_env_vars, launcher.electra_fork_epoch, + launcher.final_genesis_timestamp, ) service = plan.add_service(service_name, config) @@ -146,16 +147,30 @@ def get_config( extra_params, extra_env_vars, electra_fork_epoch, + final_genesis_timestamp, ): - init_datadir_cmd_str = "geth init {0} --state.scheme=path --datadir={1} {2}".format( - "--cache.preimages" if electra_fork_epoch != None else "", - EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER, - constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/genesis.json", - ) + # TODO: Remove this once electra fork has path based storage scheme implemented + if electra_fork_epoch != None: + init_datadir_cmd_str = "geth init --cache.preimages --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 --state.scheme=path --datadir={0} {1}".format( + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER, + constants.GENESIS_CONFIG_MOUNT_PATH_ON_CONTAINER + "/genesis.json", + ) cmd = [ "geth", - "--state.scheme=path", + # Disable path based storage scheme for electra fork + "{0}".format("--state.scheme=path" if electra_fork_epoch == None else ""), + # Override prague fork timestamp for electra fork + "{0}".format( + "--override.prague=" + final_genesis_timestamp + if electra_fork_epoch != None + else "" + ), "--verbosity=" + verbosity_level, "--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER, "--networkid=" + network_id, @@ -232,10 +247,12 @@ def get_config( def new_geth_launcher( network_id, el_cl_genesis_data, + final_genesis_timestamp, electra_fork_epoch=None, ): return struct( network_id=network_id, el_cl_genesis_data=el_cl_genesis_data, + final_genesis_timestamp=final_genesis_timestamp, electra_fork_epoch=electra_fork_epoch, ) diff --git a/src/package_io/input_parser.star b/src/package_io/input_parser.star index 73635cf6d..55074545f 100644 --- a/src/package_io/input_parser.star +++ b/src/package_io/input_parser.star @@ -309,6 +309,9 @@ def parse_network_params(input_args): if result["network_params"]["electra_fork_epoch"] != None: # if electra is defined, then deneb needs to be set very high result["network_params"]["deneb_fork_epoch"] = HIGH_DENEB_VALUE_FORK_VERKLE + # TODO: remove once transition is complete + if result["network_params"]["electra_fork_epoch"] != 0: + fail("electra_fork_epoch can only be 0 or None") if ( result["network_params"]["capella_fork_epoch"] > 0 diff --git a/src/participant_network.star b/src/participant_network.star index 532006ebe..37ea04606 100644 --- a/src/participant_network.star +++ b/src/participant_network.star @@ -98,7 +98,7 @@ def launch_participant_network( # we are running electra - experimental elif network_params.electra_fork_epoch != None: ethereum_genesis_generator_image = ( - "ethpandaops/ethereum-genesis-generator:3.0.0-rc.10" + "ethpandaops/ethereum-genesis-generator:3.0.0-rc.14" ) else: fail( @@ -132,6 +132,7 @@ def launch_participant_network( "launcher": geth.new_geth_launcher( network_params.network_id, el_cl_data, + final_genesis_timestamp, network_params.electra_fork_epoch, ), "launch_method": geth.launch,