From 388747054868b61d437dc36ed6a1c955c083c865 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Tue, 16 Jan 2024 12:50:07 +0100 Subject: [PATCH 1/2] fix: re-add networkid --- src/el/erigon/erigon_launcher.star | 6 +++++- src/el/geth/geth_launcher.star | 9 ++++++++- src/package_io/constants.star | 8 ++++++++ src/participant_network.star | 11 +++++++++++ src/shared_utils/shared_utils.star | 17 +++++++++++++++-- 5 files changed, 47 insertions(+), 4 deletions(-) diff --git a/src/el/erigon/erigon_launcher.star b/src/el/erigon/erigon_launcher.star index 3e96e69d9..fa38e8b50 100644 --- a/src/el/erigon/erigon_launcher.star +++ b/src/el/erigon/erigon_launcher.star @@ -107,6 +107,7 @@ def launch( launcher.el_cl_genesis_data, launcher.jwt_file, launcher.network, + launcher.networkid, image, service_name, existing_el_clients, @@ -152,6 +153,7 @@ def get_config( el_cl_genesis_data, jwt_file, network, + networkid, image, service_name, existing_el_clients, @@ -248,6 +250,7 @@ def get_config( cmd.extend([param for param in extra_params]) if network not in constants.PUBLIC_NETWORKS: + cmd.append("--networkid={0}".format(networkid)) command_arg = [init_datadir_cmd_str, " ".join(cmd)] command_arg_str = " && ".join(command_arg) else: @@ -276,9 +279,10 @@ def get_config( ) -def new_erigon_launcher(el_cl_genesis_data, jwt_file, network): +def new_erigon_launcher(el_cl_genesis_data, jwt_file, network,networkid): return struct( el_cl_genesis_data=el_cl_genesis_data, jwt_file=jwt_file, network=network, + networkid=networkid, ) diff --git a/src/el/geth/geth_launcher.star b/src/el/geth/geth_launcher.star index 5e09a86aa..16ccf770d 100644 --- a/src/el/geth/geth_launcher.star +++ b/src/el/geth/geth_launcher.star @@ -115,6 +115,7 @@ def launch( launcher.el_cl_genesis_data, launcher.jwt_file, launcher.network, + launcher.networkid, image, service_name, existing_el_clients, @@ -163,6 +164,7 @@ def get_config( el_cl_genesis_data, jwt_file, network, + networkid, image, service_name, existing_el_clients, @@ -293,14 +295,17 @@ def get_config( # this is a repeated, we convert it into Starlark cmd.extend([param for param in extra_params]) - cmd_str = " ".join(cmd) + if network not in constants.PUBLIC_NETWORKS: + cmd.append("--networkid=" + networkid) + cmd_str = " ".join(cmd) subcommand_strs = [ init_datadir_cmd_str, cmd_str, ] command_str = " && ".join(subcommand_strs) else: + cmd_str = " ".join(cmd) command_str = cmd_str files = { @@ -338,6 +343,7 @@ def new_geth_launcher( el_cl_genesis_data, jwt_file, network, + networkid, final_genesis_timestamp, capella_fork_epoch, electra_fork_epoch=None, @@ -346,6 +352,7 @@ def new_geth_launcher( el_cl_genesis_data=el_cl_genesis_data, jwt_file=jwt_file, network=network, + networkid=networkid, final_genesis_timestamp=final_genesis_timestamp, capella_fork_epoch=capella_fork_epoch, electra_fork_epoch=electra_fork_epoch, diff --git a/src/package_io/constants.star b/src/package_io/constants.star index 422d46a70..2dd9209b9 100644 --- a/src/package_io/constants.star +++ b/src/package_io/constants.star @@ -59,6 +59,14 @@ PUBLIC_NETWORKS = ( "sepolia", "holesky", ) + +NETWORK_ID = { + "mainnet": 1, + "goerli": 5, + "sepolia": 11155111, + "holesky": 17000, +} + CHECKPOINT_SYNC_URL = { "mainnet": "https://beaconstate.info", "goerli": "https://checkpoint-sync.goerli.ethpandaops.io", diff --git a/src/participant_network.star b/src/participant_network.star index a95fc74b8..55960c6e4 100644 --- a/src/participant_network.star +++ b/src/participant_network.star @@ -83,6 +83,8 @@ def launch_participant_network( plan.print(json.indent(json.encode(validator_data))) + network_id = network_params.network_id + # We need to send the same genesis time to both the EL and the CL to ensure that timestamp based forking works as expected final_genesis_timestamp = get_final_genesis_timestamp( plan, @@ -161,6 +163,7 @@ def launch_participant_network( constants.GENESIS_VALIDATORS_ROOT[network_params.network], ) final_genesis_timestamp = constants.GENESIS_TIME[network_params.network] + network_id = constants.NETWORK_ID[network_params.network] validator_data = None else: # We are running a devnet @@ -175,6 +178,7 @@ def launch_participant_network( 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, @@ -182,14 +186,19 @@ def launch_participant_network( final_genesis_timestamp = shared_utils.read_genesis_timestamp_from_config( plan, el_cl_genesis_uuid ) + network_id = shared_utils.read_genesis_network_id_from_config( + plan, el_cl_genesis_uuid + ) validator_data = None + el_launchers = { constants.EL_CLIENT_TYPE.geth: { "launcher": geth.new_geth_launcher( el_cl_data, jwt_file, network_params.network, + network_id, final_genesis_timestamp, network_params.capella_fork_epoch, network_params.electra_fork_epoch, @@ -201,6 +210,7 @@ def launch_participant_network( el_cl_data, jwt_file, network_params.network, + network_id, final_genesis_timestamp, network_params.capella_fork_epoch, network_params.electra_fork_epoch, @@ -220,6 +230,7 @@ def launch_participant_network( el_cl_data, jwt_file, network_params.network, + network_id, ), "launch_method": erigon.launch, }, diff --git a/src/shared_utils/shared_utils.star b/src/shared_utils/shared_utils.star index f2017f17c..7a08a8f54 100644 --- a/src/shared_utils/shared_utils.star +++ b/src/shared_utils/shared_utils.star @@ -117,11 +117,24 @@ import yaml with open("/network-configs/config.yaml", "r") as f: yaml_data = yaml.safe_load(f) -# Get values from the YAML content min_genesis_time = int(yaml_data.get("MIN_GENESIS_TIME", 0)) genesis_delay = int(yaml_data.get("GENESIS_DELAY", 0)) +print(min_genesis_time + genesis_delay, end="") + """, + ) + return value.output -print(int(min_genesis_time + genesis_delay), end="") +def read_genesis_network_id_from_config(plan, filename): + value = plan.run_python( + files={constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: filename}, + wait=None, + packages=["PyYAML"], + run=""" +import yaml +with open("/network-configs/config.yaml", "r") as f: + yaml_data = yaml.safe_load(f) +network_id = int(yaml_data.get("DEPOSIT_NETWORK_ID", 0)) +print(network_id, end="") """, ) return value.output From f34e671d1f712c96cc218e01747ba5d75809f0b5 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Tue, 16 Jan 2024 12:51:53 +0100 Subject: [PATCH 2/2] fix lint --- src/el/erigon/erigon_launcher.star | 4 ++-- src/el/geth/geth_launcher.star | 6 ++---- src/participant_network.star | 1 - src/shared_utils/shared_utils.star | 1 + 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/el/erigon/erigon_launcher.star b/src/el/erigon/erigon_launcher.star index fa38e8b50..711476412 100644 --- a/src/el/erigon/erigon_launcher.star +++ b/src/el/erigon/erigon_launcher.star @@ -179,6 +179,7 @@ def get_config( "--chain={0}".format( network if network in constants.PUBLIC_NETWORKS else "dev" ), + "--networkid={0}".format(networkid), "--log.console.verbosity=" + verbosity_level, "--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER, "--port={0}".format(DISCOVERY_PORT_NUM), @@ -250,7 +251,6 @@ def get_config( cmd.extend([param for param in extra_params]) if network not in constants.PUBLIC_NETWORKS: - cmd.append("--networkid={0}".format(networkid)) command_arg = [init_datadir_cmd_str, " ".join(cmd)] command_arg_str = " && ".join(command_arg) else: @@ -279,7 +279,7 @@ def get_config( ) -def new_erigon_launcher(el_cl_genesis_data, jwt_file, network,networkid): +def new_erigon_launcher(el_cl_genesis_data, jwt_file, network, networkid): return struct( el_cl_genesis_data=el_cl_genesis_data, jwt_file=jwt_file, diff --git a/src/el/geth/geth_launcher.star b/src/el/geth/geth_launcher.star index 16ccf770d..df528ba9c 100644 --- a/src/el/geth/geth_launcher.star +++ b/src/el/geth/geth_launcher.star @@ -237,6 +237,7 @@ def get_config( "{0}".format( "--{}".format(network) if network in constants.PUBLIC_NETWORKS else "" ), + "--networkid={0}".format(networkid), "--verbosity=" + verbosity_level, "--datadir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER, "--http", @@ -295,17 +296,14 @@ def get_config( # this is a repeated, we convert it into Starlark cmd.extend([param for param in extra_params]) - + cmd_str = " ".join(cmd) if network not in constants.PUBLIC_NETWORKS: - cmd.append("--networkid=" + networkid) - cmd_str = " ".join(cmd) subcommand_strs = [ init_datadir_cmd_str, cmd_str, ] command_str = " && ".join(subcommand_strs) else: - cmd_str = " ".join(cmd) command_str = cmd_str files = { diff --git a/src/participant_network.star b/src/participant_network.star index 55960c6e4..b0ab404e4 100644 --- a/src/participant_network.star +++ b/src/participant_network.star @@ -191,7 +191,6 @@ def launch_participant_network( ) validator_data = None - el_launchers = { constants.EL_CLIENT_TYPE.geth: { "launcher": geth.new_geth_launcher( diff --git a/src/shared_utils/shared_utils.star b/src/shared_utils/shared_utils.star index 7a08a8f54..541913cae 100644 --- a/src/shared_utils/shared_utils.star +++ b/src/shared_utils/shared_utils.star @@ -124,6 +124,7 @@ print(min_genesis_time + genesis_delay, end="") ) return value.output + def read_genesis_network_id_from_config(plan, filename): value = plan.run_python( files={constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: filename},