diff --git a/etherlink/bin_node/lib_dev/blueprints_publisher.ml b/etherlink/bin_node/lib_dev/blueprints_publisher.ml index 6fed772ff304af329aaec8a867cf1f73b9d05550..a5eabc415649688688e9f972386f6fbc339890c5 100644 --- a/etherlink/bin_node/lib_dev/blueprints_publisher.ml +++ b/etherlink/bin_node/lib_dev/blueprints_publisher.ml @@ -18,7 +18,7 @@ type parameters = { keep_alive : bool; drop_duplicate : bool; order_enabled : bool; - tx_queue_enabled : bool; + tx_container : (module Services_backend_sig.Tx_container); } type state = { @@ -39,7 +39,7 @@ type state = { mutable cooldown : int; (** Do not try to catch-up if [cooldown] is not equal to 0 *) enable_dal : bool; - tx_queue_enabled : bool; + tx_container : (module Services_backend_sig.Tx_container); } module Types = struct @@ -106,7 +106,7 @@ module Worker = struct let on_cooldown worker = 0 < current_cooldown worker - let tx_queue_enabled worker = (state worker).tx_queue_enabled + let tx_container worker = (state worker).tx_container let decrement_cooldown worker = let current = current_cooldown worker in @@ -165,8 +165,8 @@ module Worker = struct match rollup_is_lagging_behind self with | No_lag | Needs_republish -> return_unit | Needs_lock -> - if tx_queue_enabled self then Tx_queue.lock_transactions () - else Tx_pool.lock_transactions () + let (module Tx_container) = tx_container self in + Tx_container.lock_transactions () let catch_up worker = let open Lwt_result_syntax in @@ -260,7 +260,7 @@ module Handlers = struct keep_alive; drop_duplicate; order_enabled; - tx_queue_enabled; + tx_container; } : Types.parameters) = let open Lwt_result_syntax in @@ -290,7 +290,7 @@ module Handlers = struct keep_alive; enable_dal = Option.is_some dal_slots; order_enabled; - tx_queue_enabled; + tx_container; } let on_request : @@ -320,8 +320,8 @@ module Handlers = struct Worker.decrement_cooldown self ; (* If there is no lag or the worker just needs to republish we unlock the transaction pool in case it was locked. *) - if Worker.tx_queue_enabled self then Tx_queue.unlock_transactions () - else Tx_pool.unlock_transactions ()) + let (module Tx_container) = Worker.tx_container self in + Tx_container.unlock_transactions ()) let on_completion (type a err) _self (_r : (a, err) Request.t) (_res : a) _st = @@ -349,7 +349,7 @@ let table = Worker.create_table Queue let worker_promise, worker_waker = Lwt.task () let start ~blueprints_range ~rollup_node_endpoint ~config ~latest_level_seen - ~keep_alive ~drop_duplicate ~order_enabled ~tx_queue_enabled () = + ~keep_alive ~drop_duplicate ~order_enabled ~tx_container () = let open Lwt_result_syntax in let* worker = Worker.launch @@ -363,7 +363,7 @@ let start ~blueprints_range ~rollup_node_endpoint ~config ~latest_level_seen keep_alive; drop_duplicate; order_enabled; - tx_queue_enabled; + tx_container; } (module Handlers) in diff --git a/etherlink/bin_node/lib_dev/blueprints_publisher.mli b/etherlink/bin_node/lib_dev/blueprints_publisher.mli index 1b801e4cf2d74a0681bad219c7f4c9dc12b24c9a..0531919abe0332a96c84b7fb305f9919b06a2f88 100644 --- a/etherlink/bin_node/lib_dev/blueprints_publisher.mli +++ b/etherlink/bin_node/lib_dev/blueprints_publisher.mli @@ -18,7 +18,7 @@ val start : keep_alive:bool -> drop_duplicate:bool -> order_enabled:bool -> - tx_queue_enabled:bool -> + tx_container:(module Services_backend_sig.Tx_container) -> unit -> unit tzresult Lwt.t diff --git a/etherlink/bin_node/lib_dev/evm_context.ml b/etherlink/bin_node/lib_dev/evm_context.ml index 277720a8d91df6b26a5939565d63da4cc2d614b3..5f5831971f1e5bad865d48df6e3c28065b3d7f3f 100644 --- a/etherlink/bin_node/lib_dev/evm_context.ml +++ b/etherlink/bin_node/lib_dev/evm_context.ml @@ -26,6 +26,7 @@ type parameters = { store_perm : [`Read_only | `Read_write]; sequencer_wallet : (Client_keys.sk_uri * Client_context.wallet) option; snapshot_url : string option; + tx_container : (module Services_backend_sig.Tx_container); } type session_state = { @@ -48,6 +49,7 @@ type t = { session : session_state; sequencer_wallet : (Client_keys.sk_uri * Client_context.wallet) option; legacy_block_storage : bool; + tx_container : (module Services_backend_sig.Tx_container); } let is_sequencer t = Option.is_some t.sequencer_wallet @@ -472,8 +474,8 @@ module State = struct let*! evm_state = Irmin_context.PVMState.get context in (* Clear the TX queue if needed, to preserve its invariants about nonces always increasing. *) let* () = - when_ (Configuration.is_tx_queue_enabled ctxt.configuration) - @@ Tx_queue.clear + let (module Tx_container) = ctxt.tx_container in + Tx_container.clear () in (* Clear the store. *) let* () = Evm_store.reset_after conn ~l2_level in @@ -1362,7 +1364,8 @@ module State = struct let on_disk_kernel = function Wasm_debugger.On_disk _ -> true | _ -> false let init ~(configuration : Configuration.t) ?kernel_path ~data_dir - ?smart_rollup_address ~store_perm ?sequencer_wallet ?snapshot_url () = + ?smart_rollup_address ~store_perm ?sequencer_wallet ?snapshot_url + ~tx_container () = let open Lwt_result_syntax in let*! () = Lwt_utils_unix.create_dir (Evm_state.kernel_logs_directory ~data_dir) @@ -1476,6 +1479,7 @@ module State = struct store; sequencer_wallet; legacy_block_storage; + tx_container; } in @@ -1761,6 +1765,7 @@ module Handlers = struct store_perm; sequencer_wallet; snapshot_url; + tx_container; } = let open Lwt_result_syntax in let* ctxt, status = @@ -1772,6 +1777,7 @@ module Handlers = struct ~store_perm ?sequencer_wallet ?snapshot_url + ~tx_container () in Lwt.wakeup execution_config_waker @@ (ctxt.data_dir, pvm_config ctxt) ; @@ -1941,7 +1947,8 @@ let worker_wait_for_request req = return_ res let start ~configuration ?kernel_path ~data_dir ?smart_rollup_address - ~store_perm ?sequencer_wallet ?snapshot_url () = + ~store_perm ?sequencer_wallet ?snapshot_url + ~(tx_container : (module Services_backend_sig.Tx_container)) () = let open Lwt_result_syntax in let* () = lock_data_dir ~data_dir in let* worker = @@ -1956,6 +1963,7 @@ let start ~configuration ?kernel_path ~data_dir ?smart_rollup_address store_perm; sequencer_wallet; snapshot_url; + tx_container; } (module Handlers) in @@ -2115,7 +2123,7 @@ let apply_evm_events ?finalized_level events = worker_add_request ~request:(Apply_evm_events {finalized_level; events}) let init_from_rollup_node ~configuration ~omit_delayed_tx_events ~data_dir - ~rollup_node_data_dir () = + ~rollup_node_data_dir ~tx_container () = let open Lwt_result_syntax in let* () = lock_data_dir ~data_dir in let* irmin_context, evm_state, finalized_level = @@ -2134,6 +2142,7 @@ let init_from_rollup_node ~configuration ~omit_delayed_tx_events ~data_dir ~data_dir ~smart_rollup_address ~store_perm:`Read_write + ~tx_container () in worker_wait_for_request diff --git a/etherlink/bin_node/lib_dev/evm_context.mli b/etherlink/bin_node/lib_dev/evm_context.mli index 2444b9bd382d62b402a3f03b9ee3f68d62923bde..dd238b9411607d2c0dfcae9c46b4b1f27c6b3798 100644 --- a/etherlink/bin_node/lib_dev/evm_context.mli +++ b/etherlink/bin_node/lib_dev/evm_context.mli @@ -48,6 +48,7 @@ val start : store_perm:[`Read_only | `Read_write] -> ?sequencer_wallet:Client_keys.sk_uri * Client_context.wallet -> ?snapshot_url:string -> + tx_container:(module Services_backend_sig.Tx_container) -> unit -> (init_status * Address.t) tzresult Lwt.t @@ -62,6 +63,7 @@ val init_from_rollup_node : omit_delayed_tx_events:bool -> data_dir:string -> rollup_node_data_dir:string -> + tx_container:(module Services_backend_sig.Tx_container) -> unit -> unit tzresult Lwt.t diff --git a/etherlink/bin_node/lib_dev/observer.ml b/etherlink/bin_node/lib_dev/observer.ml index dffe7debe29c38593f8479f75518fe0e0f69bda9..ed6433468b44c7fd52fbcb3e4f1996b165063227 100644 --- a/etherlink/bin_node/lib_dev/observer.ml +++ b/etherlink/bin_node/lib_dev/observer.ml @@ -131,10 +131,16 @@ let container_forward_tx ~keep_alive ~evm_node_endpoint : let shutdown () = Lwt_result_syntax.return_unit + let clear () = Lwt_result_syntax.return_unit + let tx_queue_tick ~evm_node_endpoint:_ = Lwt_result_syntax.return_unit let tx_queue_beacon ~evm_node_endpoint:_ ~tick_interval:_ = Lwt_result_syntax.return_unit + + let lock_transactions () = Lwt_result_syntax.return_unit + + let unlock_transactions () = Lwt_result_syntax.return_unit end) let main ?network ?kernel_path ~data_dir ~(config : Configuration.t) ~no_sync @@ -170,6 +176,25 @@ let main ?network ?kernel_path ~data_dir ~(config : Configuration.t) ~no_sync config.history_mode)) init_from_snapshot in + + let tx_container, ping_tx_pool = + match config.experimental_features.enable_tx_queue with + | Some _tx_queue_config -> + ( (module Tx_queue.Tx_container : Services_backend_sig.Tx_container), + false ) + | None -> + if config.finalized_view then + let tx_container = + container_forward_tx + ~keep_alive:config.keep_alive + ~evm_node_endpoint + in + (tx_container, false) + else + ( (module Tx_pool.Tx_container : Services_backend_sig.Tx_container), + true ) + in + let* _loaded = Evm_context.start ~configuration:config @@ -180,6 +205,7 @@ let main ?network ?kernel_path ~data_dir ~(config : Configuration.t) ~no_sync smart_rollup_address) ~store_perm:`Read_write ?snapshot_url + ~tx_container () in let* ro_ctxt = @@ -195,44 +221,25 @@ let main ?network ?kernel_path ~data_dir ~(config : Configuration.t) ~no_sync Evm_ro_context.ro_backend ro_ctxt config ~evm_node_endpoint in - let* tx_container, ping_tx_pool = + let* () = match config.experimental_features.enable_tx_queue with | Some tx_queue_config -> - let* () = - Tx_queue.start - ~config:tx_queue_config - ~keep_alive:config.keep_alive - () - in - return - ( (module Tx_queue.Tx_container : Services_backend_sig.Tx_container), - false ) + Tx_queue.start ~config:tx_queue_config ~keep_alive:config.keep_alive () | None -> - if config.finalized_view then - let tx_container = - container_forward_tx - ~keep_alive:config.keep_alive - ~evm_node_endpoint - in - return (tx_container, false) + if config.finalized_view then return_unit else - let* () = - Tx_pool.start - { - backend = observer_backend; - smart_rollup_address = - Tezos_crypto.Hashed.Smart_rollup_address.to_b58check - smart_rollup_address; - mode = Relay; - tx_timeout_limit = config.tx_pool_timeout_limit; - tx_pool_addr_limit = Int64.to_int config.tx_pool_addr_limit; - tx_pool_tx_per_addr_limit = - Int64.to_int config.tx_pool_tx_per_addr_limit; - } - in - return - ( (module Tx_pool.Tx_container : Services_backend_sig.Tx_container), - true ) + Tx_pool.start + { + backend = observer_backend; + smart_rollup_address = + Tezos_crypto.Hashed.Smart_rollup_address.to_b58check + smart_rollup_address; + mode = Relay; + tx_timeout_limit = config.tx_pool_timeout_limit; + tx_pool_addr_limit = Int64.to_int config.tx_pool_addr_limit; + tx_pool_tx_per_addr_limit = + Int64.to_int config.tx_pool_tx_per_addr_limit; + } in Metrics.init diff --git a/etherlink/bin_node/lib_dev/proxy.ml b/etherlink/bin_node/lib_dev/proxy.ml index 3e320216173f26f20e928582935b5a3bd0675441..570a96c0aed7033aee40b9ce67264bd232acfd5c 100644 --- a/etherlink/bin_node/lib_dev/proxy.ml +++ b/etherlink/bin_node/lib_dev/proxy.ml @@ -43,10 +43,16 @@ let container_forward_tx ~evm_node_endpoint ~keep_alive : let shutdown () = Lwt_result_syntax.return_unit + let clear () = Lwt_result_syntax.return_unit + let tx_queue_tick ~evm_node_endpoint:_ = Lwt_result_syntax.return_unit let tx_queue_beacon ~evm_node_endpoint:_ ~tick_interval:_ = Lwt_result_syntax.return_unit + + let lock_transactions () = Lwt_result_syntax.return_unit + + let unlock_transactions () = Lwt_result_syntax.return_unit end) let tx_queue_pop_and_inject (module Rollup_node_rpc : Services_backend_sig.S) diff --git a/etherlink/bin_node/lib_dev/rpc.ml b/etherlink/bin_node/lib_dev/rpc.ml index 2e0edffaebc98031fbab8b0a6962fa337fcaa7bf..c394e3dd0dc30784e1eb53571fa4e307b410d131 100644 --- a/etherlink/bin_node/lib_dev/rpc.ml +++ b/etherlink/bin_node/lib_dev/rpc.ml @@ -136,10 +136,16 @@ let container_forward_request ~public_endpoint ~private_endpoint ~keep_alive : let shutdown () = Lwt_result_syntax.return_unit + let clear () = Lwt_result_syntax.return_unit + let tx_queue_tick ~evm_node_endpoint:_ = Lwt_result_syntax.return_unit let tx_queue_beacon ~evm_node_endpoint:_ ~tick_interval:_ = Lwt_result_syntax.return_unit + + let lock_transactions () = Lwt_result_syntax.return_unit + + let unlock_transactions () = Lwt_result_syntax.return_unit end) let main ~data_dir ~evm_node_endpoint ?evm_node_private_endpoint diff --git a/etherlink/bin_node/lib_dev/sequencer.ml b/etherlink/bin_node/lib_dev/sequencer.ml index 1a2549b949a4ca6f371a8a517444f4d4eb5f4a23..46d5f268257f307c614402f3e8daad6546900e52 100644 --- a/etherlink/bin_node/lib_dev/sequencer.ml +++ b/etherlink/bin_node/lib_dev/sequencer.ml @@ -139,6 +139,14 @@ let main ~data_dir ?(genesis_timestamp = Misc.now ()) ~cctxt init_from_snapshot | None -> Result.return_none in + let* tx_container = + match configuration.experimental_features.enable_tx_queue with + | Some _tx_queue_config -> + return + (module Tx_queue.Tx_container : Services_backend_sig.Tx_container) + | None -> + return (module Tx_pool.Tx_container : Services_backend_sig.Tx_container) + in let* status, smart_rollup_address_typed = Evm_context.start ~configuration @@ -148,6 +156,7 @@ let main ~data_dir ?(genesis_timestamp = Misc.now ()) ~cctxt ~store_perm:`Read_write ~sequencer_wallet:(sequencer_config.sequencer, cctxt) ?snapshot_url + ~tx_container () in let smart_rollup_address_b58 = Address.to_string smart_rollup_address_typed in @@ -240,7 +249,7 @@ let main ~data_dir ?(genesis_timestamp = Misc.now ()) ~cctxt configuration.experimental_features.drop_duplicate_on_injection ~order_enabled: configuration.experimental_features.blueprints_publisher_order_enabled - ~tx_queue_enabled:(Configuration.is_tx_queue_enabled configuration) + ~tx_container () in let* () = @@ -277,31 +286,24 @@ let main ~data_dir ?(genesis_timestamp = Misc.now ()) ~cctxt in let backend = Evm_ro_context.ro_backend ro_ctxt configuration in - let* tx_container = + let* () = match configuration.experimental_features.enable_tx_queue with | Some tx_queue_config -> - let* () = - Tx_queue.start - ~config:tx_queue_config - ~keep_alive:configuration.keep_alive - () - in - return - (module Tx_queue.Tx_container : Services_backend_sig.Tx_container) + Tx_queue.start + ~config:tx_queue_config + ~keep_alive:configuration.keep_alive + () | None -> - let* () = - Tx_pool.start - { - backend; - smart_rollup_address = smart_rollup_address_b58; - mode = Sequencer; - tx_timeout_limit = configuration.tx_pool_timeout_limit; - tx_pool_addr_limit = Int64.to_int configuration.tx_pool_addr_limit; - tx_pool_tx_per_addr_limit = - Int64.to_int configuration.tx_pool_tx_per_addr_limit; - } - in - return (module Tx_pool.Tx_container : Services_backend_sig.Tx_container) + Tx_pool.start + { + backend; + smart_rollup_address = smart_rollup_address_b58; + mode = Sequencer; + tx_timeout_limit = configuration.tx_pool_timeout_limit; + tx_pool_addr_limit = Int64.to_int configuration.tx_pool_addr_limit; + tx_pool_tx_per_addr_limit = + Int64.to_int configuration.tx_pool_tx_per_addr_limit; + } in Metrics.init ~mode:"sequencer" diff --git a/etherlink/bin_node/lib_dev/services_backend_sig.ml b/etherlink/bin_node/lib_dev/services_backend_sig.ml index f0536d9530a8395da1280e608f20e24fda4cc379..a81e5d95240e2f9486db9ff2e4c5a3590ffe076d 100644 --- a/etherlink/bin_node/lib_dev/services_backend_sig.ml +++ b/etherlink/bin_node/lib_dev/services_backend_sig.ml @@ -227,6 +227,9 @@ module type Tx_container = sig to be processed. *) val shutdown : unit -> unit tzresult Lwt.t + (** [clear ()] removes the container data but keeps the allocated space *) + val clear : unit -> unit tzresult Lwt.t + (** Trigger a tick in the [Tx_queue]. *) val tx_queue_tick : evm_node_endpoint:endpoint -> unit tzresult Lwt.t @@ -235,4 +238,13 @@ module type Tx_container = sig [tick_interval] seconds. *) val tx_queue_beacon : evm_node_endpoint:endpoint -> tick_interval:float -> unit tzresult Lwt.t + + (** [lock_transactions] locks the transactions in the queue, new + transactions can be added but nothing can be retrieved with + {!pop_transactions}. *) + val lock_transactions : unit -> unit tzresult Lwt.t + + (** [unlock_transactions] unlocks the transactions if it was locked by + {!lock_transactions}. *) + val unlock_transactions : unit -> unit tzresult Lwt.t end diff --git a/etherlink/bin_node/lib_dev/tx_pool.ml b/etherlink/bin_node/lib_dev/tx_pool.ml index 5476e880bbf1744623ab71e973ca9a906d98a6be..7fdf52b2b041a5597a9b37cce091d7a01f00fec9 100644 --- a/etherlink/bin_node/lib_dev/tx_pool.ml +++ b/etherlink/bin_node/lib_dev/tx_pool.ml @@ -868,18 +868,6 @@ let pop_and_inject_transactions_lazy () = in return_unit -let lock_transactions () = - let open Lwt_result_syntax in - let*? worker = Lazy.force worker in - Worker.Queue.push_request_and_wait worker Request.Lock_transactions - |> handle_request_error - -let unlock_transactions () = - let open Lwt_result_syntax in - let*? worker = Lazy.force worker in - Worker.Queue.push_request_and_wait worker Request.Unlock_transactions - |> handle_request_error - let is_locked () = let open Lwt_result_syntax in let*? worker = Lazy.force worker in @@ -971,8 +959,22 @@ module Tx_container = struct let*! () = Worker.shutdown w in return_unit + let clear () = Lwt_result_syntax.return_unit + let tx_queue_tick ~evm_node_endpoint:_ = Lwt_result_syntax.return_unit let tx_queue_beacon ~evm_node_endpoint:_ ~tick_interval:_ = Lwt_result_syntax.return_unit + + let lock_transactions () = + let open Lwt_result_syntax in + let*? worker = Lazy.force worker in + Worker.Queue.push_request_and_wait worker Request.Lock_transactions + |> handle_request_error + + let unlock_transactions () = + let open Lwt_result_syntax in + let*? worker = Lazy.force worker in + Worker.Queue.push_request_and_wait worker Request.Unlock_transactions + |> handle_request_error end diff --git a/etherlink/bin_node/lib_dev/tx_pool.mli b/etherlink/bin_node/lib_dev/tx_pool.mli index c5e6fd48fb3044b71db502a2d78f986ce4847e5b..47fe10f33c4fdc94f4b0dc22ed87477048e959c1 100644 --- a/etherlink/bin_node/lib_dev/tx_pool.mli +++ b/etherlink/bin_node/lib_dev/tx_pool.mli @@ -44,14 +44,6 @@ val pop_and_inject_transactions : unit -> unit tzresult Lwt.t complete *) val pop_and_inject_transactions_lazy : unit -> unit tzresult Lwt.t -(** [lock_transactions] locks the transactions in the pool, new transactions - can be added but nothing can be retrieved with {!pop_transactions}. *) -val lock_transactions : unit -> unit tzresult Lwt.t - -(** [unlock_transactions] unlocks the transactions if it was locked by - {!lock_transactions}. *) -val unlock_transactions : unit -> unit tzresult Lwt.t - (** [is_locked] checks if the pools is locked. *) val is_locked : unit -> bool tzresult Lwt.t diff --git a/etherlink/bin_node/lib_dev/tx_queue.ml b/etherlink/bin_node/lib_dev/tx_queue.ml index 5f56d2d1785690bf285dc2578c2c98306dbb022d..652151590600aa1f2aee14aa11e79b06dd723c94 100644 --- a/etherlink/bin_node/lib_dev/tx_queue.ml +++ b/etherlink/bin_node/lib_dev/tx_queue.ml @@ -1033,17 +1033,6 @@ let start ~config ~keep_alive () = let*! () = Tx_queue_events.is_ready () in return_unit -let clear () = - let open Lwt_result_syntax in - let*? w = Lazy.force worker in - Worker.Queue.push_request_and_wait w Clear |> handle_request_error - -let lock_transactions () = - bind_worker @@ fun w -> push_request w Lock_transactions - -let unlock_transactions () = - bind_worker @@ fun w -> push_request w Unlock_transactions - let is_locked () = let open Lwt_result_syntax in let*? worker = Lazy.force worker in @@ -1120,6 +1109,11 @@ module Tx_container = struct let*! () = Worker.shutdown w in return_unit + let clear () = + let open Lwt_result_syntax in + let*? w = Lazy.force worker in + Worker.Queue.push_request_and_wait w Clear |> handle_request_error + let tx_queue_tick ~evm_node_endpoint = bind_worker @@ fun w -> push_request w (Tick {evm_node_endpoint}) @@ -1131,4 +1125,10 @@ module Tx_container = struct loop () in loop () + + let lock_transactions () = + bind_worker @@ fun w -> push_request w Lock_transactions + + let unlock_transactions () = + bind_worker @@ fun w -> push_request w Unlock_transactions end diff --git a/etherlink/bin_node/lib_dev/tx_queue.mli b/etherlink/bin_node/lib_dev/tx_queue.mli index b94997c7446b043c2f9141a57d5b9660d88dbdd3..c3d38e3600050b3fd5762cba8c0ae77be1d84b0f 100644 --- a/etherlink/bin_node/lib_dev/tx_queue.mli +++ b/etherlink/bin_node/lib_dev/tx_queue.mli @@ -33,18 +33,6 @@ val start : unit -> unit tzresult Lwt.t -(** [clear ()] removes the tx queue data but keeps the allocated space *) -val clear : unit -> unit tzresult Lwt.t - -(** [lock_transactions] locks the transactions in the queue, new - transactions can be added but nothing can be retrieved with - {!pop_transactions}. *) -val lock_transactions : unit -> unit tzresult Lwt.t - -(** [unlock_transactions] unlocks the transactions if it was locked by - {!lock_transactions}. *) -val unlock_transactions : unit -> unit tzresult Lwt.t - (** [is_locked] checks if the queue is locked. *) val is_locked : unit -> bool tzresult Lwt.t diff --git a/etherlink/bin_node/main.ml b/etherlink/bin_node/main.ml index 369ee48d29852a3d984faff7e65015be6ae60369..2596bd0d48f6e0d092fc669700dc8c84319661f5 100644 --- a/etherlink/bin_node/main.ml +++ b/etherlink/bin_node/main.ml @@ -1499,6 +1499,7 @@ let init_from_rollup_node_command = ~omit_delayed_tx_events ~data_dir ~rollup_node_data_dir + ~tx_container:(module Evm_node_lib_dev.Tx_queue.Tx_container) ()) let dump_to_rlp_command = @@ -1709,7 +1710,12 @@ let patch_kernel_command = let configuration = {configuration with observer = None} in if force then let* _status = - Evm_context.start ~configuration ~data_dir ~store_perm:`Read_write () + Evm_context.start + ~configuration + ~data_dir + ~store_perm:`Read_write + ~tx_container:(module Evm_node_lib_dev.Tx_queue.Tx_container) + () in Evm_context.patch_kernel ?block_number (On_disk kernel_path) else @@ -2809,7 +2815,12 @@ let patch_state_command = to interact with an upstream EVM node. *) let configuration = {configuration with observer = None} in let* _status = - Evm_context.start ~configuration ~data_dir ~store_perm:`Read_write () + Evm_context.start + ~configuration + ~data_dir + ~store_perm:`Read_write + ~tx_container:(module Evm_node_lib_dev.Tx_queue.Tx_container) + () in Evm_context.patch_state ?block_number ~key ~value () else