diff --git a/README.md b/README.md index 5ae2f05..c8038df 100644 --- a/README.md +++ b/README.md @@ -237,9 +237,13 @@ optimism_package: # Defaults to True fund_dev_accounts: true + # Default batcher configuration + batcher_params: # The Docker image that should be used for the batcher; leave blank to use the default op-batcher image - batcher_image: "" + image: "" + # A list of optional extra params that will be passed to the batcher container for modifying its behaviour + extra_params: [] # Additional services to run alongside the network # Defaults to [] diff --git a/network_params.yaml b/network_params.yaml index e69b754..5aed7bd 100644 --- a/network_params.yaml +++ b/network_params.yaml @@ -38,7 +38,9 @@ optimism_package: holocene_time_offset: "" interop_time_offset: "" fund_dev_accounts: true - batcher_image: "" + batcher_params: + image: "" + extra_params: [] additional_services: [] op_contract_deployer_params: image: mslipper/op-deployer:latest diff --git a/src/batcher/op-batcher/op_batcher_launcher.star b/src/batcher/op-batcher/op_batcher_launcher.star index 112205a..e20d065 100644 --- a/src/batcher/op-batcher/op_batcher_launcher.star +++ b/src/batcher/op-batcher/op_batcher_launcher.star @@ -40,6 +40,7 @@ def launch( cl_context, l1_config_env_vars, gs_batcher_private_key, + batcher_params, ): batcher_service_name = "{0}".format(service_name) @@ -51,6 +52,7 @@ def launch( cl_context, l1_config_env_vars, gs_batcher_private_key, + batcher_params, ) batcher_service = plan.add_service(service_name, config) @@ -71,6 +73,7 @@ def get_batcher_config( cl_context, l1_config_env_vars, gs_batcher_private_key, + batcher_params, ): cmd = [ "op-batcher", @@ -90,6 +93,8 @@ def get_batcher_config( "--data-availability-type=blobs", ] + cmd += batcher_params.extra_params + ports = get_used_ports() return ServiceConfig( image=image, diff --git a/src/cl/hildr/hildr_launcher.star b/src/cl/hildr/hildr_launcher.star index 0cd2d9f..266684f 100644 --- a/src/cl/hildr/hildr_launcher.star +++ b/src/cl/hildr/hildr_launcher.star @@ -196,6 +196,8 @@ def get_beacon_config( ) ) + cmd += participant.cl_extra_params + files = { ethereum_package_constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.deployment_output, ethereum_package_constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file, diff --git a/src/cl/op-node/op_node_launcher.star b/src/cl/op-node/op_node_launcher.star index 9e1477b..8376dbc 100644 --- a/src/cl/op-node/op_node_launcher.star +++ b/src/cl/op-node/op_node_launcher.star @@ -205,6 +205,8 @@ def get_beacon_config( ) ) + cmd += participant.cl_extra_params + files = { ethereum_package_constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: launcher.deployment_output, ethereum_package_constants.JWT_MOUNTPOINT_ON_CLIENTS: launcher.jwt_file, diff --git a/src/l2.star b/src/l2.star index d683be8..f3ff471 100644 --- a/src/l2.star +++ b/src/l2.star @@ -22,6 +22,7 @@ def launch_l2( persistent, ): network_params = l2_args.network_params + batcher_params = l2_args.batcher_params plan.print("Deploying L2 with name {0}".format(network_params.name)) jwt_file = plan.upload_files( @@ -34,6 +35,7 @@ def launch_l2( l2_args.participants, jwt_file, network_params, + batcher_params, deployment_output, l1_config, l2_services_suffix, diff --git a/src/package_io/input_parser.star b/src/package_io/input_parser.star index 1577d23..b3dc04a 100644 --- a/src/package_io/input_parser.star +++ b/src/package_io/input_parser.star @@ -25,11 +25,6 @@ DEFAULT_PROPOSER_IMAGES = { "op-proposer": "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-proposer:develop", } -ATTR_TO_BE_SKIPPED_AT_ROOT = ( - "network_params", - "participants", -) - DEFAULT_ADDITIONAL_SERVICES = [] @@ -87,7 +82,10 @@ def input_parser(plan, input_args): ], interop_time_offset=result["network_params"]["interop_time_offset"], fund_dev_accounts=result["network_params"]["fund_dev_accounts"], - batcher_image=result["network_params"]["batcher_image"], + ), + batcher_params=struct( + image=result["batcher_params"]["image"], + extra_params=result["batcher_params"]["extra_params"], ), additional_services=result["additional_services"], ) @@ -114,6 +112,9 @@ def parse_network_params(plan, input_args): network_params = default_network_params() network_params.update(chain.get("network_params", {})) + batcher_params = default_batcher_params() + batcher_params.update(chain.get("batcher_params", {})) + network_name = network_params["name"] network_id = network_params["network_id"] @@ -157,6 +158,7 @@ def parse_network_params(plan, input_args): result = { "participants": participants, "network_params": network_params, + "batcher_params": batcher_params, "additional_services": chain.get( "additional_services", DEFAULT_ADDITIONAL_SERVICES ), @@ -189,6 +191,7 @@ def default_chains(): { "participants": [default_participant()], "network_params": default_network_params(), + "batcher_params": default_batcher_params(), "additional_services": DEFAULT_ADDITIONAL_SERVICES, } ] @@ -205,7 +208,12 @@ def default_network_params(): "holocene_time_offset": None, "interop_time_offset": None, "fund_dev_accounts": True, - "batcher_image": "", + } + +def default_batcher_params(): + return { + "image": "", + "extra_params": [], } diff --git a/src/package_io/sanity_check.star b/src/package_io/sanity_check.star index 5878577..33fedb1 100644 --- a/src/package_io/sanity_check.star +++ b/src/package_io/sanity_check.star @@ -41,8 +41,8 @@ SUBCATEGORY_PARAMS = { "holocene_time_offset", "interop_time_offset", "fund_dev_accounts", - "batcher_image", ], + "batcher_params": ["image", "extra_params"], } OP_CONTRACT_DEPLOYER_PARAMS = [ diff --git a/src/participant_network.star b/src/participant_network.star index 497013b..087ad4d 100644 --- a/src/participant_network.star +++ b/src/participant_network.star @@ -11,6 +11,7 @@ def launch_participant_network( participants, jwt_file, network_params, + batcher_params, deployment_output, l1_config_env_vars, l2_services_suffix, @@ -66,7 +67,7 @@ def launch_participant_network( ".privateKey", ) - op_batcher_image = network_params.batcher_image if network_params.batcher_image != "" else input_parser.DEFAULT_BATCHER_IMAGES["op-batcher"] + op_batcher_image = batcher_params.image if batcher_params.image != "" else input_parser.DEFAULT_BATCHER_IMAGES["op-batcher"] op_batcher_launcher.launch( plan, @@ -76,6 +77,7 @@ def launch_participant_network( all_cl_contexts[0], l1_config_env_vars, batcher_key, + batcher_params, ) # The OP Stack don't run the proposer anymore, it has been replaced with the challenger