From a89427180efb7bc99529ba9b395a0fc2e3539da2 Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Mon, 27 Jan 2025 13:31:59 +0100 Subject: [PATCH 1/5] EVM node: add multichain configuration --- etherlink/bin_node/lib_dev/kernel_config.ml | 5 +++-- etherlink/bin_node/lib_dev/kernel_config.mli | 1 + etherlink/bin_node/main.ml | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/etherlink/bin_node/lib_dev/kernel_config.ml b/etherlink/bin_node/lib_dev/kernel_config.ml index aecf5c942e88..7708e28f7a73 100644 --- a/etherlink/bin_node/lib_dev/kernel_config.ml +++ b/etherlink/bin_node/lib_dev/kernel_config.ml @@ -28,8 +28,8 @@ let make ~mainnet_compat ~boostrap_balance ?bootstrap_accounts ?kernel_root_hash ?da_fee_per_byte ?delayed_inbox_timeout ?delayed_inbox_min_levels ?sequencer_pool_address ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?remove_whitelist ?enable_fa_bridge - ?enable_dal ?dal_slots ?set_account_code ?max_delayed_inbox_blueprint_length - ~output () = + ?enable_dal ?dal_slots ?enable_multichain ?set_account_code + ?max_delayed_inbox_blueprint_length ~output () = let bootstrap_accounts = match bootstrap_accounts with | None -> [] @@ -104,6 +104,7 @@ let make ~mainnet_compat ~boostrap_balance ?bootstrap_accounts ?kernel_root_hash @ make_instr ~path_prefix:"/evm/feature_flags/" enable_fa_bridge @ make_instr ~path_prefix:"/evm/feature_flags/" enable_dal @ make_instr ~convert:decimal_list_to_bytes dal_slots + @ make_instr ~path_prefix:"/evm/feature_flags/" enable_multichain @ make_instr ~convert:(fun s -> Ethereum_types.u16_to_bytes (int_of_string s)) max_delayed_inbox_blueprint_length diff --git a/etherlink/bin_node/lib_dev/kernel_config.mli b/etherlink/bin_node/lib_dev/kernel_config.mli index d3875a08f1b8..503151a4a3da 100644 --- a/etherlink/bin_node/lib_dev/kernel_config.mli +++ b/etherlink/bin_node/lib_dev/kernel_config.mli @@ -34,6 +34,7 @@ val make : ?enable_fa_bridge:string * string -> ?enable_dal:string * string -> ?dal_slots:string * string -> + ?enable_multichain:string * string -> ?set_account_code:(string * string) list -> ?max_delayed_inbox_blueprint_length:string * string -> output:string -> diff --git a/etherlink/bin_node/main.ml b/etherlink/bin_node/main.ml index 7bf7bf19c8f5..423e270694b6 100644 --- a/etherlink/bin_node/main.ml +++ b/etherlink/bin_node/main.ml @@ -1868,7 +1868,8 @@ let make_kernel_config_command = (config_key_flag ~name:"enable_fa_bridge") (config_key_flag ~name:"enable_dal") (config_key_arg ~name:"dal_slots" ~placeholder:"0,1,4,6,...")) - (args1 + (args2 + (config_key_flag ~name:"enable_multichain") (config_key_arg ~name:"max_delayed_inbox_blueprint_length" ~placeholder:"1000"))) @@ -1903,7 +1904,7 @@ let make_kernel_config_command = enable_fa_bridge, enable_dal, dal_slots ), - max_delayed_inbox_blueprint_length ) + (enable_multichain, max_delayed_inbox_blueprint_length) ) output () -> Evm_node_lib_dev.Kernel_config.make @@ -1931,6 +1932,7 @@ let make_kernel_config_command = ?enable_fa_bridge ?enable_dal ?dal_slots + ?enable_multichain ?set_account_code ?max_delayed_inbox_blueprint_length ~output -- GitLab From 6aa86ab8f526184cc014f0628fc516e92a06bc17 Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Mon, 27 Jan 2025 14:14:43 +0100 Subject: [PATCH 2/5] Etherlink/Tests: multichain_flag to tezt --- etherlink/tezt/lib/evm_node.ml | 3 +- etherlink/tezt/lib/evm_node.mli | 1 + etherlink/tezt/lib/setup.ml | 19 +++-- etherlink/tezt/lib/setup.mli | 4 + etherlink/tezt/tests/dal_sequencer.ml | 1 + etherlink/tezt/tests/eth_call.ml | 1 + etherlink/tezt/tests/evm_rollup.ml | 34 ++++++--- etherlink/tezt/tests/evm_sequencer.ml | 101 ++++++++++++++++---------- 8 files changed, 107 insertions(+), 57 deletions(-) diff --git a/etherlink/tezt/lib/evm_node.ml b/etherlink/tezt/lib/evm_node.ml index a422068662cf..c2f8af6bc3c6 100644 --- a/etherlink/tezt/lib/evm_node.ml +++ b/etherlink/tezt/lib/evm_node.ml @@ -1585,7 +1585,7 @@ let make_kernel_installer_config ?max_delayed_inbox_blueprint_length ?maximum_gas_per_transaction ?(max_blueprint_lookahead_in_seconds = ten_years_in_seconds) ?(set_account_code = []) ?(enable_fa_bridge = false) ?(enable_dal = false) - ?dal_slots ~output () = + ?dal_slots ?(enable_multichain = false) ~output () = let set_account_code = List.flatten @@ List.map @@ -1644,6 +1644,7 @@ let make_kernel_installer_config ?max_delayed_inbox_blueprint_length Int64.to_string max_blueprint_lookahead_in_seconds; ] @ Cli_arg.optional_switch "enable-fa-bridge" enable_fa_bridge + @ Cli_arg.optional_switch "enable-multichain" enable_multichain @ Cli_arg.optional_switch "enable-dal" enable_dal @ Cli_arg.optional_arg "dal-slots" diff --git a/etherlink/tezt/lib/evm_node.mli b/etherlink/tezt/lib/evm_node.mli index 47dcd6da1524..84ca773bc89c 100644 --- a/etherlink/tezt/lib/evm_node.mli +++ b/etherlink/tezt/lib/evm_node.mli @@ -574,6 +574,7 @@ val make_kernel_installer_config : ?enable_fa_bridge:bool -> ?enable_dal:bool -> ?dal_slots:int list -> + ?enable_multichain:bool -> output:string -> unit -> (Process.t, unit) Runnable.t diff --git a/etherlink/tezt/lib/setup.ml b/etherlink/tezt/lib/setup.ml index ee8a5e1f3b1d..a7f8a037952a 100644 --- a/etherlink/tezt/lib/setup.ml +++ b/etherlink/tezt/lib/setup.ml @@ -31,6 +31,7 @@ type sequencer_setup = { boot_sector : string; kernel : Uses.t; enable_dal : bool; + enable_multichain : bool; } let uses _protocol = @@ -198,7 +199,7 @@ let setup_sequencer ?max_delayed_inbox_blueprint_length ?next_wasm_runtime ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ?(threshold_encryption = false) ?(drop_duplicate_when_injection = true) ?(blueprints_publisher_order_enabled = true) ?history_mode ~enable_dal - ?dal_slots ?rpc_server ?websockets protocol = + ?dal_slots ~enable_multichain ?rpc_server ?websockets protocol = let* node, client = setup_l1 ?commitment_period @@ -251,6 +252,7 @@ let setup_sequencer ?max_delayed_inbox_blueprint_length ?next_wasm_runtime ?maximum_gas_per_transaction ~enable_dal ?dal_slots + ~enable_multichain ?max_blueprint_lookahead_in_seconds ~bootstrap_accounts ~output:output_config @@ -368,6 +370,7 @@ let setup_sequencer ?max_delayed_inbox_blueprint_length ?next_wasm_runtime boot_sector = output; kernel; enable_dal; + enable_multichain; } (* Register a single variant of a test but for all protocols. *) @@ -381,8 +384,8 @@ let register_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ?commitment_period ?challenge_window ?(threshold_encryption = false) ?(uses = uses) ?(additional_uses = []) ?history_mode ~enable_dal - ?(dal_slots = if enable_dal then Some [0; 1; 2; 3] else None) ?rpc_server - ?websockets body ~title ~tags protocols = + ?(dal_slots = if enable_dal then Some [0; 1; 2; 3] else None) + ~enable_multichain ?rpc_server ?websockets body ~title ~tags protocols = let kernel_tag, kernel_use = Kernel.to_uses_and_tags kernel in let tags = kernel_tag :: tags in let additional_uses = @@ -431,6 +434,7 @@ let register_test ~__FILE__ ?max_delayed_inbox_blueprint_length ?websockets ~enable_dal ?dal_slots + ~enable_multichain ?rpc_server protocol in @@ -442,15 +446,17 @@ let register_test ~__FILE__ ?max_delayed_inbox_blueprint_length (the DAL node) runs and it loads the full DAL SRS which takes non-negligible memory. *) @ (if enable_dal then ["dal"; Tag.memory_3k] else []) + @ (if enable_multichain then ["multichain_enabled"] else []) @ tags in let title = sf - "%s (%s, %s, %s)" + "%s (%s, %s, %s, %s)" title (if threshold_encryption then "te_sequencer" else "sequencer") kernel_tag (if enable_dal then "with dal" else "without dal") + (if enable_multichain then "multichain" else "single chain") in (* Only register DAL tests for supporting kernels *) if (not enable_dal) || Kernel.supports_dal kernel then @@ -472,8 +478,8 @@ let register_test_for_kernels ~__FILE__ ?max_delayed_inbox_blueprint_length ?minimum_base_fee_per_gas ?preimages_dir ?maximum_allowed_ticks ?maximum_gas_per_transaction ?max_blueprint_lookahead_in_seconds ?enable_fa_bridge ?history_mode ?commitment_period ?challenge_window - ?additional_uses ~threshold_encryption ~enable_dal ?dal_slots ?rpc_server - ?websockets ~title ~tags body protocols = + ?additional_uses ~threshold_encryption ~enable_dal ?dal_slots + ~enable_multichain ?rpc_server ?websockets ~title ~tags body protocols = List.iter (fun kernel -> register_test @@ -510,6 +516,7 @@ let register_test_for_kernels ~__FILE__ ?max_delayed_inbox_blueprint_length ?history_mode ~enable_dal ?dal_slots + ~enable_multichain ~title ~tags body diff --git a/etherlink/tezt/lib/setup.mli b/etherlink/tezt/lib/setup.mli index fc51eaa538f5..32bce34a195e 100644 --- a/etherlink/tezt/lib/setup.mli +++ b/etherlink/tezt/lib/setup.mli @@ -28,6 +28,7 @@ type sequencer_setup = { boot_sector : string; kernel : Uses.t; enable_dal : bool; + enable_multichain : bool; } (** [uses protocol] returns the list of dependencies for the tests. *) @@ -88,6 +89,7 @@ val register_test : ?history_mode:Sc_rollup_node.history_mode -> enable_dal:bool -> ?dal_slots:int list option -> + enable_multichain:bool -> ?rpc_server:Evm_node.rpc_server -> ?websockets:bool -> (sequencer_setup -> Protocol.t -> unit Lwt.t) -> @@ -131,6 +133,7 @@ val register_test_for_kernels : threshold_encryption:bool -> enable_dal:bool -> ?dal_slots:int list option -> + enable_multichain:bool -> ?rpc_server:Evm_node.rpc_server -> ?websockets:bool -> title:string -> @@ -173,6 +176,7 @@ val setup_sequencer : ?history_mode:Sc_rollup_node.history_mode -> enable_dal:bool -> ?dal_slots:int list -> + enable_multichain:bool -> ?rpc_server:Evm_node.rpc_server -> ?websockets:bool -> Protocol.t -> diff --git a/etherlink/tezt/tests/dal_sequencer.ml b/etherlink/tezt/tests/dal_sequencer.ml index a90489d2b922..60894c8bc588 100644 --- a/etherlink/tezt/tests/dal_sequencer.ml +++ b/etherlink/tezt/tests/dal_sequencer.ml @@ -27,6 +27,7 @@ let register_test = register_test_for_kernels ~__FILE__ ~enable_dal:true + ~enable_multichain:false ~threshold_encryption:false let count_event ?(get_count_from_event = fun _event -> 1) sequencer event diff --git a/etherlink/tezt/tests/eth_call.ml b/etherlink/tezt/tests/eth_call.ml index fa7955aa8808..1da71e8d559e 100644 --- a/etherlink/tezt/tests/eth_call.ml +++ b/etherlink/tezt/tests/eth_call.ml @@ -35,6 +35,7 @@ let register ?genesis_timestamp ?bootstrap_accounts ?(kernels = Kernel.all) ?additional_uses ?history_mode ~enable_dal:false + ~enable_multichain:false ~threshold_encryption:false ~title ~tags diff --git a/etherlink/tezt/tests/evm_rollup.ml b/etherlink/tezt/tests/evm_rollup.ml index 6cbdba3a936b..f227a8a93bc3 100644 --- a/etherlink/tezt/tests/evm_rollup.ml +++ b/etherlink/tezt/tests/evm_rollup.ml @@ -309,7 +309,8 @@ let setup_evm_kernel ?additional_config ?(setup_kernel_root_hash = true) ?tx_pool_timeout_limit ?tx_pool_addr_limit ?tx_pool_tx_per_addr_limit ?max_number_of_chunks ?(setup_mode = Setup_proxy) ?(force_install_kernel = true) ?whitelist ?maximum_allowed_ticks - ?restricted_rpcs ?(enable_dal = false) ?dal_slots ?websockets protocol = + ?restricted_rpcs ?(enable_dal = false) ?dal_slots + ?(enable_multichain = false) ?websockets protocol = let _, kernel_installee = Kernel.to_uses_and_tags kernel in let* node, client = setup_l1 ?commitment_period ?challenge_window ?timestamp protocol @@ -382,6 +383,7 @@ let setup_evm_kernel ?additional_config ?(setup_kernel_root_hash = true) ?maximum_allowed_ticks ~output:output_config ~enable_dal + ~enable_multichain ?dal_slots () in @@ -519,8 +521,8 @@ let register_test ~title ~tags ?(kernels = Kernel.all) ?additional_config ?admin ?(additional_uses = []) ?commitment_period ?challenge_window ?bootstrap_accounts ?whitelist ?da_fee_per_byte ?minimum_base_fee_per_gas ?rollup_operator_key ?maximum_allowed_ticks ?restricted_rpcs ~setup_mode - ~enable_dal ?(dal_slots = if enable_dal then Some [4] else None) ?websockets - f protocols = + ~enable_dal ?(dal_slots = if enable_dal then Some [4] else None) + ~enable_multichain ?websockets f protocols = let extra_tag = match setup_mode with | Setup_proxy -> "proxy" @@ -543,15 +545,18 @@ let register_test ~title ~tags ?(kernels = Kernel.all) ?additional_config ?admin ~__FILE__ ~tags: ((if enable_dal then ["dal"; Tag.ci_disabled] else []) + @ (if enable_multichain then ["multichain_enabled"; Tag.ci_disabled] + else []) @ (kernel_tag :: extra_tag :: tags)) ~uses ~title: (sf - "%s (%s, %s, %s)" + "%s (%s, %s, %s, %s)" title extra_tag kernel_tag - (if enable_dal then "with dal" else "without dal")) + (if enable_dal then "with dal" else "without dal") + (if enable_multichain then "multichain" else "single chain")) (fun protocol -> let* evm_setup = setup_evm_kernel @@ -570,6 +575,7 @@ let register_test ~title ~tags ?(kernels = Kernel.all) ?additional_config ?admin ~setup_mode ~enable_dal ?dal_slots + ~enable_multichain ?websockets protocol in @@ -581,7 +587,7 @@ let register_proxy ~title ~tags ?kernels ?additional_uses ?additional_config ?admin ?commitment_period ?challenge_window ?bootstrap_accounts ?da_fee_per_byte ?minimum_base_fee_per_gas ?whitelist ?rollup_operator_key ?maximum_allowed_ticks ?restricted_rpcs ?websockets f protocols = - let register ~enable_dal : unit = + let register ~enable_dal ~enable_multichain : unit = register_test ~title ~tags @@ -602,10 +608,13 @@ let register_proxy ~title ~tags ?kernels ?additional_uses ?additional_config f protocols ~enable_dal + ~enable_multichain ~setup_mode:Setup_proxy in - register ~enable_dal:false ; - register ~enable_dal:true + register ~enable_dal:false ~enable_multichain:false ; + register ~enable_dal:true ~enable_multichain:false ; + register ~enable_dal:false ~enable_multichain:true ; + register ~enable_dal:true ~enable_multichain:true let register_sequencer ?(return_sequencer = false) ~title ~tags ?kernels ?additional_uses ?additional_config ?admin ?commitment_period @@ -613,7 +622,7 @@ let register_sequencer ?(return_sequencer = false) ~title ~tags ?kernels ?minimum_base_fee_per_gas ?time_between_blocks ?whitelist ?rollup_operator_key ?maximum_allowed_ticks ?restricted_rpcs ?max_blueprints_ahead ?websockets f protocols = - let register ~enable_dal : unit = + let register ~enable_dal ~enable_multichain : unit = register_test ~title ~tags @@ -634,6 +643,7 @@ let register_sequencer ?(return_sequencer = false) ~title ~tags ?kernels f protocols ~enable_dal + ~enable_multichain ~setup_mode: (Setup_sequencer { @@ -643,8 +653,10 @@ let register_sequencer ?(return_sequencer = false) ~title ~tags ?kernels max_blueprints_ahead; }) in - register ~enable_dal:false ; - register ~enable_dal:true + register ~enable_dal:false ~enable_multichain:false ; + register ~enable_dal:true ~enable_multichain:false ; + register ~enable_dal:false ~enable_multichain:true ; + register ~enable_dal:true ~enable_multichain:true let register_both ~title ~tags ?kernels ?additional_uses ?additional_config ?admin ?commitment_period ?challenge_window ?bootstrap_accounts diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index 5959396429c1..82bfd5cb1949 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -209,6 +209,9 @@ let default_dal_registration = let ci_enabled_dal_registration = Register_both {extra_tags_with = []; extra_tags_without = []} +let default_multichain_registration = + Register_both {extra_tags_with = [Tag.slow]; extra_tags_without = []} + let register_sandbox ?tx_pool_tx_per_addr_limit ~title ?set_account_code ?da_fee_per_byte ?minimum_base_fee_per_gas ~tags ?patch_config body = Test.register @@ -248,7 +251,9 @@ let register_all ?max_delayed_inbox_blueprint_length ?sequencer_rpc_port ?commitment_period ?challenge_window ?additional_uses ?rpc_server ?websockets ?(use_threshold_encryption = default_threshold_encryption_registration) - ?(use_dal = default_dal_registration) ~title ~tags body protocols = + ?(use_dal = default_dal_registration) + ?(use_multichain = default_multichain_registration) ~title ~tags body + protocols = let dal_cases = match use_dal with | Register_both {extra_tags_with; extra_tags_without} -> @@ -263,49 +268,60 @@ let register_all ?max_delayed_inbox_blueprint_length ?sequencer_rpc_port | Register_with_feature -> [(true, [])] | Register_without_feature -> [(false, [])] in + let multichain_cases = + match use_multichain with + | Register_both {extra_tags_with; extra_tags_without} -> + [(false, extra_tags_without); (true, extra_tags_with)] + | Register_with_feature -> [(true, [])] + | Register_without_feature -> [(false, [])] + in (* TODO: https://gitlab.com/tezos/tezos/-/issues/7367 Also register the tests with and without FA bridge feature flag. *) List.iter (fun (threshold_encryption, te_tags) -> List.iter (fun (enable_dal, dal_tags) -> - register_test_for_kernels - ~__FILE__ - ?max_delayed_inbox_blueprint_length - ?sequencer_rpc_port - ?sequencer_private_rpc_port - ?commitment_period - ?challenge_window - ?genesis_timestamp - ?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 - ?sequencer - ?sequencer_pool_address - ~kernels - ?da_fee - ?minimum_base_fee_per_gas - ?preimages_dir - ?maximum_allowed_ticks - ?maximum_gas_per_transaction - ?max_blueprint_lookahead_in_seconds - ?enable_fa_bridge - ?additional_uses - ?rpc_server - ?websockets - ~threshold_encryption - ?history_mode - ~enable_dal - ~title - ~tags:(te_tags @ dal_tags @ tags) - body - protocols) + List.iter + (fun (enable_multichain, multichain_tags) -> + register_test_for_kernels + ~__FILE__ + ?max_delayed_inbox_blueprint_length + ?sequencer_rpc_port + ?sequencer_private_rpc_port + ?commitment_period + ?challenge_window + ?genesis_timestamp + ?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 + ?sequencer + ?sequencer_pool_address + ~kernels + ?da_fee + ?minimum_base_fee_per_gas + ?preimages_dir + ?maximum_allowed_ticks + ?maximum_gas_per_transaction + ?max_blueprint_lookahead_in_seconds + ?enable_fa_bridge + ?additional_uses + ?rpc_server + ?websockets + ~threshold_encryption + ?history_mode + ~enable_dal + ~enable_multichain + ~title + ~tags:(te_tags @ dal_tags @ multichain_tags @ tags) + body + protocols) + multichain_cases) dal_cases) threshold_encryption_cases @@ -658,6 +674,7 @@ let test_patch_state = ~__FILE__ ~kernel:Kernel.Latest ~enable_dal:false + ~enable_multichain:false ~tags:["evm"; "patch"; "state"] ~title:"Patch state via command" ~time_between_blocks:Nothing @@ -3273,6 +3290,7 @@ let test_delayed_inbox_flushing_event = ~title:"Flush delayed inbox event" ~use_dal:Register_without_feature ~use_threshold_encryption:Register_without_feature + ~use_multichain:Register_without_feature ~kernels:[Latest] @@ fun { client; @@ -8767,7 +8785,11 @@ let test_configuration_service = ]) @@ fun protocol -> let* {sequencer; proxy; observer; _} = - Setup.setup_sequencer ~mainnet_compat:false ~enable_dal:false protocol + Setup.setup_sequencer + ~mainnet_compat:false + ~enable_dal:false + ~enable_multichain:false + protocol in let* proxy_config = Rpc.configuration proxy in let* sequencer_config = Rpc.configuration sequencer in @@ -9289,6 +9311,7 @@ let test_node_correctly_uses_batcher_heap = ~__FILE__ ~kernel:Kernel.Latest ~enable_dal:false + ~enable_multichain:false ~max_blueprints_lag ~max_blueprints_catchup ~catchup_cooldown -- GitLab From 85f94ce6a30b24fed5d7505be936adf715bb30ac Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Mon, 27 Jan 2025 14:16:30 +0100 Subject: [PATCH 3/5] Etherlink/Kernel: add multichain tag to storage --- etherlink/kernel_evm/kernel/src/storage.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etherlink/kernel_evm/kernel/src/storage.rs b/etherlink/kernel_evm/kernel/src/storage.rs index 50bfe821a696..3d6461c89fb3 100644 --- a/etherlink/kernel_evm/kernel/src/storage.rs +++ b/etherlink/kernel_evm/kernel/src/storage.rs @@ -107,6 +107,12 @@ pub const EVM_TRANSACTIONS_OBJECTS: RefPath = const EVM_CHAIN_ID: RefPath = RefPath::assert_from(b"/evm/chain_id"); +// Path to the Multichain feature flag. If there is nothing at this path, +// a single chain is used. +#[allow(dead_code)] +pub const ENABLE_MULTICHAIN: RefPath = + RefPath::assert_from(b"/evm/feature_flags/enable_multichain"); + const EVM_MINIMUM_BASE_FEE_PER_GAS: RefPath = RefPath::assert_from(b"/evm/world_state/fees/minimum_base_fee_per_gas"); const EVM_DA_FEE: RefPath = -- GitLab From 57852ad6e51c47fec843cbea1cf699ebb12fd4f3 Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Tue, 28 Jan 2025 10:57:46 +0100 Subject: [PATCH 4/5] Etherlink/Tests: check multichain_flag value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Raphaƫl Cauderlier --- etherlink/tezt/lib/durable_storage_path.ml | 2 ++ etherlink/tezt/lib/durable_storage_path.mli | 3 +++ etherlink/tezt/tests/evm_sequencer.ml | 15 +++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/etherlink/tezt/lib/durable_storage_path.ml b/etherlink/tezt/lib/durable_storage_path.ml index a353b90717a4..44a445189485 100644 --- a/etherlink/tezt/lib/durable_storage_path.ml +++ b/etherlink/tezt/lib/durable_storage_path.ml @@ -89,6 +89,8 @@ let reveal_config = "/__tmp/reveal_config" let enable_fa_bridge = evm "/feature_flags/enable_fa_bridge" +let enable_multichain = evm "/feature_flags/enable_multichain" + module Ticket_table = struct let ticket_table = sf diff --git a/etherlink/tezt/lib/durable_storage_path.mli b/etherlink/tezt/lib/durable_storage_path.mli index a2c7ad98be52..91d66ab49443 100644 --- a/etherlink/tezt/lib/durable_storage_path.mli +++ b/etherlink/tezt/lib/durable_storage_path.mli @@ -107,6 +107,9 @@ val reveal_config : path (** [enable_fa_bridge] is the path to the feature flag to activate the FA bridge. *) val enable_fa_bridge : path +(** [enable_multichain] is the path to the feature flag to activate multichain functions *) +val enable_multichain : path + module Ticket_table : sig (** [balance ~ticket_hash ~account] returns the path where the balance of [account] of ticket [ticket_hash] is. *) diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index 82bfd5cb1949..a948fc307c0f 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -7867,6 +7867,20 @@ let test_fa_bridge_feature_flag = Durable_storage_path.enable_fa_bridge) ; unit +let test_multichain_feature_flag = + register_all + ~tags:["multichain"; "feature_flag"] + ~title:"Check the multichain feature value in storage" + @@ fun {sequencer; enable_multichain; _} _protocol -> + let*@ flag = + Rpc.state_value sequencer Durable_storage_path.enable_multichain + in + Check.(Option.is_some flag = enable_multichain) + Check.bool + ~error_msg: + "Multichain feature flag in the durable storage is %L, expected %R" ; + unit + let test_trace_call = register_all ~kernels:[Latest] @@ -9836,6 +9850,7 @@ let () = test_trace_transaction_call protocols ; test_miner protocols ; test_fa_bridge_feature_flag protocols ; + test_multichain_feature_flag protocols ; test_trace_call protocols ; test_trace_empty_block protocols ; test_trace_block protocols ; -- GitLab From 6d5d6b791f289ae60258c314f06cf901f1bf8d71 Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Wed, 29 Jan 2025 08:44:16 +0100 Subject: [PATCH 5/5] Etherlink/tests: Updated test regressions --- .../tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/etherlink/tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out b/etherlink/tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out index 9c0e2f6a8c6e..569fd923b074 100644 --- a/etherlink/tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out +++ b/etherlink/tezt/tests/expected/evm_sequencer.ml/EVM Node- man.out @@ -411,7 +411,7 @@ Miscellaneous commands: [--bootstrap-balance <9999000000000000000000>] [--bootstrap-account <0x...>] [--set-code <0x...,0x....>] [--enable-fa-bridge] [--enable-dal] [--dal-slots <0,1,4,6,...>] - [--max-delayed-inbox-blueprint-length <1000>] + [--enable-multichain] [--max-delayed-inbox-blueprint-length <1000>] Transforms the JSON list of instructions to a RLP list : file path where the config will be written to --mainnet-compat: Generate a configuration compatible with the first Etherlink Mainnet kernel @@ -439,6 +439,7 @@ Miscellaneous commands: --enable-fa-bridge: enable flag enable_fa_bridge in the installer config --enable-dal: enable flag enable_dal in the installer config --dal-slots <0,1,4,6,...>: value for dal_slots in the installer config + --enable-multichain: enable flag enable_multichain in the installer config --max-delayed-inbox-blueprint-length <1000>: value for max_delayed_inbox_blueprint_length in the installer config patch state at with [--data-dir ] -- GitLab