diff --git a/src/lib_smart_rollup_node/interpreter.ml b/src/lib_smart_rollup_node/interpreter.ml index 8dd07e3ca179a1c7dc44c1f465bd2c3dd23c7301..ee99193000fd5e420bdeff943249ee5a6c7f6f95 100644 --- a/src/lib_smart_rollup_node/interpreter.ml +++ b/src/lib_smart_rollup_node/interpreter.ml @@ -212,7 +212,14 @@ let memo_state_of_tick_aux plugin node_ctxt ~start_state [level]. Otherwise, returns [None].*) let state_of_tick plugin node_ctxt ?start_state ~tick level = let open Lwt_result_syntax in - let* event = Node_context.block_with_tick node_ctxt ~max_level:level tick in + let min_level = + match start_state with + | None -> None + | Some s -> Some s.Pvm_plugin_sig.inbox_level + in + let* event = + Node_context.block_with_tick node_ctxt ?min_level ~max_level:level tick + in match event with | None -> return_none | Some event -> diff --git a/src/lib_smart_rollup_node/node_context.ml b/src/lib_smart_rollup_node/node_context.ml index f25e8f3575afd80e5552da9c3aba889a2434fdfd..32df3b5c6d479d9871adc56cadbc110bf320f6f2 100644 --- a/src/lib_smart_rollup_node/node_context.ml +++ b/src/lib_smart_rollup_node/node_context.ml @@ -538,7 +538,7 @@ let get_predecessor_header node_ctxt head = (** Returns the block that is right before [tick]. [big_step_blocks] is used to first look for a block before the [tick] *) -let tick_search ~big_step_blocks node_ctxt head tick = +let tick_search ~big_step_blocks node_ctxt ?min_level head tick = let open Lwt_result_syntax in if Z.Compare.(head.Sc_rollup_block.initial_tick <= tick) then if Z.Compare.(Sc_rollup_block.final_tick head < tick) then @@ -548,18 +548,46 @@ let tick_search ~big_step_blocks node_ctxt head tick = (* The starting block contains the tick we want, we are done. *) return_some head else - let genesis_level = node_ctxt.genesis_info.level in + let* gc_levels = Store.Gc_levels.read node_ctxt.store.gc_levels in + let first_available_level = + match gc_levels with + | Some {first_available_level = l; _} -> l + | None -> node_ctxt.genesis_info.level + in + let min_level = + match min_level with + | Some min_level -> Int32.max min_level first_available_level + | None -> first_available_level + in let rec find_big_step (end_block : Sc_rollup_block.t) = + (* Each iteration of [find_big_step b] looks if the [tick] happened in + [b - 4096; b[. *) let start_level = Int32.sub end_block.header.level (Int32.of_int big_step_blocks) in let start_level = - if start_level < genesis_level then genesis_level else start_level + (* We stop the coarse search at [min_level] in any case. *) + Int32.max start_level min_level in let* start_block = get_l2_block_by_level node_ctxt start_level in if Z.Compare.(start_block.initial_tick <= tick) then + (* The tick happened after [start_block] and we know it happened before + [end_block]. *) return (start_block, end_block) - else find_big_step start_block + else if start_level = min_level then + (* We've reached the hard lower bound for the search and we know the + tick happened before. *) + failwith + "Tick %a happened before minimal level %ld with tick %a" + Z.pp_print + tick + min_level + Z.pp_print + start_block.initial_tick + else + (* The tick happened before [start_block], so we restart the coarse + search with it as the upper bound. *) + find_big_step start_block in let block_level Sc_rollup_block.{header = {level; _}; _} = Int32.to_int level @@ -587,7 +615,7 @@ let tick_search ~big_step_blocks node_ctxt head tick = (* Then do dichotomy on interval [start_block; end_block] *) dicho start_block end_block -let block_with_tick ({store; _} as node_ctxt) ~max_level tick = +let block_with_tick ({store; _} as node_ctxt) ?min_level ~max_level tick = let open Lwt_result_syntax in let open Lwt_result_option_syntax in Error.trace_lwt_result_with @@ -605,7 +633,7 @@ let block_with_tick ({store; _} as node_ctxt) ~max_level tick = if head.header.level <= max_level then return_some head else find_l2_block_by_level node_ctxt max_level in - tick_search ~big_step_blocks:4096 node_ctxt head tick + tick_search ~big_step_blocks:4096 node_ctxt ?min_level head tick let find_commitment {store; _} commitment_hash = let open Lwt_result_syntax in @@ -634,6 +662,19 @@ let save_commitment {store; _} commitment = in hash +let tick_offset_of_commitment_period node_ctxt (commitment : Commitment.t) = + let open Lwt_result_syntax in + let+ commitment_block = + get_l2_block_by_level node_ctxt commitment.inbox_level + in + (* Final tick of commitment period *) + let commitment_final_tick = + Z.add commitment_block.initial_tick (Z.of_int64 commitment_block.num_ticks) + in + (* Final tick of predecessor commitment, i.e. initial tick of commitment + period *) + Z.sub commitment_final_tick (Z.of_int64 commitment.number_of_ticks) + let commitment_published_at_level {store; _} commitment = Store.Commitments_published_at_level.find store.commitments_published_at_level diff --git a/src/lib_smart_rollup_node/node_context.mli b/src/lib_smart_rollup_node/node_context.mli index 13fec5791cfc943adec635dd5c315068b6d65657..57395b3073ae82c5b7dd418863b3ba9b07c532d6 100644 --- a/src/lib_smart_rollup_node/node_context.mli +++ b/src/lib_smart_rollup_node/node_context.mli @@ -288,12 +288,22 @@ val get_tezos_reorg_for_new_head : Layer1.head -> Layer1.head Reorg.t tzresult Lwt.t -(** [block_with_tick store ~max_level tick] returns [Some b] where [b] is the - last layer 2 block which contains the [tick] before [max_level]. If no such - block exists (the tick happened after [max_level], or we are too late), the - function returns [None]. *) +(** [block_with_tick store ?min_level ~max_level tick] returns [Some b] where + [b] is the last layer 2 block which contains the [tick] before + [max_level]. If no such block exists (the tick happened after [max_level], + or we are too late), the function returns [None]. Fails if the tick happened + before [min_level]. *) val block_with_tick : - _ t -> max_level:int32 -> Z.t -> Sc_rollup_block.t option tzresult Lwt.t + _ t -> + ?min_level:int32 -> + max_level:int32 -> + Z.t -> + Sc_rollup_block.t option tzresult Lwt.t + +(** [tick_offset_of_commitment_period node_ctxt commtient] returns the global + initial tick (since genesis) of the PVM for the state at the beginning of the + commitment period that [commitment] concludes. *) +val tick_offset_of_commitment_period : _ t -> Commitment.t -> Z.t tzresult Lwt.t (** {3 Commitments} *) diff --git a/src/lib_smart_rollup_node/protocol_plugin_sig.ml b/src/lib_smart_rollup_node/protocol_plugin_sig.ml index 412cce0a9e763313c0288ef93d7b11422a4903a7..606b7cb4e588c022327419b6ed947322356d813f 100644 --- a/src/lib_smart_rollup_node/protocol_plugin_sig.ml +++ b/src/lib_smart_rollup_node/protocol_plugin_sig.ml @@ -249,10 +249,12 @@ module type REFUTATION_GAME_HELPERS = sig val generate_proof : Node_context.rw -> Game.t -> Context.tree -> string tzresult Lwt.t - (** [make_dissection plugin node_ctxt ~start_state ~start_chunk ~our_stop_chunk - ~default_number_of_sections ~last_level] computes a dissection from between - [start_chunk] and [our_stop_chunk] at level [last_level]. This dissection - has [default_number_of_sections] if there are enough ticks. *) + (** [make_dissection plugin node_ctxt ~start_state ~start_chunk + ~our_stop_chunk ~default_number_of_sections ~commitment_period_tick_offset + ~last_level] computes a dissection from between [start_chunk] and + [our_stop_chunk] at level [last_level]. [commitment_period_tick_offset] is + the tick offset of the commitment period for the conflict/dissection. This + dissection has [default_number_of_sections] if there are enough ticks. *) val make_dissection : (module PARTIAL) -> Node_context.rw -> @@ -260,6 +262,7 @@ module type REFUTATION_GAME_HELPERS = sig start_chunk:Game.dissection_chunk -> our_stop_chunk:Game.dissection_chunk -> default_number_of_sections:int -> + commitment_period_tick_offset:Z.t -> last_level:int32 -> Game.dissection_chunk trace tzresult Lwt.t diff --git a/src/lib_smart_rollup_node/refutation_game.ml b/src/lib_smart_rollup_node/refutation_game.ml index 01b289a9373552f0306cd23294bd8f068463e4b8..ac9aef9ee4feef9ee5a840682422716d20dcdd68 100644 --- a/src/lib_smart_rollup_node/refutation_game.ml +++ b/src/lib_smart_rollup_node/refutation_game.ml @@ -85,7 +85,8 @@ type pvm_intermediate_state = | Evaluated of Fuel.Accounted.t Pvm_plugin_sig.eval_state let new_dissection (module Plugin : Protocol_plugin_sig.S) ~opponent - ~default_number_of_sections node_ctxt last_level ok our_view = + ~default_number_of_sections ~commitment_period_tick_offset node_ctxt + last_level ok our_view = let open Lwt_result_syntax in let start_hash, start_tick, start_state = match ok with @@ -107,6 +108,7 @@ let new_dissection (module Plugin : Protocol_plugin_sig.S) ~opponent ~start_chunk ~our_stop_chunk ~default_number_of_sections + ~commitment_period_tick_offset ~last_level in let*! () = @@ -118,13 +120,15 @@ let new_dissection (module Plugin : Protocol_plugin_sig.S) ~opponent in return dissection -(** [generate_from_dissection ~default_number_of_sections node_ctxt game - dissection] traverses the current [dissection] and returns a move which - performs a new dissection of the execution trace or provides a refutation - proof to serve as the next move of the [game]. *) +(** [generate_from_dissection ~default_number_of_sections ~tick_offset node_ctxt + game dissection] traverses the current [dissection] and returns a move which + performs a new dissection of the execution trace or provides a refutation + proof to serve as the next move of the [game]. [tick_offset] is the initial + global tick (since genesis) of the PVM at the start of the commitment + period. *) let generate_next_dissection (module Plugin : Protocol_plugin_sig.S) ~default_number_of_sections node_ctxt ~opponent - (game : Octez_smart_rollup.Game.t) + ~commitment_period_tick_offset (game : Octez_smart_rollup.Game.t) (dissection : Octez_smart_rollup.Game.dissection_chunk list) = let open Lwt_result_syntax in let rec traverse ok = function @@ -146,7 +150,7 @@ let generate_next_dissection (module Plugin : Protocol_plugin_sig.S) (module Plugin) node_ctxt ?start_state - ~tick + ~tick:(Z.add tick commitment_period_tick_offset) game.inbox_level in match (their_hash, our) with @@ -168,6 +172,7 @@ let generate_next_dissection (module Plugin : Protocol_plugin_sig.S) (module Plugin) ~opponent ~default_number_of_sections + ~commitment_period_tick_offset node_ctxt game.inbox_level ok @@ -187,14 +192,14 @@ let generate_next_dissection (module Plugin : Protocol_plugin_sig.S) Rollup_node_errors.Unreliable_tezos_node_returning_inconsistent_game let next_move (module Plugin : Protocol_plugin_sig.S) node_ctxt ~opponent - (game : Octez_smart_rollup.Game.t) = + ~commitment_period_tick_offset (game : Octez_smart_rollup.Game.t) = let open Lwt_result_syntax in let final_move start_tick = let* start_state = Interpreter.state_of_tick (module Plugin) node_ctxt - ~tick:start_tick + ~tick:(Z.add start_tick commitment_period_tick_offset) game.inbox_level in match start_state with @@ -220,6 +225,7 @@ let next_move (module Plugin : Protocol_plugin_sig.S) node_ctxt ~opponent ~default_number_of_sections node_ctxt ~opponent + ~commitment_period_tick_offset game dissection in @@ -231,9 +237,12 @@ let next_move (module Plugin : Protocol_plugin_sig.S) node_ctxt ~opponent let choice = agreed_start_chunk.tick in final_move choice -let play_next_move plugin node_ctxt game opponent = +let play_next_move plugin node_ctxt ~commitment_period_tick_offset game opponent + = let open Lwt_result_syntax in - let* refutation = next_move plugin node_ctxt ~opponent game in + let* refutation = + next_move plugin node_ctxt ~opponent ~commitment_period_tick_offset game + in inject_next_move node_ctxt ~refutation ~opponent let play_timeout (node_ctxt : _ Node_context.t) stakers = @@ -248,12 +257,18 @@ let play_timeout (node_ctxt : _ Node_context.t) stakers = in return_unit -let play node_ctxt ~self game opponent = +let play node_ctxt ~self ~commitment_period_tick_offset game opponent = let open Lwt_result_syntax in let index = make_index self opponent in let* plugin = Protocol_plugins.last_proto_plugin node_ctxt in match turn ~self game index with - | Our_turn {opponent} -> play_next_move plugin node_ctxt game opponent + | Our_turn {opponent} -> + play_next_move + plugin + node_ctxt + ~commitment_period_tick_offset + game + opponent | Their_turn -> let module Plugin = (val plugin) in let* timeout_reached = diff --git a/src/lib_smart_rollup_node/refutation_game.mli b/src/lib_smart_rollup_node/refutation_game.mli index d88910a56029cb6b5e7003aeb2a40210bd417e79..f538b22370b7e92fad2e23554d6ed1e9299545a5 100644 --- a/src/lib_smart_rollup_node/refutation_game.mli +++ b/src/lib_smart_rollup_node/refutation_game.mli @@ -32,11 +32,14 @@ val play_opening_move : Octez_smart_rollup.Game.conflict -> (unit, tztrace) result Lwt.t -(** [play head_block plugin node_ctxt ~self game opponent] injects the next move - in the refutation [game] played by [self] and [opponent]. *) +(** [play head_block plugin node_ctxt ~self ~commitment_period_tick_offset game + opponent] injects the next move in the refutation [game] played by [self] + and [opponent], where [commitment_period_tick_offset] is the tick offset for + the commitment period for the conflict. *) val play : Node_context.rw -> self:Signature.public_key_hash -> + commitment_period_tick_offset:Z.t -> Octez_smart_rollup.Game.t -> Signature.public_key_hash -> (unit, tztrace) result Lwt.t diff --git a/src/lib_smart_rollup_node/refutation_game_event.ml b/src/lib_smart_rollup_node/refutation_game_event.ml index 7a0d21024269113c09059a2d56ade578dd463be7..cc8395f26f379188e57b5612d742e0741860d16a 100644 --- a/src/lib_smart_rollup_node/refutation_game_event.ml +++ b/src/lib_smart_rollup_node/refutation_game_event.ml @@ -75,12 +75,22 @@ module Simple = struct ~msg: "Computed dissection against {opponent} between ticks {start_tick} and \ {end_tick}: {dissection}" - ~level:Debug + ~level:Notice ("opponent", Signature.Public_key_hash.encoding) ("start_tick", Data_encoding.z) ("end_tick", Data_encoding.z) ( "dissection", Data_encoding.list Octez_smart_rollup.Game.dissection_chunk_encoding ) + ~pp4:(fun ppf d -> + Format.fprintf + ppf + "%a" + Data_encoding.Json.pp + Data_encoding.Json.( + construct + (Data_encoding.list + Octez_smart_rollup.Game.dissection_chunk_encoding) + d)) module Worker (ARG : sig val section : string list diff --git a/src/lib_smart_rollup_node/refutation_player.ml b/src/lib_smart_rollup_node/refutation_player.ml index 59a01e225b3bf0c2ddd53e8bcba679f12985ce1d..c8869f06bacf9274bee058ca33038a6f5eae5f07 100644 --- a/src/lib_smart_rollup_node/refutation_player.ml +++ b/src/lib_smart_rollup_node/refutation_player.ml @@ -31,6 +31,8 @@ module Types = struct node_ctxt : Node_context.rw; self : Signature.public_key_hash; opponent : Signature.public_key_hash; + conflict : Game.conflict; + commitment_period_tick_offset : Z.t; mutable last_move_cache : (Octez_smart_rollup.Game.game_state * int32) option; } @@ -54,8 +56,9 @@ type worker = Worker.infinite Worker.queue Worker.t let table = Worker.create_table Queue -let on_play game Types.{node_ctxt; self; opponent; _} = - play node_ctxt ~self game opponent +let on_play game + Types.{node_ctxt; self; opponent; commitment_period_tick_offset; _} = + play node_ctxt ~self ~commitment_period_tick_offset game opponent let on_play_opening conflict (Types.{node_ctxt; _} : Types.state) = play_opening_move node_ctxt conflict @@ -77,8 +80,22 @@ module Handlers = struct type launch_error = error trace let on_launch _w _name Types.{node_ctxt; self; conflict} = - Lwt_result.return - Types.{node_ctxt; self; opponent = conflict.other; last_move_cache = None} + let open Lwt_result_syntax in + let* commitment_period_tick_offset = + Node_context.tick_offset_of_commitment_period + node_ctxt + conflict.our_commitment + in + return + Types. + { + node_ctxt; + self; + opponent = conflict.other; + conflict; + commitment_period_tick_offset; + last_move_cache = None; + } let on_error (type a b) _w st (r : (a, b) Request.t) (errs : b) : unit tzresult Lwt.t = diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/refutation_game_helpers.ml b/src/proto_017_PtNairob/lib_sc_rollup_node/refutation_game_helpers.ml index cb7663750edb4d001721f91b98b8a8aab704e06d..40efc77529a6db1c1077d59b7ed63d293df808c9 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/refutation_game_helpers.ml +++ b/src/proto_017_PtNairob/lib_sc_rollup_node/refutation_game_helpers.ml @@ -269,7 +269,8 @@ let generate_proof (node_ctxt : _ Node_context.t) return proof let make_dissection plugin (node_ctxt : _ Node_context.t) ~start_state - ~start_chunk ~our_stop_chunk ~default_number_of_sections ~last_level = + ~start_chunk ~our_stop_chunk ~default_number_of_sections + ~commitment_period_tick_offset ~last_level = let open Lwt_result_syntax in let module PVM = (val Pvm.of_kind node_ctxt.kind) in let state_of_tick ?start_state tick = @@ -277,7 +278,7 @@ let make_dissection plugin (node_ctxt : _ Node_context.t) ~start_state plugin node_ctxt ?start_state - ~tick:(Sc_rollup.Tick.to_z tick) + ~tick:(Z.add (Sc_rollup.Tick.to_z tick) commitment_period_tick_offset) last_level in let state_hash_of_eval_state Pvm_plugin_sig.{state_hash; _} = diff --git a/src/proto_018_Proxford/lib_sc_rollup_node/refutation_game_helpers.ml b/src/proto_018_Proxford/lib_sc_rollup_node/refutation_game_helpers.ml index 9c3bcabe12b33b38a0dfe91284f15632406e1855..831d9314dca56f1ee262ca7a481046911ca19670 100644 --- a/src/proto_018_Proxford/lib_sc_rollup_node/refutation_game_helpers.ml +++ b/src/proto_018_Proxford/lib_sc_rollup_node/refutation_game_helpers.ml @@ -298,7 +298,8 @@ let generate_proof (node_ctxt : _ Node_context.t) return proof let make_dissection plugin (node_ctxt : _ Node_context.t) ~start_state - ~start_chunk ~our_stop_chunk ~default_number_of_sections ~last_level = + ~start_chunk ~our_stop_chunk ~default_number_of_sections + ~commitment_period_tick_offset ~last_level = let open Lwt_result_syntax in let module PVM = (val Pvm.of_kind node_ctxt.kind) in let state_of_tick ?start_state tick = @@ -306,7 +307,7 @@ let make_dissection plugin (node_ctxt : _ Node_context.t) ~start_state plugin node_ctxt ?start_state - ~tick:(Sc_rollup.Tick.to_z tick) + ~tick:(Z.add (Sc_rollup.Tick.to_z tick) commitment_period_tick_offset) last_level in let state_hash_of_eval_state Pvm_plugin_sig.{state_hash; _} = state_hash in diff --git a/src/proto_alpha/lib_sc_rollup_node/refutation_game_helpers.ml b/src/proto_alpha/lib_sc_rollup_node/refutation_game_helpers.ml index 9c3bcabe12b33b38a0dfe91284f15632406e1855..831d9314dca56f1ee262ca7a481046911ca19670 100644 --- a/src/proto_alpha/lib_sc_rollup_node/refutation_game_helpers.ml +++ b/src/proto_alpha/lib_sc_rollup_node/refutation_game_helpers.ml @@ -298,7 +298,8 @@ let generate_proof (node_ctxt : _ Node_context.t) return proof let make_dissection plugin (node_ctxt : _ Node_context.t) ~start_state - ~start_chunk ~our_stop_chunk ~default_number_of_sections ~last_level = + ~start_chunk ~our_stop_chunk ~default_number_of_sections + ~commitment_period_tick_offset ~last_level = let open Lwt_result_syntax in let module PVM = (val Pvm.of_kind node_ctxt.kind) in let state_of_tick ?start_state tick = @@ -306,7 +307,7 @@ let make_dissection plugin (node_ctxt : _ Node_context.t) ~start_state plugin node_ctxt ?start_state - ~tick:(Sc_rollup.Tick.to_z tick) + ~tick:(Z.add (Sc_rollup.Tick.to_z tick) commitment_period_tick_offset) last_level in let state_hash_of_eval_state Pvm_plugin_sig.{state_hash; _} = state_hash in diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - refutation games winning strategies (pvm_proof_second_period).out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - refutation games winning strategies (pvm_proof_second_period).out new file mode 100644 index 0000000000000000000000000000000000000000..9549e08f384343922acb7d39d93e697ef5427af5 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - refutation games winning strategies (pvm_proof_second_period).out @@ -0,0 +1,158 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "0", + "end_tick": "470", + "dissection": [ + { + "state": "srs11Z7LSVYF6rBXAsR8Y5LjiQNgjPNs2eLAyUp2jWCf5QDMcSHqa6", + "tick": "0" + }, + { + "state": "srs11mzbaQWFusRK8rbJtacVn8WxamepxA4BoH9naZE8cCTuzb9BKE", + "tick": "14" + }, + { + "state": "srs12VqPjB9rfqNFqmpPG7cB3vtn4jfxsYGP7oG9VBMCXauwwf7bnr", + "tick": "28" + }, + { + "state": "srs11bWN7mUqA8uyLcNbnxKPaiNDwc41PCKiz3AbSoraWF62VGuHmU", + "tick": "42" + }, + { + "state": "srs13B8p9BJmB2Zz6pXMHE69xzBaEpFrSpqh4tginHwPGdMeJh6QU6", + "tick": "56" + }, + { + "state": "srs136RdoogwdcCNhKdWWhB4Ys95VNXLNdxGGhDJawLjnnw7PEZ6Yw", + "tick": "70" + }, + { + "state": "srs12b9sAAK6XmKtFqSeA8GQrb3covrgf1pR4PBjq6rcoLNjRuvAcm", + "tick": "84" + }, + { + "state": "srs133VwCBqTHxwdkAvztrk3H3SCzCEE1F8PDrZd5fX52p9Y6Vr7Qe", + "tick": "98" + }, + { + "state": "srs129dtcW2V8FLC25QSFCdGeS7g1XvMQuNE99MVJnqa43gJfLtq38", + "tick": "112" + }, + { + "state": "srs11Zo7zUQC6NF8sbKo5pddKU4AhdvGaNqto6crFE3ByoYm3VEdHe", + "tick": "126" + }, + { + "state": "srs131hDMypk565mvwZkt8Ljd7jb9BPRWG29MdJzu3s8VkMPPNuZ8r", + "tick": "140" + }, + { + "state": "srs12xzLvQsABjiWFTSZ828pmTznGsUL2VVJM3JYBr3B4v7g3Srxpc", + "tick": "154" + }, + { + "state": "srs13FCPMFoBB93ejJoL2GWdjCfdcfPSgJDvVFCY8fGAiD33nvp3F3", + "tick": "168" + }, + { + "state": "srs11vhjsGYSuuM1fbFTJH4z4C67YBW9NNxqwPiUcazokuzPkmGgFq", + "tick": "182" + }, + { + "state": "srs13D8cnxRYs6B39Ta7H9XA65T7i9xPoGxHqg13rQ2EBWWJAYBVVQ", + "tick": "196" + }, + { + "state": "srs11kQs7LDJ3ZMFL4NYZ3DJkfHG6xDnxvMRRjD3naPo2Xs6ZmigRF", + "tick": "210" + }, + { + "state": "srs12u6kEegZxHWhtRgSZ9HCLMoQeEK53wS9LcVgSXhYaprMUW3tBZ", + "tick": "224" + }, + { + "state": "srs12sfrzHVxk3tXXZytHVxAVwZzjwZ1ZT6ebwepMXysrhSTtTVWNi", + "tick": "238" + }, + { + "state": "srs12KcUYabDR7L4Rf4ZM5hov3dR9rbg4fHXUnrUXjHzRwBwpEEugY", + "tick": "252" + }, + { + "state": "srs13MNAo1FK7smhue4vC58fxrQBKSy6NXnj82Wqo8rjHwxyLe2QfV", + "tick": "266" + }, + { + "state": "srs11kE9hTfTZKfbsucZebkSsM3hk9w8RLkA5UrHMnpF1sEacv1Raj", + "tick": "280" + }, + { + "state": "srs127nTh6bthHQFFzGPePWRdKKU9HKzGWYTh77PrVTFqTk6r55UzE", + "tick": "294" + }, + { + "state": "srs12Pk3ewtevqFts13bpYkvysXw7SMggkoqqEGqESytgpve9qHQ29", + "tick": "308" + }, + { + "state": "srs12EoJD2NGAeViyru7oxMx1NFEFQjUBJ14k3YmWbrjf1GeqJHHSa", + "tick": "322" + }, + { + "state": "srs11YWBfiRncwtt7mjZNmjQJzAQZt89qkZrY9TmH78Jc3ZYqiCETL", + "tick": "336" + }, + { + "state": "srs125iNMYAZQq5mu2jSWaqMYowaRvk7TjUKH7Z6EEQZCqJtWBT6sh", + "tick": "350" + }, + { + "state": "srs12nBhLg2eFKoq3yvnV1qtwCpB5SRqyYi8YbeNoDopcRAhhZjujh", + "tick": "364" + }, + { + "state": "srs138b2LtYoLRpYp4JonVesFU28NccbdUbN3JdXWWtayEjLj4WYp9", + "tick": "378" + }, + { + "state": "srs12HGP7mhqmxF4LMmfF8uwSnwPcNphVrPw1oWJ5BDmpQuBHaeEBy", + "tick": "392" + }, + { + "state": "srs12BmKjVNdoTCyd7GQXjZMcsqYRbdFCRbEAiPhZNiMhmWcYmzV2S", + "tick": "406" + }, + { + "state": "srs12YvWguefwCazMmDoqTxdYSsPC9Sfbi5f2fJ8sAZVH38Q17ngno", + "tick": "420" + }, + { + "state": "srs11vzwocNM9VB24nv2f1Pv11FvWx1WbuRQZFNiKkVKckM2R22s5d", + "tick": "434" + }, + { + "state": "srs11zQFAbwSNjG9G9JG5zdYa9fsjSAaGEPeaYxxswKye9Fsk2tHCZ", + "tick": "470" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "119", + "end_tick": "120", + "dissection": [ + { + "state": "srs11ZgNf6wN1qpfYuv1jGgTaRcyZ2hAXtiXSjzx8zZ3YApMXzm72N", + "tick": "119" + }, + { + "state": "srs133GWsCMg74kubRZ2Gsm9Brca1GG8rMHr2jtBsgAXVdteRZmLNK", + "tick": "120" + } + ] +} diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_period.out b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_period.out new file mode 100644 index 0000000000000000000000000000000000000000..14c7c33dc6862ffdc9f35fcfc14a058243232e34 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_period.out @@ -0,0 +1,357 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "220000000000", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "209000000000" + }, + { + "tick": "220000000000" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198343750000", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198010742187" + }, + { + "tick": "198021484374" + }, + { + "tick": "198032226561" + }, + { + "tick": "198042968748" + }, + { + "tick": "198053710935" + }, + { + "tick": "198064453122" + }, + { + "tick": "198075195309" + }, + { + "tick": "198085937496" + }, + { + "tick": "198096679683" + }, + { + "tick": "198107421870" + }, + { + "tick": "198118164057" + }, + { + "tick": "198128906244" + }, + { + "tick": "198139648431" + }, + { + "tick": "198150390618" + }, + { + "tick": "198161132805" + }, + { + "tick": "198171874992" + }, + { + "tick": "198182617179" + }, + { + "tick": "198193359366" + }, + { + "tick": "198204101553" + }, + { + "tick": "198214843740" + }, + { + "tick": "198225585927" + }, + { + "tick": "198236328114" + }, + { + "tick": "198247070301" + }, + { + "tick": "198257812488" + }, + { + "tick": "198268554675" + }, + { + "tick": "198279296862" + }, + { + "tick": "198290039049" + }, + { + "tick": "198300781236" + }, + { + "tick": "198311523423" + }, + { + "tick": "198322265610" + }, + { + "tick": "198333007797" + }, + { + "tick": "198343750000" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198000335693", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198000010490" + }, + { + "tick": "198000020980" + }, + { + "tick": "198000031470" + }, + { + "tick": "198000041960" + }, + { + "tick": "198000052450" + }, + { + "tick": "198000062940" + }, + { + "tick": "198000073430" + }, + { + "tick": "198000083920" + }, + { + "tick": "198000094410" + }, + { + "tick": "198000104900" + }, + { + "tick": "198000115390" + }, + { + "tick": "198000125880" + }, + { + "tick": "198000136370" + }, + { + "tick": "198000146860" + }, + { + "tick": "198000157350" + }, + { + "tick": "198000167840" + }, + { + "tick": "198000178330" + }, + { + "tick": "198000188820" + }, + { + "tick": "198000199310" + }, + { + "tick": "198000209800" + }, + { + "tick": "198000220290" + }, + { + "tick": "198000230780" + }, + { + "tick": "198000241270" + }, + { + "tick": "198000251760" + }, + { + "tick": "198000262250" + }, + { + "tick": "198000272740" + }, + { + "tick": "198000283230" + }, + { + "tick": "198000293720" + }, + { + "tick": "198000304210" + }, + { + "tick": "198000314700" + }, + { + "tick": "198000325190" + }, + { + "tick": "198000335693" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198000000327", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198000000010" + }, + { + "tick": "198000000020" + }, + { + "tick": "198000000030" + }, + { + "tick": "198000000040" + }, + { + "tick": "198000000050" + }, + { + "tick": "198000000060" + }, + { + "tick": "198000000070" + }, + { + "tick": "198000000080" + }, + { + "tick": "198000000090" + }, + { + "tick": "198000000100" + }, + { + "tick": "198000000110" + }, + { + "tick": "198000000120" + }, + { + "tick": "198000000130" + }, + { + "tick": "198000000140" + }, + { + "tick": "198000000150" + }, + { + "tick": "198000000160" + }, + { + "tick": "198000000170" + }, + { + "tick": "198000000180" + }, + { + "tick": "198000000190" + }, + { + "tick": "198000000200" + }, + { + "tick": "198000000210" + }, + { + "tick": "198000000220" + }, + { + "tick": "198000000230" + }, + { + "tick": "198000000240" + }, + { + "tick": "198000000250" + }, + { + "tick": "198000000260" + }, + { + "tick": "198000000270" + }, + { + "tick": "198000000280" + }, + { + "tick": "198000000290" + }, + { + "tick": "198000000300" + }, + { + "tick": "198000000310" + }, + { + "tick": "198000000327" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000008", + "end_tick": "198000000009", + "dissection": [ + { + "tick": "198000000008" + }, + { + "tick": "198000000009" + } + ] +} diff --git a/tezt/tests/expected/sc_rollup.ml/Nairobi- arith - refutation games winning strategies (pvm_proof_second_period).out b/tezt/tests/expected/sc_rollup.ml/Nairobi- arith - refutation games winning strategies (pvm_proof_second_period).out new file mode 100644 index 0000000000000000000000000000000000000000..332f88c6b2775767e9fe605ade7470796c2aab81 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Nairobi- arith - refutation games winning strategies (pvm_proof_second_period).out @@ -0,0 +1,158 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "0", + "end_tick": "470", + "dissection": [ + { + "state": "srs12BpWKZmJUaEoa9CQd6gqxSxcN5JWHCmTafFKvA2sfa8yugT8QJ", + "tick": "0" + }, + { + "state": "srs12HcpMVAX3G4CNsGUWt8AkWu59d3VM6jcMtHi8tgvdhqM7vp4k1", + "tick": "14" + }, + { + "state": "srs12CfKg7uX87geXGoqb8aH34dGuZ8yeiLio8LgpCyTgddSSPBz8R", + "tick": "28" + }, + { + "state": "srs12yCkZ2jLNhoBsRJz2eLtHUcm7mwYyaqHaGJcT61v7PTFFtiPeE", + "tick": "42" + }, + { + "state": "srs12Ucx2jWFC5yuqrN6NvXEKzPdrMEJnFzK2t9FrbKvKvN8Gr7Cu2", + "tick": "56" + }, + { + "state": "srs12wMXEPedWYg8BtGyVzQhiSNfxJkEThtkRYBFJ67ozufxqc2gfD", + "tick": "70" + }, + { + "state": "srs12ErwrpExBZrJxts1Fhixey8m7rzkgP5F7qRTaZc7RULYgXMrqF", + "tick": "84" + }, + { + "state": "srs123rxPeXkB2vYnP5ZMXohGC2mVxdCLXn2W68Gi7LP1BFz3Gh86J", + "tick": "98" + }, + { + "state": "srs11mi22neJk84xn3hmVjfQ8TzjRM2A7Tsswnpm6KmNVgzRPjx8rW", + "tick": "112" + }, + { + "state": "srs11oG2quvx9BSDASfZF9N8ibNw1B56PbMAPR71oykd1TFhgFsLgw", + "tick": "126" + }, + { + "state": "srs12pjgS3p1EYsBEAAtzyg6kz3LGoB8WgUduTT6Htrkzt19c6pqwy", + "tick": "140" + }, + { + "state": "srs122KgtmNRvPMRZzzZMoHR4XBdP5rwLU5KikgRjcjBAW896EqamR", + "tick": "154" + }, + { + "state": "srs11fBCUCYL71XxKnW2FqgxDitFhZkkombMho1FrQKHzC2Kyn8ddm", + "tick": "168" + }, + { + "state": "srs138nMxj4uyRUbyjikE4Ntqouzx9Xo1kUTZZrD17ENmPD9wBU7jb", + "tick": "182" + }, + { + "state": "srs12zx6tNm1G3WPHDJG7t3GCqT6E9TgqkZ1W6of5WiYmVLu3vvwSB", + "tick": "196" + }, + { + "state": "srs1289u1v6hrjhp7grcAVQTT2DBA8ohnRvehwWmtKpqWwTWC4BrZF", + "tick": "210" + }, + { + "state": "srs12P4xnPmbSXTTEevhqPr2nsnQWJU85vDPxUvKuAeF3FqfRci6LZ", + "tick": "224" + }, + { + "state": "srs12Hb6PpnSq2BLUmeGAD94PceNfa1H9NRKfiWxZcaZNmT7hNXizm", + "tick": "238" + }, + { + "state": "srs11U31UwpAFZNutrrqdunW7bRipcGYeyGLpD9xsqWXrkwRsbudmA", + "tick": "252" + }, + { + "state": "srs11w4ar8HQEkgo4hvYPPzK9HrutvN5wFgTqrcLm34EPXs9pQxAFZ", + "tick": "266" + }, + { + "state": "srs13E6kCid52o1RQ31Te68eX2Nca8eEDYcVLk337Xt86hhGCmDReN", + "tick": "280" + }, + { + "state": "srs11TswqFkYdqNgFtfZZzawGWzSLaGbXrNQnS7YeM48j9jyxbrhVW", + "tick": "294" + }, + { + "state": "srs13F7zBdXshJHT8emH679ATuCFz8Z3qWikbgP5uD5HDD6eeZxaEc", + "tick": "308" + }, + { + "state": "srs13DsXVANrSdSpESU98pJHrZxCVocBTuqbaFD4g8QNUauxENpJhd", + "tick": "322" + }, + { + "state": "srs13MuLPbNELE9Ktnmb31a3XNTjG51VTrFmuCsg7xMFUBaQUr26JA", + "tick": "336" + }, + { + "state": "srs121rcYdJYtFt4KKxA3e5QmVsutd76zotquG1HjxFEhs2rCaEp36", + "tick": "350" + }, + { + "state": "srs12CGPVsxnvYLKQzwX9JQ3QUk7CMBpeoxrUcZoDQAkx1cQYkoE5g", + "tick": "364" + }, + { + "state": "srs11cwmAiZLDotocFLuivAVGbNgsWhstTWNa69fgzXFR4UkA4PgXe", + "tick": "378" + }, + { + "state": "srs12Sbz3Uk6UQtnN6y9DvzQ3AFFs8ff6WAKsxLJg3tzGxbFBmghVq", + "tick": "392" + }, + { + "state": "srs12YeVsf3uKu4akUyiez31XoL4dpZWut2DpSs3Xs5hgENLsz9JBe", + "tick": "406" + }, + { + "state": "srs13KZdvAzs8KoJGKL6W8n8a1ibiVPG1o74RUd59hRW9WnNpPCEA8", + "tick": "420" + }, + { + "state": "srs12BL3yCG8yWqzbgBdtVb6GdDJdZKDR47vnqECgBPXpK2sNu1E6A", + "tick": "434" + }, + { + "state": "srs12wmZ3nEwV8RPYSd73zit4pxNUeo6NNevEun9YTLAsKU54W19Je", + "tick": "470" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "119", + "end_tick": "120", + "dissection": [ + { + "state": "srs11kTkhhrevyWvFiE5oDvDNypp8QfpJZ3qjpFbVScBGFJdnmpKm7", + "tick": "119" + }, + { + "state": "srs11zJPKFACsjU6gJg6k5p2d7WTVgLrfJSeUesxjjQ4WEwfSskhQN", + "tick": "120" + } + ] +} diff --git a/tezt/tests/expected/sc_rollup.ml/Nairobi- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_peri.out b/tezt/tests/expected/sc_rollup.ml/Nairobi- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_peri.out new file mode 100644 index 0000000000000000000000000000000000000000..14c7c33dc6862ffdc9f35fcfc14a058243232e34 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Nairobi- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_peri.out @@ -0,0 +1,357 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "220000000000", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "209000000000" + }, + { + "tick": "220000000000" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198343750000", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198010742187" + }, + { + "tick": "198021484374" + }, + { + "tick": "198032226561" + }, + { + "tick": "198042968748" + }, + { + "tick": "198053710935" + }, + { + "tick": "198064453122" + }, + { + "tick": "198075195309" + }, + { + "tick": "198085937496" + }, + { + "tick": "198096679683" + }, + { + "tick": "198107421870" + }, + { + "tick": "198118164057" + }, + { + "tick": "198128906244" + }, + { + "tick": "198139648431" + }, + { + "tick": "198150390618" + }, + { + "tick": "198161132805" + }, + { + "tick": "198171874992" + }, + { + "tick": "198182617179" + }, + { + "tick": "198193359366" + }, + { + "tick": "198204101553" + }, + { + "tick": "198214843740" + }, + { + "tick": "198225585927" + }, + { + "tick": "198236328114" + }, + { + "tick": "198247070301" + }, + { + "tick": "198257812488" + }, + { + "tick": "198268554675" + }, + { + "tick": "198279296862" + }, + { + "tick": "198290039049" + }, + { + "tick": "198300781236" + }, + { + "tick": "198311523423" + }, + { + "tick": "198322265610" + }, + { + "tick": "198333007797" + }, + { + "tick": "198343750000" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198000335693", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198000010490" + }, + { + "tick": "198000020980" + }, + { + "tick": "198000031470" + }, + { + "tick": "198000041960" + }, + { + "tick": "198000052450" + }, + { + "tick": "198000062940" + }, + { + "tick": "198000073430" + }, + { + "tick": "198000083920" + }, + { + "tick": "198000094410" + }, + { + "tick": "198000104900" + }, + { + "tick": "198000115390" + }, + { + "tick": "198000125880" + }, + { + "tick": "198000136370" + }, + { + "tick": "198000146860" + }, + { + "tick": "198000157350" + }, + { + "tick": "198000167840" + }, + { + "tick": "198000178330" + }, + { + "tick": "198000188820" + }, + { + "tick": "198000199310" + }, + { + "tick": "198000209800" + }, + { + "tick": "198000220290" + }, + { + "tick": "198000230780" + }, + { + "tick": "198000241270" + }, + { + "tick": "198000251760" + }, + { + "tick": "198000262250" + }, + { + "tick": "198000272740" + }, + { + "tick": "198000283230" + }, + { + "tick": "198000293720" + }, + { + "tick": "198000304210" + }, + { + "tick": "198000314700" + }, + { + "tick": "198000325190" + }, + { + "tick": "198000335693" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198000000327", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198000000010" + }, + { + "tick": "198000000020" + }, + { + "tick": "198000000030" + }, + { + "tick": "198000000040" + }, + { + "tick": "198000000050" + }, + { + "tick": "198000000060" + }, + { + "tick": "198000000070" + }, + { + "tick": "198000000080" + }, + { + "tick": "198000000090" + }, + { + "tick": "198000000100" + }, + { + "tick": "198000000110" + }, + { + "tick": "198000000120" + }, + { + "tick": "198000000130" + }, + { + "tick": "198000000140" + }, + { + "tick": "198000000150" + }, + { + "tick": "198000000160" + }, + { + "tick": "198000000170" + }, + { + "tick": "198000000180" + }, + { + "tick": "198000000190" + }, + { + "tick": "198000000200" + }, + { + "tick": "198000000210" + }, + { + "tick": "198000000220" + }, + { + "tick": "198000000230" + }, + { + "tick": "198000000240" + }, + { + "tick": "198000000250" + }, + { + "tick": "198000000260" + }, + { + "tick": "198000000270" + }, + { + "tick": "198000000280" + }, + { + "tick": "198000000290" + }, + { + "tick": "198000000300" + }, + { + "tick": "198000000310" + }, + { + "tick": "198000000327" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000008", + "end_tick": "198000000009", + "dissection": [ + { + "tick": "198000000008" + }, + { + "tick": "198000000009" + } + ] +} diff --git a/tezt/tests/expected/sc_rollup.ml/Oxford- arith - refutation games winning strategies (pvm_proof_second_period).out b/tezt/tests/expected/sc_rollup.ml/Oxford- arith - refutation games winning strategies (pvm_proof_second_period).out new file mode 100644 index 0000000000000000000000000000000000000000..9549e08f384343922acb7d39d93e697ef5427af5 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Oxford- arith - refutation games winning strategies (pvm_proof_second_period).out @@ -0,0 +1,158 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "0", + "end_tick": "470", + "dissection": [ + { + "state": "srs11Z7LSVYF6rBXAsR8Y5LjiQNgjPNs2eLAyUp2jWCf5QDMcSHqa6", + "tick": "0" + }, + { + "state": "srs11mzbaQWFusRK8rbJtacVn8WxamepxA4BoH9naZE8cCTuzb9BKE", + "tick": "14" + }, + { + "state": "srs12VqPjB9rfqNFqmpPG7cB3vtn4jfxsYGP7oG9VBMCXauwwf7bnr", + "tick": "28" + }, + { + "state": "srs11bWN7mUqA8uyLcNbnxKPaiNDwc41PCKiz3AbSoraWF62VGuHmU", + "tick": "42" + }, + { + "state": "srs13B8p9BJmB2Zz6pXMHE69xzBaEpFrSpqh4tginHwPGdMeJh6QU6", + "tick": "56" + }, + { + "state": "srs136RdoogwdcCNhKdWWhB4Ys95VNXLNdxGGhDJawLjnnw7PEZ6Yw", + "tick": "70" + }, + { + "state": "srs12b9sAAK6XmKtFqSeA8GQrb3covrgf1pR4PBjq6rcoLNjRuvAcm", + "tick": "84" + }, + { + "state": "srs133VwCBqTHxwdkAvztrk3H3SCzCEE1F8PDrZd5fX52p9Y6Vr7Qe", + "tick": "98" + }, + { + "state": "srs129dtcW2V8FLC25QSFCdGeS7g1XvMQuNE99MVJnqa43gJfLtq38", + "tick": "112" + }, + { + "state": "srs11Zo7zUQC6NF8sbKo5pddKU4AhdvGaNqto6crFE3ByoYm3VEdHe", + "tick": "126" + }, + { + "state": "srs131hDMypk565mvwZkt8Ljd7jb9BPRWG29MdJzu3s8VkMPPNuZ8r", + "tick": "140" + }, + { + "state": "srs12xzLvQsABjiWFTSZ828pmTznGsUL2VVJM3JYBr3B4v7g3Srxpc", + "tick": "154" + }, + { + "state": "srs13FCPMFoBB93ejJoL2GWdjCfdcfPSgJDvVFCY8fGAiD33nvp3F3", + "tick": "168" + }, + { + "state": "srs11vhjsGYSuuM1fbFTJH4z4C67YBW9NNxqwPiUcazokuzPkmGgFq", + "tick": "182" + }, + { + "state": "srs13D8cnxRYs6B39Ta7H9XA65T7i9xPoGxHqg13rQ2EBWWJAYBVVQ", + "tick": "196" + }, + { + "state": "srs11kQs7LDJ3ZMFL4NYZ3DJkfHG6xDnxvMRRjD3naPo2Xs6ZmigRF", + "tick": "210" + }, + { + "state": "srs12u6kEegZxHWhtRgSZ9HCLMoQeEK53wS9LcVgSXhYaprMUW3tBZ", + "tick": "224" + }, + { + "state": "srs12sfrzHVxk3tXXZytHVxAVwZzjwZ1ZT6ebwepMXysrhSTtTVWNi", + "tick": "238" + }, + { + "state": "srs12KcUYabDR7L4Rf4ZM5hov3dR9rbg4fHXUnrUXjHzRwBwpEEugY", + "tick": "252" + }, + { + "state": "srs13MNAo1FK7smhue4vC58fxrQBKSy6NXnj82Wqo8rjHwxyLe2QfV", + "tick": "266" + }, + { + "state": "srs11kE9hTfTZKfbsucZebkSsM3hk9w8RLkA5UrHMnpF1sEacv1Raj", + "tick": "280" + }, + { + "state": "srs127nTh6bthHQFFzGPePWRdKKU9HKzGWYTh77PrVTFqTk6r55UzE", + "tick": "294" + }, + { + "state": "srs12Pk3ewtevqFts13bpYkvysXw7SMggkoqqEGqESytgpve9qHQ29", + "tick": "308" + }, + { + "state": "srs12EoJD2NGAeViyru7oxMx1NFEFQjUBJ14k3YmWbrjf1GeqJHHSa", + "tick": "322" + }, + { + "state": "srs11YWBfiRncwtt7mjZNmjQJzAQZt89qkZrY9TmH78Jc3ZYqiCETL", + "tick": "336" + }, + { + "state": "srs125iNMYAZQq5mu2jSWaqMYowaRvk7TjUKH7Z6EEQZCqJtWBT6sh", + "tick": "350" + }, + { + "state": "srs12nBhLg2eFKoq3yvnV1qtwCpB5SRqyYi8YbeNoDopcRAhhZjujh", + "tick": "364" + }, + { + "state": "srs138b2LtYoLRpYp4JonVesFU28NccbdUbN3JdXWWtayEjLj4WYp9", + "tick": "378" + }, + { + "state": "srs12HGP7mhqmxF4LMmfF8uwSnwPcNphVrPw1oWJ5BDmpQuBHaeEBy", + "tick": "392" + }, + { + "state": "srs12BmKjVNdoTCyd7GQXjZMcsqYRbdFCRbEAiPhZNiMhmWcYmzV2S", + "tick": "406" + }, + { + "state": "srs12YvWguefwCazMmDoqTxdYSsPC9Sfbi5f2fJ8sAZVH38Q17ngno", + "tick": "420" + }, + { + "state": "srs11vzwocNM9VB24nv2f1Pv11FvWx1WbuRQZFNiKkVKckM2R22s5d", + "tick": "434" + }, + { + "state": "srs11zQFAbwSNjG9G9JG5zdYa9fsjSAaGEPeaYxxswKye9Fsk2tHCZ", + "tick": "470" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "119", + "end_tick": "120", + "dissection": [ + { + "state": "srs11ZgNf6wN1qpfYuv1jGgTaRcyZ2hAXtiXSjzx8zZ3YApMXzm72N", + "tick": "119" + }, + { + "state": "srs133GWsCMg74kubRZ2Gsm9Brca1GG8rMHr2jtBsgAXVdteRZmLNK", + "tick": "120" + } + ] +} diff --git a/tezt/tests/expected/sc_rollup.ml/Oxford- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_perio.out b/tezt/tests/expected/sc_rollup.ml/Oxford- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_perio.out new file mode 100644 index 0000000000000000000000000000000000000000..14c7c33dc6862ffdc9f35fcfc14a058243232e34 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Oxford- wasm_2_0_0 - refutation games winning strategies (pvm_proof_second_perio.out @@ -0,0 +1,357 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "220000000000", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "209000000000" + }, + { + "tick": "220000000000" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198343750000", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198010742187" + }, + { + "tick": "198021484374" + }, + { + "tick": "198032226561" + }, + { + "tick": "198042968748" + }, + { + "tick": "198053710935" + }, + { + "tick": "198064453122" + }, + { + "tick": "198075195309" + }, + { + "tick": "198085937496" + }, + { + "tick": "198096679683" + }, + { + "tick": "198107421870" + }, + { + "tick": "198118164057" + }, + { + "tick": "198128906244" + }, + { + "tick": "198139648431" + }, + { + "tick": "198150390618" + }, + { + "tick": "198161132805" + }, + { + "tick": "198171874992" + }, + { + "tick": "198182617179" + }, + { + "tick": "198193359366" + }, + { + "tick": "198204101553" + }, + { + "tick": "198214843740" + }, + { + "tick": "198225585927" + }, + { + "tick": "198236328114" + }, + { + "tick": "198247070301" + }, + { + "tick": "198257812488" + }, + { + "tick": "198268554675" + }, + { + "tick": "198279296862" + }, + { + "tick": "198290039049" + }, + { + "tick": "198300781236" + }, + { + "tick": "198311523423" + }, + { + "tick": "198322265610" + }, + { + "tick": "198333007797" + }, + { + "tick": "198343750000" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198000335693", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198000010490" + }, + { + "tick": "198000020980" + }, + { + "tick": "198000031470" + }, + { + "tick": "198000041960" + }, + { + "tick": "198000052450" + }, + { + "tick": "198000062940" + }, + { + "tick": "198000073430" + }, + { + "tick": "198000083920" + }, + { + "tick": "198000094410" + }, + { + "tick": "198000104900" + }, + { + "tick": "198000115390" + }, + { + "tick": "198000125880" + }, + { + "tick": "198000136370" + }, + { + "tick": "198000146860" + }, + { + "tick": "198000157350" + }, + { + "tick": "198000167840" + }, + { + "tick": "198000178330" + }, + { + "tick": "198000188820" + }, + { + "tick": "198000199310" + }, + { + "tick": "198000209800" + }, + { + "tick": "198000220290" + }, + { + "tick": "198000230780" + }, + { + "tick": "198000241270" + }, + { + "tick": "198000251760" + }, + { + "tick": "198000262250" + }, + { + "tick": "198000272740" + }, + { + "tick": "198000283230" + }, + { + "tick": "198000293720" + }, + { + "tick": "198000304210" + }, + { + "tick": "198000314700" + }, + { + "tick": "198000325190" + }, + { + "tick": "198000335693" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000000", + "end_tick": "198000000327", + "dissection": [ + { + "tick": "198000000000" + }, + { + "tick": "198000000010" + }, + { + "tick": "198000000020" + }, + { + "tick": "198000000030" + }, + { + "tick": "198000000040" + }, + { + "tick": "198000000050" + }, + { + "tick": "198000000060" + }, + { + "tick": "198000000070" + }, + { + "tick": "198000000080" + }, + { + "tick": "198000000090" + }, + { + "tick": "198000000100" + }, + { + "tick": "198000000110" + }, + { + "tick": "198000000120" + }, + { + "tick": "198000000130" + }, + { + "tick": "198000000140" + }, + { + "tick": "198000000150" + }, + { + "tick": "198000000160" + }, + { + "tick": "198000000170" + }, + { + "tick": "198000000180" + }, + { + "tick": "198000000190" + }, + { + "tick": "198000000200" + }, + { + "tick": "198000000210" + }, + { + "tick": "198000000220" + }, + { + "tick": "198000000230" + }, + { + "tick": "198000000240" + }, + { + "tick": "198000000250" + }, + { + "tick": "198000000260" + }, + { + "tick": "198000000270" + }, + { + "tick": "198000000280" + }, + { + "tick": "198000000290" + }, + { + "tick": "198000000300" + }, + { + "tick": "198000000310" + }, + { + "tick": "198000000327" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "198000000008", + "end_tick": "198000000009", + "dissection": [ + { + "tick": "198000000008" + }, + { + "tick": "198000000009" + } + ] +} diff --git a/tezt/tests/sc_rollup.ml b/tezt/tests/sc_rollup.ml index a354cf5084284ea9ab677266117d33fefad29661..d3816699eec5f50f5caf7c565a2d5443910ffb77 100644 --- a/tezt/tests/sc_rollup.ml +++ b/tezt/tests/sc_rollup.ml @@ -2913,6 +2913,12 @@ let test_refutation protocols ~kind = ~final_level:80 ~empty_levels:[4; 5] ~priority:`Priority_honest ); + ( "pvm_proof_second_period", + refutation_scenario_parameters + ~loser_modes:["15 2 5"] + (inputs_for 18) + ~final_level:80 + ~priority:`Priority_honest ); ( "timeout", refutation_scenario_parameters ~loser_modes:["5 2 1"] @@ -3006,6 +3012,13 @@ let test_refutation protocols ~kind = (inputs_for 10) ~final_level:80 ~priority:`Priority_loser ); + (* Conflict in second commitment period *) + ( "pvm_proof_second_period", + refutation_scenario_parameters + ~loser_modes:["15 7 11_000_001_000"] + (inputs_for 16) + ~final_level:80 + ~priority:`Priority_loser ); ( "parallel_games_0", refutation_scenario_parameters ~loser_modes:["4 0 0"; "5 7 11_000_000_001"]