diff --git a/src/lib_smart_rollup_node/node_context.ml b/src/lib_smart_rollup_node/node_context.ml index fcff11c8507b17236f993ebf23fef2f92860b6bc..43386829bac5d192b8c376cccdb916e307e32528 100644 --- a/src/lib_smart_rollup_node/node_context.ml +++ b/src/lib_smart_rollup_node/node_context.ml @@ -858,6 +858,25 @@ let save_protocol_info node_ctxt (block : Layer1.header) in Store.Protocols.store node_ctxt.store proto_info +let save_protocols_from_l1 {cctxt; store; _} = + let open Lwt_result_syntax in + let open Tezos_shell_services.Chain_services in + let*! protocols = Protocols.list cctxt () in + match protocols with + | Error _ -> + Format.eprintf + "Warning: did not fetch protocol activation levels from L1 node" ; + return_unit + | Ok protocols -> + List.iter_es + (fun {protocol; proto_level; activation_block = _block, level} -> + let proto_info = + Store.Protocols. + {protocol; proto_level; level = Activation_level level} + in + Store.Protocols.store store proto_info) + protocols + let get_slot_header {store; _} ~published_in_block_hash slot_index = Error.trace_lwt_result_with "Could not retrieve slot header for slot index %d published in block %a" diff --git a/src/lib_smart_rollup_node/node_context.mli b/src/lib_smart_rollup_node/node_context.mli index f0b54e31548c46bda8fb2c2b9c2c7b15c842344e..b22b510f54af00cc04dbf53fef22892a2926b8ad 100644 --- a/src/lib_smart_rollup_node/node_context.mli +++ b/src/lib_smart_rollup_node/node_context.mli @@ -504,6 +504,9 @@ val protocol_activation_level : val save_protocol_info : rw -> Layer1.header -> predecessor:Layer1.header -> unit tzresult Lwt.t +(** Save the protocol activation levels from L1 if possible. *) +val save_protocols_from_l1 : rw -> unit tzresult Lwt.t + (** {3 DAL} *) (** [get_slot_header t ~published_in_block_hash slot_index] returns the slot diff --git a/src/lib_smart_rollup_node/rollup_node_daemon.ml b/src/lib_smart_rollup_node/rollup_node_daemon.ml index b94bf7af17256196001d47829863141bcf4258c7..0b32106d5390363abde4cc40b443761ad3b6fd9b 100644 --- a/src/lib_smart_rollup_node/rollup_node_daemon.ml +++ b/src/lib_smart_rollup_node/rollup_node_daemon.ml @@ -906,5 +906,6 @@ let run ~data_dir ~irmin_cache_size ?log_kernel_debug_file in let state = {node_ctxt; rpc_server; configuration; plugin} in let* () = check_operator_balance state in + let* () = Node_context.save_protocols_from_l1 node_ctxt in let (_ : Lwt_exit.clean_up_callback_id) = install_finalizer state in run state