From a972e464bb618a3be86fe1dcdc1b3dd08762a122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Thu, 27 Mar 2025 10:13:46 +0100 Subject: [PATCH 1/4] Move default_l2_setup and default_bootstrap_accounts --- etherlink/tezt/lib/evm_node.ml | 17 ++++++++++++++ etherlink/tezt/lib/evm_node.mli | 4 ++++ etherlink/tezt/lib/setup.ml | 39 ++++++++++----------------------- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/etherlink/tezt/lib/evm_node.ml b/etherlink/tezt/lib/evm_node.ml index a19bf6f5a7d4..f7760a45ad34 100644 --- a/etherlink/tezt/lib/evm_node.ml +++ b/etherlink/tezt/lib/evm_node.ml @@ -41,6 +41,23 @@ type l2_setup = { maximum_gas_per_transaction : int64 option; } +let default_bootstrap_accounts = + List.map + (fun account -> account.Eth_account.address) + (Array.to_list Eth_account.bootstrap_accounts) + +let default_l2_setup ~l2_chain_id = + { + l2_chain_id; + l2_chain_family = "EVM"; + world_state_path = Some "/evm/world_state"; + bootstrap_accounts = Some default_bootstrap_accounts; + sequencer_pool_address = None; + minimum_base_fee_per_gas = None; + da_fee_per_byte = None; + maximum_gas_per_transaction = None; + } + type mode = | Observer of { initial_kernel : string; diff --git a/etherlink/tezt/lib/evm_node.mli b/etherlink/tezt/lib/evm_node.mli index d8b6aa66b3a7..246cef3c80da 100644 --- a/etherlink/tezt/lib/evm_node.mli +++ b/etherlink/tezt/lib/evm_node.mli @@ -40,6 +40,10 @@ type l2_setup = { maximum_gas_per_transaction : int64 option; } +val default_bootstrap_accounts : string list + +val default_l2_setup : l2_chain_id:int -> l2_setup + type time_between_blocks = | Nothing (** Does not produce any block if not forced by the private RPC *) | Time_between_blocks of float diff --git a/etherlink/tezt/lib/setup.ml b/etherlink/tezt/lib/setup.ml index 8b3800bc7198..2aa5fcf24140 100644 --- a/etherlink/tezt/lib/setup.ml +++ b/etherlink/tezt/lib/setup.ml @@ -53,24 +53,6 @@ type sequencer_setup = { l2_chains : Evm_node.l2_setup list; } -let default_bootstrap_accounts = - List.map - (fun account -> account.Eth_account.address) - (Array.to_list Eth_account.bootstrap_accounts) - -let default_l2_setup ~l2_chain_id = - Evm_node. - { - l2_chain_id; - l2_chain_family = "EVM"; - world_state_path = Some "/evm/world_state"; - bootstrap_accounts = Some default_bootstrap_accounts; - sequencer_pool_address = None; - minimum_base_fee_per_gas = None; - da_fee_per_byte = None; - maximum_gas_per_transaction = None; - } - let multichain_setup_to_single ~(setup : multichain_sequencer_setup) = let observer = match setup.observers with [observer] -> observer | _ -> assert false @@ -260,11 +242,12 @@ let run_new_observer_node ?(finalized_view = false) ?(patch_config = Fun.id) let setup_kernel_singlechain ~l1_contracts ?max_delayed_inbox_blueprint_length ~mainnet_compat ?delayed_inbox_timeout ?delayed_inbox_min_levels - ?(bootstrap_accounts = default_bootstrap_accounts) ?sequencer_pool_address - ?da_fee_per_byte ?minimum_base_fee_per_gas ?maximum_allowed_ticks - ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds - ?enable_fa_bridge ?enable_fast_withdrawal ~enable_dal ?dal_slots - ?evm_version ~sequencer ~preimages_dir ~kernel () = + ?(bootstrap_accounts = Evm_node.default_bootstrap_accounts) + ?sequencer_pool_address ?da_fee_per_byte ?minimum_base_fee_per_gas + ?maximum_allowed_ticks ?maximum_gas_per_transaction + ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge + ?enable_fast_withdrawal ~enable_dal ?dal_slots ?evm_version ~sequencer + ~preimages_dir ~kernel () = let output_config = Temp.file "config.yaml" in let*! () = Evm_node.make_kernel_installer_config @@ -653,7 +636,7 @@ let setup_sequencer ?max_delayed_inbox_blueprint_length ?next_wasm_runtime ?max_blueprints_ahead ?max_blueprints_catchup ?catchup_cooldown ?delayed_inbox_timeout ?delayed_inbox_min_levels ?max_number_of_chunks ?commitment_period ?challenge_window - ?(bootstrap_accounts = default_bootstrap_accounts) ?sequencer + ?(bootstrap_accounts = Evm_node.default_bootstrap_accounts) ?sequencer ?sequencer_pool_address ?kernel ?da_fee ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge @@ -665,7 +648,7 @@ let setup_sequencer ?max_delayed_inbox_blueprint_length ?next_wasm_runtime let l2_chains = [ { - (default_l2_setup ~l2_chain_id:1) with + (Evm_node.default_l2_setup ~l2_chain_id:1) with sequencer_pool_address; bootstrap_accounts = Some bootstrap_accounts; da_fee_per_byte = da_fee; @@ -722,7 +705,7 @@ let register_multichain_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?time_between_blocks ?max_blueprints_lag ?max_blueprints_ahead ?max_blueprints_catchup ?catchup_cooldown ?delayed_inbox_timeout ?delayed_inbox_min_levels ?max_number_of_chunks - ?(bootstrap_accounts = default_bootstrap_accounts) ?sequencer + ?(bootstrap_accounts = Evm_node.default_bootstrap_accounts) ?sequencer ?sequencer_pool_address ~kernel ?da_fee ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge @@ -834,7 +817,7 @@ let register_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?time_between_blocks ?max_blueprints_lag ?max_blueprints_ahead ?max_blueprints_catchup ?catchup_cooldown ?delayed_inbox_timeout ?delayed_inbox_min_levels ?max_number_of_chunks - ?(bootstrap_accounts = default_bootstrap_accounts) ?sequencer + ?(bootstrap_accounts = Evm_node.default_bootstrap_accounts) ?sequencer ?sequencer_pool_address ~kernel ?da_fee ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge @@ -898,7 +881,7 @@ let register_test_for_kernels ~__FILE__ ?max_delayed_inbox_blueprint_length ?time_between_blocks ?max_blueprints_lag ?max_blueprints_ahead ?max_blueprints_catchup ?catchup_cooldown ?delayed_inbox_timeout ?delayed_inbox_min_levels ?max_number_of_chunks - ?(bootstrap_accounts = default_bootstrap_accounts) ?sequencer + ?(bootstrap_accounts = Evm_node.default_bootstrap_accounts) ?sequencer ?sequencer_pool_address ?(kernels = Kernel.all) ?da_fee ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds -- GitLab From ff3b1313a9e05e66ba3aaf4ef9a4a69e3bbbb9f5 Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Thu, 27 Mar 2025 10:51:32 +0100 Subject: [PATCH 2/4] Tezlink/Tezt: Define l2 setup list at test registration instead of hiding it in helpers --- etherlink/tezt/lib/setup.ml | 35 +++++++++++++++------------ etherlink/tezt/lib/setup.mli | 4 ++- etherlink/tezt/tests/evm_sequencer.ml | 19 +++++++++++---- 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/etherlink/tezt/lib/setup.ml b/etherlink/tezt/lib/setup.ml index 2aa5fcf24140..bf223bf62b63 100644 --- a/etherlink/tezt/lib/setup.ml +++ b/etherlink/tezt/lib/setup.ml @@ -713,7 +713,7 @@ let register_multichain_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?(threshold_encryption = false) ?(uses = uses) ?(additional_uses = []) ?rollup_history_mode ~enable_dal ?(dal_slots = if enable_dal then Some [0; 1; 2; 3] else None) - ~enable_multichain ~number_of_chains ?rpc_server ?websockets ?history_mode + ~enable_multichain ~l2_setups ?rpc_server ?websockets ?history_mode ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path body ~title ~tags protocols = let kernel_tag, kernel_use = Kernel.to_uses_and_tags kernel in @@ -731,15 +731,19 @@ let register_multichain_test ~__FILE__ ?max_delayed_inbox_blueprint_length | _, Latest -> Some Evm_node.Dream (* test with Dream for latest kernel *) in let l2_chains = - List.init number_of_chains (fun l2_chain_id -> - { - (default_l2_setup ~l2_chain_id) with - sequencer_pool_address; - da_fee_per_byte = da_fee; - minimum_base_fee_per_gas; - maximum_gas_per_transaction; - bootstrap_accounts = Some bootstrap_accounts; - }) + match l2_setups with + | None -> + [ + { + (Evm_node.default_l2_setup ~l2_chain_id:0) with + da_fee_per_byte = da_fee; + sequencer_pool_address; + minimum_base_fee_per_gas; + maximum_gas_per_transaction; + bootstrap_accounts = Some bootstrap_accounts; + }; + ] + | Some l2_chains -> l2_chains in let body protocol = let* sequencer_setup = @@ -824,8 +828,8 @@ let register_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?enable_fast_withdrawal ?commitment_period ?challenge_window ?threshold_encryption ?uses ?additional_uses ?rollup_history_mode ~enable_dal ?dal_slots ~enable_multichain ?rpc_server ?websockets - ?history_mode ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path body - ~title ~tags protocols = + ?history_mode ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path ?l2_setups + body ~title ~tags protocols = let body sequencer_setup = body (multichain_setup_to_single ~setup:sequencer_setup) in @@ -864,13 +868,13 @@ let register_test ~__FILE__ ?max_delayed_inbox_blueprint_length ~enable_dal ?dal_slots ~enable_multichain - ~number_of_chains:1 ?rpc_server ?websockets ?history_mode ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path + ~l2_setups body ~title ~tags @@ -888,8 +892,8 @@ let register_test_for_kernels ~__FILE__ ?max_delayed_inbox_blueprint_length ?enable_fa_bridge ?rollup_history_mode ?commitment_period ?challenge_window ?additional_uses ~threshold_encryption ~enable_dal ?dal_slots ~enable_multichain ?rpc_server ?websockets ?enable_fast_withdrawal - ?history_mode ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path ~title - ~tags body protocols = + ?history_mode ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path ?l2_setups + ~title ~tags body protocols = List.iter (fun kernel -> register_test @@ -932,6 +936,7 @@ let register_test_for_kernels ~__FILE__ ?max_delayed_inbox_blueprint_length ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path + ?l2_setups ~title ~tags body diff --git a/etherlink/tezt/lib/setup.mli b/etherlink/tezt/lib/setup.mli index 0def4162c53b..919a219a0b1f 100644 --- a/etherlink/tezt/lib/setup.mli +++ b/etherlink/tezt/lib/setup.mli @@ -118,6 +118,7 @@ val register_test : ?enable_tx_queue:bool -> ?spawn_rpc:int -> ?periodic_snapshot_path:string -> + ?l2_setups:Evm_node.l2_setup list -> (sequencer_setup -> Protocol.t -> unit Lwt.t) -> title:string -> tags:string list -> @@ -159,7 +160,7 @@ val register_multichain_test : enable_dal:bool -> ?dal_slots:int list option -> enable_multichain:bool -> - number_of_chains:int -> + l2_setups:Evm_node.l2_setup list option -> ?rpc_server:Evm_node.rpc_server -> ?websockets:bool -> ?history_mode:Evm_node.history_mode -> @@ -215,6 +216,7 @@ val register_test_for_kernels : ?enable_tx_queue:bool -> ?spawn_rpc:int -> ?periodic_snapshot_path:string -> + ?l2_setups:Evm_node.l2_setup list -> title:string -> tags:string list -> (sequencer_setup -> Protocol.t -> unit Lwt.t) -> diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index e153b66cd04d..e904ed003ffa 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -253,7 +253,7 @@ let register_all ?max_delayed_inbox_blueprint_length ?sequencer_rpc_port ?(use_threshold_encryption = default_threshold_encryption_registration) ?(use_dal = default_dal_registration) ?(use_multichain = default_multichain_registration) ?enable_tx_queue - ?spawn_rpc ?periodic_snapshot_path ~title ~tags body protocols = + ?spawn_rpc ?periodic_snapshot_path ?l2_setups ~title ~tags body protocols = let dal_cases = match use_dal with | Register_both {extra_tags_with; extra_tags_without} -> @@ -329,6 +329,7 @@ let register_all ?max_delayed_inbox_blueprint_length ?sequencer_rpc_port ?enable_tx_queue ?spawn_rpc ?periodic_snapshot_path + ?l2_setups ~title ~tags:(te_tags @ dal_tags @ multichain_tags @ tags) body @@ -347,9 +348,10 @@ let register_multichain_all ?max_delayed_inbox_blueprint_length ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ?rollup_history_mode ?commitment_period ?challenge_window ?additional_uses ?rpc_server - ?websockets ?enable_fast_withdrawal ?history_mode ~number_of_chains + ?websockets ?enable_fast_withdrawal ?history_mode ?(use_threshold_encryption = default_threshold_encryption_registration) - ?(use_dal = default_dal_registration) ~title ~tags body protocols = + ?(use_dal = default_dal_registration) ~l2_setups ~title ~tags body protocols + = let dal_cases = match use_dal with | Register_both {extra_tags_with; extra_tags_without} -> @@ -405,10 +407,10 @@ let register_multichain_all ?max_delayed_inbox_blueprint_length ?rollup_history_mode ~enable_dal ~enable_multichain:true + ~l2_setups ~title ~tags:(te_tags @ dal_tags @ tags) ~kernel:Kernel.Latest - ~number_of_chains body protocols) dal_cases) @@ -12656,7 +12658,14 @@ let () = test_multichain_feature_flag protocols ; test_make_l2_kernel_installer_config "EVM" protocols ; test_make_l2_kernel_installer_config "Michelson" protocols ; - test_multichain_produceBlock ~number_of_chains:2 protocols ; + test_multichain_produceBlock + ~l2_setups: + (Some + [ + Evm_node.default_l2_setup ~l2_chain_id:0; + Evm_node.default_l2_setup ~l2_chain_id:1; + ]) + protocols ; test_fast_withdrawal_feature_flag protocols ; test_deposit_and_fast_withdraw protocols ; test_fast_withdraw_feature_flag_deactivated protocols ; -- GitLab From 3f387ae244efdf15895012952aad21ef04310208 Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Wed, 26 Mar 2025 10:24:30 +0100 Subject: [PATCH 3/4] Tezlink/tests: rename current_level and only register it for alpha --- etherlink/tezt/tests/evm_sequencer.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index e904ed003ffa..3c15c5d79d71 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -436,7 +436,7 @@ let register_upgrade_all ~title ~tags ~genesis_timestamp protocols) kernels -let test_current_level = +let test_tezlink_current_level = let chain_family = "Michelson" in Protocol.register_test ~__FILE__ @@ -12740,6 +12740,6 @@ let () = test_deposit_event [Alpha] ; test_withdrawal_events [Alpha] ; test_fa_deposit_and_withdrawals_events [Alpha] ; - test_current_level protocols ; test_block_producer_validation [Alpha] ; - test_tezlink_version protocols + test_tezlink_current_level [Alpha] ; + test_tezlink_version [Alpha] -- GitLab From ff14857714e39914f8b0b80e6963a9831b591ebc Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Wed, 26 Mar 2025 15:26:32 +0100 Subject: [PATCH 4/4] Tezlink/Tezt: Introduce register_tezlink_test --- etherlink/tezt/tests/evm_sequencer.ml | 274 +++----------------------- 1 file changed, 22 insertions(+), 252 deletions(-) diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index 3c15c5d79d71..c1a0973b8e14 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -436,134 +436,27 @@ let register_upgrade_all ~title ~tags ~genesis_timestamp protocols) kernels -let test_tezlink_current_level = - let chain_family = "Michelson" in - Protocol.register_test - ~__FILE__ - ~title:"Test of the current_level rpc" - ~tags:["evm"; "tezlink"; "rpc"; "current_level"] - ~uses:(fun _protocol -> +let register_tezlink_test ~title ~tags scenario protocols = + register_all + ~title + ~tags:("tezlink" :: tags) + ~l2_setups: [ - Constant.octez_evm_node; - Constant.octez_smart_rollup_node; - Constant.WASM.evm_kernel; - Constant.smart_rollup_installer; - ]) - @@ fun protocol -> - (* Setup: TODO: refactor once generic setup !17201 is merged *) - let* node, client = setup_l1 protocol in - - (* Random chain id, let's not take one that could have been set by default (1, 42, 1337) *) - let chain_id_1 = 2988 in - - (* Configuration files for the two l2 chains and for the rollup *) - let l2_config_1 = Temp.file "l2-chain-1-config.yaml" in - let rollup_config = Temp.file "rollup-chain-config.yaml" in - - (* Argument for the l2 chain, a bootstrap account and a new world_state_path *) - let world_state_path = "/test/chain/" in - let address = Eth_account.bootstrap_accounts.(0).address in - let*! () = - Evm_node.make_l2_kernel_installer_config - ~chain_id:chain_id_1 - ~chain_family - ~world_state_path - ~bootstrap_accounts:[address] - ~output:l2_config_1 - () - in - let*! () = - Evm_node.make_kernel_installer_config - (* No need for a real sequencer governance *) - ~sequencer_governance:"KT1" - ~l2_chain_ids:[chain_id_1] - ~output:rollup_config - (* we enable the multichain feature flag in the kernel *) - ~enable_multichain:true - () - in - - (* Setup the rollup (Origination and Start a rollup node) *) - let sc_rollup_node = - Sc_rollup_node.create - ~default_operator:Constant.bootstrap1.public_key_hash - Batcher - node - ~base_dir:(Client.base_dir client) - in - - let preimages_dir = Sc_rollup_node.data_dir sc_rollup_node // "wasm_2_0_0" in - let kernel = Constant.WASM.evm_kernel in - let* {output = kernel; _} = - prepare_installer_kernel_with_multiple_setup_file - ~output:(Temp.file "kernel.hex") - ~preimages_dir - ~configs:[rollup_config; l2_config_1] - (Uses.path kernel) - in - let* sc_rollup_address = - originate_sc_rollup - ~keys:[] - ~kind:"wasm_2_0_0" - ~boot_sector:("file:" ^ kernel) - ~parameters_ty:Test_helpers.evm_type - client - in - let* () = - Sc_rollup_node.run sc_rollup_node sc_rollup_address [Log_kernel_debug] - in - - (* Setup a sequencer with a private rpc port to verify the durable storage. *) - let sequencer = - Evm_node.Sequencer - { - initial_kernel = kernel; - preimage_dir = Some preimages_dir; - private_rpc_port = Some (Port.fresh ()); - time_between_blocks = Some Nothing; - sequencer = Constant.bootstrap1.alias; - genesis_timestamp = None; - max_blueprints_lag = None; - max_blueprints_ahead = None; - max_blueprints_catchup = None; - catchup_cooldown = None; - max_number_of_chunks = None; - wallet_dir = Some (Client.base_dir client); - tx_pool_timeout_limit = None; - tx_pool_addr_limit = None; - tx_pool_tx_per_addr_limit = None; - dal_slots = None; - } - in - let rpc_port = Port.fresh () in - (* we activate the experimental feature in the sequencer necessary to have the - tezlink rpc server - - l2 chains - - spawn rpc *) - let patch_config = - JSON.update "experimental_features" @@ fun json -> - JSON.( - put - ( "l2_chains", - JSON.annotate ~origin:"evm_node.config_patch" - @@ `A [`O [("chain_id", `String (string_of_int chain_id_1))]] ) - json) - |> JSON.( - put - ( "spawn_rpc", - JSON.annotate ~origin:"evm_node.config_patch" - @@ `O [("protected_port", `Float (float_of_int rpc_port))] )) - in - let* sequencer = - Evm_node.init - ~mode:sequencer - ~patch_config - ~spawn_rpc:rpc_port - (Sc_rollup_node.endpoint sc_rollup_node) - in - - (* end of setup *) + { + (Evm_node.default_l2_setup ~l2_chain_id:12) with + l2_chain_family = "Michelson"; + }; + ] + ~use_multichain:Register_with_feature + ~rpc_server:Evm_node.Resto + scenario + protocols +let test_tezlink_current_level = + register_tezlink_test + ~title:"Test of the current_level rpc" + ~tags:["evm"; "rpc"; "current_level"] + @@ fun {sequencer; _} _protocol -> (* call the current_level rpc and parse the result *) let rpc_current_level ?offset block = let offset_str = @@ -636,133 +529,10 @@ let test_tezlink_current_level = unit let test_tezlink_version = - let chain_family = "Michelson" in - Protocol.register_test - ~__FILE__ + register_tezlink_test ~title:"Test of the version rpc" - ~tags:["evm"; "tezlink"; "rpc"; "version"] - ~uses:(fun _protocol -> - [ - Constant.octez_evm_node; - Constant.octez_smart_rollup_node; - Constant.WASM.evm_kernel; - Constant.smart_rollup_installer; - ]) - @@ fun protocol -> - (* Setup: TODO: refactor once generic setup !17201 is merged *) - let* node, client = setup_l1 protocol in - - (* Random chain id, let's not take one that could have been set by default (1, 42, 1337) *) - let chain_id_1 = 2988 in - - (* Configuration files for the two l2 chains and for the rollup *) - let l2_config_1 = Temp.file "l2-chain-1-config.yaml" in - let rollup_config = Temp.file "rollup-chain-config.yaml" in - - (* Argument for the l2 chain, a bootstrap account and a new world_state_path *) - let world_state_path = "/test/chain/" in - let address = Eth_account.bootstrap_accounts.(0).address in - let*! () = - Evm_node.make_l2_kernel_installer_config - ~chain_id:chain_id_1 - ~chain_family - ~world_state_path - ~bootstrap_accounts:[address] - ~output:l2_config_1 - () - in - let*! () = - Evm_node.make_kernel_installer_config - (* No need for a real sequencer governance *) - ~sequencer_governance:"KT1" - ~l2_chain_ids:[chain_id_1] - ~output:rollup_config - (* we enable the multichain feature flag in the kernel *) - ~enable_multichain:true - () - in - - (* Setup the rollup (Origination and Start a rollup node) *) - let sc_rollup_node = - Sc_rollup_node.create - ~default_operator:Constant.bootstrap1.public_key_hash - Batcher - node - ~base_dir:(Client.base_dir client) - in - - let preimages_dir = Sc_rollup_node.data_dir sc_rollup_node // "wasm_2_0_0" in - let kernel = Constant.WASM.evm_kernel in - let* {output = kernel; _} = - prepare_installer_kernel_with_multiple_setup_file - ~output:(Temp.file "kernel.hex") - ~preimages_dir - ~configs:[rollup_config; l2_config_1] - (Uses.path kernel) - in - let* sc_rollup_address = - originate_sc_rollup - ~keys:[] - ~kind:"wasm_2_0_0" - ~boot_sector:("file:" ^ kernel) - ~parameters_ty:Test_helpers.evm_type - client - in - let* () = - Sc_rollup_node.run sc_rollup_node sc_rollup_address [Log_kernel_debug] - in - - (* Setup a sequencer with a private rpc port to verify the durable storage. *) - let sequencer = - Evm_node.Sequencer - { - initial_kernel = kernel; - preimage_dir = Some preimages_dir; - private_rpc_port = Some (Port.fresh ()); - time_between_blocks = Some Nothing; - sequencer = Constant.bootstrap1.alias; - genesis_timestamp = None; - max_blueprints_lag = None; - max_blueprints_ahead = None; - max_blueprints_catchup = None; - catchup_cooldown = None; - max_number_of_chunks = None; - wallet_dir = Some (Client.base_dir client); - tx_pool_timeout_limit = None; - tx_pool_addr_limit = None; - tx_pool_tx_per_addr_limit = None; - dal_slots = None; - } - in - let rpc_port = Port.fresh () in - (* we activate the experimental feature in the sequencer necessary to have the - tezlink rpc server - - l2 chains - - spawn rpc *) - let patch_config = - JSON.update "experimental_features" @@ fun json -> - JSON.( - put - ( "l2_chains", - JSON.annotate ~origin:"evm_node.config_patch" - @@ `A [`O [("chain_id", `String (string_of_int chain_id_1))]] ) - json) - |> JSON.( - put - ( "spawn_rpc", - JSON.annotate ~origin:"evm_node.config_patch" - @@ `O [("protected_port", `Float (float_of_int rpc_port))] )) - in - let* sequencer = - Evm_node.init - ~mode:sequencer - ~patch_config - ~spawn_rpc:rpc_port - (Sc_rollup_node.endpoint sc_rollup_node) - in - - (* end of setup *) - + ~tags:["evm"; "rpc"; "version"] + @@ fun {sequencer; _} _protocol -> (* call the version rpc and parse the result *) let rpc_version () = let path = "/tezlink/version" in -- GitLab