From ae7ef3fe8e4f33d22e3cd1d3875abd017f2c5f16 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Fri, 1 Sep 2023 17:56:04 +0200 Subject: [PATCH 1/9] add support for verkle --- default-network-params.json | 3 ++- package_io/input_parser.star | 10 ++++++- src/participant_network.star | 6 +++-- .../cl_genesis/cl_genesis_data_generator.star | 13 ++++++--- .../cl_validator_keystore_generator.star | 4 ++- .../el_genesis/el_genesis_data_generator.star | 15 +++++++---- .../prelaunch_data_generator_launcher.star | 27 ++++++++++++++----- .../cl/config.yaml.tmpl | 4 +++ .../el/genesis-config.yaml.tmpl | 1 + 9 files changed, 62 insertions(+), 21 deletions(-) diff --git a/default-network-params.json b/default-network-params.json index 31a299cc..a7308448 100644 --- a/default-network-params.json +++ b/default-network-params.json @@ -22,7 +22,8 @@ "seconds_per_slot": 12, "genesis_delay": 120, "capella_fork_epoch": 0, - "deneb_fork_epoch": 500 + "deneb_fork_epoch": 500, + "electra_fork_epoch": "None" }, "global_client_log_level": "info" } diff --git a/package_io/input_parser.star b/package_io/input_parser.star index 4a5f08ad..d6cd6754 100644 --- a/package_io/input_parser.star +++ b/package_io/input_parser.star @@ -96,6 +96,12 @@ def parse_input(input_args): if result["network_params"]["deneb_fork_epoch"] == 0: fail("deneb_fork_epoch is 0 needs to be > 0 ") + if result["network_params"]["electra_fork_epoch"] != None and result["network_params"]["deneb_fork_epoch"] < result["network_params"]["electra_fork_epoch"]: + fail("electra_fork_epoch has to happen before deneb, for now") + + if result["network_params"]["capella_fork_epoch"] > 0 and result["network_params"]["electra_fork_epoch"] != None: + fail("electra can only happen with capella genesis not bellatrix") + required_num_validtors = 2 * result["network_params"]["slots_per_epoch"] actual_num_validators = len(result["participants"]) * result["network_params"]["num_validator_keys_per_node"] if required_num_validtors > actual_num_validators: @@ -135,9 +141,10 @@ def parse_input(input_args): deposit_contract_address=result["network_params"]["deposit_contract_address"], seconds_per_slot=result["network_params"]["seconds_per_slot"], slots_per_epoch=result["network_params"]["slots_per_epoch"], + genesis_delay=result["network_params"]["genesis_delay"], capella_fork_epoch=result["network_params"]["capella_fork_epoch"], deneb_fork_epoch=result["network_params"]["deneb_fork_epoch"], - genesis_delay=result["network_params"]["genesis_delay"], + electra_fork_epoch=result["network_params"]["electra_fork_epoch"] ), wait_for_finalization=result["wait_for_finalization"], wait_for_verifications=result["wait_for_verifications"], @@ -183,6 +190,7 @@ def default_network_params(): # arbitrarily large while we sort out https://github.com/kurtosis-tech/eth-network-package/issues/42 # this will take 53~ hoours for now "deneb_fork_epoch": 500, + "electra_fork_epoch": None } def default_participant(): diff --git a/src/participant_network.star b/src/participant_network.star index cfe1fee1..f781709b 100644 --- a/src/participant_network.star +++ b/src/participant_network.star @@ -76,7 +76,8 @@ def launch_participant_network(plan, participants, network_params, global_log_le network_params.genesis_delay, network_params.seconds_per_slot, network_params.capella_fork_epoch, - network_params.deneb_fork_epoch + network_params.deneb_fork_epoch, + network_params.electra_fork_epoch ) plan.print(json.indent(json.encode(el_genesis_data))) @@ -105,7 +106,8 @@ def launch_participant_network(plan, participants, network_params, global_log_le total_number_of_validator_keys, network_params.genesis_delay, network_params.capella_fork_epoch, - network_params.deneb_fork_epoch + network_params.deneb_fork_epoch, + network_params.electra_fork_epoch ) plan.print(json.indent(json.encode(cl_genesis_data))) diff --git a/src/prelaunch_data_generator/cl_genesis/cl_genesis_data_generator.star b/src/prelaunch_data_generator/cl_genesis/cl_genesis_data_generator.star index 5ce88ddc..6d9fed0b 100644 --- a/src/prelaunch_data_generator/cl_genesis/cl_genesis_data_generator.star +++ b/src/prelaunch_data_generator/cl_genesis/cl_genesis_data_generator.star @@ -39,6 +39,7 @@ def generate_cl_genesis_data( genesis_delay, capella_fork_epoch, deneb_fork_epoch, + electra_fork_epoch ): template_data = new_cl_genesis_config_template_data( @@ -50,7 +51,8 @@ def generate_cl_genesis_data( deposit_contract_address, genesis_delay, capella_fork_epoch, - deneb_fork_epoch + deneb_fork_epoch, + electra_fork_epoch ) genesis_generation_mnemonics_template_and_data = shared_utils.new_template_and_data(genesis_generation_mnemonics_yml_template, template_data) @@ -70,7 +72,8 @@ def generate_cl_genesis_data( EL_GENESIS_DIRPATH_ON_GENERATOR: el_genesis_data.files_artifact_uuid, }, "cl-genesis-data", - capella_fork_epoch + capella_fork_epoch, + electra_fork_epoch ) all_dirpaths_to_create_on_generator = [ @@ -202,7 +205,8 @@ def new_cl_genesis_config_template_data( deposit_contract_address, genesis_delay, capella_fork_epoch, - deneb_fork_epoch): + deneb_fork_epoch, + electra_fork_epoch): return { "NetworkId": network_id, "SecondsPerSlot": seconds_per_slot, @@ -212,7 +216,8 @@ def new_cl_genesis_config_template_data( "DepositContractAddress": deposit_contract_address, "GenesisDelay": genesis_delay, "CapellaForkEpoch": capella_fork_epoch, - "DenebForkEpoch": deneb_fork_epoch + "DenebForkEpoch": deneb_fork_epoch, + "ElectraForkEpoch": electra_fork_epoch, } diff --git a/src/prelaunch_data_generator/cl_validator_keystores/cl_validator_keystore_generator.star b/src/prelaunch_data_generator/cl_validator_keystores/cl_validator_keystore_generator.star index 17f37357..17cba2b5 100644 --- a/src/prelaunch_data_generator/cl_validator_keystores/cl_validator_keystore_generator.star +++ b/src/prelaunch_data_generator/cl_validator_keystores/cl_validator_keystore_generator.star @@ -41,6 +41,7 @@ def generate_cl_validator_keystores( {}, "cl-validator-keystore", capella_fork_epoch=0, # It doesn't matter how the validator keys are generated + electra_fork_epoch=None # It doesn't matter how the validator keys are generated ) all_output_dirpaths = [] @@ -136,7 +137,8 @@ def generate_cl_valdiator_keystores_in_parallel( plan, {}, ["cl-validator-keystore-" + str(idx) for idx in range(0, len(participants))], - capella_fork_epoch=0) # It doesn't matter how the validator keys are generated + capella_fork_epoch=0, # It doesn't matter how the validator keys are generated + electra_fork_epoch=None) # It doesn't matter how the validator keys are generated all_output_dirpaths = [] all_generation_commands = [] diff --git a/src/prelaunch_data_generator/el_genesis/el_genesis_data_generator.star b/src/prelaunch_data_generator/el_genesis/el_genesis_data_generator.star index 63690604..0a9f3fde 100644 --- a/src/prelaunch_data_generator/el_genesis/el_genesis_data_generator.star +++ b/src/prelaunch_data_generator/el_genesis/el_genesis_data_generator.star @@ -35,7 +35,8 @@ def generate_el_genesis_data( genesis_delay, seconds_per_slot, capella_fork_epoch, - deneb_fork_epoch + deneb_fork_epoch, + electra_fork_epoch ): template_data = genesis_generation_config_template_data( @@ -45,7 +46,8 @@ def generate_el_genesis_data( genesis_delay, seconds_per_slot, capella_fork_epoch, - deneb_fork_epoch + deneb_fork_epoch, + electra_fork_epoch ) genesis_config_file_template_and_data = shared_utils.new_template_and_data(genesis_generation_config_template, template_data) @@ -63,7 +65,8 @@ def generate_el_genesis_data( CONFIG_DIRPATH_ON_GENERATOR: genesis_generation_config_artifact_name, }, "el-genesis-data", - capella_fork_epoch + capella_fork_epoch, + electra_fork_epoch ) @@ -148,7 +151,8 @@ def genesis_generation_config_template_data( genesis_delay, seconds_per_slot, capella_fork_epoch, - deneb_fork_epoch): + deneb_fork_epoch, + electra_fork_epoch): return { "NetworkId": network_id, "DepositContractAddress": deposit_contract_address, @@ -156,5 +160,6 @@ def genesis_generation_config_template_data( "GenesisDelay": genesis_delay, "SecondsPerSlot": seconds_per_slot, "CapellaForkEpoch": capella_fork_epoch, - "DenebForkEpoch": deneb_fork_epoch + "DenebForkEpoch": deneb_fork_epoch, + "ElectraForkEpoch": electra_fork_epoch, } diff --git a/src/prelaunch_data_generator/prelaunch_data_generator_launcher/prelaunch_data_generator_launcher.star b/src/prelaunch_data_generator/prelaunch_data_generator_launcher/prelaunch_data_generator_launcher.star index 292c82ea..2e5bd531 100644 --- a/src/prelaunch_data_generator/prelaunch_data_generator_launcher/prelaunch_data_generator_launcher.star +++ b/src/prelaunch_data_generator/prelaunch_data_generator_launcher/prelaunch_data_generator_launcher.star @@ -7,9 +7,14 @@ ENTRYPOINT_ARGS = [ ] # Launches a prelaunch data generator IMAGE, for use in various of the genesis generation -def launch_prelaunch_data_generator(plan, files_artifact_mountpoints, service_name_suffix, capella_fork_epoch): +def launch_prelaunch_data_generator( + plan, + files_artifact_mountpoints, + service_name_suffix, + capella_fork_epoch, + electra_fork_epoch): - config = get_config(files_artifact_mountpoints, capella_fork_epoch) + config = get_config(files_artifact_mountpoints, capella_fork_epoch, electra_fork_epoch) service_name = "{0}{1}".format( SERVICE_NAME_PREFIX, @@ -20,8 +25,13 @@ def launch_prelaunch_data_generator(plan, files_artifact_mountpoints, service_na return service_name -def launch_prelaunch_data_generator_parallel(plan, files_artifact_mountpoints, service_name_suffixes, capella_fork_epoch): - config = get_config(files_artifact_mountpoints, capella_fork_epoch) +def launch_prelaunch_data_generator_parallel( + plan, + files_artifact_mountpoints, + service_name_suffixes, + capella_fork_epoch, + electra_fork_epoch): + config = get_config(files_artifact_mountpoints, capella_fork_epoch, electra_fork_epoch) service_names = ["{0}{1}".format( SERVICE_NAME_PREFIX, service_name_suffix, @@ -31,11 +41,14 @@ def launch_prelaunch_data_generator_parallel(plan, files_artifact_mountpoints, s return service_names -def get_config(files_artifact_mountpoints, capella_fork_epoch): - if capella_fork_epoch > 0: +def get_config(files_artifact_mountpoints, capella_fork_epoch, electra_fork_epoch): + if capella_fork_epoch > 0 and electra_fork_epoch == None: # we are running capella img = "ethpandaops/ethereum-genesis-generator:1.3.4" - else: + elif capella_fork_epoch == 0 and electra_fork_epoch == None: # we are running dencun img = "ethpandaops/ethereum-genesis-generator:2.0.0-rc.6" + else: # we are running electra + img = "ethpandaops/ethereum-genesis-generator:3.0.0-rc.1" + return ServiceConfig( image = img, entrypoint = ENTRYPOINT_ARGS, diff --git a/static_files/genesis-generation-config/cl/config.yaml.tmpl b/static_files/genesis-generation-config/cl/config.yaml.tmpl index 07db5127..dfb60db8 100644 --- a/static_files/genesis-generation-config/cl/config.yaml.tmpl +++ b/static_files/genesis-generation-config/cl/config.yaml.tmpl @@ -40,6 +40,10 @@ CAPELLA_FORK_EPOCH: {{ .CapellaForkEpoch }} DENEB_FORK_VERSION: 0x50000038 DENEB_FORK_EPOCH: {{ .DenebForkEpoch }} +# Electra +ELECTRA_FORK_VERSION: 0x60000038 +ELECTRA_FORK_EPOCH: {{ .ElectraForkEpoch }} + # Time parameters # --------------------------------------------------------------- # 12 seconds diff --git a/static_files/genesis-generation-config/el/genesis-config.yaml.tmpl b/static_files/genesis-generation-config/el/genesis-config.yaml.tmpl index 9448b24f..48571b32 100644 --- a/static_files/genesis-generation-config/el/genesis-config.yaml.tmpl +++ b/static_files/genesis-generation-config/el/genesis-config.yaml.tmpl @@ -18,3 +18,4 @@ genesis_delay: {{ .GenesisDelay }} slot_duration_in_seconds: {{ .SecondsPerSlot }} capella_fork_epoch: {{ .CapellaForkEpoch }} deneb_fork_epoch: {{ .DenebForkEpoch }} +electra_fork_epoch: {{ .ElectraForkEpoch }} From 67896be2183ade61b0c79cc958e4aef65edcedbe Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Tue, 5 Sep 2023 13:23:43 +0200 Subject: [PATCH 2/9] < to <= --- package_io/input_parser.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package_io/input_parser.star b/package_io/input_parser.star index d6cd6754..22cadef6 100644 --- a/package_io/input_parser.star +++ b/package_io/input_parser.star @@ -96,7 +96,7 @@ def parse_input(input_args): if result["network_params"]["deneb_fork_epoch"] == 0: fail("deneb_fork_epoch is 0 needs to be > 0 ") - if result["network_params"]["electra_fork_epoch"] != None and result["network_params"]["deneb_fork_epoch"] < result["network_params"]["electra_fork_epoch"]: + if result["network_params"]["electra_fork_epoch"] != None and result["network_params"]["deneb_fork_epoch"] <= result["network_params"]["electra_fork_epoch"]: fail("electra_fork_epoch has to happen before deneb, for now") if result["network_params"]["capella_fork_epoch"] > 0 and result["network_params"]["electra_fork_epoch"] != None: From b852a2d91d212eb6c625db23bb40d18eb2899073 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Wed, 6 Sep 2023 15:52:00 +0200 Subject: [PATCH 3/9] make deneb optional --- default-network-params.json | 2 +- package_io/input_parser.star | 9 ++++----- .../prelaunch_data_generator_launcher.star | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/default-network-params.json b/default-network-params.json index a7308448..6850b830 100644 --- a/default-network-params.json +++ b/default-network-params.json @@ -22,7 +22,7 @@ "seconds_per_slot": 12, "genesis_delay": 120, "capella_fork_epoch": 0, - "deneb_fork_epoch": 500, + "deneb_fork_epoch": "None", "electra_fork_epoch": "None" }, "global_client_log_level": "info" diff --git a/package_io/input_parser.star b/package_io/input_parser.star index 22cadef6..07052a9e 100644 --- a/package_io/input_parser.star +++ b/package_io/input_parser.star @@ -96,8 +96,8 @@ def parse_input(input_args): if result["network_params"]["deneb_fork_epoch"] == 0: fail("deneb_fork_epoch is 0 needs to be > 0 ") - if result["network_params"]["electra_fork_epoch"] != None and result["network_params"]["deneb_fork_epoch"] <= result["network_params"]["electra_fork_epoch"]: - fail("electra_fork_epoch has to happen before deneb, for now") + if result["network_params"]["electra_fork_epoch"] != None and result["network_params"]["deneb_fork_epoch"] != None: + fail("electra_fork_epoch has to without defining deneb, for now") if result["network_params"]["capella_fork_epoch"] > 0 and result["network_params"]["electra_fork_epoch"] != None: fail("electra can only happen with capella genesis not bellatrix") @@ -187,9 +187,8 @@ def default_network_params(): "slots_per_epoch": 32, "genesis_delay": 120, "capella_fork_epoch": 0, - # arbitrarily large while we sort out https://github.com/kurtosis-tech/eth-network-package/issues/42 - # this will take 53~ hoours for now - "deneb_fork_epoch": 500, + # In order to not break electra fork, deneb has to be undefined + "deneb_fork_epoch": None, "electra_fork_epoch": None } diff --git a/src/prelaunch_data_generator/prelaunch_data_generator_launcher/prelaunch_data_generator_launcher.star b/src/prelaunch_data_generator/prelaunch_data_generator_launcher/prelaunch_data_generator_launcher.star index 2e5bd531..20c1f001 100644 --- a/src/prelaunch_data_generator/prelaunch_data_generator_launcher/prelaunch_data_generator_launcher.star +++ b/src/prelaunch_data_generator/prelaunch_data_generator_launcher/prelaunch_data_generator_launcher.star @@ -47,7 +47,7 @@ def get_config(files_artifact_mountpoints, capella_fork_epoch, electra_fork_epoc elif capella_fork_epoch == 0 and electra_fork_epoch == None: # we are running dencun img = "ethpandaops/ethereum-genesis-generator:2.0.0-rc.6" else: # we are running electra - img = "ethpandaops/ethereum-genesis-generator:3.0.0-rc.1" + img = "ethpandaops/ethereum-genesis-generator:3.0.0-rc.2" return ServiceConfig( image = img, From 287cf1618c970aa0f17def6b05179b026aab1010 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Wed, 6 Sep 2023 16:43:08 +0200 Subject: [PATCH 4/9] set deneb to invalid if electra is defined --- package_io/input_parser.star | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package_io/input_parser.star b/package_io/input_parser.star index 07052a9e..1968886c 100644 --- a/package_io/input_parser.star +++ b/package_io/input_parser.star @@ -96,8 +96,9 @@ def parse_input(input_args): if result["network_params"]["deneb_fork_epoch"] == 0: fail("deneb_fork_epoch is 0 needs to be > 0 ") - if result["network_params"]["electra_fork_epoch"] != None and result["network_params"]["deneb_fork_epoch"] != None: - fail("electra_fork_epoch has to without defining deneb, for now") + if result["network_params"]["electra_fork_epoch"] != None: + # if electra is defined, then deneb needs to be undefined + result["network_params"]["deneb_fork_epoch"] = None if result["network_params"]["capella_fork_epoch"] > 0 and result["network_params"]["electra_fork_epoch"] != None: fail("electra can only happen with capella genesis not bellatrix") @@ -187,8 +188,7 @@ def default_network_params(): "slots_per_epoch": 32, "genesis_delay": 120, "capella_fork_epoch": 0, - # In order to not break electra fork, deneb has to be undefined - "deneb_fork_epoch": None, + "deneb_fork_epoch": 500, "electra_fork_epoch": None } From df686a35e1485a97735d2c718fe99486ae14bd7a Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Thu, 7 Sep 2023 17:10:05 +0200 Subject: [PATCH 5/9] fix default network params --- default-network-params.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default-network-params.json b/default-network-params.json index 6850b830..a7308448 100644 --- a/default-network-params.json +++ b/default-network-params.json @@ -22,7 +22,7 @@ "seconds_per_slot": 12, "genesis_delay": 120, "capella_fork_epoch": 0, - "deneb_fork_epoch": "None", + "deneb_fork_epoch": 500, "electra_fork_epoch": "None" }, "global_client_log_level": "info" From 3a2f6333f78d099388165fc8eb781869bbc91128 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Tue, 12 Sep 2023 10:38:44 +0000 Subject: [PATCH 6/9] add cache.preimages to geth --- src/el/geth/geth_launcher.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/el/geth/geth_launcher.star b/src/el/geth/geth_launcher.star index 45f36b6d..79bd072a 100644 --- a/src/el/geth/geth_launcher.star +++ b/src/el/geth/geth_launcher.star @@ -157,7 +157,7 @@ def get_config( accounts_to_unlock_str = ",".join(account_addresses_to_unlock) - init_datadir_cmd_str = "geth init --datadir={0} {1}".format( + init_datadir_cmd_str = "geth init --cache.preimages --datadir={0} {1}".format( EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER, genesis_json_filepath_on_client, ) From 221002ca8bf4e6a67f37f7f2b4bc7036e849105a Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Tue, 12 Sep 2023 13:04:52 +0200 Subject: [PATCH 7/9] fix conditional cache preimages for geth --- package_io/input_parser.star | 4 ++-- src/el/el_client_context.star | 6 ++++-- src/el/geth/geth_launcher.star | 18 ++++++++++-------- src/participant_network.star | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/package_io/input_parser.star b/package_io/input_parser.star index 1968886c..dfb8452e 100644 --- a/package_io/input_parser.star +++ b/package_io/input_parser.star @@ -97,8 +97,8 @@ def parse_input(input_args): fail("deneb_fork_epoch is 0 needs to be > 0 ") if result["network_params"]["electra_fork_epoch"] != None: - # if electra is defined, then deneb needs to be undefined - result["network_params"]["deneb_fork_epoch"] = None + # if electra is defined, then deneb needs to be set very high + result["network_params"]["deneb_fork_epoch"] = 200000 if result["network_params"]["capella_fork_epoch"] > 0 and result["network_params"]["electra_fork_epoch"] != None: fail("electra can only happen with capella genesis not bellatrix") diff --git a/src/el/el_client_context.star b/src/el/el_client_context.star index 6d3a34b0..a8e0f3ae 100644 --- a/src/el/el_client_context.star +++ b/src/el/el_client_context.star @@ -7,7 +7,8 @@ def new_el_client_context( ws_port_num, engine_rpc_port_num, jwt_secret, - service_name = ""): + service_name = "", + electra_fork_epoch = None): return struct( service_name = service_name, client_name = client_name, @@ -17,5 +18,6 @@ def new_el_client_context( rpc_port_num = rpc_port_num, ws_port_num = ws_port_num, engine_rpc_port_num = engine_rpc_port_num, - jwt_secret = jwt_secret + jwt_secret = jwt_secret, + electra_fork_epoch = electra_fork_epoch ) diff --git a/src/el/geth/geth_launcher.star b/src/el/geth/geth_launcher.star index 79bd072a..fd828393 100644 --- a/src/el/geth/geth_launcher.star +++ b/src/el/geth/geth_launcher.star @@ -77,9 +77,7 @@ def launch( el_max_mem, extra_params): - log_level = input_parser.get_client_log_level_or_default(participant_log_level, global_log_level, VERBOSITY_LEVELS) - el_min_cpu = el_min_cpu if int(el_min_cpu) > 0 else EXECUTION_MIN_CPU el_max_cpu = el_max_cpu if int(el_max_cpu) > 0 else EXECUTION_MAX_CPU el_min_mem = el_min_mem if int(el_min_mem) > 0 else EXECUTION_MIN_MEMORY @@ -98,7 +96,8 @@ def launch( el_max_cpu, el_min_mem, el_max_mem, - extra_params + extra_params, + launcher.electra_fork_epoch ) service = plan.add_service(service_name, config) @@ -116,7 +115,7 @@ def launch( WS_PORT_NUM, ENGINE_RPC_PORT_NUM, jwt_secret, - service_name, + service_name ) def get_config( @@ -132,7 +131,8 @@ def get_config( el_max_cpu, el_min_mem, el_max_mem, - extra_params): + extra_params, + electra_fork_epoch): genesis_json_filepath_on_client = shared_utils.path_join(GENESIS_DATA_MOUNT_DIRPATH, genesis_data.geth_genesis_json_relative_filepath) jwt_secret_json_filepath_on_client = shared_utils.path_join(GENESIS_DATA_MOUNT_DIRPATH, genesis_data.jwt_secret_relative_filepath) @@ -157,7 +157,8 @@ def get_config( accounts_to_unlock_str = ",".join(account_addresses_to_unlock) - init_datadir_cmd_str = "geth init --cache.preimages --datadir={0} {1}".format( + init_datadir_cmd_str = "geth init {0} --datadir={1} {2}".format( + "--cache.preimages" if electra_fork_epoch != None else "", EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER, genesis_json_filepath_on_client, ) @@ -244,11 +245,12 @@ def get_config( ), jwt_secret_json_filepath_on_client -def new_geth_launcher(network_id, el_genesis_data, prefunded_geth_keys_artifact_uuid, prefunded_account_info, genesis_validators_root = ""): +def new_geth_launcher(network_id, el_genesis_data, prefunded_geth_keys_artifact_uuid, prefunded_account_info, genesis_validators_root = "", electra_fork_epoch = None): return struct( network_id = network_id, el_genesis_data = el_genesis_data, prefunded_account_info = prefunded_account_info, prefunded_geth_keys_artifact_uuid = prefunded_geth_keys_artifact_uuid, - genesis_validators_root = genesis_validators_root + genesis_validators_root = genesis_validators_root, + electra_fork_epoch = electra_fork_epoch ) diff --git a/src/participant_network.star b/src/participant_network.star index 28aa706b..19f09116 100644 --- a/src/participant_network.star +++ b/src/participant_network.star @@ -118,7 +118,7 @@ def launch_participant_network(plan, participants, network_params, global_log_le genesis_validators_root = cl_genesis_data.genesis_validators_root el_launchers = { - package_io.EL_CLIENT_TYPE.geth : {"launcher": geth.new_geth_launcher(network_params.network_id, el_genesis_data, geth_prefunded_keys_artifact_name, genesis_constants.PRE_FUNDED_ACCOUNTS, genesis_validators_root), "launch_method": geth.launch}, + package_io.EL_CLIENT_TYPE.geth : {"launcher": geth.new_geth_launcher(network_params.network_id, el_genesis_data, geth_prefunded_keys_artifact_name, genesis_constants.PRE_FUNDED_ACCOUNTS, genesis_validators_root, network_params.electra_fork_epoch), "launch_method": geth.launch}, package_io.EL_CLIENT_TYPE.besu : {"launcher": besu.new_besu_launcher(network_params.network_id, el_genesis_data), "launch_method": besu.launch}, package_io.EL_CLIENT_TYPE.erigon : {"launcher": erigon.new_erigon_launcher(network_params.network_id, el_genesis_data), "launch_method": erigon.launch}, package_io.EL_CLIENT_TYPE.nethermind : {"launcher": nethermind.new_nethermind_launcher(el_genesis_data), "launch_method": nethermind.launch}, From afa7afd58260c411d133e58965b3a5cc981dd4f9 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Tue, 12 Sep 2023 13:18:54 +0200 Subject: [PATCH 8/9] make deneb fork epoch constant --- package_io/input_parser.star | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/package_io/input_parser.star b/package_io/input_parser.star index dfb8452e..97c0675e 100644 --- a/package_io/input_parser.star +++ b/package_io/input_parser.star @@ -18,6 +18,10 @@ DEFAULT_CL_IMAGES = { NETHERMIND_NODE_NAME = "nethermind" NIMBUS_NODE_NAME = "nimbus" +# 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 = 20000 + ATTR_TO_BE_SKIPPED_AT_ROOT = ("network_params", "participants") def parse_input(input_args): @@ -98,7 +102,7 @@ def parse_input(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"] = 200000 + result["network_params"]["deneb_fork_epoch"] = HIGH_DENEB_VALUE_FORK_VERKLE if result["network_params"]["capella_fork_epoch"] > 0 and result["network_params"]["electra_fork_epoch"] != None: fail("electra can only happen with capella genesis not bellatrix") From 8dafb98800833041e08a82349526e1a626f78df9 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Tue, 12 Sep 2023 13:21:18 +0200 Subject: [PATCH 9/9] remove from el client context --- src/el/el_client_context.star | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/el/el_client_context.star b/src/el/el_client_context.star index a8e0f3ae..1d732624 100644 --- a/src/el/el_client_context.star +++ b/src/el/el_client_context.star @@ -7,8 +7,7 @@ def new_el_client_context( ws_port_num, engine_rpc_port_num, jwt_secret, - service_name = "", - electra_fork_epoch = None): + service_name = ""): return struct( service_name = service_name, client_name = client_name, @@ -19,5 +18,4 @@ def new_el_client_context( ws_port_num = ws_port_num, engine_rpc_port_num = engine_rpc_port_num, jwt_secret = jwt_secret, - electra_fork_epoch = electra_fork_epoch )