From 7b2f862882b67cc5c81ad388b88959eb2fdc249d Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Mon, 3 Mar 2025 16:09:00 +0100 Subject: [PATCH 1/3] EVM Node: wrap sequencer on rpc and return it instead --- etherlink/tezt/lib/setup.ml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/etherlink/tezt/lib/setup.ml b/etherlink/tezt/lib/setup.ml index 0c0c23a6ef0b..0f5f29e9f54b 100644 --- a/etherlink/tezt/lib/setup.ml +++ b/etherlink/tezt/lib/setup.ml @@ -354,7 +354,7 @@ let setup_sequencer ?max_delayed_inbox_blueprint_length ?next_wasm_runtime dal_slots; } in - let* sequencer = + let* bare_sequencer = Evm_node.init ?rpc_port:sequencer_rpc_port ~patch_config:seq_patch_config @@ -364,9 +364,21 @@ let setup_sequencer ?max_delayed_inbox_blueprint_length ?next_wasm_runtime in let* _ = match spawn_rpc with - | Some _ -> Evm_node.wait_for_spawn_rpc_ready sequencer + | Some _ -> Evm_node.wait_for_spawn_rpc_ready bare_sequencer | None -> unit in + let* sequencer = + if enable_multichain then + let evm_node = + Evm_node.create + ~data_dir:(Evm_node.data_dir bare_sequencer) + ~mode:(Rpc (Evm_node.mode bare_sequencer)) + (Evm_node.endpoint bare_sequencer) + in + let* () = Evm_node.run evm_node in + return evm_node + else return bare_sequencer + in let* observer = run_new_observer_node ~patch_config:obs_patch_config -- GitLab From 720b46d0172d4ab7c2ec7a7fe970f4b4f7a0e044 Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Mon, 3 Mar 2025 16:09:57 +0100 Subject: [PATCH 2/3] EVM Node: redirect RPC private address to parent --- etherlink/tezt/lib/evm_node.ml | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/etherlink/tezt/lib/evm_node.ml b/etherlink/tezt/lib/evm_node.ml index 0e6c7899284e..ee75e2495018 100644 --- a/etherlink/tezt/lib/evm_node.ml +++ b/etherlink/tezt/lib/evm_node.ml @@ -1222,7 +1222,7 @@ let spawn_init_config ?(extra_arguments = []) evm_node = spawn_command evm_node @@ ["init"; "config"] @ mode_args @ shared_args @ extra_arguments -let rpc_endpoint ?(local = false) ?(private_ = false) (evm_node : t) = +let rec get_rpc_endpoint ?(local = false) ?(private_ = false) (evm_node : t) = let addr, port, path = let host = if local then Constant.default_host @@ -1230,27 +1230,38 @@ let rpc_endpoint ?(local = false) ?(private_ = false) (evm_node : t) = in if private_ then match evm_node.persistent_state.mode with + | Rpc wrapped_node -> + get_rpc_endpoint + ~local + ~private_ + { + evm_node with + persistent_state = + {evm_node.persistent_state with mode = wrapped_node}; + } | Sequencer {private_rpc_port = Some private_rpc_port; _} | Observer {private_rpc_port = Some private_rpc_port; _} - | Sandbox {private_rpc_port = Some private_rpc_port; _} -> + | Sandbox {private_rpc_port = Some private_rpc_port; _} + | Threshold_encryption_sequencer + {private_rpc_port = Some private_rpc_port; _} -> (host, private_rpc_port, "/private") | Sequencer {private_rpc_port = None; _} | Sandbox {private_rpc_port = None; _} -> Test.fail "Sequencer doesn't have a private RPC server" - | Threshold_encryption_sequencer - {private_rpc_port = Some private_rpc_port; _} -> - (host, private_rpc_port, "/private") | Threshold_encryption_sequencer {private_rpc_port = None; _} -> Test.fail "Threshold encryption sequencer doesn't have a private RPC server" | Proxy -> Test.fail "Proxy doesn't have a private RPC server" | Observer _ -> Test.fail "Observer doesn't have a private RPC server" - | Rpc _ -> Test.fail "Rpc node doesn't have a private RPC server" | Threshold_encryption_observer _ -> Test.fail "Threshold encryption observer doesn't have a private RPC server" else (host, evm_node.persistent_state.rpc_port, "") in + (addr, port, path) + +let rpc_endpoint ?(local = false) ?(private_ = false) (evm_node : t) = + let addr, port, path = get_rpc_endpoint ~local ~private_ evm_node in Format.sprintf "http://%s:%d%s" addr port path let endpoint = rpc_endpoint ?local:None -- GitLab From aca59cf0229688ba072c7cc27545f6968aabf870 Mon Sep 17 00:00:00 2001 From: Luciano Freitas Date: Fri, 28 Feb 2025 08:54:03 +0100 Subject: [PATCH 3/3] Etherlink/Tezt: wrap sequencer on make l2 test --- etherlink/tezt/tests/evm_sequencer.ml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index a2e61d0f8015..b8590600fc04 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -453,6 +453,16 @@ let test_make_l2_kernel_installer_config chain_family = let* sequencer = Evm_node.init ~mode:sequencer (Sc_rollup_node.endpoint sc_rollup_node) in + let* sequencer = + let rpc_node = + Evm_node.create + ~data_dir:(Evm_node.data_dir sequencer) + ~mode:(Rpc (Evm_node.mode sequencer)) + (Evm_node.endpoint sequencer) + in + let* () = Evm_node.run rpc_node in + return rpc_node + in (* Verify the chain_family is properly set *) let*@ family_value = Rpc.get_chain_family sequencer chain_id in -- GitLab