diff --git a/src/proto_alpha/bin_sc_rollup_node/inbox.ml b/src/proto_alpha/bin_sc_rollup_node/inbox.ml index 278f776f450e866799443bb1fbbe7de78335a1c7..997f04f8f41ea41cf78374100148d6b4bfb9b6c5 100644 --- a/src/proto_alpha/bin_sc_rollup_node/inbox.ml +++ b/src/proto_alpha/bin_sc_rollup_node/inbox.ml @@ -145,8 +145,14 @@ let get_messages Node_context.{l1_ctxt; _} head = in let eol = Sc_rollup.Inbox_message.Internal End_of_level in let messages = List.rev (eol :: rev_messages) in + let ({timestamp; predecessor; _} : Block_header.shell_header) = + block.header.shell + in let sol = Sc_rollup.Inbox_message.Internal Start_of_level in - return (sol :: messages) + let info_per_level = + Sc_rollup.Inbox_message.Internal (Info_per_level {timestamp; predecessor}) + in + return (sol :: info_per_level :: messages) let same_inbox_as_layer_1 node_ctxt head_hash inbox = let open Lwt_result_syntax in diff --git a/src/proto_alpha/bin_sc_rollup_node/simulation.ml b/src/proto_alpha/bin_sc_rollup_node/simulation.ml index e092917bb390d3cf882350993324210d0e3201ec..e0b7fe4845deb17e9f985c517095bb3ead1fe1fc 100644 --- a/src/proto_alpha/bin_sc_rollup_node/simulation.ml +++ b/src/proto_alpha/bin_sc_rollup_node/simulation.ml @@ -34,6 +34,11 @@ module type S = sig type level_position = Start | Middle | End + type info_per_level = { + timestamp : Timestamp.time; + predecessor : Tezos_crypto.Block_hash.t; + } + type t = { ctxt : Context.ro; inbox_level : Raw_level.t; @@ -42,6 +47,7 @@ module type S = sig nb_messages_period : int64; nb_messages_inbox : int; level_position : level_position; + info_per_level : info_per_level; } val start_simulation : @@ -67,6 +73,11 @@ module Make (Interpreter : Interpreter.S) : type level_position = Start | Middle | End + type info_per_level = { + timestamp : Timestamp.time; + predecessor : Tezos_crypto.Block_hash.t; + } + type t = { ctxt : Context.ro; inbox_level : Raw_level.t; @@ -75,8 +86,23 @@ module Make (Interpreter : Interpreter.S) : nb_messages_period : int64; nb_messages_inbox : int; level_position : level_position; + info_per_level : info_per_level; } + let simulate_info_per_level (node_ctxt : [`Read] Node_context.t) hash = + let open Lwt_result_syntax in + let* block = Layer1.fetch_tezos_block node_ctxt.l1_ctxt hash in + let ({timestamp; predecessor; _} : Block_header.shell_header) = + block.header.shell + in + let Constants.Parametric.{minimal_block_delay; _} = + node_ctxt.protocol_constants.Constants.parametric + in + let*? timestamp = + Environment.wrap_tzresult @@ Timestamp.(timestamp +? minimal_block_delay) + in + return {timestamp; predecessor} + let start_simulation node_ctxt ~reveal_map (Layer1.{hash; level} as head) = let open Lwt_result_syntax in let*? level = Environment.wrap_tzresult @@ Raw_level.of_int32 level in @@ -94,19 +120,21 @@ module Make (Interpreter : Interpreter.S) : else Node_context.checkout_context node_ctxt hash in let* inbox = Inbox.inbox_of_head node_ctxt head in - let+ ctxt, state = Interpreter.state_of_head node_ctxt ctxt head in + let* ctxt, state = Interpreter.state_of_head node_ctxt ctxt head in let nb_messages_period = Sc_rollup.Inbox.number_of_messages_during_commitment_period inbox in + let+ info_per_level = simulate_info_per_level node_ctxt hash in let inbox_level = Raw_level.succ level in { ctxt; - state; inbox_level; + state; reveal_map; nb_messages_period; nb_messages_inbox = 0; level_position = Start; + info_per_level; } let simulate_messages_no_checks (node_ctxt : Node_context.ro) @@ -118,6 +146,7 @@ module Make (Interpreter : Interpreter.S) : nb_messages_period; nb_messages_inbox; level_position = _; + info_per_level = _; } as sim) messages = let open Lwt_result_syntax in (* Build new state *) @@ -158,7 +187,11 @@ module Make (Interpreter : Interpreter.S) : in let messages = if sim.level_position = Start then - Sc_rollup.Inbox_message.Internal Start_of_level :: messages + let {timestamp; predecessor} = sim.info_per_level in + let open Sc_rollup.Inbox_message in + Internal Start_of_level + :: Internal (Info_per_level {timestamp; predecessor}) + :: messages else messages in let max_messages = diff --git a/src/proto_alpha/bin_sc_rollup_node/simulation.mli b/src/proto_alpha/bin_sc_rollup_node/simulation.mli index 9d25bceb4ebd352856a3e5eab88f2e613de3e216..1f95fe0c57678a49550e0a236e739a31956973d0 100644 --- a/src/proto_alpha/bin_sc_rollup_node/simulation.mli +++ b/src/proto_alpha/bin_sc_rollup_node/simulation.mli @@ -33,6 +33,11 @@ module type S = sig type level_position = Start | Middle | End + type info_per_level = { + timestamp : Timestamp.time; + predecessor : Tezos_crypto.Block_hash.t; + } + (** Type of the state for a simulation. *) type t = { ctxt : Context.ro; @@ -42,6 +47,7 @@ module type S = sig nb_messages_period : int64; nb_messages_inbox : int; level_position : level_position; + info_per_level : info_per_level; } (** [start_simulation node_ctxt reveal_source block] starts a new simulation diff --git a/src/proto_alpha/bin_wasm_repl/messages.ml b/src/proto_alpha/bin_wasm_repl/messages.ml index 4818f88c71f4d316e3e9f71925d646d13a9cd22e..2f7ba558bcdb69a17a1b070855d5e8ea5354bfce 100644 --- a/src/proto_alpha/bin_wasm_repl/messages.ml +++ b/src/proto_alpha/bin_wasm_repl/messages.ml @@ -125,6 +125,14 @@ let pp_input ppf bytes = Data_encoding.Json.pp ppf json | Internal Start_of_level -> Format.fprintf ppf "Start_of_level" | Internal End_of_level -> Format.fprintf ppf "End_of_level" + | Internal (Info_per_level {timestamp; predecessor}) -> + Format.fprintf + ppf + "Info_per_level {timestamp = %a; predecessor = %a}" + Timestamp.pp + timestamp + Tezos_crypto.Block_hash.pp + predecessor | External msg -> Format.fprintf ppf "%a" Hex.pp (Hex.of_string msg) in match diff --git a/src/proto_alpha/lib_benchmarks_proto/storage_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/storage_benchmarks.ml index 968c64240a5e6f271a925321eabe80ab59f3764d..cffa19ba6874793e0628dfef84832e3febe9d0db 100644 --- a/src/proto_alpha/lib_benchmarks_proto/storage_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/storage_benchmarks.ml @@ -72,6 +72,7 @@ let default_raw_context () = context ~level:0l ~timestamp:(Time.Protocol.of_seconds 1643125688L) + ~predecessor:Tezos_crypto.Block_hash.zero ~typecheck in Lwt.return @@ Environment.wrap_tzresult e diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 7b43a2d5907aa9f01847cb102d2b9bc0f2c4a4ea..67ce9fefef12bbd686f5e0e3737189cf41d4895a 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -3166,6 +3166,7 @@ module Sc_rollup : sig } | Start_of_level | End_of_level + | Info_per_level of {timestamp : Time.t; predecessor : Block_hash.t} type t = Internal of internal_inbox_message | External of string @@ -3453,6 +3454,9 @@ module Sc_rollup : sig val add_end_of_level : context -> (t * Z.t * context) tzresult Lwt.t + val add_info_per_level : + context -> Time.t -> Block_hash.t -> (t * Z.t * context) tzresult Lwt.t + val get_inbox : context -> (t * context) tzresult Lwt.t end @@ -5043,6 +5047,7 @@ val prepare_first_block : ((Script.t * Lazy_storage.diffs option) * context) tzresult Lwt.t) -> level:Int32.t -> timestamp:Time.t -> + predecessor:Block_hash.t -> context tzresult Lwt.t (** Create an [Alpha_context.t] from an untyped context. *) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 8cfcca75fe654332a4df5b3b84cac4f072c78bc3..b8a206cb4fbefae6a0a7184aa6316f9a4fa92f5d 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -2530,6 +2530,12 @@ let begin_application ctxt chain_id ~migration_balance_updates apply_liquidity_baking_subsidy ctxt ~toggle_vote in let* _inbox, _diff, ctxt = Sc_rollup.Inbox.add_start_of_level ctxt in + let* _inbox, _diff, ctxt = + Sc_rollup.Inbox.add_info_per_level + ctxt + block_header.shell.timestamp + block_header.shell.predecessor + in let mode = Application { @@ -2585,6 +2591,9 @@ let begin_full_construction ctxt chain_id ~migration_balance_updates apply_liquidity_baking_subsidy ctxt ~toggle_vote in let* _inbox, _diff, ctxt = Sc_rollup.Inbox.add_start_of_level ctxt in + let* _inbox, _diff, ctxt = + Sc_rollup.Inbox.add_info_per_level ctxt timestamp predecessor_hash + in let mode = Full_construction { @@ -2612,14 +2621,28 @@ let begin_full_construction ctxt chain_id ~migration_balance_updates } let begin_partial_construction ctxt chain_id ~migration_balance_updates - ~migration_operation_results ~predecessor_level - ~(predecessor_fitness : Fitness.raw) : application_state tzresult Lwt.t = + ~migration_operation_results ~predecessor_level ~predecessor_timestamp + ~predecessor_hash ~(predecessor_fitness : Fitness.raw) : + application_state tzresult Lwt.t = let open Lwt_result_syntax in let toggle_vote = Liquidity_baking.LB_pass in let* ctxt, liquidity_baking_operations_results, liquidity_baking_toggle_ema = apply_liquidity_baking_subsidy ctxt ~toggle_vote in let* _inbox, _diff, ctxt = Sc_rollup.Inbox.add_start_of_level ctxt in + let* _inbox, _diff, ctxt = + (* The mode [Partial_construction] is used in simulation. We try to + put a realistic value of the block's timestamp. Even though, it should + not have an impact on the simulation of the following smart rollup + operations. + *) + let minimal_block_delay = Constants.minimal_block_delay ctxt in + let*? timestamp = + Timestamp.(predecessor_timestamp +? minimal_block_delay) + in + let predecessor = predecessor_hash in + Sc_rollup.Inbox.add_info_per_level ctxt timestamp predecessor + in let mode = Partial_construction {predecessor_level; predecessor_fitness} in return { diff --git a/src/proto_alpha/lib_protocol/apply.mli b/src/proto_alpha/lib_protocol/apply.mli index dc3f212ae160c3d8c982eb7bbe3076019a6c8e55..eb6b3a28440099c6e537d507278ede31ca4ae441 100644 --- a/src/proto_alpha/lib_protocol/apply.mli +++ b/src/proto_alpha/lib_protocol/apply.mli @@ -112,6 +112,8 @@ val begin_partial_construction : migration_balance_updates:Receipt.balance_updates -> migration_operation_results:Migration.origination_result list -> predecessor_level:Raw_level.t -> + predecessor_timestamp:Timestamp.t -> + predecessor_hash:Block_hash.t -> predecessor_fitness:Fitness.raw -> application_state tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/init_storage.ml b/src/proto_alpha/lib_protocol/init_storage.ml index 7414ef6b5d63ab1bcb8a11a7ce1428826506d83a..f54a68ba42c837752620fac977484b8d905df365 100644 --- a/src/proto_alpha/lib_protocol/init_storage.ml +++ b/src/proto_alpha/lib_protocol/init_storage.ml @@ -103,7 +103,8 @@ let patch_script (address, hash, patched_code) ctxt = address ; return ctxt -let prepare_first_block _chain_id ctxt ~typecheck ~level ~timestamp = +let prepare_first_block _chain_id ctxt ~typecheck ~level ~timestamp ~predecessor + = Raw_context.prepare_first_block ~level ~timestamp ctxt >>=? fun (previous_protocol, ctxt) -> let parametric = Raw_context.constants ctxt in @@ -154,7 +155,7 @@ let prepare_first_block _chain_id ctxt ~typecheck ~level ~timestamp = >>=? fun (ctxt, operation_results) -> Storage.Pending_migration.Operation_results.init ctxt operation_results >>=? fun ctxt -> - Sc_rollup_inbox_storage.init ctxt >>=? fun ctxt -> + Sc_rollup_inbox_storage.init ~predecessor ~timestamp ctxt >>=? fun ctxt -> return ( ctxt, commitments_balance_updates @ bootstrap_balance_updates @@ -167,7 +168,8 @@ let prepare_first_block _chain_id ctxt ~typecheck ~level ~timestamp = Raw_level_repr.of_int32 level >>?= fun level -> Storage.Tenderbake.First_level_of_protocol.update ctxt level >>=? fun ctxt -> - Sc_rollup_inbox_storage.init ctxt >>=? fun ctxt -> return (ctxt, [])) + Sc_rollup_inbox_storage.init ~predecessor ~timestamp ctxt >>=? fun ctxt -> + return (ctxt, [])) >>=? fun (ctxt, balance_updates) -> List.fold_right_es patch_script Legacy_script_patches.addresses_to_patch ctxt >>=? fun ctxt -> diff --git a/src/proto_alpha/lib_protocol/init_storage.mli b/src/proto_alpha/lib_protocol/init_storage.mli index bb803694bc090b2157a14a754fc7e7b9eb25b38d..9a8a079a17e9b2ce35f42abd4d35f4fd0a78784f 100644 --- a/src/proto_alpha/lib_protocol/init_storage.mli +++ b/src/proto_alpha/lib_protocol/init_storage.mli @@ -42,6 +42,7 @@ val prepare_first_block : Lwt.t) -> level:int32 -> timestamp:Time.t -> + predecessor:Block_hash.t -> (Raw_context.t, Error_monad.error Error_monad.trace) Pervasives.result Lwt.t val prepare : diff --git a/src/proto_alpha/lib_protocol/main.ml b/src/proto_alpha/lib_protocol/main.ml index 6828b8e424c87036a9b5f80246bb8cf7da248b9c..96be7e48fbf1f255ef6110be4cff0aae9530c374 100644 --- a/src/proto_alpha/lib_protocol/main.ml +++ b/src/proto_alpha/lib_protocol/main.ml @@ -299,13 +299,15 @@ let begin_application ctxt chain_id mode ~predecessor = ~predecessor_hash ~timestamp block_header_data.contents - | Partial_construction _ -> + | Partial_construction {predecessor_hash; _} -> Apply.begin_partial_construction ctxt chain_id ~migration_balance_updates ~migration_operation_results ~predecessor_level:predecessor_raw_level + ~predecessor_timestamp + ~predecessor_hash ~predecessor_fitness let apply_operation = Apply.apply_operation @@ -318,6 +320,7 @@ let compare_operations (oph1, op1) (oph2, op2) = let init chain_id ctxt block_header = let level = block_header.Block_header.level in let timestamp = block_header.timestamp in + let predecessor = block_header.predecessor in let typecheck (ctxt : Alpha_context.context) (script : Alpha_context.Script.t) = let allow_forged_in_storage = @@ -358,7 +361,13 @@ let init chain_id ctxt block_header = ~round:Alpha_context.Round.zero ~predecessor_round:Alpha_context.Round.zero in - Alpha_context.prepare_first_block chain_id ~typecheck ~level ~timestamp ctxt + Alpha_context.prepare_first_block + chain_id + ~typecheck + ~level + ~timestamp + ~predecessor + ctxt >>=? fun ctxt -> let cache_nonce = Alpha_context.Cache.cache_nonce_from_block_header diff --git a/src/proto_alpha/lib_protocol/sc_rollup_arith.ml b/src/proto_alpha/lib_protocol/sc_rollup_arith.ml index 3d49179e2c3803231db64faa3d568468a6545900..42ca2e4543646ffb59e58cf533874e237a9a8882 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_arith.ml +++ b/src/proto_alpha/lib_protocol/sc_rollup_arith.ml @@ -968,6 +968,9 @@ module Make (Context : P) : | Ok (Internal End_of_level) -> let* () = incr_internal_message_counter in return None + | Ok (Internal (Info_per_level _)) -> + let* () = incr_internal_message_counter in + return None in match payload with | Some payload -> diff --git a/src/proto_alpha/lib_protocol/sc_rollup_costs.ml b/src/proto_alpha/lib_protocol/sc_rollup_costs.ml index a3e59a2d06526143c40f51572a897409c40c47bc..4f538e4fedaba0f14c3c82b363c5f73c6b587f91 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_costs.ml +++ b/src/proto_alpha/lib_protocol/sc_rollup_costs.ml @@ -120,6 +120,7 @@ let cost_serialize_internal_inbox_message + Constants.cost_decoding_key_hash_optimized) | Start_of_level -> Saturation_repr.zero | End_of_level -> Saturation_repr.zero + | Info_per_level _ -> Saturation_repr.zero (** TODO: #3212 Confirm gas cost model. diff --git a/src/proto_alpha/lib_protocol/sc_rollup_inbox_message_repr.ml b/src/proto_alpha/lib_protocol/sc_rollup_inbox_message_repr.ml index 54e2c73c2b1d23e4643e2596c9a0a7459ed558a6..b5b9b35a2decb86322e766e0d4099cc0f122a307 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_inbox_message_repr.ml +++ b/src/proto_alpha/lib_protocol/sc_rollup_inbox_message_repr.ml @@ -63,6 +63,7 @@ type internal_inbox_message = } | Start_of_level | End_of_level + | Info_per_level of {timestamp : Time.t; predecessor : Block_hash.t} let internal_inbox_message_encoding = let open Data_encoding in @@ -96,6 +97,19 @@ let internal_inbox_message_encoding = (obj1 (kind "end_of_level")) (function End_of_level -> Some () | _ -> None) (fun () -> End_of_level); + case + (Tag 3) + ~title:"Info_per_level" + (obj3 + (kind "info_per_level") + (req "timestamp" Time.encoding) + (req "predecessor" Block_hash.encoding)) + (function + | Info_per_level {timestamp; predecessor} -> + Some ((), timestamp, predecessor) + | _ -> None) + (fun ((), timestamp, predecessor) -> + Info_per_level {timestamp; predecessor}); ] type t = Internal of internal_inbox_message | External of string diff --git a/src/proto_alpha/lib_protocol/sc_rollup_inbox_message_repr.mli b/src/proto_alpha/lib_protocol/sc_rollup_inbox_message_repr.mli index 4c7b273440929fad3dfae512aa339691ca417ad0..4a0914557d7868e42cb4b7ae62f07595e85e370d 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_inbox_message_repr.mli +++ b/src/proto_alpha/lib_protocol/sc_rollup_inbox_message_repr.mli @@ -61,6 +61,12 @@ type internal_inbox_message = | Start_of_level (** Internal message put at the beginning of each inbox's level. *) | End_of_level (** Internal message put at the end of each inbox's level. *) + | Info_per_level of { + timestamp : Time.t; + (** Timestamp of the block where this message is pushed. *) + predecessor : Block_hash.t; + (** Predecessor of the block this message is pushed. *) + } (** A type representing messages from Layer 1 to Layer 2. Internal ones are originated from Layer 1 smart-contracts and external ones are messages from diff --git a/src/proto_alpha/lib_protocol/sc_rollup_inbox_storage.ml b/src/proto_alpha/lib_protocol/sc_rollup_inbox_storage.ml index acd794758972b35b5cd55b7e8269643826c26ccd..d96f053ba78dd732b1393d3816029a3c5eafe974 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_inbox_storage.ml +++ b/src/proto_alpha/lib_protocol/sc_rollup_inbox_storage.ml @@ -173,11 +173,17 @@ let add_start_of_level ctxt = let add_end_of_level ctxt = add_internal_message ctxt Sc_rollup_inbox_message_repr.End_of_level -let init ctxt = +let add_info_per_level ctxt timestamp predecessor = + add_internal_message + ctxt + (Sc_rollup_inbox_message_repr.Info_per_level {timestamp; predecessor}) + +let init ~timestamp ~predecessor ctxt = let open Lwt_result_syntax in let ({level; _} : Level_repr.t) = Raw_context.current_level ctxt in let*! inbox = Sc_rollup_inbox_repr.empty (Raw_context.recover ctxt) level in let* ctxt = Store.Inbox.init ctxt inbox in let* _inbox, _diff, ctxt = add_start_of_level ctxt in + let* _inbox, _diff, ctxt = add_info_per_level ctxt timestamp predecessor in let* _inbox, _diff, ctxt = add_end_of_level ctxt in return ctxt diff --git a/src/proto_alpha/lib_protocol/sc_rollup_inbox_storage.mli b/src/proto_alpha/lib_protocol/sc_rollup_inbox_storage.mli index c807404d3d00ad6c501145dd37a308e6b4f2cf8a..a32bbe9f269299adb25624fd86872dc88fc62fe5 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_inbox_storage.mli +++ b/src/proto_alpha/lib_protocol/sc_rollup_inbox_storage.mli @@ -60,20 +60,27 @@ val add_deposit : (Sc_rollup_inbox_repr.t * Z.t * Raw_context.t) tzresult Lwt.t (** Initialize the inbox in the storage at protocol initialization. *) -val init : Raw_context.t -> Raw_context.t tzresult Lwt.t +val init : + timestamp:Time.t -> + predecessor:Block_hash.t -> + Raw_context.t -> + Raw_context.t tzresult Lwt.t -(** Push a [Start_of_level] internal inbox message in the inbox using - {!add_internal_message}. -*) +(** Push a [Start_of_level] internal inbox message in the inbox. *) val add_start_of_level : Raw_context.t -> (Sc_rollup_inbox_repr.t * Z.t * Raw_context.t) tzresult Lwt.t -(** Push a [End_of_level] internal inbox message in the inbox using - {!add_internal_message}. -*) +(** Push a [End_of_level] internal inbox message in the inbox. *) val add_end_of_level : Raw_context.t -> (Sc_rollup_inbox_repr.t * Z.t * Raw_context.t) tzresult Lwt.t +(** Push a [Info_per_level] internal inbox message in the inbox. *) +val add_info_per_level : + Raw_context.t -> + Time.t -> + Block_hash.t -> + (Sc_rollup_inbox_repr.t * Z.t * Raw_context.t) tzresult Lwt.t + (**/**) module Internal_for_tests : sig diff --git a/src/proto_alpha/lib_protocol/test/helpers/block.ml b/src/proto_alpha/lib_protocol/test/helpers/block.ml index 9db235adbebc79b476389ef9defb39d125d11ad4..dab412eac584fa82743b34c0a581d325d4f5985d 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/block.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/block.ml @@ -363,6 +363,7 @@ let initial_alpha_context ?(commitments = []) constants >>= fun ctxt -> let level = block_header.level in let timestamp = block_header.timestamp in + let predecessor = block_header.predecessor in let typecheck (ctxt : Alpha_context.context) (script : Alpha_context.Script.t) = let allow_forged_in_storage = @@ -397,6 +398,7 @@ let initial_alpha_context ?(commitments = []) constants ~typecheck ~level ~timestamp + ~predecessor Tezos_crypto.Chain_id.zero ctxt >|= Environment.wrap_tzresult diff --git a/src/proto_alpha/lib_protocol/test/helpers/context.ml b/src/proto_alpha/lib_protocol/test/helpers/context.ml index c15c0b74ee2c3544b0160f91ab7ebf74d10a61b6..efcf8950a42c396a8a0ea7ec596d1a207d5f2141 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/context.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/context.ml @@ -595,5 +595,6 @@ let default_raw_context () = context ~level:0l ~timestamp:(Time.Protocol.of_seconds 1643125688L) + ~predecessor:Tezos_crypto.Block_hash.zero ~typecheck >>= fun e -> Lwt.return @@ Environment.wrap_tzresult e diff --git a/src/proto_alpha/lib_protocol/test/helpers/sc_rollup_helpers.ml b/src/proto_alpha/lib_protocol/test/helpers/sc_rollup_helpers.ml index 3b3dbdedb5775ac11a00f6ae8b55254946f30809..aadadc9c089b0edb3f09b5e62ce103891962abb9 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/sc_rollup_helpers.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/sc_rollup_helpers.ml @@ -207,6 +207,12 @@ let make_eol ~inbox_level ~message_counter = let payload = make_internal_inbox_message End_of_level in make_input ~inbox_level ~message_counter payload +let make_info_per_level ~inbox_level ~timestamp ~predecessor = + let payload = + make_internal_inbox_message (Info_per_level {timestamp; predecessor}) + in + make_input ~inbox_level ~message_counter:Z.one payload + (** Message is the combination of a [message] and its associated [input]. [message] is used to: @@ -219,7 +225,11 @@ let make_eol ~inbox_level ~message_counter = *) type message = { input : Sc_rollup.input; - message : [`SOL | `Message of string | `EOL]; + message : + [ `SOL + | `Info_per_level of Timestamp.t * Tezos_crypto.Block_hash.t + | `Message of string + | `EOL ]; } let pp_input fmt (input : Sc_rollup.input) = @@ -239,15 +249,34 @@ let pp_message fmt {input; message} = "{ input = %a; message = %S }" pp_input input - (match message with `SOL -> "SOL" | `Message msg -> msg | `EOL -> "EOL") + (match message with + | `SOL -> "SOL" + | `Info_per_level (timestamp, block_hash) -> + Format.asprintf + "Info_per_level (%s, %a)" + (Timestamp.to_notation timestamp) + Tezos_crypto.Block_hash.pp + block_hash + | `Message msg -> msg + | `EOL -> "EOL") (** An empty inbox level is a SOL and EOL. *) -let make_empty_level inbox_level = +let make_empty_level (timestamp, predecessor) inbox_level = let sol = {input = make_sol ~inbox_level; message = `SOL} in + let info_per_level = + { + input = make_info_per_level ~inbox_level ~predecessor ~timestamp; + message = `Info_per_level (timestamp, predecessor); + } + in + let eol = - {input = make_eol ~inbox_level ~message_counter:Z.one; message = `EOL} + { + input = make_eol ~inbox_level ~message_counter:(Z.of_int 2); + message = `EOL; + } in - (inbox_level, [sol; eol]) + (inbox_level, [sol; info_per_level; eol]) (** Creates inputs based on string messages. *) let strs_to_inputs inbox_level messages = @@ -255,19 +284,26 @@ let strs_to_inputs inbox_level messages = (fun (acc, message_counter) message -> let input = make_external_input ~inbox_level ~message_counter message in ({input; message = `Message message} :: acc, Z.succ message_counter)) - ([], Z.one) + ([], Z.of_int 2) messages (** Transform messages into inputs and wrap them between SOL and EOL. *) -let wrap_messages inbox_level strs = +let wrap_messages (timestamp, predecessor) inbox_level strs = let sol = {input = make_sol ~inbox_level; message = `SOL} in let rev_inputs, message_counter = strs_to_inputs inbox_level strs in let inputs = List.rev rev_inputs in + let info_per_level = + { + input = make_info_per_level ~inbox_level ~predecessor ~timestamp; + message = `Info_per_level (timestamp, predecessor); + } + in let eol = {input = make_eol ~inbox_level ~message_counter; message = `EOL} in - (sol :: inputs) @ [eol] + (sol :: info_per_level :: inputs) @ [eol] let gen_messages_for_levels ~start_level ~max_level gen_message = let open QCheck2.Gen in + let dumb_info = (Timestamp.of_seconds 0L, Tezos_crypto.Block_hash.zero) in let rec aux acc n = match n with | n when n < 0 -> @@ -280,14 +316,14 @@ let gen_messages_for_levels ~start_level ~max_level gen_message = in let* empty_level = bool in let* level_messages = - if empty_level then return (make_empty_level inbox_level) + if empty_level then return (make_empty_level dumb_info inbox_level) else let* messages = let* input = gen_message in let* inputs = small_list gen_message in return (input :: inputs) in - return (inbox_level, wrap_messages inbox_level messages) + return (inbox_level, wrap_messages dumb_info inbox_level messages) in aux (level_messages :: acc) (n - 1) in @@ -495,24 +531,23 @@ end test/unit/test_sc_rollup_inbox. The main difference is: we use [Alpha_context.Sc_rollup.Inbox] instead of [Sc_rollup_repr_inbox] in the former. *) -let construct_inbox ~inbox ?origination_level ctxt levels_and_messages = +let construct_inbox ~inbox ?origination_level ctxt levels_and_inputs = let open Lwt_syntax in let open Store_inbox in let history = Sc_rollup.Inbox.History.empty ~capacity:10000L in let rec aux history inbox level_tree = function | [] -> return (ctxt, level_tree, history, inbox) - | ((level, messages) : Raw_level.t * message list) :: rst -> + | ((level, inputs) : Raw_level.t * Sc_rollup.input list) :: rst -> assert ( match origination_level with | Some origination_level -> Raw_level.(origination_level < level) | None -> true) ; let payloads = List.map - (fun {input; _} -> - match input with - | Inbox_message {payload; _} -> payload + (function + | Sc_rollup.Inbox_message {payload; _} -> payload | Reveal _ -> (* We don't produce any reveals. *) assert false) - messages + inputs in let* res = add_messages ctxt history inbox level payloads level_tree @@ -523,4 +558,4 @@ let construct_inbox ~inbox ?origination_level ctxt levels_and_messages = in aux history inbox (Some level_tree) rst in - aux history inbox None levels_and_messages + aux history inbox None levels_and_inputs diff --git a/src/proto_alpha/lib_protocol/test/integration/operations/test_sc_rollup.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_sc_rollup.ml index 229263ab0153e3d5f31e3e6243c9d0fa2427e0f7..830092e76688021e65eb949361c5d24d29b12944 100644 --- a/src/proto_alpha/lib_protocol/test/integration/operations/test_sc_rollup.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_sc_rollup.ml @@ -2053,18 +2053,27 @@ let node_proof_to_protocol_proof p = let full_history_inbox all_inbox_messages = let open Lwt_syntax in let open Sc_rollup_helpers in - (* Add the SOL/EOL to the list of inbox messages. *) + (* Add the SOL/Info_per_level/EOL to the list of inbox messages. *) let all_inbox_messages = List.map - (fun (inbox_level, inbox_messages) -> - (inbox_level, wrap_messages inbox_level inbox_messages)) + (fun (inbox_level, info, inbox_messages) -> + (inbox_level, wrap_messages info inbox_level inbox_messages)) all_inbox_messages in (* Create a inbox adding the messages from [all_inbox_messages]. *) let* index = Tezos_context_memory.Context.init "inbox" in let ctxt = Tezos_context_memory.Context.empty index in let* inbox = Store_inbox.empty ctxt Raw_level.root in - Sc_rollup_helpers.construct_inbox ~inbox ctxt all_inbox_messages + let all_inbox_inputs = + List.map + (fun (level, messages) -> + ( level, + List.map + (fun Sc_rollup_helpers.{input; message = _} -> input) + messages )) + all_inbox_messages + in + Sc_rollup_helpers.construct_inbox ~inbox ctxt all_inbox_inputs let input_included ~snapshot ~full_history_inbox (l, n) = let open Sc_rollup_helpers in @@ -2087,9 +2096,9 @@ let input_included ~snapshot ~full_history_inbox (l, n) = (fun inbox_message -> Sc_rollup.Inbox_message inbox_message) inbox_message_verified -(** Test that the protocol adds a [SOL] and [EOL] for each Tezos level, - even if no messages are added to the inbox. *) -let test_sol_and_eol () = +(** Test that the protocol adds a [SOL], [Info_per_level] and [EOL] for each + Tezos level, even if no messages are added to the inbox. *) +let test_automatically_added_internal_messages () = let assert_input_included ~snapshot ~full_history_inbox (l, n) input = let* input_verified = input_included ~snapshot ~full_history_inbox (l, n) in Assert.equal @@ -2104,15 +2113,23 @@ let test_sol_and_eol () = input in + let info_per_block (block : Block.t) = + let header = block.header.shell in + (header.timestamp, header.predecessor) + in + (* Create the first block. *) let* block, account = context_init Context.T1 in + let level_zero_info = info_per_block block in (* Bake a second block. *) let* block = Block.bake block in + let level_one_info = info_per_block block in (* Bake a third block where a message is added. *) let* operation = Op.sc_rollup_add_messages (B block) account ["foo"] in let* block = Block.bake ~operation block in + let level_two_info = info_per_block block in (* Bake an extra block to archive all inbox messages for the snapshot. *) let* block = Block.bake block in @@ -2123,7 +2140,12 @@ let test_sol_and_eol () = let level_one = Raw_level.of_int32_exn 1l in let level_two = Raw_level.of_int32_exn 2l in let*! ((ctxt, level_tree, history, inbox) as full_history_inbox) = - full_history_inbox [(level_zero, []); (level_one, []); (level_two, ["foo"])] + full_history_inbox + [ + (level_zero, level_zero_info, []); + (level_one, level_one_info, []); + (level_two, level_two_info, ["foo"]); + ] in (* Assert SOL is at position 0. *) @@ -2135,17 +2157,34 @@ let test_sol_and_eol () = (level_two, Z.zero) (Some sol) in + + (* Assert Info_per_level is at position 1. *) + let timestamp, predecessor = level_two_info in + let info_per_level = + Sc_rollup_helpers.make_info_per_level + ~inbox_level:level_two + ~timestamp + ~predecessor + in + let* () = + assert_input_included + ~snapshot + ~full_history_inbox + (level_two, Z.one) + (Some info_per_level) + in + (* Assert EOL is at the end of inbox level. *) let eol = Sc_rollup_helpers.make_eol ~inbox_level:level_two - ~message_counter:(Z.of_int 2) + ~message_counter:(Z.of_int 3) in let* () = assert_input_included ~snapshot ~full_history_inbox - (level_two, Z.of_int 2) + (level_two, Z.of_int 3) (Some eol) in (* Assert EOL was the last message of the inbox level. *) @@ -2153,7 +2192,7 @@ let test_sol_and_eol () = assert_input_included ~snapshot ~full_history_inbox - (level_two, Z.of_int 3) + (level_two, Z.of_int 4) None in @@ -2493,9 +2532,9 @@ let tests = `Quick test_refute_invalid_metadata; Tztest.tztest - "Test that SOL/EOL are added in the inbox" + "Test that SOL/Info_per_level/EOL are added in the inbox" `Quick - test_sol_and_eol; + test_automatically_added_internal_messages; Tztest.tztest "0-tick commitments are forbidden" `Quick diff --git a/src/proto_alpha/lib_protocol/test/pbt/test_refutation_game.ml b/src/proto_alpha/lib_protocol/test/pbt/test_refutation_game.ml index 4f9e11cd24fb2b5a446f23ed36c9a0490fc5e660..2c150baead277cc76ed6633c710ebcfcf4756b76 100644 --- a/src/proto_alpha/lib_protocol/test/pbt/test_refutation_game.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_refutation_game.ml @@ -104,6 +104,10 @@ let assert_fails_with ~__LOC__ (res : unit Environment.Error_monad.tzresult) trace | Ok () -> Lwt.return false +let keep_inputs = + List.map (fun (level, messages) -> + (level, List.map (fun (x : message) -> x.input) messages)) + let initial_of_dissection dissection = List.hd dissection |> WithExceptions.Option.get ~loc:__LOC__ @@ -869,7 +873,7 @@ module Arith_test_pvm = struct let eval_inbox ?fuel ~messages ~tick state = let open Lwt_result_syntax in List.fold_left_es - (fun (state, fuel, tick, our_states) {input; message = _} -> + (fun (state, fuel, tick, our_states) input -> let*! state, fuel, tick, our_states = feed_input ~fuel ~our_states ~tick state input in @@ -877,7 +881,7 @@ module Arith_test_pvm = struct (state, fuel, tick, []) messages - let eval_levels_and_messages ~metadata ?fuel levels_and_messages = + let eval_levels_and_inputs ~metadata ?fuel levels_and_inputs = let open Lwt_result_syntax in let*! state = initial_state () in let*! state_hash = state_hash state in @@ -901,7 +905,7 @@ module Arith_test_pvm = struct in return (state, fuel, tick, our_states @ our_states')) (state, fuel, tick, our_states) - levels_and_messages + levels_and_inputs in let our_states = List.sort (fun (x, _) (y, _) -> Compare.Int.compare x y) our_states @@ -915,28 +919,51 @@ module Arith_test_pvm = struct return (state, tick, our_states) end -(** Construct the inbox for the protocol side. *) let construct_inbox_proto block levels_and_messages contract = let open Lwt_result_syntax in - List.fold_left_es - (fun block (_inbox_level, (messages : message list)) -> - let messages = - List.filter_map - (fun {message; _} -> - match message with - | `Message message -> Some message - | `SOL | `EOL -> (* Those are added by the protocol. *) None) - messages - in - match messages with - | [] -> Block.bake block - | messages -> - let* operation_add_message = - Op.sc_rollup_add_messages (B block) contract messages - in - Block.bake ~operation:operation_add_message block) - block - levels_and_messages + let* block, infos_per_level = + List.fold_left_es + (fun ((block : Block.t), acc) (inbox_level, (messages : message list)) -> + (* Print infos: *) + let messages = + List.filter_map + (fun {message; _} -> + match message with + | `Message message -> Some message + | `SOL | `Info_per_level _ | `EOL -> + (* Those are added by the protocol. *) None) + messages + in + let* block = + match messages with + | [] -> + let* block = Block.bake block in + return block + | messages -> + let* operation_add_message = + Op.sc_rollup_add_messages (B block) contract messages + in + let* block = Block.bake ~operation:operation_add_message block in + return block + in + + let predecessor = block.header.shell.predecessor in + let* ctxt = Context.(to_alpha_ctxt (B block)) in + let timestamp = Timestamp.current ctxt in + + let acc = (inbox_level, (timestamp, predecessor)) :: acc in + + return (block, acc)) + (block, []) + levels_and_messages + in + return (block, List.rev infos_per_level) + +(** Construct the inbox for the protocol side. *) +let construct_inbox_proto block levels_and_messages contract = + WithExceptions.Result.get_ok ~loc:__LOC__ + @@ Lwt_main.run + @@ construct_inbox_proto block levels_and_messages contract (** Kind of strategy a player can play @@ -954,6 +981,7 @@ type strategy = | Keen (** A keen player will execute more messages. *) | SOL_hater (** A SOL hater will not execute the SOL input. *) | EOL_hater (** A EOL hater will not execute the EOL input. *) + | Info_hater (** A Info per level hater will corrupt the infos. *) let pp_strategy fmt = function | Random -> Format.pp_print_string fmt "Random" @@ -963,6 +991,7 @@ let pp_strategy fmt = function | Keen -> Format.pp_print_string fmt "Keen" | SOL_hater -> Format.pp_print_string fmt "SOL hater" | EOL_hater -> Format.pp_print_string fmt "EOL hater" + | Info_hater -> Format.pp_print_string fmt "Info per level hater" type player = { pkh : Tezos_crypto.Signature.Public_key_hash.t; @@ -990,54 +1019,45 @@ type player_client = { * Store_inbox.tree option * Inbox.History.t * Inbox.t; - levels_and_messages : (Raw_level.t * message list) list; + levels_and_inputs : (Raw_level.t * input list) list; metadata : Metadata.t; } -let pp_levels_and_messages ppf levels_and_messages = - Format.( +let pp_levels_and_inputs ~verbose ppf levels_and_inputs = + let open Format in + if verbose then (pp_print_list (fun ppf (level, messages) -> fprintf ppf - "level %a, messages: %a" + "level %a, inputs: %a" Raw_level.pp level - (pp_print_list pp_message) + (pp_print_list pp_input) messages) ppf) - levels_and_messages) - -let pp_player_client ppf - {player; states; final_tick; inbox = _; levels_and_messages; metadata} = + levels_and_inputs + else + fprintf + ppf + "%d inputs" + (List.fold_left + (fun acc (_, messages) -> acc + List.length messages) + 0 + levels_and_inputs) + +let pp_player_client ~verbose ppf + {player; states = _; final_tick; inbox = _; levels_and_inputs; metadata = _} + = Format.fprintf ppf - "@[player:@,\ - %a@]@,\ - @[states:@,\ - %a@]@,\ - final tick: %a@,\ - @[levels and inputs:@,\ - %a@]@,\ - metadata: %a@," + "@[player:@,%a@]@,final tick: %a@,@[levels and inputs:@,%a@]" pp_player player - (Format.pp_print_list (fun ppf (tick, hash) -> - Format.fprintf - ppf - "tick %a, state hash %a" - Tick.pp - tick - State_hash.pp_short - hash)) - states Tick.pp final_tick - (* inbox *) - pp_levels_and_messages - levels_and_messages - Sc_rollup.Metadata.pp - metadata + (pp_levels_and_inputs ~verbose) + levels_and_inputs module Player_client = struct let empty_memory_ctxt id = @@ -1055,131 +1075,155 @@ module Player_client = struct ctxt levels_and_messages - (** Generate [our_states] for [levels_and_messages] based on the strategy. + (** Generate [our_states] for [levels_and_inputs] based on the strategy. It needs [start_level] and [max_level] in case it will need to generate new inputs. *) let gen_our_states ~metadata strategy ~start_level ~max_level - levels_and_messages = + levels_and_inputs = let open QCheck2.Gen in - let eval_messages - (levels_and_messages : (Raw_level.t * message trace) trace) = + let eval_inputs (levels_and_inputs : (Raw_level.t * input trace) trace) = Lwt_main.run @@ let open Lwt_result_syntax in let*! r = - Arith_test_pvm.eval_levels_and_messages ~metadata levels_and_messages + Arith_test_pvm.eval_levels_and_inputs ~metadata levels_and_inputs in Lwt.return @@ WithExceptions.Result.get_ok ~loc:__LOC__ r in match strategy with | Perfect -> - (* The perfect player does not lie, evaluates correctly the messages. *) - let _state, tick, our_states = eval_messages levels_and_messages in - return (tick, our_states, levels_and_messages) + (* The perfect player does not lie, evaluates correctly the inputs. *) + let _state, tick, our_states = eval_inputs levels_and_inputs in + return (tick, our_states, levels_and_inputs) | Random -> - (* Random player generates its own list of messages. *) + (* Random player generates its own list of inputs. *) let* new_levels_and_messages = gen_arith_pvm_messages_for_levels ~start_level ~max_level in - let _state, tick, our_states = eval_messages new_levels_and_messages in - return (tick, our_states, new_levels_and_messages) + let new_levels_and_inputs = keep_inputs new_levels_and_messages in + let _state, tick, our_states = eval_inputs new_levels_and_inputs in + return (tick, our_states, new_levels_and_inputs) | Lazy -> - (* Lazy player removes messages from [levels_and_messages]. *) - let n = List.length levels_and_messages in + (* Lazy player removes inputs from [levels_and_inputs]. *) + let n = List.length levels_and_inputs in let* remove_k = 1 -- n in - let new_levels_and_messages = - List.take_n (n - remove_k) levels_and_messages + let new_levels_and_inputs = + List.take_n (n - remove_k) levels_and_inputs in - let _state, tick, our_states = eval_messages new_levels_and_messages in - return (tick, our_states, new_levels_and_messages) + let _state, tick, our_states = eval_inputs new_levels_and_inputs in + return (tick, our_states, new_levels_and_inputs) | Eager -> (* Eager player executes correctly the inbox until a certain point. *) let nb_of_input = List.fold_left - (fun acc (_level, messages) -> acc + List.length messages) + (fun acc (_level, inputs) -> acc + List.length inputs) 0 - levels_and_messages + levels_and_inputs in let* corrupt_at_k = 0 -- (nb_of_input - 1) in let message = "42 7 +" in (* Once an input is corrupted, everything after will be corrupted as well. *) - let new_levels_and_messages = + let new_levels_and_inputs = let idx = ref (-1) in List.map - (fun (inbox_level, messages) -> + (fun (inbox_level, inputs) -> ( inbox_level, List.map - (fun x -> + (fun input -> incr idx ; if !idx = corrupt_at_k then - let input = - match x.input with - | Inbox_message {inbox_level; message_counter; _} -> - make_external_input - ~inbox_level - ~message_counter - message - | _ -> (* We don't produce any reveals. *) assert false - in - {x with input} - else x) - messages )) - levels_and_messages + match input with + | Sc_rollup.Inbox_message + {inbox_level; message_counter; _} -> + make_external_input + ~inbox_level + ~message_counter + message + | _ -> (* We don't produce any reveals. *) assert false + else input) + inputs )) + levels_and_inputs in - let _state, tick, our_states = eval_messages new_levels_and_messages in - return (tick, our_states, new_levels_and_messages) + let _state, tick, our_states = eval_inputs new_levels_and_inputs in + return (tick, our_states, new_levels_and_inputs) | Keen -> - (* Keen player will add more messages. *) + (* Keen player will add more inputs. *) let* offset = 1 -- 5 in let* new_levels_and_messages = gen_arith_pvm_messages_for_levels ~start_level:max_level ~max_level:(max_level + offset) in - let new_levels_and_messages = - levels_and_messages @ new_levels_and_messages - in - let _state, tick, our_states = eval_messages new_levels_and_messages in - return (tick, our_states, new_levels_and_messages) + let new_levels_and_inputs = keep_inputs new_levels_and_messages in + let new_levels_and_inputs = levels_and_inputs @ new_levels_and_inputs in + let _state, tick, our_states = eval_inputs new_levels_and_inputs in + return (tick, our_states, new_levels_and_inputs) | SOL_hater -> - let new_levels_and_messages = + let new_levels_and_inputs = List.map - (fun (level, messages) -> (level, Stdlib.List.tl messages)) - levels_and_messages + (fun (level, inputs) -> (level, Stdlib.List.tl inputs)) + levels_and_inputs in - let _state, tick, our_states = eval_messages new_levels_and_messages in - return (tick, our_states, new_levels_and_messages) + let _state, tick, our_states = eval_inputs new_levels_and_inputs in + return (tick, our_states, new_levels_and_inputs) | EOL_hater -> - let new_levels_and_messages = + let new_levels_and_inputs = List.map - (fun (level, messages) -> - let rev_messages = List.rev messages in - let without_eol = Stdlib.List.tl rev_messages in + (fun (level, inputs) -> + let rev_inputs = List.rev inputs in + let without_eol = Stdlib.List.tl rev_inputs in (level, List.rev without_eol)) - levels_and_messages + levels_and_inputs + in + let _state, tick, our_states = eval_inputs new_levels_and_inputs in + return (tick, our_states, new_levels_and_inputs) + | Info_hater -> + let* corrupt_at_l = 0 -- List.length levels_and_inputs in + let dumb_timestamp = Time_repr.of_seconds 42L in + let dumb_predecessor = Tezos_crypto.Block_hash.zero in + + let new_levels_and_inputs = + List.mapi + (fun i ((inbox_level, inputs) as x) -> + if i = corrupt_at_l then + let inputs = + match inputs with + | sol :: _info_per_level :: rst -> + let new_info_per_level = + make_info_per_level + ~inbox_level + ~timestamp:dumb_timestamp + ~predecessor:dumb_predecessor + in + sol :: new_info_per_level :: rst + | _ -> assert false + in + (inbox_level, inputs) + else x) + levels_and_inputs in - let _state, tick, our_states = eval_messages new_levels_and_messages in - return (tick, our_states, new_levels_and_messages) + let _state, tick, our_states = eval_inputs new_levels_and_inputs in + return (tick, our_states, new_levels_and_inputs) (** [gen ~inbox ~rollup ~origination_level ~start_level ~max_level player - levels_and_messages] generates a {!player_client} based on + levels_and_inputs] generates a {!player_client} based on its {!player.strategy}. *) let gen ~inbox ~rollup ~origination_level ~start_level ~max_level player - levels_and_messages = + levels_and_inputs = let open QCheck2.Gen in let ctxt = empty_memory_ctxt "foo" in let metadata = Sc_rollup.Metadata.{address = rollup; origination_level} in - let* tick, our_states, levels_and_messages = + let* tick, our_states, levels_and_inputs = gen_our_states ~metadata player.strategy ~start_level ~max_level - levels_and_messages + levels_and_inputs in let inbox = - construct_inbox ~inbox ~origination_level ctxt levels_and_messages + construct_inbox ~inbox ~origination_level ctxt levels_and_inputs in return { @@ -1187,7 +1231,7 @@ module Player_client = struct final_tick = tick; states = our_states; inbox; - levels_and_messages; + levels_and_inputs; metadata; } end @@ -1242,10 +1286,10 @@ let build_proof ~player_client start_tick (game : Game.t) = let fuel = tick_to_int_exn start_tick in let metadata = player_client.metadata in let*! r = - Arith_test_pvm.eval_levels_and_messages + Arith_test_pvm.eval_levels_and_inputs ~metadata ~fuel - player_client.levels_and_messages + player_client.levels_and_inputs in let state, _, _ = WithExceptions.Result.get_ok ~loc:__LOC__ r in let module P = struct @@ -1419,6 +1463,40 @@ let gen_game ~p1_strategy ~p2_strategy = let* levels_and_messages = gen_arith_pvm_messages_for_levels ~start_level ~max_level in + + let block, infos_per_level = + construct_inbox_proto block levels_and_messages contract3 + in + + (* Once we created the protocol inbox, we only need inputs. *) + let levels_and_inputs = keep_inputs levels_and_messages in + + let levels_and_inputs = + let _incr_counter = function + | Inbox_message {inbox_level; message_counter; payload} -> + Inbox_message + {inbox_level; message_counter = Z.succ message_counter; payload} + | Reveal _ -> assert false + in + Stdlib.List.map2 + (fun (level, messages) (level', (timestamp, predecessor)) -> + assert (level = level') ; + match messages with + | sol :: _info_per_level :: (_ as rst) -> + (* The info per level created by the generator is invalid, it + did not have the correct timestamp and predecessor, we + replace it. *) + let info_per_level = + Sc_rollup_helpers.make_info_per_level + ~inbox_level:level + ~timestamp + ~predecessor + in + (level, sol :: info_per_level :: rst) + | _ -> assert false) + levels_and_inputs + infos_per_level + in let* p1_client = Player_client.gen ~inbox @@ -1427,7 +1505,7 @@ let gen_game ~p1_strategy ~p2_strategy = ~max_level ~rollup p1 - levels_and_messages + levels_and_inputs in let* p2_client = Player_client.gen @@ -1437,7 +1515,7 @@ let gen_game ~p1_strategy ~p2_strategy = ~max_level ~rollup p2 - levels_and_messages + levels_and_inputs in let* p1_start = bool in let commitment_level = origination_level + commitment_period in @@ -1448,9 +1526,8 @@ let gen_game ~p1_strategy ~p2_strategy = genesis_info.commitment_hash, p1_client, p2_client, - contract3, p1_start, - levels_and_messages ) + levels_and_inputs ) (** Shrinker is really slow. Deactivating it. *) let gen_game ~p1_strategy ~p2_strategy = @@ -1461,12 +1538,10 @@ let gen_game ~p1_strategy ~p2_strategy = (** [prepare_game block rollup lcc commitment_level p1_client p2_client contract levels_and_messages] prepares a context where [p1_client] and [p2_client] - are in conflict for one commitment. - It creates the protocol inbox using [levels_and_messages]. *) + are in conflict for one commitment. *) let prepare_game ~p1_start block rollup lcc commitment_level p1_client p2_client - contract levels_and_messages = + = let open Lwt_result_syntax in - let* block = construct_inbox_proto block levels_and_messages contract in let* p1_commitment = operation_publish_commitment (B block) rollup lcc commitment_level p1_client in @@ -1520,45 +1595,31 @@ let test_game ~p1_strategy ~p2_strategy () = in qcheck_make_lwt_res ~print: - (fun ( block, - rollup, - commitment_level, - lcc, + (fun ( _block, + _rollup, + _commitment_level, + _lcc, p1_client, p2_client, - _contract3, p1_start, levels_and_messages ) -> - let level = - WithExceptions.Result.get_ok ~loc:__LOC__ @@ Context.get_level (B block) - in + let verbose = false in Format.asprintf "@[@,\ - current level: %a@,\ - rollup: %a@,\ - commitment_level: %d@,\ - last cemented commitment: %a@,\ @[p1:@,\ %a@]@,\ @[p2:@,\ %a@]@,\ - who start: %s@,\ + %s@,\ @[levels and inputs:@,\ %a@]@,\ @]" - Raw_level.pp - level - Sc_rollup.Address.pp_short - rollup - commitment_level - Sc_rollup.Commitment.Hash.pp_short - lcc - pp_player_client + (pp_player_client ~verbose) p1_client - pp_player_client + (pp_player_client ~verbose) p2_client (if p1_start then "p1" else "p2") - pp_levels_and_messages + (pp_levels_and_inputs ~verbose) levels_and_messages) ~count:100 ~name @@ -1569,9 +1630,8 @@ let test_game ~p1_strategy ~p2_strategy () = lcc, p1_client, p2_client, - contract3, p1_start, - levels_and_messages ) -> + _levels_and_messages ) -> let open Lwt_result_syntax in (* Otherwise, there is no conflict. *) QCheck2.assume @@ -1592,8 +1652,6 @@ let test_game ~p1_strategy ~p2_strategy () = commitment_level p1_client p2_client - contract3 - levels_and_messages in let* game_result = play_until_game_result @@ -1609,55 +1667,35 @@ let test_game ~p1_strategy ~p2_strategy () = let test_perfect_against_random = test_game ~p1_strategy:Perfect ~p2_strategy:Random () -let test_random_against_perfect = - test_game ~p1_strategy:Random ~p2_strategy:Perfect () - let test_perfect_against_lazy = test_game ~p1_strategy:Perfect ~p2_strategy:Lazy () -let test_lazy_against_perfect = - test_game ~p1_strategy:Lazy ~p2_strategy:Perfect () - let test_perfect_against_eager = test_game ~p1_strategy:Perfect ~p2_strategy:Eager () -let test_eager_against_perfect = - test_game ~p1_strategy:Eager ~p2_strategy:Perfect () - let test_perfect_against_keen = test_game ~p1_strategy:Perfect ~p2_strategy:Keen () -let test_keen_against_perfect = - test_game ~p1_strategy:Keen ~p2_strategy:Perfect () - -let test_sol_hater_against_perfect = - test_game ~p1_strategy:SOL_hater ~p2_strategy:Perfect () - let test_perfect_against_sol_hater = test_game ~p1_strategy:Perfect ~p2_strategy:SOL_hater () -let test_eol_hater_against_perfect = - test_game ~p1_strategy:EOL_hater ~p2_strategy:Perfect () - let test_perfect_against_eol_hater = test_game ~p1_strategy:Perfect ~p2_strategy:EOL_hater () +let test_perfect_against_info_hater = + test_game ~p1_strategy:Perfect ~p2_strategy:Info_hater () + let tests = ( "Refutation", qcheck_wrap [ test_perfect_against_random; - test_random_against_perfect; test_perfect_against_lazy; - test_lazy_against_perfect; test_perfect_against_keen; - test_keen_against_perfect; test_perfect_against_eager; - test_eager_against_perfect; - test_sol_hater_against_perfect; test_perfect_against_sol_hater; - test_eol_hater_against_perfect; test_perfect_against_eol_hater; + test_perfect_against_info_hater; ] ) (** {2 Entry point} *) diff --git a/tezt/tests/expected/dal.ml/Alpha- Testing rollup and Data availability layer node (rollup_node_applies_dal_.out b/tezt/tests/expected/dal.ml/Alpha- Testing rollup and Data availability layer node (rollup_node_applies_dal_.out index 9f306f0e229724fc4c08c0ba09776a74980c00d5..14a05fe296aa380cda7b7b22ba078f3b0ea44164 100644 --- a/tezt/tests/expected/dal.ml/Alpha- Testing rollup and Data availability layer node (rollup_node_applies_dal_.out +++ b/tezt/tests/expected/dal.ml/Alpha- Testing rollup and Data availability layer node (rollup_node_applies_dal_.out @@ -76,8 +76,8 @@ This sequence of operations was run: Consumed gas: 1001.226 Resulting inbox state: { level = 5 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 5 nb_messages_in_commitment_period = 11 - message_counter = 3 + level: 5 nb_messages_in_commitment_period = 16 + message_counter = 4 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 4 @@ -118,8 +118,8 @@ This sequence of operations was run: Consumed gas: 1010.725 Resulting inbox state: { level = 6 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 6 nb_messages_in_commitment_period = 28 - message_counter = 16 + level: 6 nb_messages_in_commitment_period = 34 + message_counter = 17 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 5 diff --git a/tezt/tests/expected/dal.ml/Alpha- Testing rollup and Data availability layer node (rollup_node_downloads_sl.out b/tezt/tests/expected/dal.ml/Alpha- Testing rollup and Data availability layer node (rollup_node_downloads_sl.out index a19e0d405cd7e49c4ed6f61df021ba6e29025024..c5c20f9a0f3850ccdb2c9f9ed18e76393f7b1eee 100644 --- a/tezt/tests/expected/dal.ml/Alpha- Testing rollup and Data availability layer node (rollup_node_downloads_sl.out +++ b/tezt/tests/expected/dal.ml/Alpha- Testing rollup and Data availability layer node (rollup_node_downloads_sl.out @@ -76,8 +76,8 @@ This sequence of operations was run: Consumed gas: 1001.226 Resulting inbox state: { level = 5 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 5 nb_messages_in_commitment_period = 11 - message_counter = 3 + level: 5 nb_messages_in_commitment_period = 16 + message_counter = 4 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 4 diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - RPC API should work and be stable.out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - RPC API should work and be stable.out index 3a809380d2d7d6bbbaeb9ac29636d8302b6bbc6b..52afa04c30a83bb9bfe4be69874ec2f5b30036a7 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - RPC API should work and be stable.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - RPC API should work and be stable.out @@ -241,13 +241,13 @@ This sequence of operations was run: 16 ./octez-sc-rollup-client-alpha rpc get /global/block/head/num_messages -"7" +"8" ./octez-sc-rollup-client-alpha rpc get /global/block/head/status "Waiting for input message" ./octez-sc-rollup-client-alpha rpc get /global/block/head/ticks -"27" +"28" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - node advances PVM state with messages (external).out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - node advances PVM state with messages (external).out index c0e4e9c45815039041fd2d45cdbbbb9d97d6b589..deea4355e4d740e80056f72395bbc5ee77722bfb 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - node advances PVM state with messages (external).out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - node advances PVM state with messages (external).out @@ -68,8 +68,8 @@ This sequence of operations was run: Consumed gas: 1000.647 Resulting inbox state: { level = 3 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 3 nb_messages_in_commitment_period = 6 - message_counter = 2 + level: 3 nb_messages_in_commitment_period = 9 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 2 @@ -87,13 +87,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"22" +"23" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"22" +"23" ./octez-client --wait none send sc rollup message '["2 8 + value"]' from bootstrap2 Node is bootstrapped. @@ -120,8 +120,8 @@ This sequence of operations was run: Consumed gas: 1000.647 Resulting inbox state: { level = 4 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 4 nb_messages_in_commitment_period = 9 - message_counter = 2 + level: 4 nb_messages_in_commitment_period = 13 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 3 @@ -139,13 +139,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"42" +"44" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"42" +"44" ./octez-client --wait none send sc rollup message '["3 10 + value"]' from bootstrap2 Node is bootstrapped. @@ -172,8 +172,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 5 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 5 nb_messages_in_commitment_period = 12 - message_counter = 2 + level: 5 nb_messages_in_commitment_period = 17 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 4 @@ -192,13 +192,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"63" +"66" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"63" +"66" ./octez-client --wait none send sc rollup message '["4 12 + value"]' from bootstrap2 Node is bootstrapped. @@ -225,8 +225,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 6 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 6 nb_messages_in_commitment_period = 15 - message_counter = 2 + level: 6 nb_messages_in_commitment_period = 21 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 5 @@ -245,13 +245,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"84" +"88" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"84" +"88" ./octez-client --wait none send sc rollup message '["5 14 + value"]' from bootstrap2 Node is bootstrapped. @@ -278,8 +278,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 7 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 7 nb_messages_in_commitment_period = 18 - message_counter = 2 + level: 7 nb_messages_in_commitment_period = 25 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 6 @@ -298,13 +298,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"105" +"110" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"105" +"110" ./octez-client --wait none send sc rollup message '["6 16 + value"]' from bootstrap2 Node is bootstrapped. @@ -331,8 +331,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 8 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 8 nb_messages_in_commitment_period = 21 - message_counter = 2 + level: 8 nb_messages_in_commitment_period = 29 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 7 @@ -351,13 +351,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"126" +"132" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"126" +"132" ./octez-client --wait none send sc rollup message '["7 18 + value"]' from bootstrap2 Node is bootstrapped. @@ -384,8 +384,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 9 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 9 nb_messages_in_commitment_period = 24 - message_counter = 2 + level: 9 nb_messages_in_commitment_period = 33 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 8 @@ -405,13 +405,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"147" +"154" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"147" +"154" ./octez-client --wait none send sc rollup message '["8 20 + value"]' from bootstrap2 Node is bootstrapped. @@ -439,8 +439,8 @@ This sequence of operations was run: Resulting inbox state: { level = 10 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] level: 10 - nb_messages_in_commitment_period = 27 - message_counter = 2 + nb_messages_in_commitment_period = 37 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 9 @@ -460,13 +460,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"168" +"176" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"168" +"176" ./octez-client --wait none send sc rollup message '["9 22 + value"]' from bootstrap2 Node is bootstrapped. @@ -494,8 +494,8 @@ This sequence of operations was run: Resulting inbox state: { level = 11 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] level: 11 - nb_messages_in_commitment_period = 30 - message_counter = 2 + nb_messages_in_commitment_period = 41 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 10 @@ -515,13 +515,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"189" +"198" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"189" +"198" ./octez-client --wait none send sc rollup message '["10 24 + value"]' from bootstrap2 Node is bootstrapped. @@ -549,8 +549,8 @@ This sequence of operations was run: Resulting inbox state: { level = 12 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] level: 12 - nb_messages_in_commitment_period = 33 - message_counter = 2 + nb_messages_in_commitment_period = 45 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 11 @@ -570,4 +570,4 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"211" +"221" diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - node advances PVM state with messages (internal).out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - node advances PVM state with messages (internal).out index a4a12ac667a705262d169afd9177a12e4a4aee6f..f90acb3d37921c51c660d238d22e47d35e0438b9 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - node advances PVM state with messages (internal).out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - node advances PVM state with messages (internal).out @@ -41,7 +41,7 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"4" +"5" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\007" @@ -50,13 +50,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"24" +"26" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"24" +"26" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\n" @@ -65,13 +65,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"44" +"47" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"44" +"47" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\r" @@ -80,13 +80,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"65" +"69" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"65" +"69" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\016" @@ -95,13 +95,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"86" +"91" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"86" +"91" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\019" @@ -110,13 +110,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"107" +"113" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"107" +"113" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\022" @@ -125,13 +125,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"128" +"135" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"128" +"135" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\025" @@ -140,13 +140,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"149" +"157" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"149" +"157" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\028" @@ -155,13 +155,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"170" +"179" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"170" +"179" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\031" @@ -170,13 +170,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"191" +"201" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"191" +"201" ./octez-sc-rollup-client-alpha get state value for vars/value --block head "\000\000\000\"" @@ -185,4 +185,4 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"213" +"224" diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out index 19cb7bcf47c59816f6534812e22c3b1eaa7d66c0..fd55e015361718aee12e7d2bfdf03d406e3afa3c 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -aux- earliness- 0- external).out @@ -58,8 +58,8 @@ This sequence of operations was run: Consumed gas: 1001.191 Resulting inbox state: { level = 5 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 5 nb_messages_in_commitment_period = 10 - message_counter = 2 + level: 5 nb_messages_in_commitment_period = 15 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 4 diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- external.out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- external.out index dacd1607b7aa4c171b12b6b107efa708003619c9..8d305215b5def7b208d57c2871c1330679e02ec6 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- external.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - trigger exec output (entrypoint- -default- earliness- 0- external.out @@ -58,8 +58,8 @@ This sequence of operations was run: Consumed gas: 1001.123 Resulting inbox state: { level = 5 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 5 nb_messages_in_commitment_period = 10 - message_counter = 2 + level: 5 nb_messages_in_commitment_period = 15 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 4 diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - RPC API should work and be stable.out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - RPC API should work and be stable.out index 0831239646e2d281e2477c0899d17de5057e4fce..25245b2ba8eaaad522900e0b7058194c2c61ae44 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - RPC API should work and be stable.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - RPC API should work and be stable.out @@ -241,13 +241,13 @@ This sequence of operations was run: 16 ./octez-sc-rollup-client-alpha rpc get /global/block/head/num_messages -"7" +"8" ./octez-sc-rollup-client-alpha rpc get /global/block/head/status "Waiting for input message" ./octez-sc-rollup-client-alpha rpc get /global/block/head/ticks -"88000000000" +"99000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - node advances PVM state with messages (external).out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - node advances PVM state with messages (external).out index 2242336eb0b820618cda9c160467cd32308fb6b5..101b21eaf25d8a4117824f5a06303c1d2e50bc72 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - node advances PVM state with messages (external).out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - node advances PVM state with messages (external).out @@ -68,8 +68,8 @@ This sequence of operations was run: Consumed gas: 1000.647 Resulting inbox state: { level = 3 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 3 nb_messages_in_commitment_period = 6 - message_counter = 2 + level: 3 nb_messages_in_commitment_period = 9 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 2 @@ -84,13 +84,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"44000000000" +"55000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"44000000000" +"55000000000" ./octez-client --wait none send sc rollup message '["2 8 + value"]' from bootstrap2 Node is bootstrapped. @@ -117,8 +117,8 @@ This sequence of operations was run: Consumed gas: 1000.647 Resulting inbox state: { level = 4 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 4 nb_messages_in_commitment_period = 9 - message_counter = 2 + level: 4 nb_messages_in_commitment_period = 13 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 3 @@ -133,13 +133,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"88000000000" +"110000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"88000000000" +"110000000000" ./octez-client --wait none send sc rollup message '["3 10 + value"]' from bootstrap2 Node is bootstrapped. @@ -166,8 +166,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 5 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 5 nb_messages_in_commitment_period = 12 - message_counter = 2 + level: 5 nb_messages_in_commitment_period = 17 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 4 @@ -183,13 +183,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"132000000000" +"165000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"132000000000" +"165000000000" ./octez-client --wait none send sc rollup message '["4 12 + value"]' from bootstrap2 Node is bootstrapped. @@ -216,8 +216,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 6 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 6 nb_messages_in_commitment_period = 15 - message_counter = 2 + level: 6 nb_messages_in_commitment_period = 21 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 5 @@ -233,13 +233,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"176000000000" +"220000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"176000000000" +"220000000000" ./octez-client --wait none send sc rollup message '["5 14 + value"]' from bootstrap2 Node is bootstrapped. @@ -266,8 +266,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 7 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 7 nb_messages_in_commitment_period = 18 - message_counter = 2 + level: 7 nb_messages_in_commitment_period = 25 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 6 @@ -283,13 +283,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"220000000000" +"275000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"220000000000" +"275000000000" ./octez-client --wait none send sc rollup message '["6 16 + value"]' from bootstrap2 Node is bootstrapped. @@ -316,8 +316,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 8 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 8 nb_messages_in_commitment_period = 21 - message_counter = 2 + level: 8 nb_messages_in_commitment_period = 29 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 7 @@ -333,13 +333,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"264000000000" +"330000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"264000000000" +"330000000000" ./octez-client --wait none send sc rollup message '["7 18 + value"]' from bootstrap2 Node is bootstrapped. @@ -366,8 +366,8 @@ This sequence of operations was run: Consumed gas: 1000.664 Resulting inbox state: { level = 9 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 9 nb_messages_in_commitment_period = 24 - message_counter = 2 + level: 9 nb_messages_in_commitment_period = 33 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 8 @@ -384,13 +384,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"308000000000" +"385000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"308000000000" +"385000000000" ./octez-client --wait none send sc rollup message '["8 20 + value"]' from bootstrap2 Node is bootstrapped. @@ -418,8 +418,8 @@ This sequence of operations was run: Resulting inbox state: { level = 10 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] level: 10 - nb_messages_in_commitment_period = 27 - message_counter = 2 + nb_messages_in_commitment_period = 37 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 9 @@ -436,13 +436,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"352000000000" +"440000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"352000000000" +"440000000000" ./octez-client --wait none send sc rollup message '["9 22 + value"]' from bootstrap2 Node is bootstrapped. @@ -470,8 +470,8 @@ This sequence of operations was run: Resulting inbox state: { level = 11 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] level: 11 - nb_messages_in_commitment_period = 30 - message_counter = 2 + nb_messages_in_commitment_period = 41 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 10 @@ -488,13 +488,13 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"396000000000" +"495000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"396000000000" +"495000000000" ./octez-client --wait none send sc rollup message '["10 24 + value"]' from bootstrap2 Node is bootstrapped. @@ -522,8 +522,8 @@ This sequence of operations was run: Resulting inbox state: { level = 12 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] level: 12 - nb_messages_in_commitment_period = 33 - message_counter = 2 + nb_messages_in_commitment_period = 45 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 11 @@ -540,4 +540,4 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"440000000000" +"550000000000" diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - node advances PVM state with messages (internal).out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - node advances PVM state with messages (internal).out index 894d6049591e771d94644e9aaffd3b0de86e86e1..605203f7799d154527f3b85e946599753f680a5e 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - node advances PVM state with messages (internal).out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - node advances PVM state with messages (internal).out @@ -41,118 +41,118 @@ This sequence of operations was run: "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"33000000000" +"44000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"77000000000" +"99000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"77000000000" +"99000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"121000000000" +"154000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"121000000000" +"154000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"165000000000" +"209000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"165000000000" +"209000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"209000000000" +"264000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"209000000000" +"264000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"253000000000" +"319000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"253000000000" +"319000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"297000000000" +"374000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"297000000000" +"374000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"341000000000" +"429000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"341000000000" +"429000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"385000000000" +"484000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"385000000000" +"484000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"429000000000" +"539000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"429000000000" +"539000000000" ./octez-sc-rollup-client-alpha rpc get /global/block/head/state_hash "[SC_ROLLUP_PVM_STATE_HASH]" ./octez-sc-rollup-client-alpha rpc get /global/block/head/total_ticks -"473000000000" +"594000000000" diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- externa.out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- externa.out index df9abae2684dd13d3ad8b8ccd8564b88717b5c2b..70fb4ea3efeb9afea7cf94b5c05cd46e1cd394bc 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- externa.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -aux- earliness- 0- externa.out @@ -58,8 +58,8 @@ This sequence of operations was run: Consumed gas: 1001.072 Resulting inbox state: { level = 5 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 5 nb_messages_in_commitment_period = 10 - message_counter = 2 + level: 5 nb_messages_in_commitment_period = 15 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 4 diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ext.out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ext.out index bed1a3cd71f1967397e3b322969433d30c18561b..7e906c3fe61514ab8545df9ebc178e4d18ea4593 100644 --- a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ext.out +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - trigger exec output (entrypoint- -default- earliness- 0- ext.out @@ -58,8 +58,8 @@ This sequence of operations was run: Consumed gas: 1001.140 Resulting inbox state: { level = 5 current messages hash = hash: [SC_ROLLUP_INBOX_HASH] - level: 5 nb_messages_in_commitment_period = 10 - message_counter = 2 + level: 5 nb_messages_in_commitment_period = 15 + message_counter = 3 old_levels_messages = content = hash: [SC_ROLLUP_INBOX_HASH] level: 4 diff --git a/tezt/tests/sc_rollup.ml b/tezt/tests/sc_rollup.ml index a824b7b67f01db6d3c98ab534a4f5efebf468195..ca57e0ffd55bcdddc9b3c60065fb85616aa4acaf 100644 --- a/tezt/tests/sc_rollup.ml +++ b/tezt/tests/sc_rollup.ml @@ -735,12 +735,12 @@ let test_rollup_inbox_size ~kind = let* _hash, _level, inbox_msg_during_commitment_period = get_inbox_from_tezos_node client in - (* Expect [n] messages per level + SOL/EOL for each level including - at inbox's creation. *) + (* Expect [n] messages per level + SOL/Info_per_level/EOL for each level + including at inbox's creation. *) return @@ Check.( (inbox_msg_during_commitment_period - = (n * (n + 1) / 2) + (((n + 1) * 2) + 2)) + = (n * (n + 1) / 2) + (((n + 1) * 3) + 3)) int ~error_msg:"expected value %R, got %L") @@ -1659,12 +1659,15 @@ let commitments_messages_reset kind sc_rollup_node sc_rollup_client sc_rollup (Check.option Check.int) ~error_msg: "Commitment has been stored at a level different than expected (%L = %R)" ; + Log.info "levels_to_commitment: %d" levels_to_commitment ; (let stored_number_of_ticks = Option.map number_of_ticks stored_commitment in let expected = match kind with - | "arith" -> 2 * levels_to_commitment + | "arith" -> 3 * levels_to_commitment | "wasm_2_0_0" -> - 3 (* one snapshot for collecting, two snapshots for SOL and EOL *) + 4 + (* one snapshot for collecting, two snapshots for SOL, + Info_per_level and EOL *) * 11_000_000_000 (* number of ticks in a snapshots *) * levels_to_commitment (* number of inboxes *) | _ -> failwith "incorrect kind" @@ -1879,16 +1882,15 @@ let commitments_reorgs ~kind sc_rollup_node sc_rollup_client sc_rollup node let expected_number_of_ticks = match kind with | "arith" -> - 1 (* boot sector *) + 1 (* metadata *) + (2 * levels_to_commitment) + 1 (* boot sector *) + 1 (* metadata *) + (3 * levels_to_commitment) (* input ticks *) | "wasm_2_0_0" -> (* Number of ticks per snapshot, see Lib_scoru_wasm.Constants.wasm_max_tick *) let snapshot_ticks = 11_000_000_000 in - snapshot_ticks - * 3 - (* 1 snapshot for collecting messages, 2 snapshots for EOL and SOL *) - * levels_to_commitment + snapshot_ticks * 4 + (* 1 snapshot for collecting messages, 3 snapshots for SOL, + Info_per_level and SOL *) * levels_to_commitment (* Number of inbox that are actually processed process *) | _ -> assert false in @@ -2765,11 +2767,11 @@ let test_refutation protocols ~kind = ("inbox_proof_one_empty_level", ("6 0 0", inputs_for 10, 80, [2], [])); ( "inbox_proof_many_empty_levels", ("9 0 0", inputs_for 10, 80, [2; 3; 4], []) ); - ("pvm_proof_0", ("5 1 1", inputs_for 10, 80, [], [])); - ("pvm_proof_1", ("7 1 2", inputs_for 10, 80, [], [])); + ("pvm_proof_0", ("5 2 1", inputs_for 10, 80, [], [])); + ("pvm_proof_1", ("7 2 0", inputs_for 10, 80, [], [])); ("pvm_proof_2", ("7 2 5", inputs_for 7, 80, [], [])); ("pvm_proof_3", ("9 2 5", inputs_for 7, 80, [4; 5], [])); - ("timeout", ("5 1 1", inputs_for 10, 80, [], [35])); + ("timeout", ("5 2 1", inputs_for 10, 80, [], [35])); ] | "wasm_2_0_0" -> [ @@ -2779,12 +2781,12 @@ let test_refutation protocols ~kind = ("inbox_proof_1", ("3 4 0", inputs_for 10, 80, [], [])); (* Echo kernel takes around 2,100 ticks to execute *) (* Second tick of decoding *) - ("pvm_proof_0", ("5 6 11_000_000_001", inputs_for 10, 80, [], [])); - ("pvm_proof_1", ("7 6 11_000_001_000", inputs_for 10, 80, [], [])); + ("pvm_proof_0", ("5 7 11_000_000_001", inputs_for 10, 80, [], [])); + ("pvm_proof_1", ("7 7 11_000_001_000", inputs_for 10, 80, [], [])); (* End of evaluation *) - ("pvm_proof_2", ("7 6 22_000_002_000", inputs_for 10, 80, [], [])); + ("pvm_proof_2", ("7 7 22_000_002_000", inputs_for 10, 80, [], [])); (* During padding *) - ("pvm_proof_3", ("7 6 22_010_000_000", inputs_for 10, 80, [], [])); + ("pvm_proof_3", ("7 7 22_010_000_000", inputs_for 10, 80, [], [])); ] | _ -> assert false in @@ -3622,7 +3624,7 @@ let test_rpcs ~kind = ["global"; "block"; "head"; "num_messages"] in let l2_num_messages = JSON.as_int l2_num_messages in - Check.((l2_num_messages = batch_size + 2) int) + Check.((l2_num_messages = batch_size + 3) int) ~error_msg:"Number of messages of head is %L but should be %R" ; let*! _status = Sc_rollup_client.rpc_get