From 8778793ebe59251d617f2eff56957b3e4a36ebdc Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Tue, 18 Mar 2025 10:07:01 +0100 Subject: [PATCH 1/3] Rollup node: fetch max_active_outbox_levels from protocol constants --- src/lib_smart_rollup/rollup_constants.ml | 14 +++-- .../node_context_loader.ml | 1 + .../test/helpers/helpers.ml | 57 +++++++++++-------- .../lib_sc_rollup_node/layer1_helpers.ml | 2 + .../lib_sc_rollup_node/layer1_helpers.ml | 2 + .../lib_sc_rollup_node/layer1_helpers.ml | 2 + .../lib_sc_rollup_node/layer1_helpers.ml | 2 + .../lib_sc_rollup_node/layer1_helpers.ml | 2 + .../lib_sc_rollup_node/layer1_helpers.ml | 2 + .../lib_sc_rollup_node/layer1_helpers.ml | 2 + 10 files changed, 59 insertions(+), 27 deletions(-) diff --git a/src/lib_smart_rollup/rollup_constants.ml b/src/lib_smart_rollup/rollup_constants.ml index 37d1b96bac6c..93f74b15501b 100644 --- a/src/lib_smart_rollup/rollup_constants.ml +++ b/src/lib_smart_rollup/rollup_constants.ml @@ -45,6 +45,7 @@ type sc_rollup_constants = { commitment_period_in_blocks : int; reveal_activation_level : reveal_activation_level option; max_number_of_stored_cemented_commitments : int; + max_active_outbox_levels : int; } type protocol_constants = { @@ -100,6 +101,7 @@ let encoding = commitment_period_in_blocks; reveal_activation_level; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; }; dal = { @@ -114,7 +116,8 @@ let encoding = ( challenge_window_in_blocks, commitment_period_in_blocks, reveal_activation_level, - max_number_of_stored_cemented_commitments ), + max_number_of_stored_cemented_commitments, + max_active_outbox_levels ), (feature_enable, attestation_lag, number_of_slots, cryptobox_parameters) )) (fun ( minimal_block_delay, @@ -122,7 +125,8 @@ let encoding = ( challenge_window_in_blocks, commitment_period_in_blocks, reveal_activation_level, - max_number_of_stored_cemented_commitments ), + max_number_of_stored_cemented_commitments, + max_active_outbox_levels ), ( feature_enable, attestation_lag, number_of_slots, @@ -136,6 +140,7 @@ let encoding = commitment_period_in_blocks; reveal_activation_level; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; }; dal = { @@ -150,11 +155,12 @@ let encoding = (req "delay_increment_per_round" int64) (req "sc_rollup" - (obj4 + (obj5 (req "challenge_window_in_blocks" int31) (req "commitment_period_in_blocks" int31) (opt "reveal_activation_level" reveal_activation_level_encoding) - (req "max_number_of_stored_cemented_commitments" int31))) + (req "max_number_of_stored_cemented_commitments" int31) + (req "max_active_outbox_levels" int31))) (req "dal" (obj4 diff --git a/src/lib_smart_rollup_node/node_context_loader.ml b/src/lib_smart_rollup_node/node_context_loader.ml index 7817449db7c0..cb6c5888f03a 100644 --- a/src/lib_smart_rollup_node/node_context_loader.ml +++ b/src/lib_smart_rollup_node/node_context_loader.ml @@ -459,6 +459,7 @@ module Internal_for_tests = struct dal_attested_slots_validity_lag = Int32.max_int; }; max_number_of_stored_cemented_commitments = 0; + max_active_outbox_levels = 0; }; dal = { diff --git a/src/lib_smart_rollup_node/test/helpers/helpers.ml b/src/lib_smart_rollup_node/test/helpers/helpers.ml index d48eba01faec..656f5a81ab27 100644 --- a/src/lib_smart_rollup_node/test/helpers/helpers.ml +++ b/src/lib_smart_rollup_node/test/helpers/helpers.ml @@ -42,38 +42,49 @@ let make_block_hash level messages = let default_constants = (* Same as default test constants for alpha excepted for commitment_period_in_block. *) + let open Tezos_protocol_alpha.Protocol.Alpha_context in + let Constants.Parametric. + { + minimal_block_delay; + delay_increment_per_round; + sc_rollup = + { + challenge_window_in_blocks; + reveal_activation_level; + max_number_of_stored_cemented_commitments; + max_active_outbox_levels; + _; + }; + dal = + { + feature_enable; + attestation_lag; + number_of_slots; + cryptobox_parameters; + _; + }; + _; + } = + Tezos_protocol_alpha_parameters.Default_parameters.constants_test + in Rollup_constants. { - minimal_block_delay = 1L; - delay_increment_per_round = 1L; + minimal_block_delay = Period.to_seconds minimal_block_delay; + delay_increment_per_round = Period.to_seconds delay_increment_per_round; sc_rollup = { - challenge_window_in_blocks = 4032; + challenge_window_in_blocks; commitment_period_in_blocks = 3; reveal_activation_level = Some - { - blake2B = 0l; - metadata = 0l; - dal_page = 0l; - dal_parameters = 0l; - dal_attested_slots_validity_lag = Int32.max_int; - }; - max_number_of_stored_cemented_commitments = 5; + (Tezos_smart_rollup_layer2_alpha.Sc_rollup_proto_types.Constants + .reveal_activation_level_to_octez + reveal_activation_level); + max_number_of_stored_cemented_commitments; + max_active_outbox_levels = Int32.to_int max_active_outbox_levels; }; dal = - { - feature_enable = false; - attestation_lag = 4; - number_of_slots = 16; - cryptobox_parameters = - { - redundancy_factor = 8; - page_size = 4096; - slot_size = 32768; - number_of_shards = 64; - }; - }; + {feature_enable; attestation_lag; number_of_slots; cryptobox_parameters}; } let add_l2_genesis_block (node_ctxt : _ Node_context.t) ~boot_sector = diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/layer1_helpers.ml b/src/proto_017_PtNairob/lib_sc_rollup_node/layer1_helpers.ml index cf87e038cf28..fc7cdd356308 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/layer1_helpers.ml +++ b/src/proto_017_PtNairob/lib_sc_rollup_node/layer1_helpers.ml @@ -135,6 +135,7 @@ let constants_of_parametric challenge_window_in_blocks; commitment_period_in_blocks; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; _; }; dal = @@ -158,6 +159,7 @@ let constants_of_parametric commitment_period_in_blocks; reveal_activation_level = None; max_number_of_stored_cemented_commitments; + max_active_outbox_levels = Int32.to_int max_active_outbox_levels; }; dal = {feature_enable; attestation_lag; number_of_slots; cryptobox_parameters}; diff --git a/src/proto_018_Proxford/lib_sc_rollup_node/layer1_helpers.ml b/src/proto_018_Proxford/lib_sc_rollup_node/layer1_helpers.ml index 69fbaad853c1..42537b7c44b2 100644 --- a/src/proto_018_Proxford/lib_sc_rollup_node/layer1_helpers.ml +++ b/src/proto_018_Proxford/lib_sc_rollup_node/layer1_helpers.ml @@ -136,6 +136,7 @@ let constants_of_parametric commitment_period_in_blocks; reveal_activation_level; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; _; }; dal = @@ -162,6 +163,7 @@ let constants_of_parametric (Sc_rollup_proto_types.Constants.reveal_activation_level_to_octez reveal_activation_level); max_number_of_stored_cemented_commitments; + max_active_outbox_levels = Int32.to_int max_active_outbox_levels; }; dal = {feature_enable; attestation_lag; number_of_slots; cryptobox_parameters}; diff --git a/src/proto_019_PtParisB/lib_sc_rollup_node/layer1_helpers.ml b/src/proto_019_PtParisB/lib_sc_rollup_node/layer1_helpers.ml index 69fbaad853c1..42537b7c44b2 100644 --- a/src/proto_019_PtParisB/lib_sc_rollup_node/layer1_helpers.ml +++ b/src/proto_019_PtParisB/lib_sc_rollup_node/layer1_helpers.ml @@ -136,6 +136,7 @@ let constants_of_parametric commitment_period_in_blocks; reveal_activation_level; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; _; }; dal = @@ -162,6 +163,7 @@ let constants_of_parametric (Sc_rollup_proto_types.Constants.reveal_activation_level_to_octez reveal_activation_level); max_number_of_stored_cemented_commitments; + max_active_outbox_levels = Int32.to_int max_active_outbox_levels; }; dal = {feature_enable; attestation_lag; number_of_slots; cryptobox_parameters}; diff --git a/src/proto_020_PsParisC/lib_sc_rollup_node/layer1_helpers.ml b/src/proto_020_PsParisC/lib_sc_rollup_node/layer1_helpers.ml index be34d0530273..3781c46aac99 100644 --- a/src/proto_020_PsParisC/lib_sc_rollup_node/layer1_helpers.ml +++ b/src/proto_020_PsParisC/lib_sc_rollup_node/layer1_helpers.ml @@ -136,6 +136,7 @@ let constants_of_parametric commitment_period_in_blocks; reveal_activation_level; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; _; }; dal = @@ -162,6 +163,7 @@ let constants_of_parametric (Sc_rollup_proto_types.Constants.reveal_activation_level_to_octez reveal_activation_level); max_number_of_stored_cemented_commitments; + max_active_outbox_levels = Int32.to_int max_active_outbox_levels; }; dal = {feature_enable; attestation_lag; number_of_slots; cryptobox_parameters}; diff --git a/src/proto_021_PsQuebec/lib_sc_rollup_node/layer1_helpers.ml b/src/proto_021_PsQuebec/lib_sc_rollup_node/layer1_helpers.ml index 51a92aaf6971..2a1a85e1d047 100644 --- a/src/proto_021_PsQuebec/lib_sc_rollup_node/layer1_helpers.ml +++ b/src/proto_021_PsQuebec/lib_sc_rollup_node/layer1_helpers.ml @@ -136,6 +136,7 @@ let constants_of_parametric commitment_period_in_blocks; reveal_activation_level; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; _; }; dal = @@ -162,6 +163,7 @@ let constants_of_parametric (Sc_rollup_proto_types.Constants.reveal_activation_level_to_octez reveal_activation_level); max_number_of_stored_cemented_commitments; + max_active_outbox_levels = Int32.to_int max_active_outbox_levels; }; dal = {feature_enable; attestation_lag; number_of_slots; cryptobox_parameters}; diff --git a/src/proto_022_PsRiotum/lib_sc_rollup_node/layer1_helpers.ml b/src/proto_022_PsRiotum/lib_sc_rollup_node/layer1_helpers.ml index 51a92aaf6971..2a1a85e1d047 100644 --- a/src/proto_022_PsRiotum/lib_sc_rollup_node/layer1_helpers.ml +++ b/src/proto_022_PsRiotum/lib_sc_rollup_node/layer1_helpers.ml @@ -136,6 +136,7 @@ let constants_of_parametric commitment_period_in_blocks; reveal_activation_level; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; _; }; dal = @@ -162,6 +163,7 @@ let constants_of_parametric (Sc_rollup_proto_types.Constants.reveal_activation_level_to_octez reveal_activation_level); max_number_of_stored_cemented_commitments; + max_active_outbox_levels = Int32.to_int max_active_outbox_levels; }; dal = {feature_enable; attestation_lag; number_of_slots; cryptobox_parameters}; diff --git a/src/proto_alpha/lib_sc_rollup_node/layer1_helpers.ml b/src/proto_alpha/lib_sc_rollup_node/layer1_helpers.ml index 3fce20a4ca9d..0c642f498080 100644 --- a/src/proto_alpha/lib_sc_rollup_node/layer1_helpers.ml +++ b/src/proto_alpha/lib_sc_rollup_node/layer1_helpers.ml @@ -136,6 +136,7 @@ let constants_of_parametric commitment_period_in_blocks; reveal_activation_level; max_number_of_stored_cemented_commitments; + max_active_outbox_levels; _; }; dal = @@ -162,6 +163,7 @@ let constants_of_parametric (Sc_rollup_proto_types.Constants.reveal_activation_level_to_octez reveal_activation_level); max_number_of_stored_cemented_commitments; + max_active_outbox_levels = Int32.to_int max_active_outbox_levels; }; dal = {feature_enable; attestation_lag; number_of_slots; cryptobox_parameters}; -- GitLab From e231c43eeb445de127489a2eb83c3e24bd5ea446 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Tue, 18 Mar 2025 10:11:58 +0100 Subject: [PATCH 2/3] Rollup node: use correct constant to identify active/lost outbox msgs --- src/lib_smart_rollup_node/node_context.ml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lib_smart_rollup_node/node_context.ml b/src/lib_smart_rollup_node/node_context.ml index 43386829bac5..2931af12b771 100644 --- a/src/lib_smart_rollup_node/node_context.ml +++ b/src/lib_smart_rollup_node/node_context.ml @@ -672,11 +672,10 @@ let get_executable_pending_outbox_messages {store; lcc; current_protocol; _} = let max_level = (Reference.get lcc).level in let constants = (Reference.get current_protocol).constants.sc_rollup in let min_level = - Int32.sub - max_level - (Int32.of_int - (constants.max_number_of_stored_cemented_commitments - * constants.commitment_period_in_blocks)) + Int32.sub max_level (Int32.of_int constants.max_active_outbox_levels) + |> Int32.succ + (* Protocol uses strict inequality, see function [validate_outbox_level] in + src/proto_alpha/lib_protocol/sc_rollup_operations.ml. *) in Store.Outbox_messages.pending store ~min_level ~max_level -- GitLab From c240e596f341131ad4411224dc42d11ab1b3111d Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Tue, 18 Mar 2025 10:14:32 +0100 Subject: [PATCH 3/3] Doc: changelog for fix --- CHANGES.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 1659d94fdb2e..4efc744afa1f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -248,6 +248,13 @@ Smart Rollup node - Support ``remote`` signer scheme and check remote signer available on startup. (MR :gl:`!16651`) +- Add a new RPC ``/local/outbox/pending`` to fetch all known outbox messages + with their status. (MR :gl:`!16831`) + + +- Use correct constant to determine executable or lost outbox messages for RPCs + ``/local/outbox/pending`` and ``/local/outbox/pending/executable``. (MR + :gl:`!17279`) Smart Rollup WASM Debugger -------------------------- -- GitLab