From 389b064795cbc55b9434a5bc8617b59c03226da3 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 09:47:18 +0100 Subject: [PATCH 0001/1220] Proto/Michelson: remove var_annot from stack_ty The `Item_t` constructor loses its last parameter --- .../lib_benchmark/michelson_samplers.ml | 2 +- src/proto_alpha/lib_benchmark/type_helpers.ml | 2 +- .../lib_benchmarks_proto/michelson_types.ml | 2 +- src/proto_alpha/lib_plugin/plugin.ml | 4 +- .../lib_protocol/script_interpreter.ml | 8 +- .../lib_protocol/script_interpreter_defs.ml | 6 +- .../lib_protocol/script_ir_translator.ml | 1229 ++++++++--------- .../lib_protocol/script_typed_ir.ml | 8 +- .../lib_protocol/script_typed_ir.mli | 4 +- .../lib_protocol/script_typed_ir_size.ml | 26 +- .../lib_protocol/test/test_interpretation.ml | 6 +- .../lib_protocol/test/test_typechecking.ml | 4 +- 12 files changed, 598 insertions(+), 703 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index de8979d2ab..3a6103d3dc 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -717,7 +717,7 @@ end) let open Script_typed_ir in fun stack_ty -> match stack_ty with - | Item_t (ty, tl, _) -> + | Item_t (ty, tl) -> let* elt = value ty in let* tl = stack tl in return ((elt, tl) : a * b) diff --git a/src/proto_alpha/lib_benchmark/type_helpers.ml b/src/proto_alpha/lib_benchmark/type_helpers.ml index eea9a26d70..989ee77829 100644 --- a/src/proto_alpha/lib_benchmark/type_helpers.ml +++ b/src/proto_alpha/lib_benchmark/type_helpers.ml @@ -68,7 +68,7 @@ let rec michelson_type_list_to_ex_stack_ty | Ex_ty ty -> ( let ex_stack_ty = michelson_type_list_to_ex_stack_ty tl ctxt in match ex_stack_ty with - | Ex_stack_ty tl -> Ex_stack_ty (Item_t (ty, tl, None)))) + | Ex_stack_ty tl -> Ex_stack_ty (Item_t (ty, tl)))) let base_type_to_michelson_type (typ : Type.Base.t) = let typ = Mikhailsky.map_var (fun _ -> Mikhailsky.unit_ty) typ in diff --git a/src/proto_alpha/lib_benchmarks_proto/michelson_types.ml b/src/proto_alpha/lib_benchmarks_proto/michelson_types.ml index 047097c932..0a2ce6030f 100644 --- a/src/proto_alpha/lib_benchmarks_proto/michelson_types.ml +++ b/src/proto_alpha/lib_benchmarks_proto/michelson_types.ml @@ -28,7 +28,7 @@ open Script_typed_ir [@@@ocaml.warning "-32"] -let ( @$ ) x y = Item_t (x, y, None) +let ( @$ ) x y = Item_t (x, y) let bot = Bot_t diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 68a74f1c83..9bf9ab9b1a 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -1484,7 +1484,7 @@ module RPC = struct (a, s) Script_typed_ir.stack_ty * (a * s) -> (Script.expr * string option) list tzresult Lwt.t = function | (Bot_t, (EmptyCell, EmptyCell)) -> return_nil - | (Item_t (ty, rest_ty, annot), (v, rest)) -> + | (Item_t (ty, rest_ty), (v, rest)) -> Script_ir_translator.unparse_data ctxt Unparsing_mode.unparsing_mode @@ -1493,7 +1493,7 @@ module RPC = struct >>=? fun (data, _ctxt) -> unparse_stack (rest_ty, rest) >|=? fun rest -> let annot = - match Script_ir_annot.unparse_var_annot annot with + match Script_ir_annot.unparse_var_annot None with | [] -> None | [a] -> Some a | _ -> assert false diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 72247a79db..dd156b88f5 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1065,8 +1065,8 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = | Lam ( { kloc; - kaft = Item_t (aft_ty, Bot_t, _); - kbef = Item_t (bef_ty, Bot_t, _); + kaft = Item_t (aft_ty, Bot_t); + kbef = Item_t (bef_ty, Bot_t); kinstr; }, _script_view ) -> ( @@ -1100,8 +1100,8 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = | Ok (Eq, Eq) -> ( let kkinfo = kinfo_of_kinstr k in match kkinfo.kstack_ty with - | Item_t (_, s, a) -> - let kstack_ty = Item_t (output_ty, s, a) in + | Item_t (_, s) -> + let kstack_ty = Item_t (output_ty, s) in let kkinfo = {kkinfo with kstack_ty} in let ks = KCons (ICons_some (kkinfo, k), ks) in (step [@ocaml.tailcall]) diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index 0aacd527bc..bcafd60fcf 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -456,14 +456,14 @@ let rec kundip : formal argument to [v]. The type of [v] is represented by [ty]. *) let apply ctxt gas capture_ty capture lam = let (Lam (descr, expr)) = lam in - let (Item_t (full_arg_ty, _, _)) = descr.kbef in + let (Item_t (full_arg_ty, _)) = descr.kbef in let ctxt = update_context gas ctxt in unparse_data ctxt Optimized capture_ty capture >>=? fun (const_expr, ctxt) -> let loc = Micheline.dummy_location in unparse_ty ~loc ctxt capture_ty >>?= fun (ty_expr, ctxt) -> match full_arg_ty with | Pair_t ((capture_ty, _, _), (arg_ty, _, _), _) -> - let arg_stack_ty = Item_t (arg_ty, Bot_t, None) in + let arg_stack_ty = Item_t (arg_ty, Bot_t) in let full_descr = { kloc = descr.kloc; @@ -474,7 +474,7 @@ let apply ctxt gas capture_ty capture lam = let kinfo_pair = { iloc = descr.kloc; - kstack_ty = Item_t (capture_ty, arg_stack_ty, None); + kstack_ty = Item_t (capture_ty, arg_stack_ty); } in IConst (kinfo_const, capture, ICons_pair (kinfo_pair, descr.kinstr))); diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 00934361d8..494d62763f 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -399,10 +399,10 @@ let[@coq_axiom_with_reason "gadt"] rec comparable_ty_of_ty : let rec unparse_stack_uncarbonated : type a s. (a, s) stack_ty -> (Script.expr * Script.annot) list = function | Bot_t -> [] - | Item_t (ty, rest, annot) -> + | Item_t (ty, rest) -> let uty = unparse_ty_uncarbonated ~loc:() ty in let urest = unparse_stack_uncarbonated rest in - (strip_locations uty, unparse_var_annot annot) :: urest + (strip_locations uty, unparse_var_annot None) :: urest let serialize_stack_for_error ctxt stack_ty = match Gas.level ctxt with @@ -1130,16 +1130,15 @@ let merge_stacks : fun ctxt lvl stack1 stack2 -> match (stack1, stack2) with | (Bot_t, Bot_t) -> ok (Eq, Bot_t, ctxt) - | (Item_t (ty1, rest1, annot1), Item_t (ty2, rest2, annot2)) -> + | (Item_t (ty1, rest1), Item_t (ty2, rest2)) -> Gas_monad.run ctxt @@ merge_types ~error_details:Informative ~legacy loc ty1 ty2 |> record_trace (Bad_stack_item lvl) >>? fun (eq_ty, ctxt) -> eq_ty >>? fun (Eq, ty) -> help ctxt (lvl + 1) rest1 rest2 >|? fun (Eq, rest, ctxt) -> - let annot = merge_var_annot annot1 annot2 in ( (Eq : ((ta, ts) stack_ty, (tb, tu) stack_ty) eq), - Item_t (ty, rest, annot), + Item_t (ty, rest), ctxt ) | (_, _) -> error Bad_stack_length in @@ -1876,7 +1875,6 @@ type (_, _) dig_proof_argument = | Dig_proof_argument : ('x, 'a * 's, 'a, 's, 'b, 't, 'c, 'u) stack_prefix_preservation_witness * 'x ty - * var_annot option * ('c, 'u) stack_ty -> ('b, 't) dig_proof_argument @@ -2872,7 +2870,7 @@ and parse_view_returning : ctxt ~legacy view_code - (Item_t (pair_ty, Bot_t, None)) + (Item_t (pair_ty, Bot_t)) >>=? fun (judgement, ctxt) -> Lwt.return @@ @@ -2880,19 +2878,18 @@ and parse_view_returning : | Failed {descr} -> let cur_view' = Ex_view - (Lam - (close_descr (descr (Item_t (output_ty', Bot_t, None))), view_code)) + (Lam (close_descr (descr (Item_t (output_ty', Bot_t))), view_code)) in ok (cur_view', ctxt) | Typed ({loc; aft; _} as descr) -> ( let ill_type_view loc stack_ty () = let actual = serialize_stack_for_error ctxt stack_ty in - let expected_stack = Item_t (output_ty', Bot_t, None) in + let expected_stack = Item_t (output_ty', Bot_t) in let expected = serialize_stack_for_error ctxt expected_stack in Ill_typed_view {loc; actual; expected} in match aft with - | Item_t (ty, Bot_t, _) -> + | Item_t (ty, Bot_t) -> record_trace_eval (ill_type_view loc aft : unit -> _) ( ty_eq ~legacy ctxt loc ty output_ty' >|? fun (Eq, ctxt) -> @@ -2931,7 +2928,7 @@ and[@coq_axiom_with_reason "gadt"] parse_returning : tc_context ctxt ~legacy - (arg, arg_annot) + (arg, _arg_annot) ret script_instr -> parse_instr @@ -2941,10 +2938,9 @@ and[@coq_axiom_with_reason "gadt"] parse_returning : ~legacy ~stack_depth:(stack_depth + 1) script_instr - (Item_t (arg, Bot_t, arg_annot)) + (Item_t (arg, Bot_t)) >>=? function - | (Typed ({loc; aft = Item_t (ty, Bot_t, _) as stack_ty; _} as descr), ctxt) - -> + | (Typed ({loc; aft = Item_t (ty, Bot_t) as stack_ty; _} as descr), ctxt) -> Lwt.return @@ record_trace_eval (fun () -> @@ -2960,7 +2956,7 @@ and[@coq_axiom_with_reason "gadt"] parse_returning : fail @@ Bad_return (loc, stack_ty, ret) | (Failed {descr}, ctxt) -> return - ( (Lam (close_descr (descr (Item_t (ret, Bot_t, None))), script_instr) + ( (Lam (close_descr (descr (Item_t (ret, Bot_t))), script_instr) : (arg, ret) lambda), ctxt ) @@ -3022,7 +3018,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : in match (script_instr, stack_ty) with (* stack ops *) - | (Prim (loc, I_DROP, [], annot), Item_t (_, rest, _)) -> + | (Prim (loc, I_DROP, [], annot), Item_t (_, rest)) -> (error_unexpected_annot loc annot >>?= fun () -> typed ctxt loc {apply = (fun kinfo k -> IDrop (kinfo, k))} rest : ((a, s) judgement * context) tzresult Lwt.t) @@ -3035,7 +3031,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : fun n stk -> match (Compare.Int.(n = 0), stk) with | (true, rest) -> ok @@ Dropn_proof_argument (KRest, rest) - | (false, Item_t (_, rest, _)) -> + | (false, Item_t (_, rest)) -> make_proof_argument (n - 1) rest >|? fun (Dropn_proof_argument (n', stack_after_drops)) -> let kinfo = {iloc = loc; kstack_ty = rest} in @@ -3053,8 +3049,8 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* Technically, the arities 0 and 1 are allowed but the error only mentions 1. However, DROP is equivalent to DROP 1 so hinting at an arity of 1 makes sense. *) fail (Invalid_arity (loc, I_DROP, 1, List.length l)) - | (Prim (loc, I_DUP, [], annot), Item_t (v, rest, stack_annot)) -> - parse_var_annot loc annot ~default:stack_annot >>?= fun annot -> + | (Prim (loc, I_DUP, [], annot), Item_t (v, rest)) -> + parse_var_annot loc annot ~default:None >>?= fun _annot -> record_trace_eval (fun () -> let t = serialize_ty_for_error v in @@ -3062,17 +3058,17 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (check_dupable_ty ctxt loc v) >>?= fun ctxt -> let dup = {apply = (fun kinfo k -> IDup (kinfo, k))} in - typed ctxt loc dup (Item_t (v, Item_t (v, rest, stack_annot), annot)) + typed ctxt loc dup (Item_t (v, Item_t (v, rest))) | (Prim (loc, I_DUP, [n], v_annot), stack_ty) -> - parse_var_annot loc v_annot >>?= fun annot -> + parse_var_annot loc v_annot >>?= fun _annot -> let rec make_proof_argument : type a s. int -> (a, s) stack_ty -> (a * s) dup_n_proof_argument tzresult = fun n (stack_ty : (a, s) stack_ty) -> match (n, stack_ty) with - | (1, Item_t (hd_ty, _, _)) -> + | (1, Item_t (hd_ty, _)) -> ok @@ Dup_n_proof_argument (Dup_n_zero, hd_ty) - | (n, Item_t (_, tl_ty, _)) -> + | (n, Item_t (_, tl_ty)) -> make_proof_argument (n - 1) tl_ty >|? fun (Dup_n_proof_argument (dup_n_witness, b_ty)) -> Dup_n_proof_argument (Dup_n_succ dup_n_witness, b_ty) @@ -3093,21 +3089,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (check_dupable_ty ctxt loc after_ty) >>?= fun ctxt -> let dupn = {apply = (fun kinfo k -> IDup_n (kinfo, n, witness, k))} in - typed ctxt loc dupn (Item_t (after_ty, stack_ty, annot)) + typed ctxt loc dupn (Item_t (after_ty, stack_ty)) | (Prim (loc, I_DIG, [n], result_annot), stack) -> let rec make_proof_argument : type a s. int -> (a, s) stack_ty -> (a, s) dig_proof_argument tzresult = fun n stk -> match (Compare.Int.(n = 0), stk) with - | (true, Item_t (v, rest, annot)) -> - ok @@ Dig_proof_argument (KRest, v, annot, rest) - | (false, Item_t (v, rest, annot)) -> + | (true, Item_t (v, rest)) -> ok @@ Dig_proof_argument (KRest, v, rest) + | (false, Item_t (v, rest)) -> make_proof_argument (n - 1) rest - >|? fun (Dig_proof_argument (n', x, xv, aft')) -> + >|? fun (Dig_proof_argument (n', x, aft')) -> let kinfo = {iloc = loc; kstack_ty = aft'} in - Dig_proof_argument - (KPrefix (kinfo, n'), x, xv, Item_t (v, aft', annot)) + Dig_proof_argument (KPrefix (kinfo, n'), x, Item_t (v, aft')) | (_, _) -> let whole_stack = serialize_stack_for_error ctxt stack in error (Bad_stack (loc, I_DIG, 3, whole_stack)) @@ -3115,38 +3109,34 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_uint10 n >>?= fun n -> Gas.consume ctxt (Typecheck_costs.proof_argument n) >>?= fun ctxt -> error_unexpected_annot loc result_annot >>?= fun () -> - make_proof_argument n stack - >>?= fun (Dig_proof_argument (n', x, stack_annot, aft)) -> + make_proof_argument n stack >>?= fun (Dig_proof_argument (n', x, aft)) -> let dig = {apply = (fun kinfo k -> IDig (kinfo, n, n', k))} in - typed ctxt loc dig (Item_t (x, aft, stack_annot)) + typed ctxt loc dig (Item_t (x, aft)) | (Prim (loc, I_DIG, (([] | _ :: _ :: _) as l), _), _) -> fail (Invalid_arity (loc, I_DIG, 1, List.length l)) - | (Prim (loc, I_DUG, [n], result_annot), Item_t (x, whole_stack, stack_annot)) - -> + | (Prim (loc, I_DUG, [n], result_annot), Item_t (x, whole_stack)) -> parse_uint10 n >>?= fun whole_n -> Gas.consume ctxt (Typecheck_costs.proof_argument whole_n) >>?= fun ctxt -> let rec make_proof_argument : type a s x. int -> x ty -> - var_annot option -> (a, s) stack_ty -> (a, s, x) dug_proof_argument tzresult = - fun n x stack_annot stk -> + fun n x stk -> match (Compare.Int.(n = 0), stk) with - | (true, rest) -> - ok @@ Dug_proof_argument (KRest, Item_t (x, rest, stack_annot)) - | (false, Item_t (v, rest, annot)) -> - make_proof_argument (n - 1) x stack_annot rest + | (true, rest) -> ok @@ Dug_proof_argument (KRest, Item_t (x, rest)) + | (false, Item_t (v, rest)) -> + make_proof_argument (n - 1) x rest >|? fun (Dug_proof_argument (n', aft')) -> let kinfo = {iloc = loc; kstack_ty = aft'} in - Dug_proof_argument (KPrefix (kinfo, n'), Item_t (v, aft', annot)) + Dug_proof_argument (KPrefix (kinfo, n'), Item_t (v, aft')) | (_, _) -> let whole_stack = serialize_stack_for_error ctxt whole_stack in error (Bad_stack (loc, I_DUG, whole_n, whole_stack)) in error_unexpected_annot loc result_annot >>?= fun () -> - make_proof_argument whole_n x stack_annot whole_stack + make_proof_argument whole_n x whole_stack >>?= fun (Dug_proof_argument (n', aft)) -> let dug = {apply = (fun kinfo k -> IDug (kinfo, whole_n, n', k))} in typed ctxt loc dug aft @@ -3157,14 +3147,13 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : error (Bad_stack (loc, I_DUG, 1, stack)) ) | (Prim (loc, I_DUG, (([] | _ :: _ :: _) as l), _), _) -> fail (Invalid_arity (loc, I_DUG, 1, List.length l)) - | ( Prim (loc, I_SWAP, [], annot), - Item_t (v, Item_t (w, rest, stack_annot), cur_top_annot) ) -> + | (Prim (loc, I_SWAP, [], annot), Item_t (v, Item_t (w, rest))) -> error_unexpected_annot loc annot >>?= fun () -> let swap = {apply = (fun kinfo k -> ISwap (kinfo, k))} in - let stack_ty = Item_t (w, Item_t (v, rest, cur_top_annot), stack_annot) in + let stack_ty = Item_t (w, Item_t (v, rest)) in typed ctxt loc swap stack_ty | (Prim (loc, I_PUSH, [t; d], annot), stack) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> parse_packable_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy t >>?= fun (Ex_ty t, ctxt) -> parse_data @@ -3177,42 +3166,41 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : d >>=? fun (v, ctxt) -> let const = {apply = (fun kinfo k -> IConst (kinfo, v, k))} in - typed ctxt loc const (Item_t (t, stack, annot)) + typed ctxt loc const (Item_t (t, stack)) | (Prim (loc, I_UNIT, [], annot), stack) -> - parse_var_type_annot loc annot >>?= fun (annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> let const = {apply = (fun kinfo k -> IConst (kinfo, (), k))} in - typed ctxt loc const (Item_t (unit_t ~annot:ty_name, stack, annot)) + typed ctxt loc const (Item_t (unit_t ~annot:ty_name, stack)) (* options *) - | (Prim (loc, I_SOME, [], annot), Item_t (t, rest, _)) -> - parse_var_type_annot loc annot >>?= fun (annot, ty_name) -> + | (Prim (loc, I_SOME, [], annot), Item_t (t, rest)) -> + parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> let cons_some = {apply = (fun kinfo k -> ICons_some (kinfo, k))} in option_t loc t ~annot:ty_name >>?= fun ty -> - typed ctxt loc cons_some (Item_t (ty, rest, annot)) + typed ctxt loc cons_some (Item_t (ty, rest)) | (Prim (loc, I_NONE, [t], annot), stack) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy t >>?= fun (Ex_ty t, ctxt) -> - parse_var_type_annot loc annot >>?= fun (annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> let cons_none = {apply = (fun kinfo k -> ICons_none (kinfo, k))} in option_t loc t ~annot:ty_name >>?= fun ty -> - let stack_ty = Item_t (ty, stack, annot) in + let stack_ty = Item_t (ty, stack) in typed ctxt loc cons_none stack_ty - | (Prim (loc, I_MAP, [body], annot), Item_t (Option_t (t, _), rest, opt_annot)) - -> ( + | (Prim (loc, I_MAP, [body], annot), Item_t (Option_t (t, _), rest)) -> ( check_kind [Seq_kind] body >>?= fun () -> - parse_var_type_annot loc annot >>?= fun (ret_annot, opt_ty_name) -> - let elt_annot = gen_access_annot opt_annot default_some_annot in + parse_var_type_annot loc annot >>?= fun (_ret_annot, opt_ty_name) -> + let _elt_annot = gen_access_annot None default_some_annot in non_terminal_recursion ?type_logger ~legacy tc_context ctxt body - (Item_t (t, rest, elt_annot)) + (Item_t (t, rest)) >>=? fun (judgement, ctxt) -> Lwt.return @@ match judgement with - | Typed ({loc; aft = Item_t (ret, aft_rest, _aft_annot); _} as kibody) -> + | Typed ({loc; aft = Item_t (ret, aft_rest); _} as kibody) -> let invalid_map_body () = let aft = serialize_stack_for_error ctxt kibody.aft in Invalid_map_body (loc, aft) @@ -3222,10 +3210,8 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ( merge_stacks ~legacy loc ctxt 1 aft_rest rest >>? fun (Eq, rest, ctxt) -> option_t loc ret ~annot:opt_ty_name >>? fun opt_ty -> - let final_stack = Item_t (opt_ty, rest, ret_annot) in - let hinfo = - {iloc = loc; kstack_ty = Item_t (ret, aft_rest, ret_annot)} - in + let final_stack = Item_t (opt_ty, rest) in + let hinfo = {iloc = loc; kstack_ty = Item_t (ret, aft_rest)} in let cinfo = kinfo_of_descr kibody in let body = kibody.instr.apply cinfo (IHalt hinfo) in let apply kinfo k = IOpt_map {kinfo; body; k} in @@ -3235,14 +3221,14 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : error (Invalid_map_body (loc, aft)) | Failed _ -> error (Invalid_map_block_fail loc)) | ( Prim (loc, I_IF_NONE, [bt; bf], annot), - (Item_t (Option_t (t, _), rest, option_annot) as bef) ) -> + (Item_t (Option_t (t, _), rest) as bef) ) -> check_kind [Seq_kind] bt >>?= fun () -> check_kind [Seq_kind] bf >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let annot = gen_access_annot option_annot default_some_annot in + let _annot = gen_access_annot None default_some_annot in non_terminal_recursion ?type_logger tc_context ctxt ~legacy bt rest >>=? fun (btr, ctxt) -> - let stack_ty = Item_t (t, rest, annot) in + let stack_ty = Item_t (t, rest) in non_terminal_recursion ?type_logger tc_context ctxt ~legacy bf stack_ty >>=? fun (bfr, ctxt) -> let branch ibt ibf = @@ -3262,36 +3248,34 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : in Lwt.return @@ merge_branches ~legacy ctxt loc btr bfr {branch} (* pairs *) - | ( Prim (loc, I_PAIR, [], annot), - Item_t (a, Item_t (b, rest, snd_annot), fst_annot) ) -> + | (Prim (loc, I_PAIR, [], annot), Item_t (a, Item_t (b, rest))) -> parse_constr_annot loc annot - ~if_special_first:(var_to_field_annot fst_annot) - ~if_special_second:(var_to_field_annot snd_annot) - >>?= fun (annot, ty_name, l_field, r_field) -> - pair_t loc (a, l_field, fst_annot) (b, r_field, snd_annot) ~annot:ty_name + ~if_special_first:(var_to_field_annot None) + ~if_special_second:(var_to_field_annot None) + >>?= fun (_annot, ty_name, l_field, r_field) -> + pair_t loc (a, l_field, None) (b, r_field, None) ~annot:ty_name >>?= fun ty -> - let stack_ty = Item_t (ty, rest, annot) in + let stack_ty = Item_t (ty, rest) in let cons_pair = {apply = (fun kinfo k -> ICons_pair (kinfo, k))} in typed ctxt loc cons_pair stack_ty | (Prim (loc, I_PAIR, [n], annot), stack_ty) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let rec make_proof_argument : type a s. int -> (a, s) stack_ty -> (a * s) comb_proof_argument tzresult = fun n stack_ty -> match (n, stack_ty) with - | (1, Item_t (a_ty, tl_ty, _a_annot_opt)) -> - ok (Comb_proof_argument (Comb_one, Item_t (a_ty, tl_ty, annot))) - | (n, Item_t (a_ty, tl_ty, _prop_annot_opt)) -> + | (1, Item_t (a_ty, tl_ty)) -> + ok (Comb_proof_argument (Comb_one, Item_t (a_ty, tl_ty))) + | (n, Item_t (a_ty, tl_ty)) -> make_proof_argument (n - 1) tl_ty - >>? fun (Comb_proof_argument - (comb_witness, Item_t (b_ty, tl_ty', annot))) -> + >>? fun (Comb_proof_argument (comb_witness, Item_t (b_ty, tl_ty'))) + -> pair_t loc (a_ty, None, None) (b_ty, None, None) ~annot:None >|? fun pair_t -> - Comb_proof_argument - (Comb_succ comb_witness, Item_t (pair_t, tl_ty', annot)) + Comb_proof_argument (Comb_succ comb_witness, Item_t (pair_t, tl_ty')) | _ -> let whole_stack = serialize_stack_for_error ctxt stack_ty in error (Bad_stack (loc, I_PAIR, 1, whole_stack)) @@ -3311,21 +3295,13 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : int -> (a, s) stack_ty -> (a * s) uncomb_proof_argument tzresult = fun n stack_ty -> match (n, stack_ty) with - | (1, Item_t (a_ty, tl_ty, annot)) -> - ok @@ Uncomb_proof_argument (Uncomb_one, Item_t (a_ty, tl_ty, annot)) - | ( n, - Item_t - ( Pair_t ((a_ty, field_opt, _), (b_ty, b_field_opt, _), _), - tl_ty, - _ ) ) -> - let b_annot = Script_ir_annot.field_to_var_annot b_field_opt in - make_proof_argument (n - 1) (Item_t (b_ty, tl_ty, b_annot)) + | (1, Item_t (a_ty, tl_ty)) -> + ok @@ Uncomb_proof_argument (Uncomb_one, Item_t (a_ty, tl_ty)) + | (n, Item_t (Pair_t ((a_ty, _, _), (b_ty, _, _), _), tl_ty)) -> + make_proof_argument (n - 1) (Item_t (b_ty, tl_ty)) >|? fun (Uncomb_proof_argument (uncomb_witness, after_ty)) -> Uncomb_proof_argument - ( Uncomb_succ uncomb_witness, - Item_t - (a_ty, after_ty, Script_ir_annot.field_to_var_annot field_opt) - ) + (Uncomb_succ uncomb_witness, Item_t (a_ty, after_ty)) | _ -> let whole_stack = serialize_stack_for_error ctxt stack_ty in error (Bad_stack (loc, I_UNPAIR, 1, whole_stack)) @@ -3338,8 +3314,8 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : >>?= fun (Uncomb_proof_argument (witness, after_ty)) -> let uncomb = {apply = (fun kinfo k -> IUncomb (kinfo, n, witness, k))} in typed ctxt loc uncomb after_ty - | (Prim (loc, I_GET, [n], annot), Item_t (comb_ty, rest_ty, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_GET, [n], annot), Item_t (comb_ty, rest_ty)) -> + parse_var_annot loc annot >>?= fun _annot -> let rec make_proof_argument : type b. int -> b ty -> b comb_get_proof_argument tzresult = fun n ty -> @@ -3361,14 +3337,14 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Gas.consume ctxt (Typecheck_costs.proof_argument n) >>?= fun ctxt -> make_proof_argument n comb_ty >>?= fun (Comb_get_proof_argument (witness, ty')) -> - let after_stack_ty = Item_t (ty', rest_ty, annot) in + let after_stack_ty = Item_t (ty', rest_ty) in let comb_get = {apply = (fun kinfo k -> IComb_get (kinfo, n, witness, k))} in typed ctxt loc comb_get after_stack_ty | ( Prim (loc, I_UPDATE, [n], annot), - Item_t (value_ty, Item_t (comb_ty, rest_ty, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (value_ty, Item_t (comb_ty, rest_ty)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let rec make_proof_argument : type value before. int -> @@ -3396,7 +3372,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Gas.consume ctxt (Typecheck_costs.proof_argument n) >>?= fun ctxt -> make_proof_argument n value_ty comb_ty >>?= fun (Comb_set_proof_argument (witness, after_ty)) -> - let after_stack_ty = Item_t (after_ty, rest_ty, annot) in + let after_stack_ty = Item_t (after_ty, rest_ty) in let comb_set = {apply = (fun kinfo k -> IComb_set (kinfo, n, witness, k))} in @@ -3407,87 +3383,75 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ( (a, expected_field_annot_a, a_annot), (b, expected_field_annot_b, b_annot), _ ), - rest, - pair_annot ) ) -> + rest ) ) -> parse_unpair_annot loc annot - ~pair_annot + ~pair_annot:None ~value_annot_car:a_annot ~value_annot_cdr:b_annot ~field_name_car:expected_field_annot_a ~field_name_cdr:expected_field_annot_b - >>?= fun (annot_a, annot_b, field_a, field_b) -> + >>?= fun (_annot_a, _annot_b, field_a, field_b) -> check_correct_field field_a expected_field_annot_a >>?= fun () -> check_correct_field field_b expected_field_annot_b >>?= fun () -> let unpair = {apply = (fun kinfo k -> IUnpair (kinfo, k))} in - typed ctxt loc unpair (Item_t (a, Item_t (b, rest, annot_b), annot_a)) + typed ctxt loc unpair (Item_t (a, Item_t (b, rest))) | ( Prim (loc, I_CAR, [], annot), - Item_t - (Pair_t ((a, expected_field_annot, a_annot), _, _), rest, pair_annot) ) - -> + Item_t (Pair_t ((a, expected_field_annot, a_annot), _, _), rest) ) -> parse_destr_annot loc annot - ~pair_annot + ~pair_annot:None ~value_annot:a_annot ~field_name:expected_field_annot ~default_accessor:default_car_annot - >>?= fun (annot, field_annot) -> + >>?= fun (_annot, field_annot) -> check_correct_field field_annot expected_field_annot >>?= fun () -> let car = {apply = (fun kinfo k -> ICar (kinfo, k))} in - typed ctxt loc car (Item_t (a, rest, annot)) + typed ctxt loc car (Item_t (a, rest)) | ( Prim (loc, I_CDR, [], annot), - Item_t - (Pair_t (_, (b, expected_field_annot, b_annot), _), rest, pair_annot) ) - -> + Item_t (Pair_t (_, (b, expected_field_annot, b_annot), _), rest) ) -> parse_destr_annot loc annot - ~pair_annot + ~pair_annot:None ~value_annot:b_annot ~field_name:expected_field_annot ~default_accessor:default_cdr_annot - >>?= fun (annot, field_annot) -> + >>?= fun (_annot, field_annot) -> check_correct_field field_annot expected_field_annot >>?= fun () -> let cdr = {apply = (fun kinfo k -> ICdr (kinfo, k))} in - typed ctxt loc cdr (Item_t (b, rest, annot)) + typed ctxt loc cdr (Item_t (b, rest)) (* unions *) - | (Prim (loc, I_LEFT, [tr], annot), Item_t (tl, rest, stack_annot)) -> + | (Prim (loc, I_LEFT, [tr], annot), Item_t (tl, rest)) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tr >>?= fun (Ex_ty tr, ctxt) -> - parse_constr_annot - loc - annot - ~if_special_first:(var_to_field_annot stack_annot) - >>?= fun (annot, tname, l_field, r_field) -> + parse_constr_annot loc annot ~if_special_first:(var_to_field_annot None) + >>?= fun (_annot, tname, l_field, r_field) -> let cons_left = {apply = (fun kinfo k -> ICons_left (kinfo, k))} in union_t loc (tl, l_field) (tr, r_field) ~annot:tname >>?= fun ty -> - let stack_ty = Item_t (ty, rest, annot) in + let stack_ty = Item_t (ty, rest) in typed ctxt loc cons_left stack_ty - | (Prim (loc, I_RIGHT, [tl], annot), Item_t (tr, rest, stack_annot)) -> + | (Prim (loc, I_RIGHT, [tl], annot), Item_t (tr, rest)) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tl >>?= fun (Ex_ty tl, ctxt) -> - parse_constr_annot - loc - annot - ~if_special_second:(var_to_field_annot stack_annot) - >>?= fun (annot, tname, l_field, r_field) -> + parse_constr_annot loc annot ~if_special_second:(var_to_field_annot None) + >>?= fun (_annot, tname, l_field, r_field) -> let cons_right = {apply = (fun kinfo k -> ICons_right (kinfo, k))} in union_t loc (tl, l_field) (tr, r_field) ~annot:tname >>?= fun ty -> - let stack_ty = Item_t (ty, rest, annot) in + let stack_ty = Item_t (ty, rest) in typed ctxt loc cons_right stack_ty | ( Prim (loc, I_IF_LEFT, [bt; bf], annot), - (Item_t (Union_t ((tl, l_field), (tr, r_field), _), rest, union_annot) as - bef) ) -> + (Item_t (Union_t ((tl, l_field), (tr, r_field), _), rest) as bef) ) -> check_kind [Seq_kind] bt >>?= fun () -> check_kind [Seq_kind] bf >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let left_annot = - gen_access_annot union_annot l_field ~default:default_left_annot + let _left_annot = + gen_access_annot None l_field ~default:default_left_annot in - let right_annot = - gen_access_annot union_annot r_field ~default:default_right_annot + let _right_annot = + gen_access_annot None r_field ~default:default_right_annot in non_terminal_recursion ?type_logger @@ -3495,7 +3459,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ctxt ~legacy bt - (Item_t (tl, rest, left_annot)) + (Item_t (tl, rest)) >>=? fun (btr, ctxt) -> non_terminal_recursion ?type_logger @@ -3503,7 +3467,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ctxt ~legacy bf - (Item_t (tr, rest, right_annot)) + (Item_t (tr, rest)) >>=? fun (bfr, ctxt) -> let branch ibt ibf = let infobt = kinfo_of_descr ibt and infobf = kinfo_of_descr ibf in @@ -3524,31 +3488,31 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_NIL, [t], annot), stack) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy t >>?= fun (Ex_ty t, ctxt) -> - parse_var_type_annot loc annot >>?= fun (annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> let nil = {apply = (fun kinfo k -> INil (kinfo, k))} in list_t loc t ~annot:ty_name >>?= fun ty -> - typed ctxt loc nil (Item_t (ty, stack, annot)) + typed ctxt loc nil (Item_t (ty, stack)) | ( Prim (loc, I_CONS, [], annot), - Item_t (tv, Item_t (List_t (t, ty_name), rest, _), _) ) -> + Item_t (tv, Item_t (List_t (t, ty_name), rest)) ) -> check_item_ty ctxt tv t loc I_CONS 1 2 >>?= fun (Eq, t, ctxt) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let cons_list = {apply = (fun kinfo k -> ICons_list (kinfo, k))} in - (typed ctxt loc cons_list (Item_t (List_t (t, ty_name), rest, annot)) + (typed ctxt loc cons_list (Item_t (List_t (t, ty_name), rest)) : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, I_IF_CONS, [bt; bf], annot), - (Item_t (List_t (t, ty_name), rest, list_annot) as bef) ) -> + (Item_t (List_t (t, ty_name), rest) as bef) ) -> check_kind [Seq_kind] bt >>?= fun () -> check_kind [Seq_kind] bf >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let hd_annot = gen_access_annot list_annot default_hd_annot in - let tl_annot = gen_access_annot list_annot default_tl_annot in + let _hd_annot = gen_access_annot None default_hd_annot in + let _tl_annot = gen_access_annot None default_tl_annot in non_terminal_recursion ?type_logger tc_context ctxt ~legacy bt - (Item_t (t, Item_t (List_t (t, ty_name), rest, tl_annot), hd_annot)) + (Item_t (t, Item_t (List_t (t, ty_name), rest))) >>=? fun (btr, ctxt) -> non_terminal_recursion ?type_logger tc_context ctxt ~legacy bf rest >>=? fun (bfr, ctxt) -> @@ -3567,27 +3531,27 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : {loc; instr; bef; aft = ibt.aft} in Lwt.return @@ merge_branches ~legacy ctxt loc btr bfr {branch} - | (Prim (loc, I_SIZE, [], annot), Item_t (List_t _, rest, _)) -> - parse_var_type_annot loc annot >>?= fun (annot, tname) -> + | (Prim (loc, I_SIZE, [], annot), Item_t (List_t _, rest)) -> + parse_var_type_annot loc annot >>?= fun (_annot, tname) -> let list_size = {apply = (fun kinfo k -> IList_size (kinfo, k))} in - typed ctxt loc list_size (Item_t (nat_t ~annot:tname, rest, annot)) - | ( Prim (loc, I_MAP, [body], annot), - Item_t (List_t (elt, _), starting_rest, list_annot) ) -> ( + typed ctxt loc list_size (Item_t (nat_t ~annot:tname, rest)) + | (Prim (loc, I_MAP, [body], annot), Item_t (List_t (elt, _), starting_rest)) + -> ( check_kind [Seq_kind] body >>?= fun () -> - parse_var_type_annot loc annot >>?= fun (ret_annot, list_ty_name) -> - let elt_annot = gen_access_annot list_annot default_elt_annot in + parse_var_type_annot loc annot >>?= fun (_ret_annot, list_ty_name) -> + let _elt_annot = gen_access_annot None default_elt_annot in non_terminal_recursion ?type_logger tc_context ctxt ~legacy body - (Item_t (elt, starting_rest, elt_annot)) + (Item_t (elt, starting_rest)) >>=? fun (judgement, ctxt) -> Lwt.return @@ match judgement with - | Typed ({aft = Item_t (ret, rest, _); _} as kibody) -> + | Typed ({aft = Item_t (ret, rest); _} as kibody) -> let invalid_map_body () = let aft = serialize_stack_for_error ctxt kibody.aft in Invalid_map_body (loc, aft) @@ -3597,32 +3561,29 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ( merge_stacks ~legacy loc ctxt 1 rest starting_rest >>? fun (Eq, rest, ctxt) -> let binfo = kinfo_of_descr kibody in - let hinfo = - {iloc = loc; kstack_ty = Item_t (ret, rest, ret_annot)} - in + let hinfo = {iloc = loc; kstack_ty = Item_t (ret, rest)} in let ibody = kibody.instr.apply binfo (IHalt hinfo) in let list_map = {apply = (fun kinfo k -> IList_map (kinfo, ibody, k))} in list_t loc ret ~annot:list_ty_name >>? fun ty -> - let stack = Item_t (ty, rest, ret_annot) in + let stack = Item_t (ty, rest) in typed_no_lwt ctxt loc list_map stack ) | Typed {aft; _} -> let aft = serialize_stack_for_error ctxt aft in error (Invalid_map_body (loc, aft)) | Failed _ -> error (Invalid_map_block_fail loc)) - | ( Prim (loc, I_ITER, [body], annot), - Item_t (List_t (elt, _), rest, list_annot) ) -> ( + | (Prim (loc, I_ITER, [body], annot), Item_t (List_t (elt, _), rest)) -> ( check_kind [Seq_kind] body >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let elt_annot = gen_access_annot list_annot default_elt_annot in + let _elt_annot = gen_access_annot None default_elt_annot in non_terminal_recursion ?type_logger tc_context ctxt ~legacy body - (Item_t (elt, rest, elt_annot)) + (Item_t (elt, rest)) >>=? fun (judgement, ctxt) -> let mk_list_iter ibody = { @@ -3654,15 +3615,14 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_EMPTY_SET, [t], annot), rest) -> parse_comparable_ty ~stack_depth:(stack_depth + 1) ctxt t >>?= fun (Ex_comparable_ty t, ctxt) -> - parse_var_type_annot loc annot >>?= fun (annot, tname) -> + parse_var_type_annot loc annot >>?= fun (_annot, tname) -> let instr = {apply = (fun kinfo k -> IEmpty_set (kinfo, t, k))} in set_t loc t ~annot:tname >>?= fun ty -> - typed ctxt loc instr (Item_t (ty, rest, annot)) - | ( Prim (loc, I_ITER, [body], annot), - Item_t (Set_t (comp_elt, _), rest, set_annot) ) -> ( + typed ctxt loc instr (Item_t (ty, rest)) + | (Prim (loc, I_ITER, [body], annot), Item_t (Set_t (comp_elt, _), rest)) -> ( check_kind [Seq_kind] body >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let elt_annot = gen_access_annot set_annot default_elt_annot in + let _elt_annot = gen_access_annot None default_elt_annot in let elt = ty_of_comparable_ty comp_elt in non_terminal_recursion ?type_logger @@ -3670,7 +3630,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ctxt ~legacy body - (Item_t (elt, rest, elt_annot)) + (Item_t (elt, rest)) >>=? fun (judgement, ctxt) -> let mk_iset_iter ibody = { @@ -3698,44 +3658,40 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed_no_lwt ctxt loc (mk_iset_iter ibody) rest ) | Failed {descr} -> typed_no_lwt ctxt loc (mk_iset_iter (descr rest)) rest ) - | ( Prim (loc, I_MEM, [], annot), - Item_t (v, Item_t (Set_t (elt, _), rest, _), _) ) -> + | (Prim (loc, I_MEM, [], annot), Item_t (v, Item_t (Set_t (elt, _), rest))) -> let elt = ty_of_comparable_ty elt in - parse_var_type_annot loc annot >>?= fun (annot, tname) -> + parse_var_type_annot loc annot >>?= fun (_annot, tname) -> check_item_ty ctxt elt v loc I_MEM 1 2 >>?= fun (Eq, _, ctxt) -> let instr = {apply = (fun kinfo k -> ISet_mem (kinfo, k))} in - (typed ctxt loc instr (Item_t (bool_t ~annot:tname, rest, annot)) + (typed ctxt loc instr (Item_t (bool_t ~annot:tname, rest)) : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, I_UPDATE, [], annot), - Item_t - ( v, - Item_t (Bool_t _, Item_t (Set_t (elt, tname), rest, set_annot), _), - _ ) ) -> + Item_t (v, Item_t (Bool_t _, Item_t (Set_t (elt, tname), rest))) ) -> check_item_ty ctxt (ty_of_comparable_ty elt) v loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot ~default:set_annot >>?= fun annot -> + parse_var_annot loc annot ~default:None >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISet_update (kinfo, k))} in - (typed ctxt loc instr (Item_t (Set_t (elt, tname), rest, annot)) + (typed ctxt loc instr (Item_t (Set_t (elt, tname), rest)) : ((a, s) judgement * context) tzresult Lwt.t) - | (Prim (loc, I_SIZE, [], annot), Item_t (Set_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SIZE, [], annot), Item_t (Set_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISet_size (kinfo, k))} in - typed ctxt loc instr (Item_t (nat_t ~annot:None, rest, annot)) + typed ctxt loc instr (Item_t (nat_t ~annot:None, rest)) (* maps *) | (Prim (loc, I_EMPTY_MAP, [tk; tv], annot), stack) -> parse_comparable_ty ~stack_depth:(stack_depth + 1) ctxt tk >>?= fun (Ex_comparable_ty tk, ctxt) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tv >>?= fun (Ex_ty tv, ctxt) -> - parse_var_type_annot loc annot >>?= fun (annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> let instr = {apply = (fun kinfo k -> IEmpty_map (kinfo, tk, k))} in map_t loc tk tv ~annot:ty_name >>?= fun ty -> - typed ctxt loc instr (Item_t (ty, stack, annot)) + typed ctxt loc instr (Item_t (ty, stack)) | ( Prim (loc, I_MAP, [body], annot), - Item_t (Map_t (ck, elt, _), starting_rest, _map_annot) ) -> ( + Item_t (Map_t (ck, elt, _), starting_rest) ) -> ( let k = ty_of_comparable_ty ck in check_kind [Seq_kind] body >>?= fun () -> - parse_var_type_annot loc annot >>?= fun (ret_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun (_ret_annot, ty_name) -> let k_name = field_to_var_annot default_key_annot in let e_name = field_to_var_annot default_elt_annot in pair_t loc (k, None, k_name) (elt, None, e_name) ~annot:None @@ -3746,12 +3702,12 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ctxt ~legacy body - (Item_t (ty, starting_rest, None)) + (Item_t (ty, starting_rest)) >>=? fun (judgement, ctxt) -> Lwt.return @@ match judgement with - | Typed ({aft = Item_t (ret, rest, _); _} as ibody) -> + | Typed ({aft = Item_t (ret, rest); _} as ibody) -> let invalid_map_body () = let aft = serialize_stack_for_error ctxt ibody.aft in Invalid_map_body (loc, aft) @@ -3766,21 +3722,21 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (fun kinfo k -> let binfo = kinfo_of_descr ibody in let hinfo = - {iloc = loc; kstack_ty = Item_t (ret, rest, ret_annot)} + {iloc = loc; kstack_ty = Item_t (ret, rest)} in let ibody = ibody.instr.apply binfo (IHalt hinfo) in IMap_map (kinfo, ibody, k)); } in map_t loc ck ret ~annot:ty_name >>? fun ty -> - let stack = Item_t (ty, rest, ret_annot) in + let stack = Item_t (ty, rest) in typed_no_lwt ctxt loc instr stack ) | Typed {aft; _} -> let aft = serialize_stack_for_error ctxt aft in error (Invalid_map_body (loc, aft)) | Failed _ -> error (Invalid_map_block_fail loc)) | ( Prim (loc, I_ITER, [body], annot), - Item_t (Map_t (comp_elt, element_ty, _), rest, _map_annot) ) -> ( + Item_t (Map_t (comp_elt, element_ty, _), rest) ) -> ( check_kind [Seq_kind] body >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> let k_name = field_to_var_annot default_key_annot in @@ -3794,7 +3750,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ctxt ~legacy body - (Item_t (ty, rest, None)) + (Item_t (ty, rest)) >>=? fun (judgement, ctxt) -> let make_instr ibody = { @@ -3821,152 +3777,128 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : >>? fun (Eq, rest, ctxt) : ((a, s) judgement * context) tzresult -> typed_no_lwt ctxt loc (make_instr ibody) rest ) | Failed {descr} -> typed_no_lwt ctxt loc (make_instr (descr rest)) rest) - | ( Prim (loc, I_MEM, [], annot), - Item_t (vk, Item_t (Map_t (ck, _, _), rest, _), _) ) -> + | (Prim (loc, I_MEM, [], annot), Item_t (vk, Item_t (Map_t (ck, _, _), rest))) + -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_MEM 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMap_mem (kinfo, k))} in - (typed ctxt loc instr (Item_t (bool_t ~annot:None, rest, annot)) + (typed ctxt loc instr (Item_t (bool_t ~annot:None, rest)) : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, I_GET, [], annot), - Item_t (vk, Item_t (Map_t (ck, elt, _), rest, _), _) ) -> + Item_t (vk, Item_t (Map_t (ck, elt, _), rest)) ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMap_get (kinfo, k))} in option_t loc elt ~annot:None >>?= fun ty : ((a, s) judgement * context) tzresult Lwt.t -> - typed ctxt loc instr (Item_t (ty, rest, annot)) + typed ctxt loc instr (Item_t (ty, rest)) | ( Prim (loc, I_UPDATE, [], annot), Item_t - ( vk, - Item_t - ( Option_t (vv, _), - Item_t (Map_t (ck, v, map_name), rest, map_annot), - _ ), - _ ) ) -> + (vk, Item_t (Option_t (vv, _), Item_t (Map_t (ck, v, map_name), rest))) + ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:map_annot >>?= fun annot -> + parse_var_annot loc annot ~default:None >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMap_update (kinfo, k))} in - (typed ctxt loc instr (Item_t (Map_t (ck, v, map_name), rest, annot)) + (typed ctxt loc instr (Item_t (Map_t (ck, v, map_name), rest)) : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, I_GET_AND_UPDATE, [], annot), Item_t ( vk, - Item_t - ( Option_t (vv, vname), - Item_t (Map_t (ck, v, map_name), rest, map_annot), - v_annot ), - _ ) ) -> + Item_t (Option_t (vv, vname), Item_t (Map_t (ck, v, map_name), rest)) + ) ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET_AND_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_GET_AND_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:map_annot >>?= fun annot -> + parse_var_annot loc annot ~default:None >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMap_get_and_update (kinfo, k))} in let stack = - Item_t - ( Option_t (vv, vname), - Item_t (Map_t (ck, v, map_name), rest, annot), - v_annot ) + Item_t (Option_t (vv, vname), Item_t (Map_t (ck, v, map_name), rest)) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) - | (Prim (loc, I_SIZE, [], annot), Item_t (Map_t (_, _, _), rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SIZE, [], annot), Item_t (Map_t (_, _, _), rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMap_size (kinfo, k))} in - typed ctxt loc instr (Item_t (nat_t ~annot:None, rest, annot)) + typed ctxt loc instr (Item_t (nat_t ~annot:None, rest)) (* big_map *) | (Prim (loc, I_EMPTY_BIG_MAP, [tk; tv], annot), stack) -> parse_comparable_ty ~stack_depth:(stack_depth + 1) ctxt tk >>?= fun (Ex_comparable_ty tk, ctxt) -> parse_big_map_value_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tv >>?= fun (Ex_ty tv, ctxt) -> - parse_var_type_annot loc annot >>?= fun (annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> let instr = {apply = (fun kinfo k -> IEmpty_big_map (kinfo, tk, tv, k))} in big_map_t loc tk tv ~annot:ty_name >>?= fun ty -> - let stack = Item_t (ty, stack, annot) in + let stack = Item_t (ty, stack) in typed ctxt loc instr stack | ( Prim (loc, I_MEM, [], annot), - Item_t (set_key, Item_t (Big_map_t (map_key, _, _), rest, _), _) ) -> + Item_t (set_key, Item_t (Big_map_t (map_key, _, _), rest)) ) -> let k = ty_of_comparable_ty map_key in check_item_ty ctxt set_key k loc I_MEM 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IBig_map_mem (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, I_GET, [], annot), - Item_t (vk, Item_t (Big_map_t (ck, elt, _), rest, _), _) ) -> + Item_t (vk, Item_t (Big_map_t (ck, elt, _), rest)) ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IBig_map_get (kinfo, k))} in option_t loc elt ~annot:None >>?= fun ty -> - let stack = Item_t (ty, rest, annot) in + let stack = Item_t (ty, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, I_UPDATE, [], annot), Item_t ( set_key, Item_t ( Option_t (set_value, _), - Item_t (Big_map_t (map_key, map_value, map_name), rest, map_annot), - _ ), - _ ) ) -> + Item_t (Big_map_t (map_key, map_value, map_name), rest) ) ) ) -> let k = ty_of_comparable_ty map_key in check_item_ty ctxt set_key k loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt set_value map_value loc I_UPDATE 2 3 >>?= fun (Eq, map_value, ctxt) -> - parse_var_annot loc annot ~default:map_annot >>?= fun annot -> + parse_var_annot loc annot ~default:None >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IBig_map_update (kinfo, k))} in - let stack = - Item_t (Big_map_t (map_key, map_value, map_name), rest, annot) - in + let stack = Item_t (Big_map_t (map_key, map_value, map_name), rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, I_GET_AND_UPDATE, [], annot), Item_t ( vk, Item_t - ( Option_t (vv, vname), - Item_t (Big_map_t (ck, v, map_name), rest, map_annot), - v_annot ), - _ ) ) -> + (Option_t (vv, vname), Item_t (Big_map_t (ck, v, map_name), rest)) + ) ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET_AND_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_GET_AND_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:map_annot >>?= fun annot -> + parse_var_annot loc annot ~default:None >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IBig_map_get_and_update (kinfo, k))} in let stack = - Item_t - ( Option_t (vv, vname), - Item_t (Big_map_t (ck, v, map_name), rest, annot), - v_annot ) + Item_t (Option_t (vv, vname), Item_t (Big_map_t (ck, v, map_name), rest)) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) (* Sapling *) | (Prim (loc, I_SAPLING_EMPTY_STATE, [memo_size], annot), rest) -> parse_memo_size memo_size >>?= fun memo_size -> parse_var_annot loc annot ~default:default_sapling_state_annot - >>?= fun annot -> + >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISapling_empty_state (kinfo, memo_size, k))} in - let stack = - Item_t (sapling_state_t ~memo_size ~annot:None, rest, annot) - in + let stack = Item_t (sapling_state_t ~memo_size ~annot:None, rest) in typed ctxt loc instr stack | ( Prim (loc, I_SAPLING_VERIFY_UPDATE, [], _), Item_t ( Sapling_transaction_t (transaction_memo_size, _), - Item_t - ( (Sapling_state_t (state_memo_size, _) as state_ty), - rest, - stack_annot ), - _ ) ) -> + Item_t ((Sapling_state_t (state_memo_size, _) as state_ty), rest) ) ) + -> merge_memo_sizes ~error_details:Informative state_memo_size @@ -3982,7 +3914,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~annot:None >>?= fun pair_ty -> option_t loc pair_ty ~annot:None >>?= fun ty -> - let stack = Item_t (ty, rest, stack_annot) in + let stack = Item_t (ty, rest) in typed ctxt loc instr stack (* control *) | (Seq (loc, []), stack) -> @@ -4012,7 +3944,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | Typed itl -> Typed (compose_descr loc ihd itl) in (judgement, ctxt)) - | (Prim (loc, I_IF, [bt; bf], annot), (Item_t (Bool_t _, rest, _) as bef)) -> + | (Prim (loc, I_IF, [bt; bf], annot), (Item_t (Bool_t _, rest) as bef)) -> check_kind [Seq_kind] bt >>?= fun () -> check_kind [Seq_kind] bf >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> @@ -4035,8 +3967,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : {loc; instr; bef; aft = ibt.aft} in Lwt.return @@ merge_branches ~legacy ctxt loc btr bfr {branch} - | ( Prim (loc, I_LOOP, [body], annot), - (Item_t (Bool_t _, rest, _stack_annot) as stack) ) -> ( + | (Prim (loc, I_LOOP, [body], annot), (Item_t (Bool_t _, rest) as stack)) -> ( check_kind [Seq_kind] body >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> non_terminal_recursion ?type_logger tc_context ctxt ~legacy body rest @@ -4079,12 +4010,11 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : in typed_no_lwt ctxt loc instr rest) | ( Prim (loc, I_LOOP_LEFT, [body], annot), - (Item_t (Union_t ((tl, l_field), (tr, _), _), rest, union_annot) as stack) - ) -> ( + (Item_t (Union_t ((tl, l_field), (tr, _), _), rest) as stack) ) -> ( check_kind [Seq_kind] body >>?= fun () -> - parse_var_annot loc annot >>?= fun annot -> - let l_annot = - gen_access_annot union_annot l_field ~default:default_left_annot + parse_var_annot loc annot >>?= fun _annot -> + let _l_annot = + gen_access_annot None l_field ~default:default_left_annot in non_terminal_recursion ?type_logger @@ -4092,7 +4022,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ctxt ~legacy body - (Item_t (tl, rest, l_annot)) + (Item_t (tl, rest)) >>=? fun (judgement, ctxt) -> Lwt.return @@ @@ -4117,7 +4047,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ILoop_left (kinfo, ibody, k)); } in - let stack = Item_t (tr, rest, annot) in + let stack = Item_t (tr, rest) in typed_no_lwt ctxt loc instr stack ) | Failed {descr} -> let instr = @@ -4131,7 +4061,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ILoop_left (kinfo, ibody, k)); } in - let stack = Item_t (tr, rest, annot) in + let stack = Item_t (tr, rest) in typed_no_lwt ctxt loc instr stack) | (Prim (loc, I_LAMBDA, [arg; ret; code], annot), stack) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy arg @@ -4139,7 +4069,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy ret >>?= fun (Ex_ty ret, ctxt) -> check_kind [Seq_kind] code >>?= fun () -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> parse_returning (Tc_context.add_lambda tc_context) ?type_logger @@ -4152,14 +4082,14 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : >>=? fun (lambda, ctxt) -> let instr = {apply = (fun kinfo k -> ILambda (kinfo, lambda, k))} in lambda_t loc arg ret ~annot:None >>?= fun ty -> - let stack = Item_t (ty, stack, annot) in + let stack = Item_t (ty, stack) in typed ctxt loc instr stack | ( Prim (loc, I_EXEC, [], annot), - Item_t (arg, Item_t (Lambda_t (param, ret, _), rest, _), _) ) -> + Item_t (arg, Item_t (Lambda_t (param, ret, _), rest)) ) -> check_item_ty ctxt arg param loc I_EXEC 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IExec (kinfo, k))} in - let stack = Item_t (ret, rest, annot) in + let stack = Item_t (ret, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, I_APPLY, [], annot), Item_t @@ -4170,13 +4100,11 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ((capture_ty, _, _), (arg_ty, _, _), {annot = lam_annot; _}), ret, _ ), - rest, - _ ), - _ ) ) -> + rest ) ) ) -> check_packable ~legacy:false loc capture_ty >>?= fun () -> check_item_ty ctxt capture capture_ty loc I_APPLY 1 2 >>?= fun (Eq, capture_ty, ctxt) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IApply (kinfo, capture_ty, k))} in lambda_t loc arg_ty ret ~annot:lam_annot (* This cannot fail because the type [lambda 'arg 'ret] is always smaller than @@ -4184,9 +4112,9 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : would be a smart deconstructor to ensure this statically. *) >>?= fun res_ty -> - let stack = Item_t (res_ty, rest, annot) in + let stack = Item_t (res_ty, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) - | (Prim (loc, I_DIP, [code], annot), Item_t (v, rest, stack_annot)) -> ( + | (Prim (loc, I_DIP, [code], annot), Item_t (v, rest)) -> ( error_unexpected_annot loc annot >>?= fun () -> check_kind [Seq_kind] code >>?= fun () -> non_terminal_recursion ?type_logger tc_context ctxt ~legacy code rest @@ -4203,7 +4131,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : IDip (kinfo, b, k)); } in - let stack = Item_t (v, descr.aft, stack_annot) in + let stack = Item_t (v, descr.aft) in typed ctxt loc instr stack | Failed _ -> fail (Fail_not_in_tail_position loc)) | (Prim (loc, I_DIP, [n; code], result_annot), stack) -> @@ -4231,12 +4159,12 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (Dipn_proof_argument (KRest, ctxt, descr, descr.aft) : (a, s) dipn_proof_argument) | Failed _ -> error (Fail_not_in_tail_position loc)) - | (false, Item_t (v, rest, annot)) -> + | (false, Item_t (v, rest)) -> make_proof_argument (n - 1) rest >|=? fun (Dipn_proof_argument (n', ctxt, descr, aft')) -> let kinfo' = {iloc = loc; kstack_ty = aft'} in let w = KPrefix (kinfo', n') in - Dipn_proof_argument (w, ctxt, descr, Item_t (v, aft', annot)) + Dipn_proof_argument (w, ctxt, descr, Item_t (v, aft')) | (_, _) -> Lwt.return (let whole_stack = serialize_stack_for_error ctxt stack in @@ -4254,7 +4182,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* Technically, the arities 1 and 2 are allowed but the error only mentions 2. However, DIP {code} is equivalent to DIP 1 {code} so hinting at an arity of 2 makes sense. *) fail (Invalid_arity (loc, I_DIP, 2, List.length l)) - | (Prim (loc, I_FAILWITH, [], annot), Item_t (v, _rest, _)) -> + | (Prim (loc, I_FAILWITH, [], annot), Item_t (v, _rest)) -> Lwt.return ( error_unexpected_annot loc annot >>? fun () -> (if legacy then Result.return_unit @@ -4264,7 +4192,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let descr aft = {loc; instr; bef = stack_ty; aft} in log_stack loc stack_ty Bot_t ; (Failed {descr}, ctxt) ) - | (Prim (loc, I_NEVER, [], annot), Item_t (Never_t _, _rest, _)) -> + | (Prim (loc, I_NEVER, [], annot), Item_t (Never_t _, _rest)) -> Lwt.return ( error_unexpected_annot loc annot >|? fun () -> let instr = {apply = (fun kinfo _k -> INever kinfo)} in @@ -4273,437 +4201,430 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (Failed {descr}, ctxt) ) (* timestamp operations *) | ( Prim (loc, I_ADD, [], annot), - Item_t (Timestamp_t tname, Item_t (Int_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Timestamp_t tname, Item_t (Int_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAdd_timestamp_to_seconds (kinfo, k))} in - typed ctxt loc instr (Item_t (Timestamp_t tname, rest, annot)) + typed ctxt loc instr (Item_t (Timestamp_t tname, rest)) | ( Prim (loc, I_ADD, [], annot), - Item_t (Int_t _, Item_t (Timestamp_t tname, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Int_t _, Item_t (Timestamp_t tname, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAdd_seconds_to_timestamp (kinfo, k))} in - typed ctxt loc instr (Item_t (Timestamp_t tname, rest, annot)) + typed ctxt loc instr (Item_t (Timestamp_t tname, rest)) | ( Prim (loc, I_SUB, [], annot), - Item_t (Timestamp_t tname, Item_t (Int_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Timestamp_t tname, Item_t (Int_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISub_timestamp_seconds (kinfo, k))} in - let stack = Item_t (Timestamp_t tname, rest, annot) in + let stack = Item_t (Timestamp_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_SUB, [], annot), Item_t ( Timestamp_t {annot = tn1; size = _}, - Item_t (Timestamp_t {annot = tn2; size = _}, rest, _), - _ ) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Timestamp_t {annot = tn2; size = _}, rest) ) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_annot ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IDiff_timestamps (kinfo, k))} in - let stack = Item_t (int_t ~annot:tname, rest, annot) in + let stack = Item_t (int_t ~annot:tname, rest) in typed ctxt loc instr stack (* string operations *) | ( Prim (loc, I_CONCAT, [], annot), - Item_t (String_t tn1, Item_t (String_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (String_t tn1, Item_t (String_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IConcat_string_pair (kinfo, k))} in - typed ctxt loc instr (Item_t (String_t tname, rest, annot)) - | ( Prim (loc, I_CONCAT, [], annot), - Item_t (List_t (String_t tname, _), rest, list_annot) ) -> - parse_var_annot ~default:list_annot loc annot >>?= fun annot -> + typed ctxt loc instr (Item_t (String_t tname, rest)) + | (Prim (loc, I_CONCAT, [], annot), Item_t (List_t (String_t tname, _), rest)) + -> + parse_var_annot ~default:None loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IConcat_string (kinfo, k))} in - typed ctxt loc instr (Item_t (String_t tname, rest, annot)) + typed ctxt loc instr (Item_t (String_t tname, rest)) | ( Prim (loc, I_SLICE, [], annot), - Item_t - ( Nat_t _, - Item_t (Nat_t _, Item_t (String_t tname, rest, string_annot), _), - _ ) ) -> + Item_t (Nat_t _, Item_t (Nat_t _, Item_t (String_t tname, rest))) ) -> parse_var_annot - ~default:(gen_access_annot string_annot default_slice_annot) + ~default:(gen_access_annot None default_slice_annot) loc annot - >>?= fun annot -> + >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISlice_string (kinfo, k))} in - let stack = Item_t (option_string'_t tname, rest, annot) in + let stack = Item_t (option_string'_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_SIZE, [], annot), Item_t (String_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SIZE, [], annot), Item_t (String_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IString_size (kinfo, k))} in - let stack = Item_t (nat_t ~annot:None, rest, annot) in + let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack (* bytes operations *) | ( Prim (loc, I_CONCAT, [], annot), - Item_t (Bytes_t tn1, Item_t (Bytes_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bytes_t tn1, Item_t (Bytes_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IConcat_bytes_pair (kinfo, k))} in - let stack = Item_t (Bytes_t tname, rest, annot) in + let stack = Item_t (Bytes_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_CONCAT, [], annot), - Item_t (List_t (Bytes_t tname, _), rest, list_annot) ) -> - parse_var_annot ~default:list_annot loc annot >>?= fun annot -> + | (Prim (loc, I_CONCAT, [], annot), Item_t (List_t (Bytes_t tname, _), rest)) + -> + parse_var_annot ~default:None loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IConcat_bytes (kinfo, k))} in - let stack = Item_t (Bytes_t tname, rest, annot) in + let stack = Item_t (Bytes_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_SLICE, [], annot), - Item_t - ( Nat_t _, - Item_t (Nat_t _, Item_t (Bytes_t tname, rest, bytes_annot), _), - _ ) ) -> + Item_t (Nat_t _, Item_t (Nat_t _, Item_t (Bytes_t tname, rest))) ) -> parse_var_annot - ~default:(gen_access_annot bytes_annot default_slice_annot) + ~default:(gen_access_annot None default_slice_annot) loc annot - >>?= fun annot -> + >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISlice_bytes (kinfo, k))} in - let stack = Item_t (option_bytes'_t tname, rest, annot) in + let stack = Item_t (option_bytes'_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_SIZE, [], annot), Item_t (Bytes_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SIZE, [], annot), Item_t (Bytes_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IBytes_size (kinfo, k))} in - let stack = Item_t (nat_t ~annot:None, rest, annot) in + let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack (* currency operations *) | ( Prim (loc, I_ADD, [], annot), - Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_tez (kinfo, k))} in - let stack = Item_t (Mutez_t tname, rest, annot) in + let stack = Item_t (Mutez_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_SUB, [], annot), - Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest, _), _) ) -> + Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> if legacy then - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_tez_legacy (kinfo, k))} in - let stack = Item_t (Mutez_t tname, rest, annot) in + let stack = Item_t (Mutez_t tname, rest) in typed ctxt loc instr stack else fail (Deprecated_instruction I_SUB) | ( Prim (loc, I_SUB_MUTEZ, [], annot), - Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_tez (kinfo, k))} in - let stack = Item_t (option_mutez'_t tname, rest, annot) in + let stack = Item_t (option_mutez'_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Mutez_t tname, Item_t (Nat_t _, rest, _), _) ) -> + Item_t (Mutez_t tname, Item_t (Nat_t _, rest)) ) -> (* no type name check *) - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_teznat (kinfo, k))} in - let stack = Item_t (Mutez_t tname, rest, annot) in + let stack = Item_t (Mutez_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Nat_t _, Item_t (Mutez_t tname, rest, _), _) ) -> + Item_t (Nat_t _, Item_t (Mutez_t tname, rest)) ) -> (* no type name check *) - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_nattez (kinfo, k))} in - let stack = Item_t (Mutez_t tname, rest, annot) in + let stack = Item_t (Mutez_t tname, rest) in typed ctxt loc instr stack (* boolean operations *) - | ( Prim (loc, I_OR, [], annot), - Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_OR, [], annot), Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IOr (kinfo, k))} in - let stack = Item_t (Bool_t tname, rest, annot) in + let stack = Item_t (Bool_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_AND, [], annot), - Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAnd (kinfo, k))} in - let stack = Item_t (Bool_t tname, rest, annot) in + let stack = Item_t (Bool_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_XOR, [], annot), - Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IXor (kinfo, k))} in - let stack = Item_t (Bool_t tname, rest, annot) in + let stack = Item_t (Bool_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NOT, [], annot), Item_t (Bool_t tname, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NOT, [], annot), Item_t (Bool_t tname, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INot (kinfo, k))} in - let stack = Item_t (Bool_t tname, rest, annot) in + let stack = Item_t (Bool_t tname, rest) in typed ctxt loc instr stack (* integer operations *) - | (Prim (loc, I_ABS, [], annot), Item_t (Int_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_ABS, [], annot), Item_t (Int_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAbs_int (kinfo, k))} in - let stack = Item_t (nat_t ~annot:None, rest, annot) in + let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_ISNAT, [], annot), Item_t (Int_t _, rest, int_annot)) -> - parse_var_annot loc annot ~default:int_annot >>?= fun annot -> + | (Prim (loc, I_ISNAT, [], annot), Item_t (Int_t _, rest)) -> + parse_var_annot loc annot ~default:None >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IIs_nat (kinfo, k))} in - let stack = Item_t (option_nat_t, rest, annot) in + let stack = Item_t (option_nat_t, rest) in typed ctxt loc instr stack - | (Prim (loc, I_INT, [], annot), Item_t (Nat_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_INT, [], annot), Item_t (Nat_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IInt_nat (kinfo, k))} in - let stack = Item_t (int_t ~annot:None, rest, annot) in + let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NEG, [], annot), Item_t (Int_t tname, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NEG, [], annot), Item_t (Int_t tname, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INeg (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NEG, [], annot), Item_t (Nat_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NEG, [], annot), Item_t (Nat_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INeg (kinfo, k))} in - let stack = Item_t (int_t ~annot:None, rest, annot) in + let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_ADD, [], annot), - Item_t (Int_t tn1, Item_t (Int_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_ADD, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_ADD, [], annot), - Item_t (Int_t tname, Item_t (Nat_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_ADD, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_ADD, [], annot), - Item_t (Nat_t _, Item_t (Int_t tname, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_ADD, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_ADD, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_ADD, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_nat (kinfo, k))} in - let stack = Item_t (Nat_t tname, rest, annot) in + let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_SUB, [], annot), - Item_t (Int_t tn1, Item_t (Int_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SUB, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_SUB, [], annot), - Item_t (Int_t tname, Item_t (Nat_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SUB, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_SUB, [], annot), - Item_t (Nat_t _, Item_t (Int_t tname, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SUB, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_SUB, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SUB, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun _tname -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in - let stack = Item_t (int_t ~annot:None, rest, annot) in + let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_MUL, [], annot), - Item_t (Int_t tn1, Item_t (Int_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_MUL, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IMul_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_MUL, [], annot), - Item_t (Int_t tname, Item_t (Nat_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_MUL, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_MUL, [], annot), - Item_t (Nat_t _, Item_t (Int_t tname, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_MUL, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_nat (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_MUL, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_MUL, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IMul_nat (kinfo, k))} in - let stack = Item_t (Nat_t tname, rest, annot) in + let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_EDIV, [], annot), - Item_t (Mutez_t tname, Item_t (Nat_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Mutez_t tname, Item_t (Nat_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IEdiv_teznat (kinfo, k))} in - let stack = Item_t (option_pair_mutez'_mutez'_t tname, rest, annot) in + let stack = Item_t (option_pair_mutez'_mutez'_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_EDIV, [], annot), - Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_tez (kinfo, k))} in - let stack = Item_t (option_pair_nat_mutez'_t tname, rest, annot) in + let stack = Item_t (option_pair_nat_mutez'_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_EDIV, [], annot), - Item_t (Int_t tn1, Item_t (Int_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_EDIV, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_int (kinfo, k))} in - let stack = Item_t (option_pair_int'_nat_t tname, rest, annot) in + let stack = Item_t (option_pair_int'_nat_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_EDIV, [], annot), - Item_t (Int_t tname, Item_t (Nat_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_EDIV, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IEdiv_int (kinfo, k))} in - let stack = Item_t (option_pair_int'_nat_t tname, rest, annot) in + let stack = Item_t (option_pair_int'_nat_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_EDIV, [], annot), - Item_t (Nat_t tname, Item_t (Int_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_EDIV, [], annot), Item_t (Nat_t tname, Item_t (Int_t _, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IEdiv_nat (kinfo, k))} in - let stack = Item_t (option_pair_int_nat'_t tname, rest, annot) in + let stack = Item_t (option_pair_int_nat'_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_EDIV, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_EDIV, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_nat (kinfo, k))} in - let stack = Item_t (option_pair_nat'_nat'_t tname, rest, annot) in + let stack = Item_t (option_pair_nat'_nat'_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_LSL, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_LSL, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ILsl_nat (kinfo, k))} in - let stack = Item_t (Nat_t tname, rest, annot) in + let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_LSR, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_LSR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ILsr_nat (kinfo, k))} in - let stack = Item_t (Nat_t tname, rest, annot) in + let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_OR, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_OR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IOr_nat (kinfo, k))} in - let stack = Item_t (Nat_t tname, rest, annot) in + let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_AND, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_AND, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAnd_nat (kinfo, k))} in - let stack = Item_t (Nat_t tname, rest, annot) in + let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_AND, [], annot), - Item_t (Int_t _, Item_t (Nat_t tname, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_AND, [], annot), Item_t (Int_t _, Item_t (Nat_t tname, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAnd_int_nat (kinfo, k))} in - let stack = Item_t (Nat_t tname, rest, annot) in + let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack - | ( Prim (loc, I_XOR, [], annot), - Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_XOR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) + -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IXor_nat (kinfo, k))} in - let stack = Item_t (Nat_t tname, rest, annot) in + let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NOT, [], annot), Item_t (Int_t tname, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NOT, [], annot), Item_t (Int_t tname, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INot_int (kinfo, k))} in - let stack = Item_t (Int_t tname, rest, annot) in + let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NOT, [], annot), Item_t (Nat_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NOT, [], annot), Item_t (Nat_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INot_int (kinfo, k))} in - let stack = Item_t (int_t ~annot:None, rest, annot) in + let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack (* comparison *) - | (Prim (loc, I_COMPARE, [], annot), Item_t (t1, Item_t (t2, rest, _), _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_COMPARE, [], annot), Item_t (t1, Item_t (t2, rest))) -> + parse_var_annot loc annot >>?= fun _annot -> check_item_ty ctxt t1 t2 loc I_COMPARE 1 2 >>?= fun (Eq, t, ctxt) -> comparable_ty_of_ty ctxt loc t >>?= fun (key, ctxt) -> let instr = {apply = (fun kinfo k -> ICompare (kinfo, key, k))} in - let stack = Item_t (int_t ~annot:None, rest, annot) in + let stack = Item_t (int_t ~annot:None, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) (* comparators *) - | (Prim (loc, I_EQ, [], annot), Item_t (Int_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_EQ, [], annot), Item_t (Int_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IEq (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NEQ, [], annot), Item_t (Int_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NEQ, [], annot), Item_t (Int_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INeq (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_LT, [], annot), Item_t (Int_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_LT, [], annot), Item_t (Int_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ILt (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_GT, [], annot), Item_t (Int_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_GT, [], annot), Item_t (Int_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IGt (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_LE, [], annot), Item_t (Int_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_LE, [], annot), Item_t (Int_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ILe (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_GE, [], annot), Item_t (Int_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_GE, [], annot), Item_t (Int_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IGe (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack (* annotations *) - | (Prim (loc, I_CAST, [cast_t], annot), Item_t (t, stack, item_annot)) -> - parse_var_annot loc annot ~default:item_annot >>?= fun annot -> + | (Prim (loc, I_CAST, [cast_t], annot), Item_t (t, stack)) -> + parse_var_annot loc annot ~default:None >>?= fun _annot -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy cast_t >>?= fun (Ex_ty cast_t, ctxt) -> ty_eq ~legacy ctxt loc cast_t t >>?= fun (Eq, ctxt) -> let instr = {apply = (fun _ k -> k)} in - let stack = Item_t (cast_t, stack, annot) in + let stack = Item_t (cast_t, stack) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) - | (Prim (loc, I_RENAME, [], annot), Item_t (t, stack, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_RENAME, [], annot), Item_t (t, stack)) -> + parse_var_annot loc annot >>?= fun _annot -> (* can erase annot *) let instr = {apply = (fun _ k -> k)} in - let stack = Item_t (t, stack, annot) in + let stack = Item_t (t, stack) in typed ctxt loc instr stack (* packing *) - | (Prim (loc, I_PACK, [], annot), Item_t (t, rest, unpacked_annot)) -> + | (Prim (loc, I_PACK, [], annot), Item_t (t, rest)) -> check_packable ~legacy:true (* allow to pack contracts for hash/signature checks *) loc @@ -4712,38 +4633,35 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_var_annot loc annot - ~default:(gen_access_annot unpacked_annot default_pack_annot) - >>?= fun annot -> + ~default:(gen_access_annot None default_pack_annot) + >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IPack (kinfo, t, k))} in - let stack = Item_t (bytes_t ~annot:None, rest, annot) in + let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_UNPACK, [ty], annot), Item_t (Bytes_t _, rest, packed_annot)) - -> + | (Prim (loc, I_UNPACK, [ty], annot), Item_t (Bytes_t _, rest)) -> parse_packable_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy ty >>?= fun (Ex_ty t, ctxt) -> parse_var_type_annot loc annot >>?= fun (annot, ty_name) -> option_t loc t ~annot:ty_name >>?= fun res_ty -> - let annot = + let _annot = default_annot annot - ~default:(gen_access_annot packed_annot default_unpack_annot) + ~default:(gen_access_annot None default_unpack_annot) in let instr = {apply = (fun kinfo k -> IUnpack (kinfo, t, k))} in - let stack = Item_t (res_ty, rest, annot) in + let stack = Item_t (res_ty, rest) in typed ctxt loc instr stack (* protocol *) - | ( Prim (loc, I_ADDRESS, [], annot), - Item_t (Contract_t _, rest, contract_annot) ) -> + | (Prim (loc, I_ADDRESS, [], annot), Item_t (Contract_t _, rest)) -> parse_var_annot loc annot - ~default:(gen_access_annot contract_annot default_addr_annot) - >>?= fun annot -> + ~default:(gen_access_annot None default_addr_annot) + >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAddress (kinfo, k))} in - let stack = Item_t (address_t ~annot:None, rest, annot) in + let stack = Item_t (address_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_CONTRACT, [ty], annot), Item_t (Address_t _, rest, addr_annot)) - -> + | (Prim (loc, I_CONTRACT, [ty], annot), Item_t (Address_t _, rest)) -> parse_parameter_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy ty >>?= fun (Ex_ty t, ctxt) -> contract_t loc t ~annot:None >>?= fun contract_ty -> @@ -4751,17 +4669,17 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_entrypoint_annot loc annot - ~default:(gen_access_annot addr_annot default_contract_annot) - >>?= fun (annot, entrypoint) -> + ~default:(gen_access_annot None default_contract_annot) + >>?= fun (_annot, entrypoint) -> Script_ir_annot.field_annot_opt_to_entrypoint_strict ~loc entrypoint >>?= fun entrypoint -> let instr = {apply = (fun kinfo k -> IContract (kinfo, t, entrypoint, k))} in - let stack = Item_t (res_ty, rest, annot) in + let stack = Item_t (res_ty, rest) in typed ctxt loc instr stack | ( Prim (loc, I_VIEW, [name; output_ty], annot), - Item_t (input_ty, Item_t (Address_t _, rest, addr_annot), _) ) -> + Item_t (input_ty, Item_t (Address_t _, rest)) ) -> let output_ty_loc = location output_ty in parse_view_name ctxt name >>?= fun (name, ctxt) -> parse_view_output_ty ctxt ~stack_depth:0 ~legacy output_ty @@ -4770,8 +4688,8 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_var_annot loc annot - ~default:(gen_access_annot addr_annot default_contract_annot) - >>?= fun annot -> + ~default:(gen_access_annot None default_contract_annot) + >>?= fun _annot -> let instr = { apply = @@ -4779,39 +4697,36 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : IView (kinfo, View_signature {name; input_ty; output_ty}, k)); } in - let stack = Item_t (res_ty, rest, annot) in + let stack = Item_t (res_ty, rest) in typed ctxt loc instr stack | ( Prim (loc, (I_TRANSFER_TOKENS as prim), [], annot), - Item_t (p, Item_t (Mutez_t _, Item_t (Contract_t (cp, _), rest, _), _), _) - ) -> + Item_t (p, Item_t (Mutez_t _, Item_t (Contract_t (cp, _), rest))) ) -> Tc_context.check_not_in_view loc ~legacy tc_context prim >>?= fun () -> check_item_ty ctxt p cp loc prim 1 4 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ITransfer_tokens (kinfo, k))} in - let stack = Item_t (operation_t ~annot:None, rest, annot) in + let stack = Item_t (operation_t ~annot:None, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, (I_SET_DELEGATE as prim), [], annot), - Item_t (Option_t (Key_hash_t _, _), rest, _) ) -> + Item_t (Option_t (Key_hash_t _, _), rest) ) -> Tc_context.check_not_in_view loc ~legacy tc_context prim >>?= fun () -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISet_delegate (kinfo, k))} in - let stack = Item_t (operation_t ~annot:None, rest, annot) in + let stack = Item_t (operation_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (_, I_CREATE_ACCOUNT, _, _), _) -> fail (Deprecated_instruction I_CREATE_ACCOUNT) - | (Prim (loc, I_IMPLICIT_ACCOUNT, [], annot), Item_t (Key_hash_t _, rest, _)) - -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_IMPLICIT_ACCOUNT, [], annot), Item_t (Key_hash_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IImplicit_account (kinfo, k))} in - let stack = Item_t (contract_unit_t, rest, annot) in + let stack = Item_t (contract_unit_t, rest) in typed ctxt loc instr stack | ( Prim (loc, (I_CREATE_CONTRACT as prim), [(Seq _ as code)], annot), Item_t - ( Option_t (Key_hash_t _, _), - Item_t (Mutez_t _, Item_t (ginit, rest, _), _), - _ ) ) -> + (Option_t (Key_hash_t _, _), Item_t (Mutez_t _, Item_t (ginit, rest))) + ) -> Tc_context.check_not_in_view ~legacy loc tc_context prim >>?= fun () -> - parse_two_var_annot loc annot >>?= fun (op_annot, addr_annot) -> + parse_two_var_annot loc annot >>?= fun (_op_annot, _addr_annot) -> let canonical_code = Micheline.strip_locations code in parse_toplevel ctxt ~legacy canonical_code >>?= fun ({arg_type; storage_type; code_field; views; root_name}, ctxt) -> @@ -4868,11 +4783,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ret_type_full code_field) >>=? fun ( (Lam - ( { - kbef = Item_t (arg, Bot_t, _); - kaft = Item_t (ret, Bot_t, _); - _; - }, + ( {kbef = Item_t (arg, Bot_t); kaft = Item_t (ret, Bot_t); _}, _ ) as lambda), ctxt ) -> let views_result = @@ -4892,63 +4803,61 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : } in let stack = - Item_t - ( operation_t ~annot:None, - Item_t (address_t ~annot:None, rest, addr_annot), - op_annot ) + Item_t (operation_t ~annot:None, Item_t (address_t ~annot:None, rest)) in typed ctxt loc instr stack | (Prim (loc, I_NOW, [], annot), stack) -> - parse_var_annot loc annot ~default:default_now_annot >>?= fun annot -> + parse_var_annot loc annot ~default:default_now_annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INow (kinfo, k))} in - let stack = Item_t (timestamp_t ~annot:None, stack, annot) in + let stack = Item_t (timestamp_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_AMOUNT, [], annot), stack) -> - parse_var_annot loc annot ~default:default_amount_annot >>?= fun annot -> + parse_var_annot loc annot ~default:default_amount_annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAmount (kinfo, k))} in - let stack = Item_t (mutez_t ~annot:None, stack, annot) in + let stack = Item_t (mutez_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_CHAIN_ID, [], annot), stack) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IChainId (kinfo, k))} in - let stack = Item_t (chain_id_t ~annot:None, stack, annot) in + let stack = Item_t (chain_id_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_BALANCE, [], annot), stack) -> - parse_var_annot loc annot ~default:default_balance_annot >>?= fun annot -> + parse_var_annot loc annot ~default:default_balance_annot + >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IBalance (kinfo, k))} in - let stack = Item_t (mutez_t ~annot:None, stack, annot) in + let stack = Item_t (mutez_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_LEVEL, [], annot), stack) -> - parse_var_annot loc annot ~default:default_level_annot >>?= fun annot -> + parse_var_annot loc annot ~default:default_level_annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ILevel (kinfo, k))} in - let stack = Item_t (nat_t ~annot:None, stack, annot) in + let stack = Item_t (nat_t ~annot:None, stack) in typed ctxt loc instr stack - | (Prim (loc, I_VOTING_POWER, [], annot), Item_t (Key_hash_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_VOTING_POWER, [], annot), Item_t (Key_hash_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IVoting_power (kinfo, k))} in - let stack = Item_t (nat_t ~annot:None, rest, annot) in + let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_TOTAL_VOTING_POWER, [], annot), stack) -> - parse_var_annot loc annot >>?= fun annot -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ITotal_voting_power (kinfo, k))} in - let stack = Item_t (nat_t ~annot:None, stack, annot) in + let stack = Item_t (nat_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (_, I_STEPS_TO_QUOTA, _, _), _) -> fail (Deprecated_instruction I_STEPS_TO_QUOTA) | (Prim (loc, I_SOURCE, [], annot), stack) -> - parse_var_annot loc annot ~default:default_source_annot >>?= fun annot -> + parse_var_annot loc annot ~default:default_source_annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISource (kinfo, k))} in - let stack = Item_t (address_t ~annot:None, stack, annot) in + let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_SENDER, [], annot), stack) -> - parse_var_annot loc annot ~default:default_sender_annot >>?= fun annot -> + parse_var_annot loc annot ~default:default_sender_annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISender (kinfo, k))} in - let stack = Item_t (address_t ~annot:None, stack, annot) in + let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, (I_SELF as prim), [], annot), stack) -> Lwt.return ( parse_entrypoint_annot loc annot ~default:default_self_annot - >>? fun (annot, entrypoint) -> + >>? fun (_annot, entrypoint) -> (match entrypoint with | None -> Ok Entrypoint.default | Some (Field_annot annot) -> Entrypoint.of_annot_lax annot) @@ -4979,189 +4888,182 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (fun kinfo k -> ISelf (kinfo, param_type, entrypoint, k)); } in - let stack = Item_t (res_ty, stack, annot) in + let stack = Item_t (res_ty, stack) in typed_no_lwt ctxt loc instr stack ) | (Prim (loc, I_SELF_ADDRESS, [], annot), stack) -> - parse_var_annot loc annot ~default:default_self_annot >>?= fun annot -> + parse_var_annot loc annot ~default:default_self_annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISelf_address (kinfo, k))} in - let stack = Item_t (address_t ~annot:None, stack, annot) in + let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack (* cryptography *) - | (Prim (loc, I_HASH_KEY, [], annot), Item_t (Key_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_HASH_KEY, [], annot), Item_t (Key_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IHash_key (kinfo, k))} in - let stack = Item_t (key_hash_t ~annot:None, rest, annot) in + let stack = Item_t (key_hash_t ~annot:None, rest) in typed ctxt loc instr stack | ( Prim (loc, I_CHECK_SIGNATURE, [], annot), - Item_t (Key_t _, Item_t (Signature_t _, Item_t (Bytes_t _, rest, _), _), _) - ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Key_t _, Item_t (Signature_t _, Item_t (Bytes_t _, rest))) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ICheck_signature (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_BLAKE2B, [], annot), Item_t (Bytes_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_BLAKE2B, [], annot), Item_t (Bytes_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IBlake2b (kinfo, k))} in - let stack = Item_t (bytes_t ~annot:None, rest, annot) in + let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_SHA256, [], annot), Item_t (Bytes_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SHA256, [], annot), Item_t (Bytes_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISha256 (kinfo, k))} in - let stack = Item_t (bytes_t ~annot:None, rest, annot) in + let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_SHA512, [], annot), Item_t (Bytes_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SHA512, [], annot), Item_t (Bytes_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISha512 (kinfo, k))} in - let stack = Item_t (bytes_t ~annot:None, rest, annot) in + let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_KECCAK, [], annot), Item_t (Bytes_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_KECCAK, [], annot), Item_t (Bytes_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IKeccak (kinfo, k))} in - let stack = Item_t (bytes_t ~annot:None, rest, annot) in + let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_SHA3, [], annot), Item_t (Bytes_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_SHA3, [], annot), Item_t (Bytes_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISha3 (kinfo, k))} in - let stack = Item_t (bytes_t ~annot:None, rest, annot) in + let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), - Item_t (Bls12_381_g1_t tn1, Item_t (Bls12_381_g1_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bls12_381_g1_t tn1, Item_t (Bls12_381_g1_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_g1 (kinfo, k))} in - let stack = Item_t (Bls12_381_g1_t tname, rest, annot) in + let stack = Item_t (Bls12_381_g1_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), - Item_t (Bls12_381_g2_t tn1, Item_t (Bls12_381_g2_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bls12_381_g2_t tn1, Item_t (Bls12_381_g2_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_g2 (kinfo, k))} in - let stack = Item_t (Bls12_381_g2_t tname, rest, annot) in + let stack = Item_t (Bls12_381_g2_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), - Item_t (Bls12_381_fr_t tn1, Item_t (Bls12_381_fr_t tn2, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bls12_381_fr_t tn1, Item_t (Bls12_381_fr_t tn2, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_fr (kinfo, k))} in - let stack = Item_t (Bls12_381_fr_t tname, rest, annot) in + let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Bls12_381_g1_t tname, Item_t (Bls12_381_fr_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bls12_381_g1_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_g1 (kinfo, k))} in - let stack = Item_t (Bls12_381_g1_t tname, rest, annot) in + let stack = Item_t (Bls12_381_g1_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Bls12_381_g2_t tname, Item_t (Bls12_381_fr_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bls12_381_g2_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_g2 (kinfo, k))} in - let stack = Item_t (Bls12_381_g2_t tname, rest, annot) in + let stack = Item_t (Bls12_381_g2_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Bls12_381_fr_t tname, Item_t (Bls12_381_fr_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bls12_381_fr_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr (kinfo, k))} in - let stack = Item_t (Bls12_381_fr_t tname, rest, annot) in + let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Nat_t {annot = tname; _}, Item_t (Bls12_381_fr_t _, rest, _), _) - ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Nat_t {annot = tname; _}, Item_t (Bls12_381_fr_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr_z (kinfo, k))} in - let stack = Item_t (bls12_381_fr_t ~annot:tname, rest, annot) in + let stack = Item_t (bls12_381_fr_t ~annot:tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Int_t {annot = tname; _}, Item_t (Bls12_381_fr_t _, rest, _), _) - ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Int_t {annot = tname; _}, Item_t (Bls12_381_fr_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr_z (kinfo, k))} in - let stack = Item_t (bls12_381_fr_t ~annot:tname, rest, annot) in + let stack = Item_t (bls12_381_fr_t ~annot:tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Bls12_381_fr_t tname, Item_t (Int_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bls12_381_fr_t tname, Item_t (Int_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_z_fr (kinfo, k))} in - let stack = Item_t (Bls12_381_fr_t tname, rest, annot) in + let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), - Item_t (Bls12_381_fr_t tname, Item_t (Nat_t _, rest, _), _) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Bls12_381_fr_t tname, Item_t (Nat_t _, rest)) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_z_fr (kinfo, k))} in - let stack = Item_t (Bls12_381_fr_t tname, rest, annot) in + let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_INT, [], annot), Item_t (Bls12_381_fr_t _, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_INT, [], annot), Item_t (Bls12_381_fr_t _, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IInt_bls12_381_fr (kinfo, k))} in - let stack = Item_t (int_t ~annot:None, rest, annot) in + let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_g1_t tname, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_g1_t tname, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_g1 (kinfo, k))} in - let stack = Item_t (Bls12_381_g1_t tname, rest, annot) in + let stack = Item_t (Bls12_381_g1_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_g2_t tname, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_g2_t tname, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_g2 (kinfo, k))} in - let stack = Item_t (Bls12_381_g2_t tname, rest, annot) in + let stack = Item_t (Bls12_381_g2_t tname, rest) in typed ctxt loc instr stack - | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_fr_t tname, rest, _)) -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_fr_t tname, rest)) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_fr (kinfo, k))} in - let stack = Item_t (Bls12_381_fr_t tname, rest, annot) in + let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_PAIRING_CHECK, [], annot), Item_t ( List_t (Pair_t ((Bls12_381_g1_t _, _, _), (Bls12_381_g2_t _, _, _), _), _), - rest, - _ ) ) -> - parse_var_annot loc annot >>?= fun annot -> + rest ) ) -> + parse_var_annot loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IPairing_check_bls12_381 (kinfo, k))} in - let stack = Item_t (bool_t ~annot:None, rest, annot) in + let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack (* Tickets *) - | (Prim (loc, I_TICKET, [], annot), Item_t (t, Item_t (Nat_t _, rest, _), _)) - -> - parse_var_annot loc annot >>?= fun annot -> + | (Prim (loc, I_TICKET, [], annot), Item_t (t, Item_t (Nat_t _, rest))) -> + parse_var_annot loc annot >>?= fun _annot -> comparable_ty_of_ty ctxt loc t >>?= fun (ty, ctxt) -> ticket_t loc ty ~annot:None >>?= fun res_ty -> let instr = {apply = (fun kinfo k -> ITicket (kinfo, k))} in - let stack = Item_t (res_ty, rest, annot) in + let stack = Item_t (res_ty, rest) in typed ctxt loc instr stack | ( Prim (loc, I_READ_TICKET, [], annot), - (Item_t (Ticket_t (t, _), _, _) as full_stack) ) -> - parse_var_annot loc annot >>?= fun annot -> + (Item_t (Ticket_t (t, _), _) as full_stack) ) -> + parse_var_annot loc annot >>?= fun _annot -> let () = check_dupable_comparable_ty t in opened_ticket_type loc t >>?= fun opened_ticket_ty -> let result = ty_of_comparable_ty opened_ticket_ty in let instr = {apply = (fun kinfo k -> IRead_ticket (kinfo, k))} in - let stack = Item_t (result, full_stack, annot) in + let stack = Item_t (result, full_stack) in typed ctxt loc instr stack | ( Prim (loc, I_SPLIT_TICKET, [], annot), Item_t ( (Ticket_t (t, _) as ticket_t), - Item_t - (Pair_t ((Nat_t _, fa_a, a_a), (Nat_t _, fa_b, a_b), _), rest, _), - _ ) ) -> - parse_var_annot loc annot >>?= fun annot -> + Item_t (Pair_t ((Nat_t _, fa_a, a_a), (Nat_t _, fa_b, a_b), _), rest) + ) ) -> + parse_var_annot loc annot >>?= fun _annot -> let () = check_dupable_comparable_ty t in pair_t loc (ticket_t, fa_a, a_a) (ticket_t, fa_b, a_b) ~annot:None >>?= fun pair_tickets_ty -> option_t loc pair_tickets_ty ~annot:None >>?= fun res_ty -> let instr = {apply = (fun kinfo k -> ISplit_ticket (kinfo, k))} in - let stack = Item_t (res_ty, rest, annot) in + let stack = Item_t (res_ty, rest) in typed ctxt loc instr stack | ( Prim (loc, I_JOIN_TICKETS, [], annot), Item_t ( Pair_t (((Ticket_t _ as ty_a), _, _), ((Ticket_t _ as ty_b), _, _), _), - rest, - _ ) ) -> ( - parse_var_annot loc annot >>?= fun annot -> + rest ) ) -> ( + parse_var_annot loc annot >>?= fun _annot -> Gas_monad.run ctxt @@ merge_types ~legacy ~error_details:Informative loc ty_a ty_b >>?= fun (eq_ty, ctxt) -> @@ -5172,7 +5074,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let instr = {apply = (fun kinfo k -> IJoin_tickets (kinfo, contents_ty, k))} in - let stack = Item_t (res_ty, rest, annot) in + let stack = Item_t (res_ty, rest) in typed ctxt loc instr stack | _ -> (* TODO: https://gitlab.com/tezos/tezos/-/issues/1962 @@ -5180,10 +5082,9 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : assert false) (* Timelocks *) | ( Prim (loc, I_OPEN_CHEST, [], _), - Item_t (Chest_key_t _, Item_t (Chest_t _, Item_t (Nat_t _, rest, _), _), _) - ) -> + Item_t (Chest_key_t _, Item_t (Chest_t _, Item_t (Nat_t _, rest))) ) -> let instr = {apply = (fun kinfo k -> IOpen_chest (kinfo, k))} in - typed ctxt loc instr (Item_t (union_bytes_bool_t, rest, None)) + typed ctxt loc instr (Item_t (union_bytes_bool_t, rest)) (* Primitive parsing errors *) | ( Prim ( loc, @@ -5230,7 +5131,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | I_LSL | I_LSR | I_CONCAT | I_PAIRING_CHECK ) as name), [], _ ), - Item_t (ta, Item_t (tb, _, _), _) ) -> + Item_t (ta, Item_t (tb, _)) ) -> let ta = serialize_ty_for_error ta in let tb = serialize_ty_for_error tb in fail (Undefined_binop (loc, name, ta, tb)) @@ -5243,7 +5144,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | I_CONCAT ) as name), [], _ ), - Item_t (t, _, _) ) -> + Item_t (t, _) ) -> let t = serialize_ty_for_error t in fail (Undefined_unop (loc, name, t)) | (Prim (loc, ((I_UPDATE | I_SLICE | I_OPEN_CHEST) as name), [], _), stack) -> diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 734936c2e4..debf686128 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -1178,9 +1178,7 @@ and 'ty ty = | Chest_t : Timelock.chest ty_metadata -> Timelock.chest ty and ('top_ty, 'resty) stack_ty = - | Item_t : - 'ty ty * ('ty2, 'rest) stack_ty * var_annot option - -> ('ty, 'ty2 * 'rest) stack_ty + | Item_t : 'ty ty * ('ty2, 'rest) stack_ty -> ('ty, 'ty2 * 'rest) stack_ty | Bot_t : (empty_cell, empty_cell) stack_ty and ('key, 'value) big_map = { @@ -2093,7 +2091,7 @@ let stack_ty_traverse (type a t) (sty : (a, t) stack_ty) init f = fun accu sty -> match sty with | Bot_t -> f.apply accu sty - | Item_t (_, sty', _) -> aux (f.apply accu sty) sty' + | Item_t (_, sty') -> aux (f.apply accu sty) sty' in aux init sty @@ -2213,4 +2211,4 @@ let value_traverse (type t) (ty : (t ty, t comparable_ty) union) (x : t) init f [@@coq_axiom_with_reason "local mutually recursive definition not handled"] let stack_top_ty : type a b s. (a, b * s) stack_ty -> a ty = function - | Item_t (ty, _, _) -> ty + | Item_t (ty, _) -> ty diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 4582c952e6..1a29beb605 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -1285,9 +1285,7 @@ and 'ty ty = | Chest_t : Timelock.chest ty_metadata -> Timelock.chest ty and ('top_ty, 'resty) stack_ty = - | Item_t : - 'ty ty * ('ty2, 'rest) stack_ty * var_annot option - -> ('ty, 'ty2 * 'rest) stack_ty + | Item_t : 'ty ty * ('ty2, 'rest) stack_ty -> ('ty, 'ty2 * 'rest) stack_ty | Bot_t : (empty_cell, empty_cell) stack_ty and ('key, 'value) big_map = { diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index 8956411d67..73da8322ac 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -109,7 +109,7 @@ let stack_ty_size s = fun accu s -> match s with | Bot_t -> ret_succ accu - | Item_t (ty, _, _annot) -> ret_succ_adding (accu ++ ty_size ty) h3w + | Item_t (ty, _) -> ret_succ_adding (accu ++ ty_size ty) h3w in stack_ty_traverse s zero {apply} @@ -670,42 +670,42 @@ let rec kinstr_extra_size : type a s r f. (a, s, r, f) kinstr -> nodes_and_size to create a type that is embedded in the IR. *) | IJoin_tickets (_, _, k) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr k in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | ITicket (_, k) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr k in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | IRead_ticket (_, k) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr k in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | ICons_list (_, k) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr k in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | IMap_update (_, k) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr k in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | IMap_get_and_update (_, k) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr k in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | IBig_map_get_and_update (_, k) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr k in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | IApply (_, ty, _) -> ty_size ty | ICompare (_, ty, _) -> comparable_ty_size ty | IList_iter (_, body, _) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr body in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | IList_map (_, body, _) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr body in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | ISet_iter (_, body, _) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr body in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | IMap_map (_, body, _) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr body in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | IMap_iter (_, body, _) -> ( let kinfo = Script_typed_ir.kinfo_of_kinstr body in - match kinfo.kstack_ty with Item_t (ty, _, _) -> ty_size ty) + match kinfo.kstack_ty with Item_t (ty, _) -> ty_size ty) | ILambda (_, lambda, _) -> lambda_extra_size lambda | ICreate_contract {lambda; _} -> lambda_extra_size lambda | _ -> zero diff --git a/src/proto_alpha/lib_protocol/test/test_interpretation.ml b/src/proto_alpha/lib_protocol/test/test_interpretation.ml index 5fce696608..19807c3f9b 100644 --- a/src/proto_alpha/lib_protocol/test/test_interpretation.ml +++ b/src/proto_alpha/lib_protocol/test/test_interpretation.ml @@ -102,9 +102,7 @@ let test_stack_overflow () = let stack = Bot_t in let descr kinstr = {kloc = 0; kbef = stack; kaft = stack; kinstr} in let kinfo = {iloc = -1; kstack_ty = stack} in - let kinfo' = - {iloc = -1; kstack_ty = Item_t (bool_t ~annot:None, stack, None)} - in + let kinfo' = {iloc = -1; kstack_ty = Item_t (bool_t ~annot:None, stack)} in let enorme_et_seq n = let rec aux n acc = if n = 0 then acc @@ -132,7 +130,7 @@ let test_stack_overflow_in_lwt () = Gas.update_remaining_operation_gas ctxt Saturation_repr.saturated in let stack = Bot_t in - let item ty s = Item_t (ty, s, None) in + let item ty s = Item_t (ty, s) in let unit_t = unit_t ~annot:None in let unit_k = unit_key ~annot:None in let bool_t = bool_t ~annot:None in diff --git a/src/proto_alpha/lib_protocol/test/test_typechecking.ml b/src/proto_alpha/lib_protocol/test/test_typechecking.ml index 7f2f15455e..99bddbb74e 100644 --- a/src/proto_alpha/lib_protocol/test/test_typechecking.ml +++ b/src/proto_alpha/lib_protocol/test/test_typechecking.ml @@ -872,7 +872,7 @@ let test_contract_not_packable () = ctxt ~legacy:false (Prim (0, I_UNPACK, [Prim (0, T_unit, [], [])], [])) - (Item_t (Script_typed_ir.bytes_t ~annot:None, Bot_t, None)) + (Item_t (Script_typed_ir.bytes_t ~annot:None, Bot_t)) >>= function | Ok _ -> return_unit | Error _ -> Alcotest.failf "Could not parse UNPACK unit") @@ -883,7 +883,7 @@ let test_contract_not_packable () = ctxt ~legacy:false (Prim (0, I_UNPACK, [contract_unit], [])) - (Item_t (Script_typed_ir.bytes_t ~annot:None, Bot_t, None)) + (Item_t (Script_typed_ir.bytes_t ~annot:None, Bot_t)) >>= function | Ok _ -> Alcotest.failf From e309a1f990999d390088fdf4886692ee2e674f58 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 10:19:51 +0100 Subject: [PATCH 0002/1220] Proto/Michelson: remove some unused annots `gen_access_annot` and `default_annot` cannot fail --- .../lib_protocol/script_ir_translator.ml | 27 +++---------------- 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 494d62763f..66f1129bd5 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3188,7 +3188,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_MAP, [body], annot), Item_t (Option_t (t, _), rest)) -> ( check_kind [Seq_kind] body >>?= fun () -> parse_var_type_annot loc annot >>?= fun (_ret_annot, opt_ty_name) -> - let _elt_annot = gen_access_annot None default_some_annot in non_terminal_recursion ?type_logger ~legacy @@ -3225,7 +3224,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : check_kind [Seq_kind] bt >>?= fun () -> check_kind [Seq_kind] bf >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let _annot = gen_access_annot None default_some_annot in non_terminal_recursion ?type_logger tc_context ctxt ~legacy bt rest >>=? fun (btr, ctxt) -> let stack_ty = Item_t (t, rest) in @@ -3443,16 +3441,10 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack_ty = Item_t (ty, rest) in typed ctxt loc cons_right stack_ty | ( Prim (loc, I_IF_LEFT, [bt; bf], annot), - (Item_t (Union_t ((tl, l_field), (tr, r_field), _), rest) as bef) ) -> + (Item_t (Union_t ((tl, _l_field), (tr, _r_field), _), rest) as bef) ) -> check_kind [Seq_kind] bt >>?= fun () -> check_kind [Seq_kind] bf >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let _left_annot = - gen_access_annot None l_field ~default:default_left_annot - in - let _right_annot = - gen_access_annot None r_field ~default:default_right_annot - in non_terminal_recursion ?type_logger tc_context @@ -3504,8 +3496,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : check_kind [Seq_kind] bt >>?= fun () -> check_kind [Seq_kind] bf >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let _hd_annot = gen_access_annot None default_hd_annot in - let _tl_annot = gen_access_annot None default_tl_annot in non_terminal_recursion ?type_logger tc_context @@ -3539,7 +3529,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : -> ( check_kind [Seq_kind] body >>?= fun () -> parse_var_type_annot loc annot >>?= fun (_ret_annot, list_ty_name) -> - let _elt_annot = gen_access_annot None default_elt_annot in non_terminal_recursion ?type_logger tc_context @@ -3576,7 +3565,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_ITER, [body], annot), Item_t (List_t (elt, _), rest)) -> ( check_kind [Seq_kind] body >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let _elt_annot = gen_access_annot None default_elt_annot in non_terminal_recursion ?type_logger tc_context @@ -3622,7 +3610,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_ITER, [body], annot), Item_t (Set_t (comp_elt, _), rest)) -> ( check_kind [Seq_kind] body >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let _elt_annot = gen_access_annot None default_elt_annot in let elt = ty_of_comparable_ty comp_elt in non_terminal_recursion ?type_logger @@ -4010,12 +3997,9 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : in typed_no_lwt ctxt loc instr rest) | ( Prim (loc, I_LOOP_LEFT, [body], annot), - (Item_t (Union_t ((tl, l_field), (tr, _), _), rest) as stack) ) -> ( + (Item_t (Union_t ((tl, _l_field), (tr, _), _), rest) as stack) ) -> ( check_kind [Seq_kind] body >>?= fun () -> parse_var_annot loc annot >>?= fun _annot -> - let _l_annot = - gen_access_annot None l_field ~default:default_left_annot - in non_terminal_recursion ?type_logger tc_context @@ -4641,13 +4625,8 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_UNPACK, [ty], annot), Item_t (Bytes_t _, rest)) -> parse_packable_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy ty >>?= fun (Ex_ty t, ctxt) -> - parse_var_type_annot loc annot >>?= fun (annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> option_t loc t ~annot:ty_name >>?= fun res_ty -> - let _annot = - default_annot - annot - ~default:(gen_access_annot None default_unpack_annot) - in let instr = {apply = (fun kinfo k -> IUnpack (kinfo, t, k))} in let stack = Item_t (res_ty, rest) in typed ctxt loc instr stack From 899546311a9de4a9fdaad8ae032a7ad39bcc1941 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 5 Jan 2022 20:25:53 +0100 Subject: [PATCH 0003/1220] Proto/Michelson: var_to_field_annot None is None --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 4 ---- src/proto_alpha/lib_protocol/script_ir_annot.mli | 2 -- src/proto_alpha/lib_protocol/script_ir_translator.ml | 8 ++++---- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index cadc17dbc6..65c32fa9b6 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -125,10 +125,6 @@ let type_to_var_annot : type_annot option -> var_annot option = function | None -> None | Some (Type_annot s) -> Some (Var_annot s) -let var_to_field_annot : var_annot option -> field_annot option = function - | None -> None - | Some (Var_annot s) -> Some (Field_annot s) - let field_annot_opt_to_entrypoint_strict ~loc = function | None -> Ok Entrypoint.default | Some (Field_annot a) -> Entrypoint.of_annot_strict ~loc a diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 302bb9917b..aba0a3c6a8 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -109,8 +109,6 @@ val field_to_var_annot : field_annot option -> var_annot option val type_to_var_annot : type_annot option -> var_annot option -val var_to_field_annot : var_annot option -> field_annot option - (** Converts a field annot option to an entrypoint. An error is returned if the field annot is too long or is "default". [None] is converted to [Some default]. diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 66f1129bd5..515b58a302 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3250,8 +3250,8 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_constr_annot loc annot - ~if_special_first:(var_to_field_annot None) - ~if_special_second:(var_to_field_annot None) + ~if_special_first:None + ~if_special_second:None >>?= fun (_annot, ty_name, l_field, r_field) -> pair_t loc (a, l_field, None) (b, r_field, None) ~annot:ty_name >>?= fun ty -> @@ -3425,7 +3425,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_LEFT, [tr], annot), Item_t (tl, rest)) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tr >>?= fun (Ex_ty tr, ctxt) -> - parse_constr_annot loc annot ~if_special_first:(var_to_field_annot None) + parse_constr_annot loc annot ~if_special_first:None >>?= fun (_annot, tname, l_field, r_field) -> let cons_left = {apply = (fun kinfo k -> ICons_left (kinfo, k))} in union_t loc (tl, l_field) (tr, r_field) ~annot:tname >>?= fun ty -> @@ -3434,7 +3434,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_RIGHT, [tl], annot), Item_t (tr, rest)) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tl >>?= fun (Ex_ty tl, ctxt) -> - parse_constr_annot loc annot ~if_special_second:(var_to_field_annot None) + parse_constr_annot loc annot ~if_special_second:None >>?= fun (_annot, tname, l_field, r_field) -> let cons_right = {apply = (fun kinfo k -> ICons_right (kinfo, k))} in union_t loc (tl, l_field) (tr, r_field) ~annot:tname >>?= fun ty -> From 87534d69348a160ddbd05e6b4ff2f6cee0b91565 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 5 Jan 2022 20:31:00 +0100 Subject: [PATCH 0004/1220] Proto/Michelson: simplify parse_constr_annot 1/2 - `if_special_first/second` are always `None` - consequently simplify `split_if_special` - remove dead `split_last_dot` and `Non_empty_string.split_on_last` --- .../lib_protocol/non_empty_string.ml | 8 ----- .../lib_protocol/non_empty_string.mli | 6 ---- .../lib_protocol/script_ir_annot.ml | 31 +++++-------------- .../lib_protocol/script_ir_annot.mli | 2 -- .../lib_protocol/script_ir_translator.ml | 12 ++----- 5 files changed, 10 insertions(+), 49 deletions(-) diff --git a/src/proto_alpha/lib_protocol/non_empty_string.ml b/src/proto_alpha/lib_protocol/non_empty_string.ml index 9ce9b11d27..410c861712 100644 --- a/src/proto_alpha/lib_protocol/non_empty_string.ml +++ b/src/proto_alpha/lib_protocol/non_empty_string.ml @@ -32,11 +32,3 @@ let of_string_exn = function | s -> s let cat2 a ?(sep = "") b = String.concat sep [a; b] - -let split_on_last sep s = - match String.rindex_opt s sep with - | Some i when Compare.Int.(i > 0 && i < String.length s - 1) -> - let s1 = String.sub s 0 i in - let s2 = String.sub s (i + 1) (String.length s - 1 - i) in - Some (s1, s2) - | _ -> None diff --git a/src/proto_alpha/lib_protocol/non_empty_string.mli b/src/proto_alpha/lib_protocol/non_empty_string.mli index a9973efd77..5807a2dcbb 100644 --- a/src/proto_alpha/lib_protocol/non_empty_string.mli +++ b/src/proto_alpha/lib_protocol/non_empty_string.mli @@ -37,9 +37,3 @@ val of_string_exn : string -> t (** [cat2 a b] concatenates [a] and [b]. [cat2 a ~sep b] concatenates [a], [sep], and [b]. *) val cat2 : t -> ?sep:string -> t -> t - -(** [split_on_last c s] finds the last occurrence of [c] in [s] and returns - the substring before and the substring after. - Returns [None] if [c] is not present in [s] or if one or both substrings - would end up being empty. *) -val split_on_last : char -> t -> (t * t) option diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 65c32fa9b6..8841266157 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -384,26 +384,11 @@ let parse_var_annot : | Some _ as a -> a | None -> ( match default with Some a -> a | None -> None) -let split_last_dot = function - | None -> (None, None) - | Some (Field_annot s) -> ( - match Non_empty_string.split_on_last '.' s with - | Some (s1, s2) -> - let f = - match (s2 :> string) with - | "car" | "cdr" -> None - | _ -> Some (Field_annot s2) - in - (Some (Var_annot s1), f) - | None -> (None, Some (Field_annot s))) - -let split_if_special ~loc ~if_special v f = +let split_if_special ~loc v f = match f with - | Some (Field_annot fa) when Non_empty_string.(fa = at) -> ( - match if_special with - | Some special_var -> ok @@ split_last_dot special_var - | None -> error (Unexpected_annotation loc)) - | _ -> ok (v, f) + | Some (Field_annot fa) when Non_empty_string.(fa = at) -> + error (Unexpected_annotation loc) + | _ -> ok v let common_prefix v1 v2 = match (v1, v2) with @@ -416,22 +401,20 @@ let common_prefix v1 v2 = let parse_constr_annot : Script.location -> - ?if_special_first:field_annot option -> - ?if_special_second:field_annot option -> string list -> (var_annot option * type_annot option * field_annot option * field_annot option) tzresult = - fun loc ?if_special_first ?if_special_second annot -> + fun loc annot -> parse_annots ~allow_special_field:true loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> get_one_annot loc vars >>? fun v -> get_one_annot loc types >>? fun t -> get_two_annot loc fields >>? fun (f1, f2) -> - split_if_special ~loc ~if_special:if_special_first v f1 >>? fun (v1, f1) -> - split_if_special ~loc ~if_special:if_special_second v f2 >|? fun (v2, f2) -> + split_if_special ~loc v f1 >>? fun v1 -> + split_if_special ~loc v f2 >|? fun v2 -> let v = match v with None -> common_prefix v1 v2 | Some _ -> v in (v, t, f1, f2) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index aba0a3c6a8..21e4086032 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -193,8 +193,6 @@ val is_allowed_char : char -> bool val parse_constr_annot : Script.location -> - ?if_special_first:field_annot option -> - ?if_special_second:field_annot option -> string list -> (var_annot option * type_annot option diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 515b58a302..86e7d249b7 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3247,11 +3247,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Lwt.return @@ merge_branches ~legacy ctxt loc btr bfr {branch} (* pairs *) | (Prim (loc, I_PAIR, [], annot), Item_t (a, Item_t (b, rest))) -> - parse_constr_annot - loc - annot - ~if_special_first:None - ~if_special_second:None + parse_constr_annot loc annot >>?= fun (_annot, ty_name, l_field, r_field) -> pair_t loc (a, l_field, None) (b, r_field, None) ~annot:ty_name >>?= fun ty -> @@ -3425,8 +3421,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_LEFT, [tr], annot), Item_t (tl, rest)) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tr >>?= fun (Ex_ty tr, ctxt) -> - parse_constr_annot loc annot ~if_special_first:None - >>?= fun (_annot, tname, l_field, r_field) -> + parse_constr_annot loc annot >>?= fun (_annot, tname, l_field, r_field) -> let cons_left = {apply = (fun kinfo k -> ICons_left (kinfo, k))} in union_t loc (tl, l_field) (tr, r_field) ~annot:tname >>?= fun ty -> let stack_ty = Item_t (ty, rest) in @@ -3434,8 +3429,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_RIGHT, [tl], annot), Item_t (tr, rest)) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tl >>?= fun (Ex_ty tl, ctxt) -> - parse_constr_annot loc annot ~if_special_second:None - >>?= fun (_annot, tname, l_field, r_field) -> + parse_constr_annot loc annot >>?= fun (_annot, tname, l_field, r_field) -> let cons_right = {apply = (fun kinfo k -> ICons_right (kinfo, k))} in union_t loc (tl, l_field) (tr, r_field) ~annot:tname >>?= fun ty -> let stack_ty = Item_t (ty, rest) in From 4c58624172cd03ba18bf149ffa455643715d7d60 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:23:36 +0100 Subject: [PATCH 0005/1220] Proto/Michelson: simplify parse_constr_annot 2/2 - first returned value was always ignored - simplify further `split_if_special` (returned value was unused) - remove dead `common_prefix` --- .../lib_protocol/script_ir_annot.ml | 27 +++++-------------- .../lib_protocol/script_ir_annot.mli | 6 +---- .../lib_protocol/script_ir_translator.ml | 7 +++-- 3 files changed, 10 insertions(+), 30 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 8841266157..158d7f1999 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -384,39 +384,24 @@ let parse_var_annot : | Some _ as a -> a | None -> ( match default with Some a -> a | None -> None) -let split_if_special ~loc v f = +let split_if_special ~loc f = match f with | Some (Field_annot fa) when Non_empty_string.(fa = at) -> error (Unexpected_annotation loc) - | _ -> ok v - -let common_prefix v1 v2 = - match (v1, v2) with - | (Some (Var_annot s1), Some (Var_annot s2)) when Non_empty_string.(s1 = s2) - -> - v1 - | (Some _, None) -> v1 - | (None, Some _) -> v2 - | (_, _) -> None + | _ -> ok () let parse_constr_annot : Script.location -> string list -> - (var_annot option - * type_annot option - * field_annot option - * field_annot option) - tzresult = + (type_annot option * field_annot option * field_annot option) tzresult = fun loc annot -> parse_annots ~allow_special_field:true loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> - get_one_annot loc vars >>? fun v -> + get_one_annot loc vars >>? fun (_v : var_annot option) -> get_one_annot loc types >>? fun t -> get_two_annot loc fields >>? fun (f1, f2) -> - split_if_special ~loc v f1 >>? fun v1 -> - split_if_special ~loc v f2 >|? fun v2 -> - let v = match v with None -> common_prefix v1 v2 | Some _ -> v in - (v, t, f1, f2) + split_if_special ~loc f1 >>? fun () -> + split_if_special ~loc f2 >|? fun () -> (t, f1, f2) let parse_two_var_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 21e4086032..029d251892 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -194,11 +194,7 @@ val is_allowed_char : char -> bool val parse_constr_annot : Script.location -> string list -> - (var_annot option - * type_annot option - * field_annot option - * field_annot option) - tzresult + (type_annot option * field_annot option * field_annot option) tzresult val parse_two_var_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 86e7d249b7..e44b13877a 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3247,8 +3247,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Lwt.return @@ merge_branches ~legacy ctxt loc btr bfr {branch} (* pairs *) | (Prim (loc, I_PAIR, [], annot), Item_t (a, Item_t (b, rest))) -> - parse_constr_annot loc annot - >>?= fun (_annot, ty_name, l_field, r_field) -> + parse_constr_annot loc annot >>?= fun (ty_name, l_field, r_field) -> pair_t loc (a, l_field, None) (b, r_field, None) ~annot:ty_name >>?= fun ty -> let stack_ty = Item_t (ty, rest) in @@ -3421,7 +3420,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_LEFT, [tr], annot), Item_t (tl, rest)) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tr >>?= fun (Ex_ty tr, ctxt) -> - parse_constr_annot loc annot >>?= fun (_annot, tname, l_field, r_field) -> + parse_constr_annot loc annot >>?= fun (tname, l_field, r_field) -> let cons_left = {apply = (fun kinfo k -> ICons_left (kinfo, k))} in union_t loc (tl, l_field) (tr, r_field) ~annot:tname >>?= fun ty -> let stack_ty = Item_t (ty, rest) in @@ -3429,7 +3428,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_RIGHT, [tl], annot), Item_t (tr, rest)) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tl >>?= fun (Ex_ty tl, ctxt) -> - parse_constr_annot loc annot >>?= fun (_annot, tname, l_field, r_field) -> + parse_constr_annot loc annot >>?= fun (tname, l_field, r_field) -> let cons_right = {apply = (fun kinfo k -> ICons_right (kinfo, k))} in union_t loc (tl, l_field) (tr, r_field) ~annot:tname >>?= fun ty -> let stack_ty = Item_t (ty, rest) in From c80e27fc7a75a1de576f07357b42cc35a957575f Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:23:36 +0100 Subject: [PATCH 0006/1220] Proto/Michelson: simplify parse_destr_annot 1/2 First returned value was always ignored --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 13 ++++--------- src/proto_alpha/lib_protocol/script_ir_annot.mli | 2 +- .../lib_protocol/script_ir_translator.ml | 4 ++-- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 158d7f1999..1b5babf769 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -434,18 +434,13 @@ let parse_destr_annot : field_name:field_annot option -> pair_annot:var_annot option -> value_annot:var_annot option -> - (var_annot option * field_annot option) tzresult = - fun loc annot ~default_accessor ~field_name ~pair_annot ~value_annot -> + field_annot option tzresult = + fun loc annot ~default_accessor:_ ~field_name:_ ~pair_annot:_ ~value_annot:_ -> parse_annots loc ~allow_special_var:true annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> - get_one_annot loc vars >>? fun v -> - get_one_annot loc fields >|? fun f -> - let default = - gen_access_annot pair_annot field_name ~default:default_accessor - in - let v = var_annot_from_special ~field_name ~default ~value_annot v in - (v, f) + get_one_annot loc vars >>? fun (_v : var_annot option) -> + get_one_annot loc fields let parse_unpair_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 029d251892..db486c312b 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -208,7 +208,7 @@ val parse_destr_annot : field_name:field_annot option -> pair_annot:var_annot option -> value_annot:var_annot option -> - (var_annot option * field_annot option) tzresult + field_annot option tzresult val parse_unpair_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index e44b13877a..66fcdb47e5 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3399,7 +3399,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~value_annot:a_annot ~field_name:expected_field_annot ~default_accessor:default_car_annot - >>?= fun (_annot, field_annot) -> + >>?= fun field_annot -> check_correct_field field_annot expected_field_annot >>?= fun () -> let car = {apply = (fun kinfo k -> ICar (kinfo, k))} in typed ctxt loc car (Item_t (a, rest)) @@ -3412,7 +3412,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~value_annot:b_annot ~field_name:expected_field_annot ~default_accessor:default_cdr_annot - >>?= fun (_annot, field_annot) -> + >>?= fun field_annot -> check_correct_field field_annot expected_field_annot >>?= fun () -> let cdr = {apply = (fun kinfo k -> ICdr (kinfo, k))} in typed ctxt loc cdr (Item_t (b, rest)) From 112f3e9f326adc75b65b2d3a60c887407db68871 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:29:59 +0100 Subject: [PATCH 0007/1220] Proto/Michelson: simplify parse_destr_annot 2/2 Removed unused parameters --- .../lib_protocol/script_ir_annot.ml | 10 ++------- .../lib_protocol/script_ir_annot.mli | 8 +------ .../lib_protocol/script_ir_translator.ml | 22 ++++--------------- 3 files changed, 7 insertions(+), 33 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 1b5babf769..a310d3feed 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -428,14 +428,8 @@ let var_annot_from_special : | None -> value_annot let parse_destr_annot : - Script.location -> - string list -> - default_accessor:field_annot option -> - field_name:field_annot option -> - pair_annot:var_annot option -> - value_annot:var_annot option -> - field_annot option tzresult = - fun loc annot ~default_accessor:_ ~field_name:_ ~pair_annot:_ ~value_annot:_ -> + Script.location -> string list -> field_annot option tzresult = + fun loc annot -> parse_annots loc ~allow_special_var:true annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index db486c312b..37c7f73c46 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -202,13 +202,7 @@ val parse_two_var_annot : (var_annot option * var_annot option) tzresult val parse_destr_annot : - Script.location -> - string list -> - default_accessor:field_annot option -> - field_name:field_annot option -> - pair_annot:var_annot option -> - value_annot:var_annot option -> - field_annot option tzresult + Script.location -> string list -> field_annot option tzresult val parse_unpair_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 66fcdb47e5..07d35bb94d 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3391,28 +3391,14 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let unpair = {apply = (fun kinfo k -> IUnpair (kinfo, k))} in typed ctxt loc unpair (Item_t (a, Item_t (b, rest))) | ( Prim (loc, I_CAR, [], annot), - Item_t (Pair_t ((a, expected_field_annot, a_annot), _, _), rest) ) -> - parse_destr_annot - loc - annot - ~pair_annot:None - ~value_annot:a_annot - ~field_name:expected_field_annot - ~default_accessor:default_car_annot - >>?= fun field_annot -> + Item_t (Pair_t ((a, expected_field_annot, _a_annot), _, _), rest) ) -> + parse_destr_annot loc annot >>?= fun field_annot -> check_correct_field field_annot expected_field_annot >>?= fun () -> let car = {apply = (fun kinfo k -> ICar (kinfo, k))} in typed ctxt loc car (Item_t (a, rest)) | ( Prim (loc, I_CDR, [], annot), - Item_t (Pair_t (_, (b, expected_field_annot, b_annot), _), rest) ) -> - parse_destr_annot - loc - annot - ~pair_annot:None - ~value_annot:b_annot - ~field_name:expected_field_annot - ~default_accessor:default_cdr_annot - >>?= fun field_annot -> + Item_t (Pair_t (_, (b, expected_field_annot, _b_annot), _), rest) ) -> + parse_destr_annot loc annot >>?= fun field_annot -> check_correct_field field_annot expected_field_annot >>?= fun () -> let cdr = {apply = (fun kinfo k -> ICdr (kinfo, k))} in typed ctxt loc cdr (Item_t (b, rest)) From 9eee4a7fd36e517eaa47fd66364b13580a883185 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:23:36 +0100 Subject: [PATCH 0008/1220] Proto/Michelson: simplify parse_unpair_annot 1/2 - first two returned values were always ignored - remove dead `var_annot_from_special` --- .../lib_protocol/script_ir_annot.ml | 55 +++---------------- .../lib_protocol/script_ir_annot.mli | 6 +- .../lib_protocol/script_ir_translator.ml | 2 +- 3 files changed, 9 insertions(+), 54 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index a310d3feed..19afd9ab69 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -412,21 +412,6 @@ let parse_two_var_annot : error_unexpected_annot loc types >>? fun () -> error_unexpected_annot loc fields >>? fun () -> get_two_annot loc vars -let var_annot_from_special : - field_name:field_annot option -> - default:var_annot option -> - value_annot:var_annot option -> - var_annot option -> - var_annot option = - fun ~field_name ~default ~value_annot v -> - match v with - | Some (Var_annot va) -> ( - match (va :> string) with - | "%" -> field_to_var_annot field_name - | "%%" -> default - | _ -> v) - | None -> value_annot - let parse_destr_annot : Script.location -> string list -> field_annot option tzresult = fun loc annot -> @@ -444,44 +429,18 @@ let parse_unpair_annot : pair_annot:var_annot option -> value_annot_car:var_annot option -> value_annot_cdr:var_annot option -> - (var_annot option - * var_annot option - * field_annot option - * field_annot option) - tzresult = + (field_annot option * field_annot option) tzresult = fun loc annot - ~field_name_car - ~field_name_cdr - ~pair_annot - ~value_annot_car - ~value_annot_cdr -> + ~field_name_car:_ + ~field_name_cdr:_ + ~pair_annot:_ + ~value_annot_car:_ + ~value_annot_cdr:_ -> parse_annots loc ~allow_special_var:true annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> - get_two_annot loc vars >>? fun (vcar, vcdr) -> - get_two_annot loc fields >|? fun (fcar, fcdr) -> - let default_car = - gen_access_annot pair_annot field_name_car ~default:default_car_annot - in - let default_cdr = - gen_access_annot pair_annot field_name_cdr ~default:default_cdr_annot - in - let vcar = - var_annot_from_special - ~field_name:field_name_car - ~default:default_car - ~value_annot:value_annot_car - vcar - in - let vcdr = - var_annot_from_special - ~field_name:field_name_cdr - ~default:default_cdr - ~value_annot:value_annot_cdr - vcdr - in - (vcar, vcdr, fcar, fcdr) + get_two_annot loc vars >>? fun (_vcar, _vcdr) -> get_two_annot loc fields let parse_entrypoint_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 37c7f73c46..ce67df6e84 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -212,11 +212,7 @@ val parse_unpair_annot : pair_annot:var_annot option -> value_annot_car:var_annot option -> value_annot_cdr:var_annot option -> - (var_annot option - * var_annot option - * field_annot option - * field_annot option) - tzresult + (field_annot option * field_annot option) tzresult val parse_entrypoint_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 07d35bb94d..6761d9a33f 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3385,7 +3385,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~value_annot_cdr:b_annot ~field_name_car:expected_field_annot_a ~field_name_cdr:expected_field_annot_b - >>?= fun (_annot_a, _annot_b, field_a, field_b) -> + >>?= fun (field_a, field_b) -> check_correct_field field_a expected_field_annot_a >>?= fun () -> check_correct_field field_b expected_field_annot_b >>?= fun () -> let unpair = {apply = (fun kinfo k -> IUnpair (kinfo, k))} in From f9bb1e5f5f7dc0d3db7cdc5246faf6fa5c800a0e Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:29:59 +0100 Subject: [PATCH 0009/1220] Proto/Michelson: simplify parse_unpair_annot 2/2 Removed unused parameters --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 13 +------------ src/proto_alpha/lib_protocol/script_ir_annot.mli | 5 ----- .../lib_protocol/script_ir_translator.ml | 14 +++----------- 3 files changed, 4 insertions(+), 28 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 19afd9ab69..4693da42c3 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -424,19 +424,8 @@ let parse_destr_annot : let parse_unpair_annot : Script.location -> string list -> - field_name_car:field_annot option -> - field_name_cdr:field_annot option -> - pair_annot:var_annot option -> - value_annot_car:var_annot option -> - value_annot_cdr:var_annot option -> (field_annot option * field_annot option) tzresult = - fun loc - annot - ~field_name_car:_ - ~field_name_cdr:_ - ~pair_annot:_ - ~value_annot_car:_ - ~value_annot_cdr:_ -> + fun loc annot -> parse_annots loc ~allow_special_var:true annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index ce67df6e84..649b7e9b9e 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -207,11 +207,6 @@ val parse_destr_annot : val parse_unpair_annot : Script.location -> string list -> - field_name_car:field_annot option -> - field_name_cdr:field_annot option -> - pair_annot:var_annot option -> - value_annot_car:var_annot option -> - value_annot_cdr:var_annot option -> (field_annot option * field_annot option) tzresult val parse_entrypoint_annot : diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 6761d9a33f..187bf40dec 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3373,19 +3373,11 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_UNPAIR, [], annot), Item_t ( Pair_t - ( (a, expected_field_annot_a, a_annot), - (b, expected_field_annot_b, b_annot), + ( (a, expected_field_annot_a, _a_annot), + (b, expected_field_annot_b, _b_annot), _ ), rest ) ) -> - parse_unpair_annot - loc - annot - ~pair_annot:None - ~value_annot_car:a_annot - ~value_annot_cdr:b_annot - ~field_name_car:expected_field_annot_a - ~field_name_cdr:expected_field_annot_b - >>?= fun (field_a, field_b) -> + parse_unpair_annot loc annot >>?= fun (field_a, field_b) -> check_correct_field field_a expected_field_annot_a >>?= fun () -> check_correct_field field_b expected_field_annot_b >>?= fun () -> let unpair = {apply = (fun kinfo k -> IUnpair (kinfo, k))} in From a741da8c54f1ac10e827342b58d42b0a42043ff3 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:23:36 +0100 Subject: [PATCH 0010/1220] Proto/Michelson: simplify parse_entrypoint_annot 1/2 First returned value was always ignored --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 8 +++----- src/proto_alpha/lib_protocol/script_ir_annot.mli | 2 +- src/proto_alpha/lib_protocol/script_ir_translator.ml | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 4693da42c3..ee6428c27c 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -435,14 +435,12 @@ let parse_entrypoint_annot : Script.location -> ?default:var_annot option -> string list -> - (var_annot option * field_annot option) tzresult = - fun loc ?default annot -> + field_annot option tzresult = + fun loc ?default:_ annot -> parse_annots loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> get_one_annot loc fields >>? fun f -> - get_one_annot loc vars >|? function - | Some _ as a -> (a, f) - | None -> ( match default with Some a -> (a, f) | None -> (None, f)) + get_one_annot loc vars >|? fun (_v : var_annot option) -> f let parse_var_type_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 649b7e9b9e..01f80e5e95 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -213,7 +213,7 @@ val parse_entrypoint_annot : Script.location -> ?default:var_annot option -> string list -> - (var_annot option * field_annot option) tzresult + field_annot option tzresult val parse_var_type_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 187bf40dec..3acd3775a0 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -4620,7 +4620,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : loc annot ~default:(gen_access_annot None default_contract_annot) - >>?= fun (_annot, entrypoint) -> + >>?= fun entrypoint -> Script_ir_annot.field_annot_opt_to_entrypoint_strict ~loc entrypoint >>?= fun entrypoint -> let instr = @@ -4807,7 +4807,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, (I_SELF as prim), [], annot), stack) -> Lwt.return ( parse_entrypoint_annot loc annot ~default:default_self_annot - >>? fun (_annot, entrypoint) -> + >>? fun entrypoint -> (match entrypoint with | None -> Ok Entrypoint.default | Some (Field_annot annot) -> Entrypoint.of_annot_lax annot) From 408fbdf17c7ce6b6a93f07a37d8e7a99d95171f3 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:29:59 +0100 Subject: [PATCH 0011/1220] Proto/Michelson: simplify parse_entrypoint_annot 2/2 Removed unused parameter --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 7 ++----- src/proto_alpha/lib_protocol/script_ir_annot.mli | 5 +---- src/proto_alpha/lib_protocol/script_ir_translator.ml | 9 ++------- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index ee6428c27c..a4defd23ec 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -432,11 +432,8 @@ let parse_unpair_annot : get_two_annot loc vars >>? fun (_vcar, _vcdr) -> get_two_annot loc fields let parse_entrypoint_annot : - Script.location -> - ?default:var_annot option -> - string list -> - field_annot option tzresult = - fun loc ?default:_ annot -> + Script.location -> string list -> field_annot option tzresult = + fun loc annot -> parse_annots loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> get_one_annot loc fields >>? fun f -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 01f80e5e95..90e76323bd 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -210,10 +210,7 @@ val parse_unpair_annot : (field_annot option * field_annot option) tzresult val parse_entrypoint_annot : - Script.location -> - ?default:var_annot option -> - string list -> - field_annot option tzresult + Script.location -> string list -> field_annot option tzresult val parse_var_type_annot : Script.location -> diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 3acd3775a0..4dbc3a2bfb 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -4616,11 +4616,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : >>?= fun (Ex_ty t, ctxt) -> contract_t loc t ~annot:None >>?= fun contract_ty -> option_t loc contract_ty ~annot:None >>?= fun res_ty -> - parse_entrypoint_annot - loc - annot - ~default:(gen_access_annot None default_contract_annot) - >>?= fun entrypoint -> + parse_entrypoint_annot loc annot >>?= fun entrypoint -> Script_ir_annot.field_annot_opt_to_entrypoint_strict ~loc entrypoint >>?= fun entrypoint -> let instr = @@ -4806,8 +4802,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, (I_SELF as prim), [], annot), stack) -> Lwt.return - ( parse_entrypoint_annot loc annot ~default:default_self_annot - >>? fun entrypoint -> + ( parse_entrypoint_annot loc annot >>? fun entrypoint -> (match entrypoint with | None -> Ok Entrypoint.default | Some (Field_annot annot) -> Entrypoint.of_annot_lax annot) From bc4df7feb55e258bc3bc388aba37c941a3db0709 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:23:36 +0100 Subject: [PATCH 0012/1220] Proto/Michelson: simplify parse_var_type_annot First returned value was always ignored --- .../lib_protocol/script_ir_annot.ml | 8 +++--- .../lib_protocol/script_ir_annot.mli | 4 +-- .../lib_protocol/script_ir_translator.ml | 26 +++++++++---------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index a4defd23ec..4616313cd3 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -440,11 +440,9 @@ let parse_entrypoint_annot : get_one_annot loc vars >|? fun (_v : var_annot option) -> f let parse_var_type_annot : - Script.location -> - string list -> - (var_annot option * type_annot option) tzresult = + Script.location -> string list -> type_annot option tzresult = fun loc annot -> parse_annots loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc fields >>? fun () -> - get_one_annot loc vars >>? fun v -> - get_one_annot loc types >|? fun t -> (v, t) + get_one_annot loc vars >>? fun (_v : var_annot option) -> + get_one_annot loc types diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 90e76323bd..9371793cba 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -213,6 +213,4 @@ val parse_entrypoint_annot : Script.location -> string list -> field_annot option tzresult val parse_var_type_annot : - Script.location -> - string list -> - (var_annot option * type_annot option) tzresult + Script.location -> string list -> type_annot option tzresult diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 4dbc3a2bfb..4781744470 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3168,26 +3168,26 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let const = {apply = (fun kinfo k -> IConst (kinfo, v, k))} in typed ctxt loc const (Item_t (t, stack)) | (Prim (loc, I_UNIT, [], annot), stack) -> - parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun ty_name -> let const = {apply = (fun kinfo k -> IConst (kinfo, (), k))} in typed ctxt loc const (Item_t (unit_t ~annot:ty_name, stack)) (* options *) | (Prim (loc, I_SOME, [], annot), Item_t (t, rest)) -> - parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun ty_name -> let cons_some = {apply = (fun kinfo k -> ICons_some (kinfo, k))} in option_t loc t ~annot:ty_name >>?= fun ty -> typed ctxt loc cons_some (Item_t (ty, rest)) | (Prim (loc, I_NONE, [t], annot), stack) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy t >>?= fun (Ex_ty t, ctxt) -> - parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun ty_name -> let cons_none = {apply = (fun kinfo k -> ICons_none (kinfo, k))} in option_t loc t ~annot:ty_name >>?= fun ty -> let stack_ty = Item_t (ty, stack) in typed ctxt loc cons_none stack_ty | (Prim (loc, I_MAP, [body], annot), Item_t (Option_t (t, _), rest)) -> ( check_kind [Seq_kind] body >>?= fun () -> - parse_var_type_annot loc annot >>?= fun (_ret_annot, opt_ty_name) -> + parse_var_type_annot loc annot >>?= fun opt_ty_name -> non_terminal_recursion ?type_logger ~legacy @@ -3451,7 +3451,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_NIL, [t], annot), stack) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy t >>?= fun (Ex_ty t, ctxt) -> - parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun ty_name -> let nil = {apply = (fun kinfo k -> INil (kinfo, k))} in list_t loc t ~annot:ty_name >>?= fun ty -> typed ctxt loc nil (Item_t (ty, stack)) @@ -3493,13 +3493,13 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : in Lwt.return @@ merge_branches ~legacy ctxt loc btr bfr {branch} | (Prim (loc, I_SIZE, [], annot), Item_t (List_t _, rest)) -> - parse_var_type_annot loc annot >>?= fun (_annot, tname) -> + parse_var_type_annot loc annot >>?= fun tname -> let list_size = {apply = (fun kinfo k -> IList_size (kinfo, k))} in typed ctxt loc list_size (Item_t (nat_t ~annot:tname, rest)) | (Prim (loc, I_MAP, [body], annot), Item_t (List_t (elt, _), starting_rest)) -> ( check_kind [Seq_kind] body >>?= fun () -> - parse_var_type_annot loc annot >>?= fun (_ret_annot, list_ty_name) -> + parse_var_type_annot loc annot >>?= fun list_ty_name -> non_terminal_recursion ?type_logger tc_context @@ -3574,7 +3574,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_EMPTY_SET, [t], annot), rest) -> parse_comparable_ty ~stack_depth:(stack_depth + 1) ctxt t >>?= fun (Ex_comparable_ty t, ctxt) -> - parse_var_type_annot loc annot >>?= fun (_annot, tname) -> + parse_var_type_annot loc annot >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEmpty_set (kinfo, t, k))} in set_t loc t ~annot:tname >>?= fun ty -> typed ctxt loc instr (Item_t (ty, rest)) @@ -3618,7 +3618,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ) | (Prim (loc, I_MEM, [], annot), Item_t (v, Item_t (Set_t (elt, _), rest))) -> let elt = ty_of_comparable_ty elt in - parse_var_type_annot loc annot >>?= fun (_annot, tname) -> + parse_var_type_annot loc annot >>?= fun tname -> check_item_ty ctxt elt v loc I_MEM 1 2 >>?= fun (Eq, _, ctxt) -> let instr = {apply = (fun kinfo k -> ISet_mem (kinfo, k))} in (typed ctxt loc instr (Item_t (bool_t ~annot:tname, rest)) @@ -3641,7 +3641,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : >>?= fun (Ex_comparable_ty tk, ctxt) -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tv >>?= fun (Ex_ty tv, ctxt) -> - parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun ty_name -> let instr = {apply = (fun kinfo k -> IEmpty_map (kinfo, tk, k))} in map_t loc tk tv ~annot:ty_name >>?= fun ty -> typed ctxt loc instr (Item_t (ty, stack)) @@ -3649,7 +3649,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (Map_t (ck, elt, _), starting_rest) ) -> ( let k = ty_of_comparable_ty ck in check_kind [Seq_kind] body >>?= fun () -> - parse_var_type_annot loc annot >>?= fun (_ret_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun ty_name -> let k_name = field_to_var_annot default_key_annot in let e_name = field_to_var_annot default_elt_annot in pair_t loc (k, None, k_name) (elt, None, e_name) ~annot:None @@ -3787,7 +3787,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : >>?= fun (Ex_comparable_ty tk, ctxt) -> parse_big_map_value_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy tv >>?= fun (Ex_ty tv, ctxt) -> - parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun ty_name -> let instr = {apply = (fun kinfo k -> IEmpty_big_map (kinfo, tk, tv, k))} in @@ -4596,7 +4596,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_UNPACK, [ty], annot), Item_t (Bytes_t _, rest)) -> parse_packable_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy ty >>?= fun (Ex_ty t, ctxt) -> - parse_var_type_annot loc annot >>?= fun (_annot, ty_name) -> + parse_var_type_annot loc annot >>?= fun ty_name -> option_t loc t ~annot:ty_name >>?= fun res_ty -> let instr = {apply = (fun kinfo k -> IUnpack (kinfo, t, k))} in let stack = Item_t (res_ty, rest) in From be5445ca0eee433a48e4d85431ea1bcecabb62d6 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:29:59 +0100 Subject: [PATCH 0013/1220] Proto/Michelson: simplify gen_access_annot 1/2 `default` argument was never provided --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 17 ++++++----------- .../lib_protocol/script_ir_annot.mli | 5 +---- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 4616313cd3..16fe23d7e0 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -140,17 +140,12 @@ let field_annot_opt_eq_entrypoint_lax field_annot_opt entrypoint = let default_annot ~default = function None -> default | annot -> annot let gen_access_annot : - var_annot option -> - ?default:field_annot option -> - field_annot option -> - var_annot option = - fun value_annot ?(default = None) field_annot -> - match (value_annot, field_annot, default) with - | (None, None, _) | (Some _, None, None) -> None - | (None, Some (Field_annot f), _) -> Some (Var_annot f) - | (Some (Var_annot v), None, Some (Field_annot f)) -> - Some (Var_annot (Non_empty_string.cat2 v ~sep:"." f)) - | (Some (Var_annot v), Some (Field_annot f), _) -> + var_annot option -> field_annot option -> var_annot option = + fun value_annot field_annot -> + match (value_annot, field_annot) with + | (None, None) | (Some _, None) -> None + | (None, Some (Field_annot f)) -> Some (Var_annot f) + | (Some (Var_annot v), Some (Field_annot f)) -> Some (Var_annot (Non_empty_string.cat2 v ~sep:"." f)) let merge_type_annot : diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 9371793cba..bd9b1a9092 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -126,10 +126,7 @@ val default_annot : default:'a option -> 'a option -> 'a option (** Generate annotation for field accesses, of the form [var.field1.field2] *) val gen_access_annot : - var_annot option -> - ?default:field_annot option -> - field_annot option -> - var_annot option + var_annot option -> field_annot option -> var_annot option (** Merge type annotations. @return an error {!Inconsistent_type_annotations} if they are both present From ca1c94ab1c074e684d84eefa0acdfecd8c6b3417 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:29:59 +0100 Subject: [PATCH 0014/1220] Proto/Michelson: simplify gen_access_annot 2/2 First parameter was always `None` --- .../lib_protocol/script_ir_annot.ml | 13 +++++------ .../lib_protocol/script_ir_annot.mli | 3 +-- .../lib_protocol/script_ir_translator.ml | 22 +++++-------------- 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 16fe23d7e0..a4273f3f69 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -139,14 +139,11 @@ let field_annot_opt_eq_entrypoint_lax field_annot_opt entrypoint = let default_annot ~default = function None -> default | annot -> annot -let gen_access_annot : - var_annot option -> field_annot option -> var_annot option = - fun value_annot field_annot -> - match (value_annot, field_annot) with - | (None, None) | (Some _, None) -> None - | (None, Some (Field_annot f)) -> Some (Var_annot f) - | (Some (Var_annot v), Some (Field_annot f)) -> - Some (Var_annot (Non_empty_string.cat2 v ~sep:"." f)) +let gen_access_annot : field_annot option -> var_annot option = + fun field_annot -> + match field_annot with + | None -> None + | Some (Field_annot f) -> Some (Var_annot f) let merge_type_annot : type error_trace. diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index bd9b1a9092..82023f1542 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -125,8 +125,7 @@ val field_annot_opt_eq_entrypoint_lax : val default_annot : default:'a option -> 'a option -> 'a option (** Generate annotation for field accesses, of the form [var.field1.field2] *) -val gen_access_annot : - var_annot option -> field_annot option -> var_annot option +val gen_access_annot : field_annot option -> var_annot option (** Merge type annotations. @return an error {!Inconsistent_type_annotations} if they are both present diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 4781744470..32222b2a3c 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -4202,10 +4202,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr (Item_t (String_t tname, rest)) | ( Prim (loc, I_SLICE, [], annot), Item_t (Nat_t _, Item_t (Nat_t _, Item_t (String_t tname, rest))) ) -> - parse_var_annot - ~default:(gen_access_annot None default_slice_annot) - loc - annot + parse_var_annot ~default:(gen_access_annot default_slice_annot) loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISlice_string (kinfo, k))} in let stack = Item_t (option_string'_t tname, rest) in @@ -4232,10 +4229,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_SLICE, [], annot), Item_t (Nat_t _, Item_t (Nat_t _, Item_t (Bytes_t tname, rest))) ) -> - parse_var_annot - ~default:(gen_access_annot None default_slice_annot) - loc - annot + parse_var_annot ~default:(gen_access_annot default_slice_annot) loc annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISlice_bytes (kinfo, k))} in let stack = Item_t (option_bytes'_t tname, rest) in @@ -4585,10 +4579,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* allow to pack contracts for hash/signature checks *) loc t >>?= fun () -> - parse_var_annot - loc - annot - ~default:(gen_access_annot None default_pack_annot) + parse_var_annot loc annot ~default:(gen_access_annot default_pack_annot) >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IPack (kinfo, t, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in @@ -4603,10 +4594,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack (* protocol *) | (Prim (loc, I_ADDRESS, [], annot), Item_t (Contract_t _, rest)) -> - parse_var_annot - loc - annot - ~default:(gen_access_annot None default_addr_annot) + parse_var_annot loc annot ~default:(gen_access_annot default_addr_annot) >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAddress (kinfo, k))} in let stack = Item_t (address_t ~annot:None, rest) in @@ -4634,7 +4622,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_var_annot loc annot - ~default:(gen_access_annot None default_contract_annot) + ~default:(gen_access_annot default_contract_annot) >>?= fun _annot -> let instr = { From a4c015009cbd15e29764621155cb2d409cc14790 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 5 Jan 2022 21:58:42 +0100 Subject: [PATCH 0015/1220] Proto/Michelson: gen_access_annot is field_to_var_annot --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 6 ------ src/proto_alpha/lib_protocol/script_ir_annot.mli | 3 --- .../lib_protocol/script_ir_translator.ml | 16 +++++++++++----- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index a4273f3f69..17c5609091 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -139,12 +139,6 @@ let field_annot_opt_eq_entrypoint_lax field_annot_opt entrypoint = let default_annot ~default = function None -> default | annot -> annot -let gen_access_annot : field_annot option -> var_annot option = - fun field_annot -> - match field_annot with - | None -> None - | Some (Field_annot f) -> Some (Var_annot f) - let merge_type_annot : type error_trace. legacy:bool -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 82023f1542..e0e0d021be 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -124,9 +124,6 @@ val field_annot_opt_eq_entrypoint_lax : (** Replace an annotation by its default value if it is [None] *) val default_annot : default:'a option -> 'a option -> 'a option -(** Generate annotation for field accesses, of the form [var.field1.field2] *) -val gen_access_annot : field_annot option -> var_annot option - (** Merge type annotations. @return an error {!Inconsistent_type_annotations} if they are both present and different, unless [legacy] *) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 32222b2a3c..abf27c0a9f 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -4202,7 +4202,10 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr (Item_t (String_t tname, rest)) | ( Prim (loc, I_SLICE, [], annot), Item_t (Nat_t _, Item_t (Nat_t _, Item_t (String_t tname, rest))) ) -> - parse_var_annot ~default:(gen_access_annot default_slice_annot) loc annot + parse_var_annot + ~default:(field_to_var_annot default_slice_annot) + loc + annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISlice_string (kinfo, k))} in let stack = Item_t (option_string'_t tname, rest) in @@ -4229,7 +4232,10 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_SLICE, [], annot), Item_t (Nat_t _, Item_t (Nat_t _, Item_t (Bytes_t tname, rest))) ) -> - parse_var_annot ~default:(gen_access_annot default_slice_annot) loc annot + parse_var_annot + ~default:(field_to_var_annot default_slice_annot) + loc + annot >>?= fun _annot -> let instr = {apply = (fun kinfo k -> ISlice_bytes (kinfo, k))} in let stack = Item_t (option_bytes'_t tname, rest) in @@ -4579,7 +4585,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* allow to pack contracts for hash/signature checks *) loc t >>?= fun () -> - parse_var_annot loc annot ~default:(gen_access_annot default_pack_annot) + parse_var_annot loc annot ~default:(field_to_var_annot default_pack_annot) >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IPack (kinfo, t, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in @@ -4594,7 +4600,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack (* protocol *) | (Prim (loc, I_ADDRESS, [], annot), Item_t (Contract_t _, rest)) -> - parse_var_annot loc annot ~default:(gen_access_annot default_addr_annot) + parse_var_annot loc annot ~default:(field_to_var_annot default_addr_annot) >>?= fun _annot -> let instr = {apply = (fun kinfo k -> IAddress (kinfo, k))} in let stack = Item_t (address_t ~annot:None, rest) in @@ -4622,7 +4628,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_var_annot loc annot - ~default:(gen_access_annot default_contract_annot) + ~default:(field_to_var_annot default_contract_annot) >>?= fun _annot -> let instr = { From 38befe3eaa7945bee95a0394d860c8615ad8d20d Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 10:44:39 +0100 Subject: [PATCH 0016/1220] Proto/Michelson: simplify parse_var_annot 1/2 Returned value was always ignored --- .../lib_protocol/script_ir_annot.ml | 12 +- .../lib_protocol/script_ir_annot.mli | 5 +- .../lib_protocol/script_ir_translator.ml | 253 +++++++++--------- 3 files changed, 131 insertions(+), 139 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 17c5609091..ef1c773a41 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -358,17 +358,13 @@ let check_correct_field : ("%" ^ (s1 :> string), "%" ^ (s2 :> string))) let parse_var_annot : - Script.location -> - ?default:var_annot option -> - string list -> - var_annot option tzresult = - fun loc ?default annot -> + Script.location -> ?default:var_annot option -> string list -> unit tzresult + = + fun loc ?default:_ annot -> parse_annots loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> error_unexpected_annot loc fields >>? fun () -> - get_one_annot loc vars >|? function - | Some _ as a -> a - | None -> ( match default with Some a -> a | None -> None) + get_one_annot loc vars >|? fun (_a : var_annot option) -> () let split_if_special ~loc f = match f with diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index e0e0d021be..afd6b0012b 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -177,10 +177,7 @@ val check_correct_field : (** Parse a variable annotation, replaced by a default value if [None]. *) val parse_var_annot : - Script.location -> - ?default:var_annot option -> - string list -> - var_annot option tzresult + Script.location -> ?default:var_annot option -> string list -> unit tzresult val is_allowed_char : char -> bool diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index abf27c0a9f..9a51cc3eaa 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3050,7 +3050,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : However, DROP is equivalent to DROP 1 so hinting at an arity of 1 makes sense. *) fail (Invalid_arity (loc, I_DROP, 1, List.length l)) | (Prim (loc, I_DUP, [], annot), Item_t (v, rest)) -> - parse_var_annot loc annot ~default:None >>?= fun _annot -> + parse_var_annot loc annot ~default:None >>?= fun () -> record_trace_eval (fun () -> let t = serialize_ty_for_error v in @@ -3060,7 +3060,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let dup = {apply = (fun kinfo k -> IDup (kinfo, k))} in typed ctxt loc dup (Item_t (v, Item_t (v, rest))) | (Prim (loc, I_DUP, [n], v_annot), stack_ty) -> - parse_var_annot loc v_annot >>?= fun _annot -> + parse_var_annot loc v_annot >>?= fun () -> let rec make_proof_argument : type a s. int -> (a, s) stack_ty -> (a * s) dup_n_proof_argument tzresult = @@ -3153,7 +3153,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack_ty = Item_t (w, Item_t (v, rest)) in typed ctxt loc swap stack_ty | (Prim (loc, I_PUSH, [t; d], annot), stack) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> parse_packable_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy t >>?= fun (Ex_ty t, ctxt) -> parse_data @@ -3254,7 +3254,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let cons_pair = {apply = (fun kinfo k -> ICons_pair (kinfo, k))} in typed ctxt loc cons_pair stack_ty | (Prim (loc, I_PAIR, [n], annot), stack_ty) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let rec make_proof_argument : type a s. int -> (a, s) stack_ty -> (a * s) comb_proof_argument tzresult = @@ -3308,7 +3308,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let uncomb = {apply = (fun kinfo k -> IUncomb (kinfo, n, witness, k))} in typed ctxt loc uncomb after_ty | (Prim (loc, I_GET, [n], annot), Item_t (comb_ty, rest_ty)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let rec make_proof_argument : type b. int -> b ty -> b comb_get_proof_argument tzresult = fun n ty -> @@ -3337,7 +3337,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc comb_get after_stack_ty | ( Prim (loc, I_UPDATE, [n], annot), Item_t (value_ty, Item_t (comb_ty, rest_ty)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let rec make_proof_argument : type value before. int -> @@ -3458,7 +3458,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_CONS, [], annot), Item_t (tv, Item_t (List_t (t, ty_name), rest)) ) -> check_item_ty ctxt tv t loc I_CONS 1 2 >>?= fun (Eq, t, ctxt) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let cons_list = {apply = (fun kinfo k -> ICons_list (kinfo, k))} in (typed ctxt loc cons_list (Item_t (List_t (t, ty_name), rest)) : ((a, s) judgement * context) tzresult Lwt.t) @@ -3627,12 +3627,12 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (v, Item_t (Bool_t _, Item_t (Set_t (elt, tname), rest))) ) -> check_item_ty ctxt (ty_of_comparable_ty elt) v loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun _annot -> + parse_var_annot loc annot ~default:None >>?= fun () -> let instr = {apply = (fun kinfo k -> ISet_update (kinfo, k))} in (typed ctxt loc instr (Item_t (Set_t (elt, tname), rest)) : ((a, s) judgement * context) tzresult Lwt.t) | (Prim (loc, I_SIZE, [], annot), Item_t (Set_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISet_size (kinfo, k))} in typed ctxt loc instr (Item_t (nat_t ~annot:None, rest)) (* maps *) @@ -3739,7 +3739,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_MEM 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_mem (kinfo, k))} in (typed ctxt loc instr (Item_t (bool_t ~annot:None, rest)) : ((a, s) judgement * context) tzresult Lwt.t) @@ -3747,7 +3747,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (vk, Item_t (Map_t (ck, elt, _), rest)) ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_get (kinfo, k))} in option_t loc elt ~annot:None >>?= fun ty : ((a, s) judgement * context) tzresult Lwt.t -> @@ -3759,7 +3759,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun _annot -> + parse_var_annot loc annot ~default:None >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_update (kinfo, k))} in (typed ctxt loc instr (Item_t (Map_t (ck, v, map_name), rest)) : ((a, s) judgement * context) tzresult Lwt.t) @@ -3771,14 +3771,14 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET_AND_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_GET_AND_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun _annot -> + parse_var_annot loc annot ~default:None >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_get_and_update (kinfo, k))} in let stack = Item_t (Option_t (vv, vname), Item_t (Map_t (ck, v, map_name), rest)) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | (Prim (loc, I_SIZE, [], annot), Item_t (Map_t (_, _, _), rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_size (kinfo, k))} in typed ctxt loc instr (Item_t (nat_t ~annot:None, rest)) (* big_map *) @@ -3798,7 +3798,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (set_key, Item_t (Big_map_t (map_key, _, _), rest)) ) -> let k = ty_of_comparable_ty map_key in check_item_ty ctxt set_key k loc I_MEM 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_mem (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) @@ -3806,7 +3806,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (vk, Item_t (Big_map_t (ck, elt, _), rest)) ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_get (kinfo, k))} in option_t loc elt ~annot:None >>?= fun ty -> let stack = Item_t (ty, rest) in @@ -3821,7 +3821,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : check_item_ty ctxt set_key k loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt set_value map_value loc I_UPDATE 2 3 >>?= fun (Eq, map_value, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun _annot -> + parse_var_annot loc annot ~default:None >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_update (kinfo, k))} in let stack = Item_t (Big_map_t (map_key, map_value, map_name), rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) @@ -3834,7 +3834,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET_AND_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_GET_AND_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun _annot -> + parse_var_annot loc annot ~default:None >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_get_and_update (kinfo, k))} in @@ -3846,7 +3846,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (loc, I_SAPLING_EMPTY_STATE, [memo_size], annot), rest) -> parse_memo_size memo_size >>?= fun memo_size -> parse_var_annot loc annot ~default:default_sapling_state_annot - >>?= fun _annot -> + >>?= fun () -> let instr = {apply = (fun kinfo k -> ISapling_empty_state (kinfo, memo_size, k))} in @@ -3970,7 +3970,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_LOOP_LEFT, [body], annot), (Item_t (Union_t ((tl, _l_field), (tr, _), _), rest) as stack) ) -> ( check_kind [Seq_kind] body >>?= fun () -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> non_terminal_recursion ?type_logger tc_context @@ -4024,7 +4024,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy ret >>?= fun (Ex_ty ret, ctxt) -> check_kind [Seq_kind] code >>?= fun () -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> parse_returning (Tc_context.add_lambda tc_context) ?type_logger @@ -4042,7 +4042,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_EXEC, [], annot), Item_t (arg, Item_t (Lambda_t (param, ret, _), rest)) ) -> check_item_ty ctxt arg param loc I_EXEC 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IExec (kinfo, k))} in let stack = Item_t (ret, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) @@ -4059,7 +4059,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : check_packable ~legacy:false loc capture_ty >>?= fun () -> check_item_ty ctxt capture capture_ty loc I_APPLY 1 2 >>?= fun (Eq, capture_ty, ctxt) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IApply (kinfo, capture_ty, k))} in lambda_t loc arg_ty ret ~annot:lam_annot (* This cannot fail because the type [lambda 'arg 'ret] is always smaller than @@ -4157,21 +4157,21 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* timestamp operations *) | ( Prim (loc, I_ADD, [], annot), Item_t (Timestamp_t tname, Item_t (Int_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAdd_timestamp_to_seconds (kinfo, k))} in typed ctxt loc instr (Item_t (Timestamp_t tname, rest)) | ( Prim (loc, I_ADD, [], annot), Item_t (Int_t _, Item_t (Timestamp_t tname, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAdd_seconds_to_timestamp (kinfo, k))} in typed ctxt loc instr (Item_t (Timestamp_t tname, rest)) | ( Prim (loc, I_SUB, [], annot), Item_t (Timestamp_t tname, Item_t (Int_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISub_timestamp_seconds (kinfo, k))} in @@ -4181,7 +4181,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t ( Timestamp_t {annot = tn1; size = _}, Item_t (Timestamp_t {annot = tn2; size = _}, rest) ) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_annot ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IDiff_timestamps (kinfo, k))} in @@ -4190,14 +4190,14 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* string operations *) | ( Prim (loc, I_CONCAT, [], annot), Item_t (String_t tn1, Item_t (String_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IConcat_string_pair (kinfo, k))} in typed ctxt loc instr (Item_t (String_t tname, rest)) | (Prim (loc, I_CONCAT, [], annot), Item_t (List_t (String_t tname, _), rest)) -> - parse_var_annot ~default:None loc annot >>?= fun _annot -> + parse_var_annot ~default:None loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IConcat_string (kinfo, k))} in typed ctxt loc instr (Item_t (String_t tname, rest)) | ( Prim (loc, I_SLICE, [], annot), @@ -4206,19 +4206,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~default:(field_to_var_annot default_slice_annot) loc annot - >>?= fun _annot -> + >>?= fun () -> let instr = {apply = (fun kinfo k -> ISlice_string (kinfo, k))} in let stack = Item_t (option_string'_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_SIZE, [], annot), Item_t (String_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IString_size (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack (* bytes operations *) | ( Prim (loc, I_CONCAT, [], annot), Item_t (Bytes_t tn1, Item_t (Bytes_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IConcat_bytes_pair (kinfo, k))} in @@ -4226,7 +4226,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_CONCAT, [], annot), Item_t (List_t (Bytes_t tname, _), rest)) -> - parse_var_annot ~default:None loc annot >>?= fun _annot -> + parse_var_annot ~default:None loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IConcat_bytes (kinfo, k))} in let stack = Item_t (Bytes_t tname, rest) in typed ctxt loc instr stack @@ -4236,19 +4236,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~default:(field_to_var_annot default_slice_annot) loc annot - >>?= fun _annot -> + >>?= fun () -> let instr = {apply = (fun kinfo k -> ISlice_bytes (kinfo, k))} in let stack = Item_t (option_bytes'_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_SIZE, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBytes_size (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack (* currency operations *) | ( Prim (loc, I_ADD, [], annot), Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_tez (kinfo, k))} in @@ -4257,7 +4257,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_SUB, [], annot), Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> if legacy then - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_tez_legacy (kinfo, k))} in @@ -4266,7 +4266,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : else fail (Deprecated_instruction I_SUB) | ( Prim (loc, I_SUB_MUTEZ, [], annot), Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_tez (kinfo, k))} in @@ -4275,21 +4275,21 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_MUL, [], annot), Item_t (Mutez_t tname, Item_t (Nat_t _, rest)) ) -> (* no type name check *) - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_teznat (kinfo, k))} in let stack = Item_t (Mutez_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Nat_t _, Item_t (Mutez_t tname, rest)) ) -> (* no type name check *) - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_nattez (kinfo, k))} in let stack = Item_t (Mutez_t tname, rest) in typed ctxt loc instr stack (* boolean operations *) | (Prim (loc, I_OR, [], annot), Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IOr (kinfo, k))} in @@ -4297,7 +4297,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_AND, [], annot), Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAnd (kinfo, k))} in @@ -4305,46 +4305,46 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_XOR, [], annot), Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IXor (kinfo, k))} in let stack = Item_t (Bool_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NOT, [], annot), Item_t (Bool_t tname, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INot (kinfo, k))} in let stack = Item_t (Bool_t tname, rest) in typed ctxt loc instr stack (* integer operations *) | (Prim (loc, I_ABS, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAbs_int (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_ISNAT, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot ~default:None >>?= fun _annot -> + parse_var_annot loc annot ~default:None >>?= fun () -> let instr = {apply = (fun kinfo k -> IIs_nat (kinfo, k))} in let stack = Item_t (option_nat_t, rest) in typed ctxt loc instr stack | (Prim (loc, I_INT, [], annot), Item_t (Nat_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IInt_nat (kinfo, k))} in let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Int_t tname, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Nat_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg (kinfo, k))} in let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_ADD, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in @@ -4352,19 +4352,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_ADD, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_ADD, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_ADD, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_nat (kinfo, k))} in @@ -4372,7 +4372,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_SUB, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in @@ -4380,19 +4380,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_SUB, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_SUB, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_SUB, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun _tname -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in @@ -4400,7 +4400,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_MUL, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IMul_int (kinfo, k))} in @@ -4408,19 +4408,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_MUL, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_MUL, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_nat (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_MUL, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IMul_nat (kinfo, k))} in @@ -4428,13 +4428,13 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_EDIV, [], annot), Item_t (Mutez_t tname, Item_t (Nat_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IEdiv_teznat (kinfo, k))} in let stack = Item_t (option_pair_mutez'_mutez'_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_EDIV, [], annot), Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_tez (kinfo, k))} in @@ -4442,7 +4442,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_EDIV, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_int (kinfo, k))} in @@ -4450,19 +4450,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_EDIV, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IEdiv_int (kinfo, k))} in let stack = Item_t (option_pair_int'_nat_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_EDIV, [], annot), Item_t (Nat_t tname, Item_t (Int_t _, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IEdiv_nat (kinfo, k))} in let stack = Item_t (option_pair_int_nat'_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_EDIV, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_nat (kinfo, k))} in @@ -4470,7 +4470,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_LSL, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ILsl_nat (kinfo, k))} in @@ -4478,7 +4478,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_LSR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ILsr_nat (kinfo, k))} in @@ -4486,7 +4486,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_OR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IOr_nat (kinfo, k))} in @@ -4494,7 +4494,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_AND, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAnd_nat (kinfo, k))} in @@ -4502,31 +4502,31 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_AND, [], annot), Item_t (Int_t _, Item_t (Nat_t tname, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAnd_int_nat (kinfo, k))} in let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_XOR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IXor_nat (kinfo, k))} in let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NOT, [], annot), Item_t (Int_t tname, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INot_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NOT, [], annot), Item_t (Nat_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INot_int (kinfo, k))} in let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack (* comparison *) | (Prim (loc, I_COMPARE, [], annot), Item_t (t1, Item_t (t2, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> check_item_ty ctxt t1 t2 loc I_COMPARE 1 2 >>?= fun (Eq, t, ctxt) -> comparable_ty_of_ty ctxt loc t >>?= fun (key, ctxt) -> let instr = {apply = (fun kinfo k -> ICompare (kinfo, key, k))} in @@ -4534,38 +4534,38 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) (* comparators *) | (Prim (loc, I_EQ, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IEq (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEQ, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeq (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_LT, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ILt (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_GT, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IGt (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_LE, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ILe (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_GE, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IGe (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack (* annotations *) | (Prim (loc, I_CAST, [cast_t], annot), Item_t (t, stack)) -> - parse_var_annot loc annot ~default:None >>?= fun _annot -> + parse_var_annot loc annot ~default:None >>?= fun () -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy cast_t >>?= fun (Ex_ty cast_t, ctxt) -> ty_eq ~legacy ctxt loc cast_t t >>?= fun (Eq, ctxt) -> @@ -4573,7 +4573,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack = Item_t (cast_t, stack) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | (Prim (loc, I_RENAME, [], annot), Item_t (t, stack)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> (* can erase annot *) let instr = {apply = (fun _ k -> k)} in let stack = Item_t (t, stack) in @@ -4586,7 +4586,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : t >>?= fun () -> parse_var_annot loc annot ~default:(field_to_var_annot default_pack_annot) - >>?= fun _annot -> + >>?= fun () -> let instr = {apply = (fun kinfo k -> IPack (kinfo, t, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack @@ -4601,7 +4601,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* protocol *) | (Prim (loc, I_ADDRESS, [], annot), Item_t (Contract_t _, rest)) -> parse_var_annot loc annot ~default:(field_to_var_annot default_addr_annot) - >>?= fun _annot -> + >>?= fun () -> let instr = {apply = (fun kinfo k -> IAddress (kinfo, k))} in let stack = Item_t (address_t ~annot:None, rest) in typed ctxt loc instr stack @@ -4629,7 +4629,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : loc annot ~default:(field_to_var_annot default_contract_annot) - >>?= fun _annot -> + >>?= fun () -> let instr = { apply = @@ -4643,21 +4643,21 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (p, Item_t (Mutez_t _, Item_t (Contract_t (cp, _), rest))) ) -> Tc_context.check_not_in_view loc ~legacy tc_context prim >>?= fun () -> check_item_ty ctxt p cp loc prim 1 4 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ITransfer_tokens (kinfo, k))} in let stack = Item_t (operation_t ~annot:None, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, (I_SET_DELEGATE as prim), [], annot), Item_t (Option_t (Key_hash_t _, _), rest) ) -> Tc_context.check_not_in_view loc ~legacy tc_context prim >>?= fun () -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISet_delegate (kinfo, k))} in let stack = Item_t (operation_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (_, I_CREATE_ACCOUNT, _, _), _) -> fail (Deprecated_instruction I_CREATE_ACCOUNT) | (Prim (loc, I_IMPLICIT_ACCOUNT, [], annot), Item_t (Key_hash_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IImplicit_account (kinfo, k))} in let stack = Item_t (contract_unit_t, rest) in typed ctxt loc instr stack @@ -4747,50 +4747,49 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : in typed ctxt loc instr stack | (Prim (loc, I_NOW, [], annot), stack) -> - parse_var_annot loc annot ~default:default_now_annot >>?= fun _annot -> + parse_var_annot loc annot ~default:default_now_annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INow (kinfo, k))} in let stack = Item_t (timestamp_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_AMOUNT, [], annot), stack) -> - parse_var_annot loc annot ~default:default_amount_annot >>?= fun _annot -> + parse_var_annot loc annot ~default:default_amount_annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAmount (kinfo, k))} in let stack = Item_t (mutez_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_CHAIN_ID, [], annot), stack) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IChainId (kinfo, k))} in let stack = Item_t (chain_id_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_BALANCE, [], annot), stack) -> - parse_var_annot loc annot ~default:default_balance_annot - >>?= fun _annot -> + parse_var_annot loc annot ~default:default_balance_annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBalance (kinfo, k))} in let stack = Item_t (mutez_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_LEVEL, [], annot), stack) -> - parse_var_annot loc annot ~default:default_level_annot >>?= fun _annot -> + parse_var_annot loc annot ~default:default_level_annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ILevel (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_VOTING_POWER, [], annot), Item_t (Key_hash_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IVoting_power (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_TOTAL_VOTING_POWER, [], annot), stack) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ITotal_voting_power (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (_, I_STEPS_TO_QUOTA, _, _), _) -> fail (Deprecated_instruction I_STEPS_TO_QUOTA) | (Prim (loc, I_SOURCE, [], annot), stack) -> - parse_var_annot loc annot ~default:default_source_annot >>?= fun _annot -> + parse_var_annot loc annot ~default:default_source_annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISource (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_SENDER, [], annot), stack) -> - parse_var_annot loc annot ~default:default_sender_annot >>?= fun _annot -> + parse_var_annot loc annot ~default:default_sender_annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISender (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack @@ -4830,50 +4829,50 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack = Item_t (res_ty, stack) in typed_no_lwt ctxt loc instr stack ) | (Prim (loc, I_SELF_ADDRESS, [], annot), stack) -> - parse_var_annot loc annot ~default:default_self_annot >>?= fun _annot -> + parse_var_annot loc annot ~default:default_self_annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISelf_address (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack (* cryptography *) | (Prim (loc, I_HASH_KEY, [], annot), Item_t (Key_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IHash_key (kinfo, k))} in let stack = Item_t (key_hash_t ~annot:None, rest) in typed ctxt loc instr stack | ( Prim (loc, I_CHECK_SIGNATURE, [], annot), Item_t (Key_t _, Item_t (Signature_t _, Item_t (Bytes_t _, rest))) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ICheck_signature (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_BLAKE2B, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBlake2b (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_SHA256, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISha256 (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_SHA512, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISha512 (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_KECCAK, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IKeccak (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_SHA3, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISha3 (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), Item_t (Bls12_381_g1_t tn1, Item_t (Bls12_381_g1_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_g1 (kinfo, k))} in @@ -4881,7 +4880,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), Item_t (Bls12_381_g2_t tn1, Item_t (Bls12_381_g2_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_g2 (kinfo, k))} in @@ -4889,7 +4888,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), Item_t (Bls12_381_fr_t tn1, Item_t (Bls12_381_fr_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_fr (kinfo, k))} in @@ -4897,63 +4896,63 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_g1_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_g1 (kinfo, k))} in let stack = Item_t (Bls12_381_g1_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_g2_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_g2 (kinfo, k))} in let stack = Item_t (Bls12_381_g2_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_fr_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr (kinfo, k))} in let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Nat_t {annot = tname; _}, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr_z (kinfo, k))} in let stack = Item_t (bls12_381_fr_t ~annot:tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Int_t {annot = tname; _}, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr_z (kinfo, k))} in let stack = Item_t (bls12_381_fr_t ~annot:tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_fr_t tname, Item_t (Int_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_z_fr (kinfo, k))} in let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_fr_t tname, Item_t (Nat_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_z_fr (kinfo, k))} in let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_INT, [], annot), Item_t (Bls12_381_fr_t _, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IInt_bls12_381_fr (kinfo, k))} in let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_g1_t tname, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_g1 (kinfo, k))} in let stack = Item_t (Bls12_381_g1_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_g2_t tname, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_g2 (kinfo, k))} in let stack = Item_t (Bls12_381_g2_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_fr_t tname, rest)) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_fr (kinfo, k))} in let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack @@ -4962,7 +4961,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ( List_t (Pair_t ((Bls12_381_g1_t _, _, _), (Bls12_381_g2_t _, _, _), _), _), rest ) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IPairing_check_bls12_381 (kinfo, k))} in @@ -4970,7 +4969,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack (* Tickets *) | (Prim (loc, I_TICKET, [], annot), Item_t (t, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> comparable_ty_of_ty ctxt loc t >>?= fun (ty, ctxt) -> ticket_t loc ty ~annot:None >>?= fun res_ty -> let instr = {apply = (fun kinfo k -> ITicket (kinfo, k))} in @@ -4978,7 +4977,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_READ_TICKET, [], annot), (Item_t (Ticket_t (t, _), _) as full_stack) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let () = check_dupable_comparable_ty t in opened_ticket_type loc t >>?= fun opened_ticket_ty -> let result = ty_of_comparable_ty opened_ticket_ty in @@ -4990,7 +4989,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ( (Ticket_t (t, _) as ticket_t), Item_t (Pair_t ((Nat_t _, fa_a, a_a), (Nat_t _, fa_b, a_b), _), rest) ) ) -> - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> let () = check_dupable_comparable_ty t in pair_t loc (ticket_t, fa_a, a_a) (ticket_t, fa_b, a_b) ~annot:None >>?= fun pair_tickets_ty -> @@ -5002,7 +5001,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t ( Pair_t (((Ticket_t _ as ty_a), _, _), ((Ticket_t _ as ty_b), _, _), _), rest ) ) -> ( - parse_var_annot loc annot >>?= fun _annot -> + parse_var_annot loc annot >>?= fun () -> Gas_monad.run ctxt @@ merge_types ~legacy ~error_details:Informative loc ty_a ty_b >>?= fun (eq_ty, ctxt) -> From 0860688206e745ba60fc70620c61eae7787f9ea7 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 10:52:28 +0100 Subject: [PATCH 0017/1220] Proto/Michelson: simplify parse_var_annot 2/2 Default parameter was unused --- .../lib_protocol/script_ir_annot.ml | 6 +- .../lib_protocol/script_ir_annot.mli | 5 +- .../lib_protocol/script_ir_translator.ml | 61 +++++++------------ 3 files changed, 27 insertions(+), 45 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index ef1c773a41..c578e8e4b2 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -357,10 +357,8 @@ let check_correct_field : (Inconsistent_field_annotations ("%" ^ (s1 :> string), "%" ^ (s2 :> string))) -let parse_var_annot : - Script.location -> ?default:var_annot option -> string list -> unit tzresult - = - fun loc ?default:_ annot -> +let parse_var_annot : Script.location -> string list -> unit tzresult = + fun loc annot -> parse_annots loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> error_unexpected_annot loc fields >>? fun () -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index afd6b0012b..4a0ed81577 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -175,9 +175,8 @@ val check_correct_field : (** Instruction annotations parsing *) -(** Parse a variable annotation, replaced by a default value if [None]. *) -val parse_var_annot : - Script.location -> ?default:var_annot option -> string list -> unit tzresult +(** Parse a variable annotation. *) +val parse_var_annot : Script.location -> string list -> unit tzresult val is_allowed_char : char -> bool diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 9a51cc3eaa..d98219ada1 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3050,7 +3050,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : However, DROP is equivalent to DROP 1 so hinting at an arity of 1 makes sense. *) fail (Invalid_arity (loc, I_DROP, 1, List.length l)) | (Prim (loc, I_DUP, [], annot), Item_t (v, rest)) -> - parse_var_annot loc annot ~default:None >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> record_trace_eval (fun () -> let t = serialize_ty_for_error v in @@ -3627,7 +3627,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (v, Item_t (Bool_t _, Item_t (Set_t (elt, tname), rest))) ) -> check_item_ty ctxt (ty_of_comparable_ty elt) v loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISet_update (kinfo, k))} in (typed ctxt loc instr (Item_t (Set_t (elt, tname), rest)) : ((a, s) judgement * context) tzresult Lwt.t) @@ -3759,7 +3759,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_update (kinfo, k))} in (typed ctxt loc instr (Item_t (Map_t (ck, v, map_name), rest)) : ((a, s) judgement * context) tzresult Lwt.t) @@ -3771,7 +3771,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET_AND_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_GET_AND_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_get_and_update (kinfo, k))} in let stack = Item_t (Option_t (vv, vname), Item_t (Map_t (ck, v, map_name), rest)) @@ -3821,7 +3821,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : check_item_ty ctxt set_key k loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt set_value map_value loc I_UPDATE 2 3 >>?= fun (Eq, map_value, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_update (kinfo, k))} in let stack = Item_t (Big_map_t (map_key, map_value, map_name), rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) @@ -3834,7 +3834,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET_AND_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_GET_AND_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot ~default:None >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_get_and_update (kinfo, k))} in @@ -3845,8 +3845,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* Sapling *) | (Prim (loc, I_SAPLING_EMPTY_STATE, [memo_size], annot), rest) -> parse_memo_size memo_size >>?= fun memo_size -> - parse_var_annot loc annot ~default:default_sapling_state_annot - >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISapling_empty_state (kinfo, memo_size, k))} in @@ -4197,16 +4196,12 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr (Item_t (String_t tname, rest)) | (Prim (loc, I_CONCAT, [], annot), Item_t (List_t (String_t tname, _), rest)) -> - parse_var_annot ~default:None loc annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IConcat_string (kinfo, k))} in typed ctxt loc instr (Item_t (String_t tname, rest)) | ( Prim (loc, I_SLICE, [], annot), Item_t (Nat_t _, Item_t (Nat_t _, Item_t (String_t tname, rest))) ) -> - parse_var_annot - ~default:(field_to_var_annot default_slice_annot) - loc - annot - >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISlice_string (kinfo, k))} in let stack = Item_t (option_string'_t tname, rest) in typed ctxt loc instr stack @@ -4226,17 +4221,13 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_CONCAT, [], annot), Item_t (List_t (Bytes_t tname, _), rest)) -> - parse_var_annot ~default:None loc annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IConcat_bytes (kinfo, k))} in let stack = Item_t (Bytes_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_SLICE, [], annot), Item_t (Nat_t _, Item_t (Nat_t _, Item_t (Bytes_t tname, rest))) ) -> - parse_var_annot - ~default:(field_to_var_annot default_slice_annot) - loc - annot - >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISlice_bytes (kinfo, k))} in let stack = Item_t (option_bytes'_t tname, rest) in typed ctxt loc instr stack @@ -4323,7 +4314,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_ISNAT, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot ~default:None >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IIs_nat (kinfo, k))} in let stack = Item_t (option_nat_t, rest) in typed ctxt loc instr stack @@ -4565,7 +4556,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack (* annotations *) | (Prim (loc, I_CAST, [cast_t], annot), Item_t (t, stack)) -> - parse_var_annot loc annot ~default:None >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy cast_t >>?= fun (Ex_ty cast_t, ctxt) -> ty_eq ~legacy ctxt loc cast_t t >>?= fun (Eq, ctxt) -> @@ -4585,8 +4576,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* allow to pack contracts for hash/signature checks *) loc t >>?= fun () -> - parse_var_annot loc annot ~default:(field_to_var_annot default_pack_annot) - >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IPack (kinfo, t, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack @@ -4600,8 +4590,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack (* protocol *) | (Prim (loc, I_ADDRESS, [], annot), Item_t (Contract_t _, rest)) -> - parse_var_annot loc annot ~default:(field_to_var_annot default_addr_annot) - >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAddress (kinfo, k))} in let stack = Item_t (address_t ~annot:None, rest) in typed ctxt loc instr stack @@ -4625,11 +4614,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_view_output_ty ctxt ~stack_depth:0 ~legacy output_ty >>?= fun (Ex_ty output_ty, ctxt) -> option_t output_ty_loc output_ty ~annot:None >>?= fun res_ty -> - parse_var_annot - loc - annot - ~default:(field_to_var_annot default_contract_annot) - >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = { apply = @@ -4747,12 +4732,12 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : in typed ctxt loc instr stack | (Prim (loc, I_NOW, [], annot), stack) -> - parse_var_annot loc annot ~default:default_now_annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INow (kinfo, k))} in let stack = Item_t (timestamp_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_AMOUNT, [], annot), stack) -> - parse_var_annot loc annot ~default:default_amount_annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAmount (kinfo, k))} in let stack = Item_t (mutez_t ~annot:None, stack) in typed ctxt loc instr stack @@ -4762,12 +4747,12 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack = Item_t (chain_id_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_BALANCE, [], annot), stack) -> - parse_var_annot loc annot ~default:default_balance_annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBalance (kinfo, k))} in let stack = Item_t (mutez_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_LEVEL, [], annot), stack) -> - parse_var_annot loc annot ~default:default_level_annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ILevel (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, stack) in typed ctxt loc instr stack @@ -4784,12 +4769,12 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | (Prim (_, I_STEPS_TO_QUOTA, _, _), _) -> fail (Deprecated_instruction I_STEPS_TO_QUOTA) | (Prim (loc, I_SOURCE, [], annot), stack) -> - parse_var_annot loc annot ~default:default_source_annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISource (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_SENDER, [], annot), stack) -> - parse_var_annot loc annot ~default:default_sender_annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISender (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack @@ -4829,7 +4814,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack = Item_t (res_ty, stack) in typed_no_lwt ctxt loc instr stack ) | (Prim (loc, I_SELF_ADDRESS, [], annot), stack) -> - parse_var_annot loc annot ~default:default_self_annot >>?= fun () -> + parse_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISelf_address (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack From 389bb2114251f45339f9977a96e9ebbbb60f74c9 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 10:44:39 +0100 Subject: [PATCH 0018/1220] Proto/Michelson: simplify parse_two_var_annot Returned value was always ignored --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 8 +++----- src/proto_alpha/lib_protocol/script_ir_annot.mli | 5 +---- src/proto_alpha/lib_protocol/script_ir_translator.ml | 2 +- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index c578e8e4b2..a9f94dae01 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -383,14 +383,12 @@ let parse_constr_annot : split_if_special ~loc f1 >>? fun () -> split_if_special ~loc f2 >|? fun () -> (t, f1, f2) -let parse_two_var_annot : - Script.location -> - string list -> - (var_annot option * var_annot option) tzresult = +let parse_two_var_annot : Script.location -> string list -> unit tzresult = fun loc annot -> parse_annots loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> - error_unexpected_annot loc fields >>? fun () -> get_two_annot loc vars + error_unexpected_annot loc fields >>? fun () -> + get_two_annot loc vars >|? fun (_a1, _a2) -> () let parse_destr_annot : Script.location -> string list -> field_annot option tzresult = diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 4a0ed81577..05dc8351c8 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -185,10 +185,7 @@ val parse_constr_annot : string list -> (type_annot option * field_annot option * field_annot option) tzresult -val parse_two_var_annot : - Script.location -> - string list -> - (var_annot option * var_annot option) tzresult +val parse_two_var_annot : Script.location -> string list -> unit tzresult val parse_destr_annot : Script.location -> string list -> field_annot option tzresult diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index d98219ada1..739e7f1ef2 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -4651,7 +4651,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (Option_t (Key_hash_t _, _), Item_t (Mutez_t _, Item_t (ginit, rest))) ) -> Tc_context.check_not_in_view ~legacy loc tc_context prim >>?= fun () -> - parse_two_var_annot loc annot >>?= fun (_op_annot, _addr_annot) -> + parse_two_var_annot loc annot >>?= fun () -> let canonical_code = Micheline.strip_locations code in parse_toplevel ctxt ~legacy canonical_code >>?= fun ({arg_type; storage_type; code_field; views; root_name}, ctxt) -> From 78e068d113580812c21b910cf6add32509fb779e Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:53:52 +0100 Subject: [PATCH 0019/1220] Proto/Michelson: simplify parse_returning The variable annotation was ignored --- .../lib_protocol/script_ir_translator.ml | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 739e7f1ef2..69711bb09b 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -2633,7 +2633,7 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : ~stack_depth:(stack_depth + 1) ctxt ~legacy - (ta, lambda_arg_annot) + ta tr script_instr | (Lambda_t _, expr) -> @@ -2919,18 +2919,11 @@ and[@coq_axiom_with_reason "gadt"] parse_returning : tc_context -> context -> legacy:bool -> - arg ty * var_annot option -> + arg ty -> ret ty -> Script.node -> ((arg, ret) lambda * context) tzresult Lwt.t = - fun ?type_logger - ~stack_depth - tc_context - ctxt - ~legacy - (arg, _arg_annot) - ret - script_instr -> + fun ?type_logger ~stack_depth tc_context ctxt ~legacy arg ret script_instr -> parse_instr ?type_logger tc_context @@ -4030,7 +4023,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~stack_depth:(stack_depth + 1) ctxt ~legacy - (arg, default_arg_annot) + arg ret code >>=? fun (lambda, ctxt) -> @@ -4704,7 +4697,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~legacy ?type_logger ~stack_depth:(stack_depth + 1) - (arg_type_full, None) + arg_type_full ret_type_full code_field) >>=? fun ( (Lam @@ -5524,7 +5517,7 @@ let parse_code : ~legacy ~stack_depth:0 ?type_logger - (arg_type_full, None) + arg_type_full ret_type_full code_field) >>=? fun (code, ctxt) -> @@ -5654,7 +5647,7 @@ let typecheck_code : ~legacy ~stack_depth:0 ?type_logger - (arg_type_full, None) + arg_type_full ret_type_full code_field in From 13f16c1275c9fdecde9dfe4b8ce572ed4a292005 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 10:26:53 +0100 Subject: [PATCH 0020/1220] Proto/Michelson: remove unused default annot names --- .../lib_protocol/script_ir_annot.ml | 44 ------------------- .../lib_protocol/script_ir_annot.mli | 44 ------------------- 2 files changed, 88 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index a9f94dae01..c028a7d0ad 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -50,58 +50,14 @@ let some_var_annot_of_string_exn s = let some_field_annot_of_string_exn s = Some (Field_annot (Non_empty_string.of_string_exn s)) -let default_now_annot = some_var_annot_of_string_exn "now" - -let default_amount_annot = some_var_annot_of_string_exn "amount" - -let default_balance_annot = some_var_annot_of_string_exn "balance" - -let default_level_annot = some_var_annot_of_string_exn "level" - -let default_source_annot = some_var_annot_of_string_exn "source" - -let default_sender_annot = some_var_annot_of_string_exn "sender" - -let default_self_annot = some_var_annot_of_string_exn "self" - -let default_arg_annot = some_var_annot_of_string_exn "arg" - -let lambda_arg_annot = some_var_annot_of_string_exn "@arg" - let default_param_annot = some_var_annot_of_string_exn "parameter" let default_storage_annot = some_var_annot_of_string_exn "storage" -let default_car_annot = some_field_annot_of_string_exn "car" - -let default_cdr_annot = some_field_annot_of_string_exn "cdr" - -let default_contract_annot = some_field_annot_of_string_exn "contract" - -let default_addr_annot = some_field_annot_of_string_exn "address" - -let default_pack_annot = some_field_annot_of_string_exn "packed" - -let default_unpack_annot = some_field_annot_of_string_exn "unpacked" - -let default_slice_annot = some_field_annot_of_string_exn "slice" - let default_elt_annot = some_field_annot_of_string_exn "elt" let default_key_annot = some_field_annot_of_string_exn "key" -let default_hd_annot = some_field_annot_of_string_exn "hd" - -let default_tl_annot = some_field_annot_of_string_exn "tl" - -let default_some_annot = some_field_annot_of_string_exn "some" - -let default_left_annot = some_field_annot_of_string_exn "left" - -let default_right_annot = some_field_annot_of_string_exn "right" - -let default_sapling_state_annot = some_var_annot_of_string_exn "sapling" - let default_sapling_balance_annot = some_var_annot_of_string_exn "sapling_balance" diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 05dc8351c8..18dc22605c 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -41,60 +41,16 @@ end (** Default annotations *) -val default_now_annot : var_annot option - -val default_amount_annot : var_annot option - -val default_balance_annot : var_annot option - -val default_level_annot : var_annot option - -val default_source_annot : var_annot option - -val default_sender_annot : var_annot option - -val default_self_annot : var_annot option - -val default_arg_annot : var_annot option - -val lambda_arg_annot : var_annot option - val default_param_annot : var_annot option val default_storage_annot : var_annot option -val default_sapling_state_annot : var_annot option - val default_sapling_balance_annot : var_annot option -val default_car_annot : field_annot option - -val default_cdr_annot : field_annot option - -val default_contract_annot : field_annot option - -val default_addr_annot : field_annot option - -val default_pack_annot : field_annot option - -val default_unpack_annot : field_annot option - -val default_slice_annot : field_annot option - val default_elt_annot : field_annot option val default_key_annot : field_annot option -val default_hd_annot : field_annot option - -val default_tl_annot : field_annot option - -val default_some_annot : field_annot option - -val default_left_annot : field_annot option - -val default_right_annot : field_annot option - (** Unparse annotations to their string representation *) val unparse_type_annot : type_annot option -> string list From 9c350793cc79da89e84c2864ff6bde9634820601 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Thu, 6 Jan 2022 01:23:23 +0100 Subject: [PATCH 0021/1220] Tests/Python: regenerate regtest outputs --- ...ck::test_typecheck[attic--accounts.tz].out | 386 ++-- ...echeck::test_typecheck[attic--add1.tz].out | 4 +- ...k::test_typecheck[attic--add1_list.tz].out | 4 +- ...st_typecheck[attic--after_strategy.tz].out | 15 +- ...heck::test_typecheck[attic--always.tz].out | 12 +- ...heck::test_typecheck[attic--append.tz].out | 2 +- ...ck::test_typecheck[attic--at_least.tz].out | 10 +- ...eck::test_typecheck[attic--auction.tz].out | 62 +- ...::test_typecheck[attic--bad_lockup.tz].out | 66 +- ...est_typecheck[attic--big_map_union.tz].out | 2 +- ...t_typecheck[attic--cadr_annotation.tz].out | 2 +- ...heck::test_typecheck[attic--concat.tz].out | 8 +- ...test_typecheck[attic--conditionals.tz].out | 6 +- ...::test_typecheck[attic--cons_twice.tz].out | 10 +- ...ck::test_typecheck[attic--cps_fact.tz].out | 61 +- ...typecheck[attic--create_add1_lists.tz].out | 7 +- ...st_typecheck[attic--data_publisher.tz].out | 59 +- ...ck::test_typecheck[attic--dispatch.tz].out | 13 +- ...check::test_typecheck[attic--empty.tz].out | 6 +- ...:test_typecheck[attic--fail_amount.tz].out | 4 +- ...heck::test_typecheck[attic--faucet.tz].out | 16 +- ...eck::test_typecheck[attic--forward.tz].out | 261 ++- ...ypecheck::test_typecheck[attic--id.tz].out | 6 +- ...st_typecheck[attic--insertion_sort.tz].out | 50 +- ...est_typecheck[attic--int_publisher.tz].out | 40 +- ...:test_typecheck[attic--king_of_tez.tz].out | 65 +- ...echeck[attic--list_of_transactions.tz].out | 51 +- ...check::test_typecheck[attic--queue.tz].out | 8 +- ...::test_typecheck[attic--reduce_map.tz].out | 29 +- ...::test_typecheck[attic--reentrancy.tz].out | 54 +- ...k::test_typecheck[attic--reservoir.tz].out | 89 +- ...pecheck[attic--scrutable_reservoir.tz].out | 56 +- ..._typecheck[attic--spawn_identities.tz].out | 68 +- ...eck::test_typecheck[macros--assert.tz].out | 2 +- ...est_typecheck[macros--assert_cmpeq.tz].out | 6 +- ...est_typecheck[macros--assert_cmpge.tz].out | 6 +- ...est_typecheck[macros--assert_cmpgt.tz].out | 6 +- ...est_typecheck[macros--assert_cmple.tz].out | 6 +- ...est_typecheck[macros--assert_cmplt.tz].out | 6 +- ...st_typecheck[macros--assert_cmpneq.tz].out | 6 +- ...::test_typecheck[macros--assert_eq.tz].out | 6 +- ...::test_typecheck[macros--assert_ge.tz].out | 6 +- ...::test_typecheck[macros--assert_gt.tz].out | 6 +- ...::test_typecheck[macros--assert_le.tz].out | 6 +- ...::test_typecheck[macros--assert_lt.tz].out | 6 +- ...:test_typecheck[macros--assert_neq.tz].out | 6 +- ..._typecheck[macros--big_map_get_add.tz].out | 2 +- ...:test_typecheck[macros--build_list.tz].out | 36 +- ...st_typecheck[macros--carn_and_cdrn.tz].out | 24 +- ...ck::test_typecheck[macros--compare.tz].out | 51 +- ...st_typecheck[macros--compare_bytes.tz].out | 51 +- ...::test_typecheck[macros--guestbook.tz].out | 29 +- ...ypecheck[macros--macro_annotations.tz].out | 8 +- ...test_typecheck[macros--max_in_list.tz].out | 18 +- ...echeck::test_typecheck[macros--min.tz].out | 13 +- ...:test_typecheck[macros--pair_macro.tz].out | 6 +- ...st_typecheck[macros--take_my_money.tz].out | 2 +- ...est_typecheck[macros--unpair_macro.tz].out | 20 +- ...eck[mini_scenarios--authentication.tz].out | 21 +- ...ini_scenarios--big_map_entrypoints.tz].out | 68 +- ...heck[mini_scenarios--big_map_magic.tz].out | 23 +- ...check[mini_scenarios--big_map_read.tz].out | 8 +- ...heck[mini_scenarios--big_map_write.tz].out | 17 +- ...ck[mini_scenarios--create_contract.tz].out | 29 +- ..._scenarios--create_contract_simple.tz].out | 22 +- ...ck[mini_scenarios--default_account.tz].out | 2 +- ...cenarios--execution_order_appender.tz].out | 31 +- ..._scenarios--execution_order_caller.tz].out | 23 +- ..._scenarios--execution_order_storer.tz].out | 4 +- ...eck[mini_scenarios--fa12_reference.tz].out | 1012 +++++------ ...k[mini_scenarios--generic_multisig.tz].out | 244 ++- ..._typecheck[mini_scenarios--groth16.tz].out | 235 ++- ...ypecheck[mini_scenarios--hardlimit.tz].out | 8 +- ...ck[mini_scenarios--legacy_multisig.tz].out | 246 ++- ...t_typecheck[mini_scenarios--lockup.tz].out | 46 +- ...eck[mini_scenarios--lqt_fa12.mligo.tz].out | 1569 ++++++++--------- ...check[mini_scenarios--multiple_en2.tz].out | 162 +- ...rios--multiple_entrypoints_counter.tz].out | 139 +- ..._scenarios--parameterized_multisig.tz].out | 24 +- ...t_typecheck[mini_scenarios--replay.tz].out | 32 +- ..._scenarios--reveal_signed_preimage.tz].out | 36 +- ...i_scenarios--self_address_receiver.tz].out | 12 +- ...ini_scenarios--self_address_sender.tz].out | 9 +- ...scenarios--ticket_builder_fungible.tz].out | 53 +- ...arios--ticket_builder_non_fungible.tz].out | 65 +- ..._scenarios--ticket_wallet_fungible.tz].out | 223 +-- ...narios--ticket_wallet_non_fungible.tz].out | 123 +- ...pecheck[mini_scenarios--tzip4_view.tz].out | 10 +- ...est_typecheck[mini_scenarios--xcat.tz].out | 48 +- ...ypecheck[mini_scenarios--xcat_dapp.tz].out | 299 ++-- ..._typecheck[non_regression--bug_262.tz].out | 2 +- ...echeck[non_regression--pairk_annot.tz].out | 16 +- ...check::test_typecheck[opcodes--abs.tz].out | 8 +- ...check::test_typecheck[opcodes--add.tz].out | 70 +- ...ypecheck[opcodes--add_bls12_381_fr.tz].out | 2 +- ...ypecheck[opcodes--add_bls12_381_g1.tz].out | 2 +- ...ypecheck[opcodes--add_bls12_381_g2.tz].out | 2 +- ...check[opcodes--add_delta_timestamp.tz].out | 6 +- ...check[opcodes--add_timestamp_delta.tz].out | 6 +- ...k::test_typecheck[opcodes--address.tz].out | 4 +- ...eck[opcodes--amount_after_fib_view.tz].out | 28 +- ...des--amount_after_nonexistent_view.tz].out | 29 +- ...pecheck[opcodes--amount_after_view.tz].out | 31 +- ...check::test_typecheck[opcodes--and.tz].out | 14 +- ...test_typecheck[opcodes--and_binary.tz].out | 4 +- ...t_typecheck[opcodes--and_logical_1.tz].out | 8 +- ...k::test_typecheck[opcodes--balance.tz].out | 6 +- ...ck[opcodes--balance_after_fib_view.tz].out | 28 +- ...es--balance_after_nonexistent_view.tz].out | 29 +- ...echeck[opcodes--balance_after_view.tz].out | 31 +- ...typecheck[opcodes--big_map_mem_nat.tz].out | 4 +- ...echeck[opcodes--big_map_mem_string.tz].out | 4 +- ...typecheck[opcodes--big_map_to_self.tz].out | 58 +- ...check[opcodes--bls12_381_fr_to_int.tz].out | 2 +- ...eck[opcodes--bls12_381_fr_to_mutez.tz].out | 4 +- ...echeck[opcodes--bls12_381_fr_z_int.tz].out | 2 +- ...echeck[opcodes--bls12_381_fr_z_nat.tz].out | 2 +- ...echeck[opcodes--bls12_381_z_fr_int.tz].out | 4 +- ...echeck[opcodes--bls12_381_z_fr_nat.tz].out | 4 +- ...eck::test_typecheck[opcodes--bytes.tz].out | 6 +- ...check::test_typecheck[opcodes--car.tz].out | 2 +- ...check::test_typecheck[opcodes--cdr.tz].out | 2 +- ...::test_typecheck[opcodes--chain_id.tz].out | 6 +- ...typecheck[opcodes--check_signature.tz].out | 22 +- ...::test_typecheck[opcodes--comb-get.tz].out | 32 +- ...test_typecheck[opcodes--comb-set-2.tz].out | 4 +- ...::test_typecheck[opcodes--comb-set.tz].out | 4 +- ...est_typecheck[opcodes--comparisons.tz].out | 64 +- ...st_typecheck[opcodes--concat_hello.tz].out | 7 +- ...echeck[opcodes--concat_hello_bytes.tz].out | 4 +- ...est_typecheck[opcodes--concat_list.tz].out | 12 +- ...heck::test_typecheck[opcodes--cons.tz].out | 2 +- ...st_typecheck[opcodes--contains_all.tz].out | 34 +- ...::test_typecheck[opcodes--contract.tz].out | 4 +- ...typecheck[opcodes--create_contract.tz].out | 6 +- ...[opcodes--create_contract_rootname.tz].out | 6 +- ...odes--create_contract_rootname_alt.tz].out | 6 +- ...opcodes--create_contract_with_view.tz].out | 6 +- ...typecheck[opcodes--diff_timestamps.tz].out | 6 +- ...ck::test_typecheck[opcodes--dig_eq.tz].out | 74 +- ...heck::test_typecheck[opcodes--dign.tz].out | 2 +- ...check::test_typecheck[opcodes--dip.tz].out | 2 +- ...heck::test_typecheck[opcodes--dipn.tz].out | 2 +- ...eck::test_typecheck[opcodes--dropn.tz].out | 2 +- ...heck::test_typecheck[opcodes--dugn.tz].out | 2 +- ...heck::test_typecheck[opcodes--ediv.tz].out | 41 +- ...test_typecheck[opcodes--ediv_mutez.tz].out | 2 +- ...est_typecheck[opcodes--exec_concat.tz].out | 16 +- ...eck::test_typecheck[opcodes--first.tz].out | 8 +- ...pecheck[opcodes--get_big_map_value.tz].out | 4 +- ...t_typecheck[opcodes--get_map_value.tz].out | 4 +- ...[opcodes--hash_consistency_checker.tz].out | 4 +- ...::test_typecheck[opcodes--hash_key.tz].out | 2 +- ...est_typecheck[opcodes--hash_string.tz].out | 4 +- ...echeck::test_typecheck[opcodes--if.tz].out | 2 +- ...k::test_typecheck[opcodes--if_some.tz].out | 4 +- ...check::test_typecheck[opcodes--int.tz].out | 2 +- ...:test_typecheck[opcodes--iter_fail.tz].out | 8 +- ...ck::test_typecheck[opcodes--keccak.tz].out | 2 +- ...test_typecheck[opcodes--left_right.tz].out | 2 +- ...eck::test_typecheck[opcodes--level.tz].out | 6 +- ...est_typecheck[opcodes--list_concat.tz].out | 4 +- ...pecheck[opcodes--list_concat_bytes.tz].out | 4 +- ...k::test_typecheck[opcodes--list_id.tz].out | 6 +- ...est_typecheck[opcodes--list_id_map.tz].out | 4 +- ...:test_typecheck[opcodes--list_iter.tz].out | 6 +- ..._typecheck[opcodes--list_map_block.tz].out | 8 +- ...:test_typecheck[opcodes--list_size.tz].out | 2 +- ...t_typecheck[opcodes--loop_failwith.tz].out | 8 +- ...:test_typecheck[opcodes--loop_left.tz].out | 25 +- ...echeck[opcodes--loop_left_failwith.tz].out | 2 +- ...ck::test_typecheck[opcodes--map_id.tz].out | 6 +- ...::test_typecheck[opcodes--map_iter.tz].out | 40 +- ...k::test_typecheck[opcodes--map_map.tz].out | 14 +- ...echeck[opcodes--map_map_sideeffect.tz].out | 39 +- ...est_typecheck[opcodes--map_mem_nat.tz].out | 4 +- ..._typecheck[opcodes--map_mem_string.tz].out | 4 +- ...::test_typecheck[opcodes--map_size.tz].out | 2 +- ...ck[opcodes--merge_comparable_pairs.tz].out | 18 +- ...check::test_typecheck[opcodes--mul.tz].out | 2 +- ...ypecheck[opcodes--mul_bls12_381_fr.tz].out | 2 +- ...ypecheck[opcodes--mul_bls12_381_g1.tz].out | 2 +- ...ypecheck[opcodes--mul_bls12_381_g2.tz].out | 2 +- ...st_typecheck[opcodes--mul_overflow.tz].out | 18 +- ...eck::test_typecheck[opcodes--munch.tz].out | 6 +- ...eck[opcodes--mutez_to_bls12_381_fr.tz].out | 6 +- ...check::test_typecheck[opcodes--neg.tz].out | 2 +- ...ypecheck[opcodes--neg_bls12_381_fr.tz].out | 2 +- ...ypecheck[opcodes--neg_bls12_381_g1.tz].out | 2 +- ...ypecheck[opcodes--neg_bls12_381_g2.tz].out | 2 +- ...heck::test_typecheck[opcodes--noop.tz].out | 6 +- ...check::test_typecheck[opcodes--not.tz].out | 2 +- ...test_typecheck[opcodes--not_binary.tz].out | 2 +- ...echeck::test_typecheck[opcodes--or.tz].out | 8 +- ...:test_typecheck[opcodes--or_binary.tz].out | 2 +- ...pecheck[opcodes--originate_big_map.tz].out | 6 +- ...test_typecheck[opcodes--packunpack.tz].out | 6 +- ..._typecheck[opcodes--packunpack_rev.tz].out | 73 +- ...echeck[opcodes--packunpack_rev_cty.tz].out | 113 +- ...k::test_typecheck[opcodes--pair_id.tz].out | 2 +- ...t_typecheck[opcodes--pairing_check.tz].out | 2 +- ...eck::test_typecheck[opcodes--pexec.tz].out | 4 +- ...k::test_typecheck[opcodes--pexec_2.tz].out | 16 +- ...eck::test_typecheck[opcodes--proxy.tz].out | 16 +- ...k::test_typecheck[opcodes--reverse.tz].out | 6 +- ...st_typecheck[opcodes--reverse_loop.tz].out | 16 +- ...check[opcodes--sapling_empty_state.tz].out | 6 +- ...heck::test_typecheck[opcodes--self.tz].out | 8 +- ...st_typecheck[opcodes--self_address.tz].out | 6 +- ...codes--self_address_after_fib_view.tz].out | 28 +- ...elf_address_after_nonexistent_view.tz].out | 26 +- ...k[opcodes--self_address_after_view.tz].out | 31 +- ...check[opcodes--self_after_fib_view.tz].out | 30 +- ...codes--self_after_nonexistent_view.tz].out | 31 +- ...typecheck[opcodes--self_after_view.tz].out | 33 +- ...odes--self_with_default_entrypoint.tz].out | 12 +- ...heck[opcodes--self_with_entrypoint.tz].out | 46 +- ...ck::test_typecheck[opcodes--sender.tz].out | 6 +- ...eck[opcodes--sender_after_fib_view.tz].out | 28 +- ...des--sender_after_nonexistent_view.tz].out | 26 +- ...pecheck[opcodes--sender_after_view.tz].out | 31 +- ...st_typecheck[opcodes--set_delegate.tz].out | 12 +- ...ck::test_typecheck[opcodes--set_id.tz].out | 6 +- ...::test_typecheck[opcodes--set_iter.tz].out | 6 +- ...test_typecheck[opcodes--set_member.tz].out | 4 +- ...::test_typecheck[opcodes--set_size.tz].out | 2 +- ...heck::test_typecheck[opcodes--sha3.tz].out | 2 +- ...ck::test_typecheck[opcodes--shifts.tz].out | 2 +- ...eck::test_typecheck[opcodes--slice.tz].out | 10 +- ...est_typecheck[opcodes--slice_bytes.tz].out | 10 +- ...ck::test_typecheck[opcodes--slices.tz].out | 89 +- ...ck::test_typecheck[opcodes--source.tz].out | 6 +- ...est_typecheck[opcodes--split_bytes.tz].out | 59 +- ...st_typecheck[opcodes--split_string.tz].out | 59 +- ...echeck[opcodes--store_bls12_381_fr.tz].out | 2 +- ...echeck[opcodes--store_bls12_381_g1.tz].out | 2 +- ...echeck[opcodes--store_bls12_381_g2.tz].out | 2 +- ...est_typecheck[opcodes--store_input.tz].out | 6 +- ...:test_typecheck[opcodes--store_now.tz].out | 6 +- ...ck::test_typecheck[opcodes--str_id.tz].out | 2 +- ...check[opcodes--sub_timestamp_delta.tz].out | 6 +- ...ck::test_typecheck[opcodes--subset.tz].out | 9 +- ...est_typecheck[opcodes--tez_add_sub.tz].out | 29 +- ...test_typecheck[opcodes--ticket_bad.tz].out | 6 +- ...ypecheck[opcodes--ticket_big_store.tz].out | 18 +- ...est_typecheck[opcodes--ticket_join.tz].out | 8 +- ...est_typecheck[opcodes--ticket_read.tz].out | 4 +- ...st_typecheck[opcodes--ticket_split.tz].out | 6 +- ..._typecheck[opcodes--ticket_store-2.tz].out | 6 +- ...st_typecheck[opcodes--ticket_store.tz].out | 2 +- ...test_typecheck[opcodes--ticketer-2.tz].out | 12 +- ...::test_typecheck[opcodes--ticketer.tz].out | 37 +- ...typecheck[opcodes--transfer_amount.tz].out | 6 +- ...typecheck[opcodes--transfer_tokens.tz].out | 8 +- ...ck::test_typecheck[opcodes--uncomb.tz].out | 2 +- ..._typecheck[opcodes--update_big_map.tz].out | 2 +- ...:test_typecheck[opcodes--utxo_read.tz].out | 2 +- ...eck::test_typecheck[opcodes--utxor.tz].out | 115 +- ...::test_typecheck[opcodes--view_fib.tz].out | 8 +- ...eck[opcodes--view_mutual_recursion.tz].out | 14 +- ...est_typecheck[opcodes--view_op_add.tz].out | 10 +- ...ypecheck[opcodes--view_op_constant.tz].out | 10 +- ...test_typecheck[opcodes--view_op_id.tz].out | 10 +- ...[opcodes--view_op_nonexistent_addr.tz].out | 2 +- ...[opcodes--view_op_nonexistent_func.tz].out | 4 +- ...pcodes--view_op_test_step_contants.tz].out | 11 +- ...p_toplevel_inconsistent_input_type.tz].out | 4 +- ..._toplevel_inconsistent_output_type.tz].out | 4 +- ...::test_typecheck[opcodes--view_rec.tz].out | 18 +- ...pecheck[opcodes--view_toplevel_lib.tz].out | 55 +- ...st_typecheck[opcodes--voting_power.tz].out | 2 +- ...check::test_typecheck[opcodes--xor.tz].out | 2 +- ...(Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" | 8 +- ...(Some 5) { Elt \"hello\" 4.0427752f13.out" | 8 +- ...(Some 5) { Elt \"hello\" 4.0793dc66d5.out" | 8 +- ...None { Elt \"1\" 1 ; .df114499b8.out" | 8 +- ...None { Elt \"1\" 1 ; .f9bea98de9.out" | 8 +- ...None { Elt \"hello\" 4 })-.1db12cd837.out" | 8 +- ...None {})-\"hello\"-(Pair N.6fc7d0acf2.out" | 8 +- ..." \"one\" ; Elt \"2\" \"tw.524c5459f8.out" | 6 +- ...ello\" \"hi\" } None)-\"\".33eba403e7.out" | 6 +- ...hello\" \"hi\" } None)-\"h.a5cd1005c9.out" | 6 +- ...one\" ; Elt \"2\" \"two\" .6f3d35b151.out" | 8 +- ...one\" ; Elt \"2\" \"two\" .76aeaa0706.out" | 12 +- ...one\" ; Elt \"2\" \"two\" .7e7197f248.out" | 12 +- ...one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" | 12 +- ...one\" ; Elt \"2\" \"two\" .b688cc94a7.out" | 12 +- ...one\" ; Elt \"2\" \"two\" .c68db221ed.out" | 12 +- ...TestContractOpcodes::test_balance[0.5].out | 4 +- ...s.TestContractOpcodes::test_balance[0].out | 4 +- ...estContractOpcodes::test_balance[1000].out | 4 +- ...s.TestContractOpcodes::test_balance[1].out | 4 +- ...stContractOpcodes::test_balance[1e-06].out | 4 +- ...s.TestContractOpcodes::test_balance[5].out | 4 +- ...Opcodes::test_balance[8000000000000.0].out | 4 +- ... \"two\" }) )-(Right (Righ.7492e8cdea.out" | 30 +- ... \"two\" }))-(Left Unit)-(.21b30dd90f.out" | 14 +- ... \"two\" }))-(Right (Left .2873ef610c.out" | 16 +- ... \"two\" }))-(Right (Left .8a6f480005.out" | 16 +- ... \"two\" }))-(Right (Right.d336ca1903.out" | 32 +- ...Pair \"foo\" \"bar\" } { P.7f2ee47600.out" | 28 +- ...tContractOpcodes::test_check_signature.out | 44 +- ...tract_input_output[abs.tz-Unit-0-Unit].out | 10 +- ....tz-Unit-12039123919239192312931-Unit].out | 10 +- ...act_input_output[abs.tz-Unit-948-Unit].out | 10 +- ...ct_input_output[add.tz-Unit-Unit-Unit].out | 132 +- ...r 0x00 0x00-(Some 0x0000000.3c2de60480.out | 2 +- ...r 0x01 0x00-(Some 0x0100000.12b2c1172b.out | 2 +- ...r 0x010000 0x00-(Some 0x010.0e44fc6f40.out | 2 +- ...r 0x010000 0x010000-(Some 0.7e0ed229a3.out | 2 +- ...air -100 100)-(Some \"1970.7c1b1e4e5b.out" | 10 +- ...air 0 \"1970-01-01T00:00:0.528ed42c01.out" | 10 +- ...air 100 100)-(Some \"1970-.6566111ad2.out" | 10 +- ...air \"1970-01-01T00:00:00Z.72c424f3da.out" | 10 +- ...air 100 -100)-(Some \"1970.7c4b12e9aa.out" | 10 +- ...air 100 100)-(Some \"1970-.af32743640.out" | 10 +- ...dhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" | 4 +- ...-None-(Pair False False)-(Some False)].out | 14 +- ...z-None-(Pair False True)-(Some False)].out | 14 +- ...z-None-(Pair True False)-(Some False)].out | 14 +- ....tz-None-(Pair True True)-(Some True)].out | 14 +- ...t_output[and_binary.tz-Unit-Unit-Unit].out | 2 +- ...l_1.tz-False-(Pair False False)-False].out | 8 +- ...al_1.tz-False-(Pair False True)-False].out | 8 +- ...al_1.tz-False-(Pair True False)-False].out | 8 +- ...ical_1.tz-False-(Pair True True)-True].out | 8 +- ...put[balance.tz-111-Unit-4000000000000].out | 4 +- ...lt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out | 8 +- ...lt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out | 8 +- ...lt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out | 8 +- ...lt 1 0 } None)-1-(Pair 4 (S.73700321f8.out | 8 +- ...lt 1 4 ; Elt 2 11 } None)-1.1182eca937.out | 8 +- ...lt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out | 8 +- ...lt 1 4 ; Elt 2 11 } None)-2.1eead33885.out | 8 +- ...lt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out | 8 +- ...lt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out | 8 +- ...lt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out | 8 +- ...air {} None)-1-(Pair 4 (Some False))0].out | 8 +- ...air {} None)-1-(Pair 4 (Some False))1].out | 8 +- ... \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" | 8 +- ... \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" | 8 +- ... \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" | 8 +- ... \"foo\" 0 } None)-\"foo\".968709d39d.out" | 8 +- ... \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" | 8 +- ... None)-\"bar\"-(Pair 4 (Some False))].out" | 8 +- ...utput[bls12_381_fr_to_int.tz-0-0x00-0].out | 2 +- ...utput[bls12_381_fr_to_int.tz-0-0x01-1].out | 2 +- ...8db8e57af88d9576acd181b89f2.7a85c336ff.out | 2 +- ...9e8abf8dc324a010007addde986.b821eb26b3.out | 2 +- ...ut[bls12_381_fr_to_mutez.tz-0-0x10-16].out | 8 +- ...000000000000000000000000000.0accef5bef.out | 4 +- ...000000000000000000000000000.0ecc537252.out | 4 +- ...000000000000000000000000000.2229b767cd.out | 4 +- ...000000000000000000000000000.2ff549b46b.out | 4 +- ...000000000000000000000000000.bf8a711be6.out | 4 +- ...000000000000000000000000000.d41cbb044b.out | 4 +- ...a5ad0a633e4880d2296f08ec5c1.a50412e458.out | 4 +- ...cd0fa853810e356f1eb79721e80.f3a349c4a7.out | 4 +- ...be1766f92cd82c5e5135c374a03.1b9676e4c2.out | 4 +- ...be1766f92cd82c5e5135c374a03.e966dc6de5.out | 4 +- ...000000000000000000000000000.964835cc43.out | 4 +- ...000000000000000000000000000.b25ea709fb.out | 4 +- ...000000000000000000000000000.eae36753ea.out | 4 +- ...000000000000000000000000000.ee57dac8f7.out | 4 +- ...a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out | 4 +- ...cd0fa853810e356f1eb79721e80.bd5800f6b8.out | 4 +- ...be1766f92cd82c5e5135c374a03.00e897789a.out | 4 +- ...be1766f92cd82c5e5135c374a03.a4697eaa13.out | 4 +- ...000000000000000000000000000.0177355bbf.out | 8 +- ...000000000000000000000000000.744166c609.out | 8 +- ...000000000000000000000000000.9f3c5cdc6a.out | 8 +- ...000000000000000000000000000.a54cb341ba.out | 8 +- ...000000000000000000000000000.b0dc584c94.out | 8 +- ...000000000000000000000000000.bddcad090c.out | 8 +- ...a5ad0a633e4880d2296f08ec5c1.92c153eb47.out | 8 +- ...cd0fa853810e356f1eb79721e80.290ab49d11.out | 8 +- ...be1766f92cd82c5e5135c374a03.69f3589a06.out | 8 +- ...be1766f92cd82c5e5135c374a03.fee3c5cf43.out | 8 +- ...000000000000000000000000000.1bccc033e8.out | 8 +- ...000000000000000000000000000.40958700fe.out | 8 +- ...000000000000000000000000000.6c62b03d78.out | 8 +- ...000000000000000000000000000.d23f269341.out | 8 +- ...a5ad0a633e4880d2296f08ec5c1.927f808504.out | 8 +- ...cd0fa853810e356f1eb79721e80.0c114c956a.out | 8 +- ...be1766f92cd82c5e5135c374a03.03c4f38e68.out | 8 +- ...be1766f92cd82c5e5135c374a03.8ed19cfdd9.out | 8 +- ...input_output[car.tz-0-(Pair 34 17)-34].out | 2 +- ...input_output[cdr.tz-0-(Pair 34 17)-17].out | 2 +- ...mb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out | 82 +- ... Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" | 4 +- ...r 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out | 4 +- ...; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out | 236 +-- ...-{ \"World!\" }-{ \"Hello World!\" }].out" | 8 +- ..."test2\" }-{ \"Hello test1.c27e8c3ee6.out" | 14 +- ...input_output[concat_hello.tz-{}-{}-{}].out | 2 +- ...}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out | 10 +- ...hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out | 6 +- ...output[concat_hello_bytes.tz-{}-{}-{}].out | 2 +- ...; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" | 46 +- ...\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" | 36 +- ...t_output[concat_list.tz-\"\"-{}-\"\"].out" | 6 +- ...ns.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out | 4 +- ..._output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out | 4 +- ...act_input_output[cons.tz-{}-10-{ 10 }].out | 4 +- ...ir { \"A\" } { \"B\" })-(Some False)].out" | 26 +- ...\"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" | 68 +- ...\"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" | 64 +- ...air { \"B\" } { \"B\" })-(Some True)].out" | 26 +- ...ir { \"c\" } { \"B\" })-(Some False)].out" | 26 +- ..._all.tz-None-(Pair {} {})-(Some True)].out | 10 +- ...wnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" | 8 +- ...Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" | 4 +- ...970-01-01T00:03:20Z\" \"19.90e9215d17.out" | 10 +- ...t[diff_timestamps.tz-111-(Pair 0 0)-0].out | 10 +- ...[diff_timestamps.tz-111-(Pair 0 1)--1].out | 10 +- ...t[diff_timestamps.tz-111-(Pair 1 0)-1].out | 10 +- ...r 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out | 734 ++++---- ... 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out | 734 ++++---- ...air (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out | 2 +- ...p.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out | 2 +- ...z-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out | 2 +- ...air (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out | 2 +- ...air (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out | 2 +- ...air (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out | 2 +- ... None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out | 48 +- ... None)-(Pair 10 -3)-(Pair (.3caea50555.out | 48 +- ... None)-(Pair 10 0)-(Pair No.f9448c04fb.out | 48 +- ... None)-(Pair 10 (Left 0))-(Left None)].out | 2 +- ...air 10 (Left 10))-(Left (So.f782cc1dec.out | 2 +- ...air 10 (Left 3))-(Left (Som.016b4db96c.out | 2 +- ...one)-(Pair 10 (Right 0))-(Right None)].out | 2 +- ...air 10 (Right 10))-(Right (.e705a30e07.out | 2 +- ...air 10 (Right 3))-(Right (S.44485eda6a.out | 2 +- ...air 5 (Right 10))-(Right (S.8ab987af15.out | 2 +- ...t[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" | 16 +- ...oncat.tz-\"?\"-\"test\"-\"test_abc\"].out" | 16 +- ...tput[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out | 14 +- ...act_input_output[first.tz-111-{ 4 }-4].out | 14 +- ...me 4) {})-\"hello\"-(Pair .161d86cef6.out" | 8 +- ...me 5) { Elt \"hello\" 4 }).684ab7e326.out" | 8 +- ...me 5) { Elt \"hello\" 4 }).d49817fb83.out" | 8 +- ...e { Elt \"1\" 1 ; .6900b1da14.out" | 8 +- ...e { Elt \"1\" 1 ; .bca0ede8be.out" | 8 +- ... { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" | 8 +- ...ir None {})-\"hello\"-(Pair None {})].out" | 8 +- ... \"1\" \"one\" ; .bc4127094e.out" | 6 +- ..."hello\" \"hi\" })-\"\"-(P.0c03056487.out" | 6 +- ...\"hello\" \"hi\" })-\"hell.cc45544c66.out" | 6 +- ...nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" | 2 +- ...2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" | 2 +- ...xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" | 4 +- ...-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" | 4 +- ..._output[if.tz-None-False-(Some False)].out | 2 +- ...ut_output[if.tz-None-True-(Some True)].out | 2 +- ....tz-\"?\"-(Some \"hello\")-\"hello\"].out" | 2 +- ...ut_output[if_some.tz-\"?\"-None-\"\"].out" | 2 +- ...t_input_output[int.tz-None-0-(Some 0)].out | 2 +- ...t_input_output[int.tz-None-1-(Some 1)].out | 2 +- ...t_output[int.tz-None-9999-(Some 9999)].out | 2 +- ...c20776f726c6421-(Some 0xb6e.34c02678c9.out | 2 +- ...Left \"X\")-(Left True)-(Right True)].out" | 4 +- ...ft \"X\")-(Right \"a\")-(Left \"a\")].out" | 4 +- ...ract_input_output[level.tz-111-Unit-1].out | 4 +- ...{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" | 8 +- ...ut[list_concat.tz-\"abc\"-{}-\"abc\"].out" | 8 +- ...tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out | 8 +- ..._output[list_concat_bytes.tz-0x-{}-0x].out | 8 +- ...b-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out | 8 +- ...list_concat_bytes.tz-0xabcd-{}-0xabcd].out | 8 +- ... ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" | 4 +- ... ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 4 +- ...input_output[list_id.tz-{\"\"}-{}-{}].out" | 4 +- ... ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" | 2 +- ... ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 2 +- ...t_output[list_id_map.tz-{\"\"}-{}-{}].out" | 2 +- ...tput[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out | 12 +- ...tput[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out | 12 +- ...}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out | 22 +- ...}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out | 22 +- ...ut_output[list_map_block.tz-{0}-{}-{}].out | 6 +- ...ze.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out | 2 +- ...tput[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out | 2 +- ...input_output[list_size.tz-111-{ 1 }-1].out | 2 +- ...ct_input_output[list_size.tz-111-{}-0].out | 2 +- ... ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 58 +- ...put_output[loop_left.tz-{\"\"}-{}-{}].out" | 10 +- ...0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out | 4 +- ...[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out | 4 +- ...[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out | 4 +- ... Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out | 92 +- ...-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out | 92 +- ...foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" | 52 +- ...lt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" | 32 +- ...ract_input_output[map_map.tz-{}-10-{}].out | 12 +- ... 1 } None)-1-(Pair { Elt 0 .7396e5f090.out | 8 +- ... 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out | 8 +- ... 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out | 8 +- ... 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out | 8 +- ... 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out | 8 +- ...air {} None)-1-(Pair {} (Some False))].out | 8 +- ...ar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" | 8 +- ...ar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" | 8 +- ...ar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" | 8 +- ...oo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" | 8 +- ...oo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" | 8 +- ...None)-\"bar\"-(Pair {} (Some False))].out" | 8 +- ... \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" | 2 +- ...\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" | 2 +- ...ut[map_size.tz-111-{ Elt \"a\" 1 }-1].out" | 2 +- ...act_input_output[map_size.tz-111-{}-0].out | 2 +- ...ct_input_output[mul.tz-Unit-Unit-Unit].out | 2 +- ...0-257-0x0101000000000000000.be11332c7f.out | 10 +- ...2-16-0x10000000000000000000.8230fb4fac.out | 10 +- ...act_input_output[neg.tz-0-(Left -2)-2].out | 4 +- ...ract_input_output[neg.tz-0-(Left 0)-0].out | 4 +- ...act_input_output[neg.tz-0-(Left 2)--2].out | 4 +- ...act_input_output[neg.tz-0-(Right 0)-0].out | 4 +- ...ct_input_output[neg.tz-0-(Right 2)--2].out | 4 +- ..._output[not.tz-None-False-(Some True)].out | 2 +- ..._output[not.tz-None-True-(Some False)].out | 2 +- ...not_binary.tz-None-(Left -8)-(Some 7)].out | 4 +- ...not_binary.tz-None-(Left -9)-(Some 8)].out | 4 +- ...not_binary.tz-None-(Left 0)-(Some -1)].out | 4 +- ...not_binary.tz-None-(Left 7)-(Some -8)].out | 4 +- ...not_binary.tz-None-(Left 8)-(Some -9)].out | 4 +- ...ot_binary.tz-None-(Right 0)-(Some -1)].out | 4 +- ...ot_binary.tz-None-(Right 7)-(Some -8)].out | 4 +- ...ot_binary.tz-None-(Right 8)-(Some -9)].out | 4 +- ...-None-(Pair False False)-(Some False)].out | 10 +- ...tz-None-(Pair False True)-(Some True)].out | 10 +- ...tz-None-(Pair True False)-(Some True)].out | 10 +- ....tz-None-(Pair True True)-(Some True)].out | 10 +- ...or_binary.tz-None-(Pair 0 8)-(Some 8)].out | 2 +- ..._binary.tz-None-(Pair 14 1)-(Some 15)].out | 2 +- ..._binary.tz-None-(Pair 15 4)-(Some 15)].out | 2 +- ...r_binary.tz-None-(Pair 4 8)-(Some 12)].out | 2 +- ...or_binary.tz-None-(Pair 7 7)-(Some 7)].out | 2 +- ...or_binary.tz-None-(Pair 8 0)-(Some 8)].out | 2 +- ... (Pair 1 (Pair \"foobar\".368bdfd73a.out" | 100 +- ... (Pair 1 (Pair \"foobar\".735d9ae802.out" | 100 +- ...ir \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" | 170 +- ...ir \"edpkuBknW28nW72KG6RoH.4e20b52378.out" | 170 +- ...alse False)-(Some (Pair False False))].out | 2 +- ... False True)-(Some (Pair False True))].out | 2 +- ... True False)-(Some (Pair True False))].out | 2 +- ...ir True True)-(Some (Pair True True))].out | 2 +- ...ntract_input_output[pexec.tz-14-38-52].out | 10 +- ... 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out | 44 +- ... ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 12 +- ...input_output[reverse.tz-{\"\"}-{}-{}].out" | 6 +- ... ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 70 +- ..._output[reverse_loop.tz-{\"\"}-{}-{}].out" | 16 +- ...tput[sapling_empty_state.tz-{}-Unit-0].out | 4 +- ...output[self_address.tz-Unit-Unit-Unit].out | 6 +- ..._default_entrypoint.tz-Unit-Unit-Unit].out | 16 +- ...entrypoint.tz-Unit-Left (Left 0)-Unit].out | 60 +- ... ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 4 +- ...; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" | 4 +- ...tract_input_output[set_id.tz-{}-{}-{}].out | 4 +- ..._iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out | 14 +- ..._input_output[set_iter.tz-111-{ 1 }-1].out | 8 +- ...act_input_output[set_iter.tz-111-{}-0].out | 6 +- ..."World\" } None)-\"\"-(Pai.3d2044726e.out" | 8 +- ...)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" | 8 +- ... None)-\"Hi\"-(Pair {} (Some False))].out" | 8 +- ...ze.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out | 2 +- ...utput[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out | 2 +- ..._input_output[set_size.tz-111-{ 1 }-1].out | 2 +- ...act_input_output[set_size.tz-111-{}-0].out | 2 +- ...0776f726c6421-(Some 0xf345a.a07ae9dddf.out | 2 +- ...ts.tz-None-(Left (Pair 0 0))-(Some 0)].out | 4 +- ...ts.tz-None-(Left (Pair 0 1))-(Some 0)].out | 4 +- ...ts.tz-None-(Left (Pair 1 2))-(Some 4)].out | 4 +- ....tz-None-(Left (Pair 15 2))-(Some 60)].out | 4 +- ...s.tz-None-(Left (Pair 8 1))-(Some 16)].out | 4 +- ...s.tz-None-(Right (Pair 0 0))-(Some 0)].out | 4 +- ...s.tz-None-(Right (Pair 0 1))-(Some 0)].out | 4 +- ...s.tz-None-(Right (Pair 1 2))-(Some 0)].out | 4 +- ....tz-None-(Right (Pair 15 2))-(Some 3)].out | 4 +- ...s.tz-None-(Right (Pair 8 1))-(Some 4)].out | 4 +- ...ut_output[slice.tz-None-Pair 0 0-None].out | 10 +- ...tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" | 18 +- ...slice.tz-Some \"Foo\"-Pair 0 10-None].out" | 18 +- ...-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" | 18 +- ...z-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" | 18 +- ...[slice.tz-Some \"Foo\"-Pair 1 3-None].out" | 18 +- ...slice.tz-Some \"Foo\"-Pair 10 5-None].out" | 18 +- ...FooFooFooFooFooFooFooFooFo.c508d67bb0.out" | 18 +- ...put[slice_bytes.tz-None-Pair 0 1-None].out | 10 +- ...s.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out | 18 +- ...tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out | 18 +- ...z-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out | 18 +- ...z-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out | 18 +- ...-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out | 18 +- ..._bytes.tz-Some 0xaabbcc-Pair 1 3-None].out | 18 +- ...aabbccaabbccaabbccaabbccaab.df5895de85.out | 18 +- ...d.tz-None-\"Hello\"-(Some \"Hello\")].out" | 2 +- ..._id.tz-None-\"abcd\"-(Some \"abcd\")].out" | 2 +- ...r 100 -100)-\"1970-01-01T00:03:20Z\"].out" | 10 +- ...ir 100 100)-\"1970-01-01T00:00:00Z\"].out" | 10 +- ...Pair 100 200000000000000000.3db82d2c25.out | 10 +- ...00000 1000000)-(Some (Pair .b461aa042b.out | 42 +- ...10000 1010000)-(Some (Pair .1e8cf7679c.out | 42 +- ...t_output[uncomb.tz-0-(Pair 1 4 2)-142].out | 2 +- ...dpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" | 2 +- ...Pair False False)-(Some (Left False))].out | 4 +- ... (Pair False True)-(Some (Left True))].out | 4 +- ... (Pair True False)-(Some (Left True))].out | 4 +- ... (Pair True True)-(Some (Left False))].out | 4 +- ...one-Right (Pair 0 0)-(Some (Right 0))].out | 4 +- ...one-Right (Pair 0 1)-(Some (Right 1))].out | 4 +- ...one-Right (Pair 1 0)-(Some (Right 1))].out | 4 +- ...one-Right (Pair 1 1)-(Some (Right 0))].out | 4 +- ...-Right (Pair 42 21)-(Some (Right 63))].out | 4 +- ...-Right (Pair 42 63)-(Some (Right 21))].out | 4 +- ...pcodes.TestContractOpcodes::test_level.out | 4 +- ..._opcodes.TestContractOpcodes::test_now.out | 4 +- ...s.TestContractOpcodes::test_packunpack.out | 14 +- 618 files changed, 7100 insertions(+), 7752 deletions(-) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--accounts.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--accounts.tz].out index 8d2fc20986..9995b3f7c9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--accounts.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--accounts.tz].out @@ -16,7 +16,7 @@ Gas remaining: 1039925.145 units remaining (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; CAR - /* [ @parameter or (key_hash %Initialize) + /* [ or (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig)) : pair (or @parameter (key_hash %Initialize) @@ -24,161 +24,142 @@ Gas remaining: 1039925.145 units remaining (map :stored_balance @stored_balance key_hash mutez) ] */ ; IF_LEFT { DUP - /* [ @parameter.Initialize key_hash : @parameter.Initialize key_hash + /* [ key_hash : key_hash : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; DIIP { CDR %stored_balance - /* [ @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez ] */ ; DUP - /* [ @stored_balance map :stored_balance key_hash mutez - : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ @parameter.Initialize key_hash : @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez : map :stored_balance key_hash mutez ] */ } + /* [ key_hash : key_hash : map :stored_balance key_hash mutez + : map :stored_balance key_hash mutez ] */ ; DIP { SWAP - /* [ @stored_balance map :stored_balance key_hash mutez - : @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez : key_hash + : map :stored_balance key_hash mutez ] */ } + /* [ key_hash : map :stored_balance key_hash mutez : key_hash + : map :stored_balance key_hash mutez ] */ ; GET @opt_prev_balance - /* [ @opt_prev_balance option mutez : @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ option mutez : key_hash : map :stored_balance key_hash mutez ] */ ; IF_SOME { RENAME @previous_balance - /* [ @previous_balance mutez : @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ mutez : key_hash : map :stored_balance key_hash mutez ] */ ; AMOUNT - /* [ @amount mutez : @previous_balance mutez : @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ mutez : mutez : key_hash : map :stored_balance key_hash mutez ] */ ; ADD - /* [ mutez : @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ mutez : key_hash : map :stored_balance key_hash mutez ] */ ; SOME - /* [ option mutez : @parameter.Initialize key_hash - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ option mutez : key_hash : map :stored_balance key_hash mutez ] */ ; SWAP - /* [ @parameter.Initialize key_hash : option mutez - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ key_hash : option mutez : map :stored_balance key_hash mutez ] */ ; UPDATE - /* [ @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez ] */ ; NIL operation - /* [ list operation : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ list operation : map :stored_balance key_hash mutez ] */ ; PAIR - /* [ pair (list operation) (map :stored_balance @stored_balance key_hash mutez) ] */ } + /* [ pair (list operation) (map :stored_balance key_hash mutez) ] */ } { DIP { AMOUNT - /* [ @amount mutez : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ mutez : map :stored_balance key_hash mutez ] */ ; SOME - /* [ option mutez : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ @parameter.Initialize key_hash : option mutez - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ option mutez : map :stored_balance key_hash mutez ] */ } + /* [ key_hash : option mutez : map :stored_balance key_hash mutez ] */ ; UPDATE - /* [ @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez ] */ ; NIL operation - /* [ list operation : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ list operation : map :stored_balance key_hash mutez ] */ ; PAIR - /* [ pair (list operation) (map :stored_balance @stored_balance key_hash mutez) ] */ } } + /* [ pair (list operation) (map :stored_balance key_hash mutez) ] */ } } { DUP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; DUP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; DUP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; DUP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; CAR %from - /* [ key - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ key : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; DIIP { CDAR %withdraw_amount ; PACK - /* [ @packed bytes - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ bytes : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; BLAKE2B @signed_amount - /* [ @signed_amount bytes - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ bytes : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ } - /* [ key - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @signed_amount bytes - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ key : pair (key %from) (mutez %withdraw_amount) (signature %sig) : bytes + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; DIP { CDDR %sig } - /* [ key : signature : @signed_amount bytes - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ key : signature : bytes + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; CHECK_SIGNATURE - /* [ bool - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ bool : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ ; - IF { /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + IF { /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) (map :stored_balance @stored_balance key_hash mutez) ] */ } { PUSH string "Bad signature" - /* [ string - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) + /* [ string : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (or @parameter (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) @@ -186,194 +167,169 @@ Gas remaining: 1039925.145 units remaining FAILWITH /* [] */ } ; DIIP { CDR %stored_balance - /* [ @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez ] */ ; DUP - /* [ @stored_balance map :stored_balance key_hash mutez - : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez : map :stored_balance key_hash mutez ] */ } + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez : map :stored_balance key_hash mutez ] */ ; CAR %from - /* [ key - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ key : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez : map :stored_balance key_hash mutez ] */ ; HASH_KEY @from_hash - /* [ @from_hash key_hash - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ key_hash : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez : map :stored_balance key_hash mutez ] */ ; DUP - /* [ @from_hash key_hash : @from_hash key_hash - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ key_hash : key_hash + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez : map :stored_balance key_hash mutez ] */ ; DIP { DIP { SWAP - /* [ @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ @from_hash key_hash : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ } + /* [ key_hash : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; SWAP - /* [ @stored_balance map :stored_balance key_hash mutez : @from_hash key_hash - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ @from_hash key_hash : @stored_balance map :stored_balance key_hash mutez - : @from_hash key_hash - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ map :stored_balance key_hash mutez : key_hash + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ } + /* [ key_hash : map :stored_balance key_hash mutez : key_hash + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; GET - /* [ option mutez : @from_hash key_hash - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ option mutez : key_hash + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; IF_NONE { PUSH string "Account does not exist" - /* [ string : @from_hash key_hash - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ string : key_hash + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; PAIR - /* [ pair string (key_hash @from_hash) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ pair string key_hash + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; FAILWITH /* [] */ } { RENAME @previous_balance - /* [ @previous_balance mutez : @from_hash key_hash - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ mutez : key_hash + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; DIP { DROP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ @previous_balance mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ } + /* [ mutez : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; DUP - /* [ @previous_balance mutez : @previous_balance mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ mutez : mutez : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; DIIP { DUP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; CDAR %withdraw_amount ; DUP - /* [ mutez : mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ @previous_balance mutez : @previous_balance mutez : mutez : mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ mutez : mutez : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ } + /* [ mutez : mutez : mutez : mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; DIP { CMPLT @not_enough } - /* [ @previous_balance mutez : @not_enough bool : mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ mutez : bool : mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; SWAP - /* [ @not_enough bool : @previous_balance mutez : mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ bool : mutez : mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; IF { PUSH string "Not enough funds" - /* [ string : @previous_balance mutez : mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ string : mutez : mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; FAILWITH /* [] */ } { SUB_MUTEZ @new_balance - /* [ @new_balance option mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ option mutez : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; ASSERT_SOME ; DIP { DUP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; DIP { SWAP - /* [ @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ } - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ } - /* [ @new_balance.some mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; + /* [ map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ } + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ } + /* [ mutez : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; DUP - /* [ @new_balance.some mutez : @new_balance.some mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; + /* [ mutez : mutez : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; PUSH @zero mutez 0 - /* [ @zero mutez : @new_balance.some mutez : @new_balance.some mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; + /* [ mutez : mutez : mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; CMPEQ @null_balance ; IF { DROP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; NONE @new_balance mutez - /* [ @new_balance option mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ } + /* [ option mutez : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ } { SOME @new_balance - /* [ @new_balance option mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ } ; + /* [ option mutez : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ } ; SWAP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @new_balance option mutez - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) : option mutez + : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; CAR %from - /* [ key : @new_balance option mutez - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; + /* [ key : option mutez : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; HASH_KEY @from_hash - /* [ @from_hash key_hash : @new_balance option mutez - : @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; + /* [ key_hash : option mutez : map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; UPDATE - /* [ @stored_balance map :stored_balance key_hash mutez - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; + /* [ map :stored_balance key_hash mutez + : pair (key %from) (mutez %withdraw_amount) (signature %sig) ] */ ; SWAP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; DUP - /* [ @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @parameter.Withdraw pair (key %from) (mutez %withdraw_amount) (signature %sig) - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) + : pair (key %from) (mutez %withdraw_amount) (signature %sig) + : map :stored_balance key_hash mutez ] */ ; CDAR %withdraw_amount ; DIP { CAR %from - /* [ key : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ key : map :stored_balance key_hash mutez ] */ ; HASH_KEY @from_hash - /* [ @from_hash key_hash : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ key_hash : map :stored_balance key_hash mutez ] */ ; IMPLICIT_ACCOUNT @from_account - /* [ @from_account contract unit - : @stored_balance map :stored_balance key_hash mutez ] */ } - /* [ mutez : @from_account contract unit - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ contract unit : map :stored_balance key_hash mutez ] */ } + /* [ mutez : contract unit : map :stored_balance key_hash mutez ] */ ; UNIT - /* [ unit : mutez : @from_account contract unit - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ unit : mutez : contract unit : map :stored_balance key_hash mutez ] */ ; TRANSFER_TOKENS @withdraw_transfer_op - /* [ @withdraw_transfer_op operation - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ operation : map :stored_balance key_hash mutez ] */ ; NIL operation - /* [ list operation : @withdraw_transfer_op operation - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ list operation : operation : map :stored_balance key_hash mutez ] */ ; SWAP - /* [ @withdraw_transfer_op operation : list operation - : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ operation : list operation : map :stored_balance key_hash mutez ] */ ; CONS - /* [ list operation : @stored_balance map :stored_balance key_hash mutez ] */ ; + /* [ list operation : map :stored_balance key_hash mutez ] */ ; PAIR - /* [ pair (list operation) (map :stored_balance @stored_balance key_hash mutez) ] */ } } } } } + /* [ pair (list operation) (map :stored_balance key_hash mutez) ] */ } } } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--add1.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--add1.tz].out index 50ce2510ba..69764ae7d1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--add1.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--add1.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039996.134 units remaining { parameter int ; storage int ; code { CAR - /* [ @parameter int ] */ ; + /* [ int ] */ ; PUSH int 1 - /* [ int : @parameter int ] */ ; + /* [ int : int ] */ ; ADD /* [ int ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--add1_list.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--add1_list.tz].out index 170787c422..6f603286ef 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--add1_list.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--add1_list.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039995.173 units remaining { parameter (list int) ; storage (list int) ; code { CAR - /* [ @parameter list int ] */ ; - MAP { PUSH int 1 /* [ int : @parameter.elt int ] */ ; ADD /* [ int ] */ } + /* [ list int ] */ ; + MAP { PUSH int 1 /* [ int : int ] */ ; ADD /* [ int ] */ } /* [ list int ] */ ; NIL operation /* [ list operation : list int ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--after_strategy.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--after_strategy.tz].out index faf5e807ca..c556cd5fe6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--after_strategy.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--after_strategy.tz].out @@ -8,20 +8,19 @@ Gas remaining: 1039989.643 units remaining /* [ pair (nat @parameter) (pair @storage (pair nat bool) timestamp) : pair (nat @parameter) (pair @storage (pair nat bool) timestamp) ] */ ; CAR - /* [ @parameter nat - : pair (nat @parameter) (pair @storage (pair nat bool) timestamp) ] */ ; + /* [ nat : pair (nat @parameter) (pair @storage (pair nat bool) timestamp) ] */ ; DIP { CDDR ; DUP /* [ timestamp : timestamp ] */ ; NOW - /* [ @now timestamp : timestamp : timestamp ] */ ; + /* [ timestamp : timestamp : timestamp ] */ ; CMPGT } - /* [ @parameter nat : bool : timestamp ] */ ; + /* [ nat : bool : timestamp ] */ ; PAIR - /* [ pair (nat @parameter) bool : timestamp ] */ ; + /* [ pair nat bool : timestamp ] */ ; PAIR - /* [ pair (pair (nat @parameter) bool) timestamp ] */ ; + /* [ pair (pair nat bool) timestamp ] */ ; NIL operation - /* [ list operation : pair (pair (nat @parameter) bool) timestamp ] */ ; + /* [ list operation : pair (pair nat bool) timestamp ] */ ; PAIR - /* [ pair (list operation) (pair (nat @parameter) bool) timestamp ] */ } } + /* [ pair (list operation) (pair nat bool) timestamp ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--always.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--always.tz].out index 2cd97b048a..74eb39855a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--always.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--always.tz].out @@ -5,14 +5,14 @@ Gas remaining: 1039994.981 units remaining { parameter nat ; storage (pair nat bool) ; code { CAR - /* [ @parameter nat ] */ ; + /* [ nat ] */ ; PUSH bool True - /* [ bool : @parameter nat ] */ ; + /* [ bool : nat ] */ ; SWAP - /* [ @parameter nat : bool ] */ ; + /* [ nat : bool ] */ ; PAIR - /* [ pair (nat @parameter) bool ] */ ; + /* [ pair nat bool ] */ ; NIL operation - /* [ list operation : pair (nat @parameter) bool ] */ ; + /* [ list operation : pair nat bool ] */ ; PAIR - /* [ pair (list operation) (nat @parameter) bool ] */ } } + /* [ pair (list operation) nat bool ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--append.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--append.tz].out index a247ef6216..48da5f0962 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--append.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--append.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039991.379 units remaining { parameter (pair (list int) (list int)) ; storage (list int) ; code { CAR - /* [ @parameter pair (list int) (list int) ] */ ; + /* [ pair (list int) (list int) ] */ ; UNPAIR /* [ list int : list int ] */ ; NIL int diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--at_least.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--at_least.tz].out index df8fd02ced..1edabcf2fe 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--at_least.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--at_least.tz].out @@ -5,14 +5,14 @@ Gas remaining: 1039992.950 units remaining { parameter unit ; storage mutez ; code { CDR - /* [ @storage mutez ] */ ; + /* [ mutez ] */ ; DUP - /* [ @storage mutez : @storage mutez ] */ ; + /* [ mutez : mutez ] */ ; AMOUNT - /* [ @amount mutez : @storage mutez : @storage mutez ] */ ; + /* [ mutez : mutez : mutez ] */ ; CMPLT ; IF { FAIL } { NIL operation - /* [ list operation : @storage mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @storage) ] */ } } } + /* [ pair (list operation) mutez ] */ } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--auction.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--auction.tz].out index d34a449c7c..7944e5d105 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--auction.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--auction.tz].out @@ -12,7 +12,7 @@ Gas remaining: 1039972.258 units remaining /* [ timestamp : timestamp : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; NOW - /* [ @now timestamp : timestamp : timestamp + /* [ timestamp : timestamp : timestamp : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; CMPGT ; IF { FAIL } @@ -26,62 +26,48 @@ Gas remaining: 1039972.258 units remaining : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) : timestamp ] */ ; CAR - /* [ @parameter key_hash + /* [ key_hash : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) : timestamp ] */ ; DIP { CDDR } - /* [ @parameter key_hash : pair mutez key_hash : timestamp ] */ ; + /* [ key_hash : pair mutez key_hash : timestamp ] */ ; AMOUNT - /* [ @amount mutez : @parameter key_hash : pair mutez key_hash : timestamp ] */ ; + /* [ mutez : key_hash : pair mutez key_hash : timestamp ] */ ; PAIR - /* [ pair (mutez @amount) (key_hash @parameter) : pair mutez key_hash - : timestamp ] */ ; + /* [ pair mutez key_hash : pair mutez key_hash : timestamp ] */ ; SWAP - /* [ pair mutez key_hash : pair (mutez @amount) (key_hash @parameter) - : timestamp ] */ ; + /* [ pair mutez key_hash : pair mutez key_hash : timestamp ] */ ; DIP { SWAP - /* [ timestamp : pair (mutez @amount) (key_hash @parameter) ] */ ; + /* [ timestamp : pair mutez key_hash ] */ ; PAIR - /* [ pair timestamp (mutez @amount) (key_hash @parameter) ] */ } - /* [ pair mutez key_hash - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ pair timestamp mutez key_hash ] */ } + /* [ pair mutez key_hash : pair timestamp mutez key_hash ] */ ; DUP - /* [ pair mutez key_hash : pair mutez key_hash - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ pair mutez key_hash : pair mutez key_hash : pair timestamp mutez key_hash ] */ ; CAR - /* [ mutez : pair mutez key_hash - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ mutez : pair mutez key_hash : pair timestamp mutez key_hash ] */ ; AMOUNT - /* [ @amount mutez : mutez : pair mutez key_hash - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ mutez : mutez : pair mutez key_hash : pair timestamp mutez key_hash ] */ ; CMPLE ; - IF { FAIL } - { /* [ pair mutez key_hash - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ } ; + IF { FAIL } { /* [ pair mutez key_hash : pair timestamp mutez key_hash ] */ } ; DUP - /* [ pair mutez key_hash : pair mutez key_hash - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ pair mutez key_hash : pair mutez key_hash : pair timestamp mutez key_hash ] */ ; CAR - /* [ mutez : pair mutez key_hash - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ mutez : pair mutez key_hash : pair timestamp mutez key_hash ] */ ; DIP { CDR - /* [ key_hash : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ key_hash : pair timestamp mutez key_hash ] */ ; IMPLICIT_ACCOUNT - /* [ contract unit : pair timestamp (mutez @amount) (key_hash @parameter) ] */ } - /* [ mutez : contract unit - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ contract unit : pair timestamp mutez key_hash ] */ } + /* [ mutez : contract unit : pair timestamp mutez key_hash ] */ ; UNIT - /* [ unit : mutez : contract unit - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ unit : mutez : contract unit : pair timestamp mutez key_hash ] */ ; TRANSFER_TOKENS - /* [ operation : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ operation : pair timestamp mutez key_hash ] */ ; NIL operation - /* [ list operation : operation - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ list operation : operation : pair timestamp mutez key_hash ] */ ; SWAP - /* [ operation : list operation - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ operation : list operation : pair timestamp mutez key_hash ] */ ; CONS - /* [ list operation : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ list operation : pair timestamp mutez key_hash ] */ ; PAIR - /* [ pair (list operation) timestamp (mutez @amount) (key_hash @parameter) ] */ } } + /* [ pair (list operation) timestamp mutez key_hash ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--bad_lockup.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--bad_lockup.tz].out index 38c0a84ba1..26cf173756 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--bad_lockup.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--bad_lockup.tz].out @@ -5,67 +5,55 @@ Gas remaining: 1039972.793 units remaining { parameter unit ; storage (pair timestamp (pair address address)) ; code { CDR - /* [ @storage pair timestamp address address ] */ ; + /* [ pair timestamp address address ] */ ; DUP - /* [ @storage pair timestamp address address - : @storage pair timestamp address address ] */ ; + /* [ pair timestamp address address : pair timestamp address address ] */ ; CAR - /* [ timestamp : @storage pair timestamp address address ] */ ; + /* [ timestamp : pair timestamp address address ] */ ; NOW - /* [ @now timestamp : timestamp : @storage pair timestamp address address ] */ ; + /* [ timestamp : timestamp : pair timestamp address address ] */ ; CMPLT ; - IF { FAIL } { /* [ @storage pair timestamp address address ] */ } ; + IF { FAIL } { /* [ pair timestamp address address ] */ } ; DUP - /* [ @storage pair timestamp address address - : @storage pair timestamp address address ] */ ; + /* [ pair timestamp address address : pair timestamp address address ] */ ; CDAR ; - CONTRACT - unit - /* [ @contract option (contract unit) - : @storage pair timestamp address address ] */ ; + CONTRACT unit + /* [ option (contract unit) : pair timestamp address address ] */ ; ASSERT_SOME ; - PUSH mutez - 100000000 - /* [ mutez : @contract.some contract unit - : @storage pair timestamp address address ] */ ; + PUSH mutez 100000000 + /* [ mutez : contract unit : pair timestamp address address ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit - : @storage pair timestamp address address ] */ ; + /* [ unit : mutez : contract unit : pair timestamp address address ] */ ; TRANSFER_TOKENS - /* [ operation : @storage pair timestamp address address ] */ ; + /* [ operation : pair timestamp address address ] */ ; SWAP - /* [ @storage pair timestamp address address : operation ] */ ; + /* [ pair timestamp address address : operation ] */ ; DUP - /* [ @storage pair timestamp address address - : @storage pair timestamp address address : operation ] */ ; + /* [ pair timestamp address address : pair timestamp address address + : operation ] */ ; CDDR ; CONTRACT unit - /* [ @contract option (contract unit) : @storage pair timestamp address address - : operation ] */ ; + /* [ option (contract unit) : pair timestamp address address : operation ] */ ; ASSERT_SOME ; PUSH mutez 100000000 - /* [ mutez : @contract.some contract unit - : @storage pair timestamp address address : operation ] */ ; + /* [ mutez : contract unit : pair timestamp address address : operation ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit - : @storage pair timestamp address address : operation ] */ ; + /* [ unit : mutez : contract unit : pair timestamp address address : operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage pair timestamp address address : operation ] */ ; - DIP { SWAP /* [ operation : @storage pair timestamp address address ] */ } - /* [ operation : operation : @storage pair timestamp address address ] */ ; + /* [ operation : pair timestamp address address : operation ] */ ; + DIP { SWAP /* [ operation : pair timestamp address address ] */ } + /* [ operation : operation : pair timestamp address address ] */ ; NIL operation - /* [ list operation : operation : operation - : @storage pair timestamp address address ] */ ; + /* [ list operation : operation : operation : pair timestamp address address ] */ ; SWAP - /* [ operation : list operation : operation - : @storage pair timestamp address address ] */ ; + /* [ operation : list operation : operation : pair timestamp address address ] */ ; CONS - /* [ list operation : operation : @storage pair timestamp address address ] */ ; + /* [ list operation : operation : pair timestamp address address ] */ ; SWAP - /* [ operation : list operation : @storage pair timestamp address address ] */ ; + /* [ operation : list operation : pair timestamp address address ] */ ; CONS - /* [ list operation : @storage pair timestamp address address ] */ ; + /* [ list operation : pair timestamp address address ] */ ; PAIR - /* [ pair (list operation) (pair @storage timestamp address address) ] */ } } + /* [ pair (list operation) timestamp address address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--big_map_union.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--big_map_union.tz].out index b89734df99..40cc293d5a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--big_map_union.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--big_map_union.tz].out @@ -15,7 +15,7 @@ Gas remaining: 1039983.939 units remaining /* [ option int : string : int : big_map string int : unit ] */ ; IF_NONE { PUSH int 0 /* [ int : string : int : big_map string int : unit ] */ } - { /* [ @some int : string : int : big_map string int : unit ] */ } ; + { /* [ int : string : int : big_map string int : unit ] */ } ; SWAP /* [ string : int : int : big_map string int : unit ] */ ; DIP { ADD diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cadr_annotation.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cadr_annotation.tz].out index 110e6df511..b2d40856bc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cadr_annotation.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cadr_annotation.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039994.745 units remaining { parameter (pair (pair %p1 unit (string %no_name)) bool) ; storage unit ; code { CAR @param - /* [ @param pair (pair %p1 unit (string %no_name)) bool ] */ ; + /* [ pair (pair %p1 unit (string %no_name)) bool ] */ ; CADR @name %no_name ; DROP /* [] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--concat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--concat.tz].out index d90b998fdd..aed12ebd69 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--concat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--concat.tz].out @@ -8,16 +8,16 @@ Gas remaining: 1039992.618 units remaining /* [ pair (string @parameter) (string @storage) : pair (string @parameter) (string @storage) ] */ ; DIP { CDR - /* [ @storage string ] */ ; + /* [ string ] */ ; NIL string - /* [ list string : @storage string ] */ ; + /* [ list string : string ] */ ; SWAP - /* [ @storage string : list string ] */ ; + /* [ string : list string ] */ ; CONS /* [ list string ] */ } /* [ pair (string @parameter) (string @storage) : list string ] */ ; CAR - /* [ @parameter string : list string ] */ ; + /* [ string : list string ] */ ; CONS /* [ list string ] */ ; CONCAT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--conditionals.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--conditionals.tz].out index b59a166138..e010c99306 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--conditionals.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--conditionals.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039989.496 units remaining { parameter (or string (option int)) ; storage string ; code { CAR - /* [ @parameter or string (option int) ] */ ; + /* [ or string (option int) ] */ ; IF_LEFT - { /* [ @parameter.left string ] */ } + { /* [ string ] */ } { IF_NONE { FAIL } { PUSH int 0 - /* [ int : @parameter.right.some int ] */ ; + /* [ int : int ] */ ; CMPGT ; IF { FAIL } { PUSH string "" /* [ string ] */ } } } ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cons_twice.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cons_twice.tz].out index cb05747252..88a5f13091 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cons_twice.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cons_twice.tz].out @@ -8,13 +8,13 @@ Gas remaining: 1039992.638 units remaining /* [ pair (nat @parameter) (list @storage nat) : pair (nat @parameter) (list @storage nat) ] */ ; CAR - /* [ @parameter nat : pair (nat @parameter) (list @storage nat) ] */ ; - DIP { CDR /* [ @storage list nat ] */ } - /* [ @parameter nat : @storage list nat ] */ ; + /* [ nat : pair (nat @parameter) (list @storage nat) ] */ ; + DIP { CDR /* [ list nat ] */ } + /* [ nat : list nat ] */ ; DUP - /* [ @parameter nat : @parameter nat : @storage list nat ] */ ; + /* [ nat : nat : list nat ] */ ; DIP { CONS /* [ list nat ] */ } - /* [ @parameter nat : list nat ] */ ; + /* [ nat : list nat ] */ ; CONS /* [ list nat ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cps_fact.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cps_fact.tz].out index e792828c34..075ec6c54a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cps_fact.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cps_fact.tz].out @@ -5,57 +5,52 @@ Gas remaining: 1039973.219 units remaining { storage nat ; parameter nat ; code { UNPAIR - /* [ @parameter nat : @storage nat ] */ ; + /* [ nat : nat ] */ ; DIP { SELF - /* [ @self contract nat : @storage nat ] */ ; + /* [ contract nat : nat ] */ ; ADDRESS - /* [ @self.address address : @storage nat ] */ ; + /* [ address : nat ] */ ; SENDER - /* [ @sender address : @self.address address : @storage nat ] */ ; - IFCMPEQ - { /* [ @storage nat ] */ } - { DROP /* [] */ ; PUSH @storage nat 1 /* [ @storage nat ] */ } } - /* [ @parameter nat : @storage nat ] */ ; + /* [ address : address : nat ] */ ; + IFCMPEQ { /* [ nat ] */ } { DROP /* [] */ ; PUSH @storage nat 1 /* [ nat ] */ } } + /* [ nat : nat ] */ ; DUP - /* [ @parameter nat : @parameter nat : @storage nat ] */ ; + /* [ nat : nat : nat ] */ ; PUSH nat 1 - /* [ nat : @parameter nat : @parameter nat : @storage nat ] */ ; + /* [ nat : nat : nat : nat ] */ ; IFCMPGE { DROP - /* [ @storage nat ] */ ; + /* [ nat ] */ ; NIL operation - /* [ list operation : @storage nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @storage) ] */ } + /* [ pair (list operation) nat ] */ } { PUSH nat 1 - /* [ nat : @parameter nat : @storage nat ] */ ; + /* [ nat : nat : nat ] */ ; SWAP - /* [ @parameter nat : nat : @storage nat ] */ ; + /* [ nat : nat : nat ] */ ; SUB @parameter - /* [ @parameter int : @storage nat ] */ ; + /* [ int : nat ] */ ; ISNAT - /* [ @parameter option nat : @storage nat ] */ ; + /* [ option nat : nat ] */ ; IF_NONE { NIL operation - /* [ list operation : @storage nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @storage) ] */ } + /* [ pair (list operation) nat ] */ } { DUP - /* [ @parameter.some nat : @parameter.some nat : @storage nat ] */ ; + /* [ nat : nat : nat ] */ ; DIP { PUSH nat 1 - /* [ nat : @parameter.some nat : @storage nat ] */ ; + /* [ nat : nat : nat ] */ ; ADD - /* [ nat : @storage nat ] */ ; + /* [ nat : nat ] */ ; MUL @storage - /* [ @storage nat ] */ } - /* [ @parameter.some nat : @storage nat ] */ ; + /* [ nat ] */ } + /* [ nat : nat ] */ ; SWAP - /* [ @storage nat : @parameter.some nat ] */ ; - DIP { DIP { SELF - /* [ @self contract nat ] */ ; - PUSH mutez 0 - /* [ mutez : @self contract nat ] */ } - /* [ @parameter.some nat : mutez : @self contract nat ] */ ; + /* [ nat : nat ] */ ; + DIP { DIP { SELF /* [ contract nat ] */ ; PUSH mutez 0 /* [ mutez : contract nat ] */ } + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; NIL operation @@ -64,8 +59,8 @@ Gas remaining: 1039973.219 units remaining /* [ operation : list operation ] */ ; CONS /* [ list operation ] */ } - /* [ @storage nat : list operation ] */ ; + /* [ nat : list operation ] */ ; SWAP - /* [ list operation : @storage nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @storage) ] */ } } } } + /* [ pair (list operation) nat ] */ } } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--create_add1_lists.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--create_add1_lists.tz].out index 79874518c0..7e31cd0adc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--create_add1_lists.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--create_add1_lists.tz].out @@ -6,13 +6,12 @@ Gas remaining: 1039986.470 units remaining storage address ; code { DROP /* [] */ ; - NIL int /* [ @parameter list int ] */ + NIL int /* [ list int ] */ /* [ list int ] */ ; AMOUNT /* [ list int ] */ ; - NONE key_hash - /* [ int : @parameter.elt int ] */ - /* [ option key_hash : @amount mutez : list int ] */ ; + NONE key_hash /* [ int : int ] */ + /* [ option key_hash : mutez : list int ] */ ; CREATE_CONTRACT { parameter (list int /* [ list operation : list int ] */) /* [ int ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--data_publisher.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--data_publisher.tz].out index f8bce77cdb..5df6245e17 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--data_publisher.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--data_publisher.tz].out @@ -8,54 +8,47 @@ Gas remaining: 1039974.524 units remaining /* [ pair (pair @parameter signature string nat) (pair @storage (pair key nat) string) : pair (pair @parameter signature string nat) (pair @storage (pair key nat) string) ] */ ; CAR - /* [ @parameter pair signature string nat + /* [ pair signature string nat : pair (pair @parameter signature string nat) (pair @storage (pair key nat) string) ] */ ; DIP { CDR - /* [ @storage pair (pair key nat) string ] */ ; + /* [ pair (pair key nat) string ] */ ; DUP - /* [ @storage pair (pair key nat) string : @storage pair (pair key nat) string ] */ } - /* [ @parameter pair signature string nat : @storage pair (pair key nat) string - : @storage pair (pair key nat) string ] */ ; + /* [ pair (pair key nat) string : pair (pair key nat) string ] */ } + /* [ pair signature string nat : pair (pair key nat) string + : pair (pair key nat) string ] */ ; SWAP - /* [ @storage pair (pair key nat) string : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ ; + /* [ pair (pair key nat) string : pair signature string nat + : pair (pair key nat) string ] */ ; DIP { DUP - /* [ @parameter pair signature string nat : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ } - /* [ @storage pair (pair key nat) string : @parameter pair signature string nat - : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ ; + /* [ pair signature string nat : pair signature string nat + : pair (pair key nat) string ] */ } + /* [ pair (pair key nat) string : pair signature string nat + : pair signature string nat : pair (pair key nat) string ] */ ; CAAR ; DIP { DUP - /* [ @parameter pair signature string nat : @parameter pair signature string nat - : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ ; + /* [ pair signature string nat : pair signature string nat + : pair signature string nat : pair (pair key nat) string ] */ ; CAR - /* [ signature : @parameter pair signature string nat - : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ ; + /* [ signature : pair signature string nat : pair signature string nat + : pair (pair key nat) string ] */ ; DIP { CDR - /* [ pair string nat : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ ; + /* [ pair string nat : pair signature string nat : pair (pair key nat) string ] */ ; PACK - /* [ @packed bytes : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ ; + /* [ bytes : pair signature string nat : pair (pair key nat) string ] */ ; BLAKE2B - /* [ bytes : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ } - /* [ signature : bytes : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ } - /* [ key : signature : bytes : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ ; + /* [ bytes : pair signature string nat : pair (pair key nat) string ] */ } + /* [ signature : bytes : pair signature string nat + : pair (pair key nat) string ] */ } + /* [ key : signature : bytes : pair signature string nat + : pair (pair key nat) string ] */ ; CHECK_SIGNATURE - /* [ bool : @parameter pair signature string nat - : @storage pair (pair key nat) string ] */ ; + /* [ bool : pair signature string nat : pair (pair key nat) string ] */ ; IF { CDR - /* [ pair string nat : @storage pair (pair key nat) string ] */ ; + /* [ pair string nat : pair (pair key nat) string ] */ ; DUP - /* [ pair string nat : pair string nat : @storage pair (pair key nat) string ] */ ; + /* [ pair string nat : pair string nat : pair (pair key nat) string ] */ ; DIP { CAR - /* [ string : @storage pair (pair key nat) string ] */ ; + /* [ string : pair (pair key nat) string ] */ ; DIP { CAAR } /* [ string : key ] */ } /* [ pair string nat : string : key ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--dispatch.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--dispatch.tz].out index 0282fa6dbb..98b786e67e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--dispatch.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--dispatch.tz].out @@ -14,28 +14,27 @@ Gas remaining: 1039979.486 units remaining (pair @storage string (map string (lambda unit string))) : map string (lambda unit string) ] */ ; CAR - /* [ @parameter or string (pair string (lambda unit string)) + /* [ or string (pair string (lambda unit string)) : map string (lambda unit string) ] */ ; IF_LEFT { DIP { DUP /* [ map string (lambda unit string) : map string (lambda unit string) ] */ } - /* [ @parameter.left string : map string (lambda unit string) + /* [ string : map string (lambda unit string) : map string (lambda unit string) ] */ ; GET /* [ option (lambda unit string) : map string (lambda unit string) ] */ ; IF_NONE { FAIL } - { /* [ @some lambda unit string : map string (lambda unit string) ] */ } ; + { /* [ lambda unit string : map string (lambda unit string) ] */ } ; UNIT - /* [ unit : @some lambda unit string : map string (lambda unit string) ] */ ; + /* [ unit : lambda unit string : map string (lambda unit string) ] */ ; EXEC /* [ string : map string (lambda unit string) ] */ } { DUP - /* [ @parameter.right pair string (lambda unit string) - : @parameter.right pair string (lambda unit string) + /* [ pair string (lambda unit string) : pair string (lambda unit string) : map string (lambda unit string) ] */ ; CAR - /* [ string : @parameter.right pair string (lambda unit string) + /* [ string : pair string (lambda unit string) : map string (lambda unit string) ] */ ; DIP { CDR /* [ lambda unit string : map string (lambda unit string) ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--empty.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--empty.tz].out index ac83c38cfa..a85b93fa0f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--empty.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--empty.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039997.267 units remaining { parameter unit ; storage unit ; code { CDR - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--fail_amount.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--fail_amount.tz].out index 8aaf40b3fe..6a87e49d2f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--fail_amount.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--fail_amount.tz].out @@ -7,9 +7,9 @@ Gas remaining: 1039992.147 units remaining code { DROP /* [] */ ; AMOUNT - /* [ @amount mutez ] */ ; + /* [ mutez ] */ ; PUSH mutez 10000000 - /* [ mutez : @amount mutez ] */ ; + /* [ mutez : mutez ] */ ; CMPGT ; IF { FAIL } { /* [] */ } ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--faucet.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--faucet.tz].out index 0c1c99c8e2..5ad05a7ce2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--faucet.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--faucet.tz].out @@ -5,15 +5,15 @@ Gas remaining: 1039986.830 units remaining { parameter key_hash ; storage timestamp ; code { UNPAIR - /* [ @parameter key_hash : @storage timestamp ] */ ; + /* [ key_hash : timestamp ] */ ; SWAP - /* [ @storage timestamp : @parameter key_hash ] */ ; + /* [ timestamp : key_hash ] */ ; PUSH int 300 - /* [ int : @storage timestamp : @parameter key_hash ] */ ; + /* [ int : timestamp : key_hash ] */ ; ADD @FIVE_MINUTES_LATER - /* [ @FIVE_MINUTES_LATER timestamp : @parameter key_hash ] */ ; + /* [ timestamp : key_hash ] */ ; NOW - /* [ @now timestamp : @FIVE_MINUTES_LATER timestamp : @parameter key_hash ] */ ; + /* [ timestamp : timestamp : key_hash ] */ ; ASSERT_CMPGE ; IMPLICIT_ACCOUNT /* [ contract unit ] */ ; @@ -29,7 +29,7 @@ Gas remaining: 1039986.830 units remaining /* [ operation : list operation ] */ ; CONS /* [ list operation ] */ ; - DIP { NOW /* [ @now timestamp ] */ } - /* [ list operation : @now timestamp ] */ ; + DIP { NOW /* [ timestamp ] */ } + /* [ list operation : timestamp ] */ ; PAIR - /* [ pair (list operation) (timestamp @now) ] */ } } + /* [ pair (list operation) timestamp ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--forward.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--forward.tz].out index ab85fb4f6e..4dc2407fa3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--forward.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--forward.tz].out @@ -52,7 +52,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; NOW - /* [ @now timestamp : timestamp + /* [ timestamp : timestamp : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -94,7 +94,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; CAR - /* [ @parameter or string nat + /* [ or string nat : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -104,7 +104,7 @@ Gas remaining: 1039634.172 units remaining address) ] */ ; IF_LEFT { DUP - /* [ @parameter.left string : @parameter.left string + /* [ string : string : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -114,7 +114,7 @@ Gas remaining: 1039634.172 units remaining address) ] */ ; PUSH string "buyer" - /* [ string : @parameter.left string : @parameter.left string + /* [ string : string : string : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -123,7 +123,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; COMPARE - /* [ int : @parameter.left string + /* [ int : string : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -132,7 +132,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; EQ - /* [ bool : @parameter.left string + /* [ bool : string : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -165,7 +165,7 @@ Gas remaining: 1039634.172 units remaining address) ] */ ; CDADAR ; DIP { AMOUNT - /* [ @amount mutez + /* [ mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -173,7 +173,7 @@ Gas remaining: 1039634.172 units remaining (pair mutez mutez) (pair address address) address) ] */ } - /* [ mutez : @amount mutez + /* [ mutez : mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -267,7 +267,7 @@ Gas remaining: 1039634.172 units remaining address ] */ } { PUSH string "seller" - /* [ string : @parameter.left string + /* [ string : string : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -310,7 +310,7 @@ Gas remaining: 1039634.172 units remaining address) ] */ ; CDADDR ; DIP { AMOUNT - /* [ @amount mutez + /* [ mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -318,7 +318,7 @@ Gas remaining: 1039634.172 units remaining (pair mutez mutez) (pair address address) address) ] */ } - /* [ mutez : @amount mutez + /* [ mutez : mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -422,7 +422,7 @@ Gas remaining: 1039634.172 units remaining { FAIL } } } { FAIL } } { BALANCE - /* [ @balance mutez + /* [ mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -432,7 +432,7 @@ Gas remaining: 1039634.172 units remaining address) ] */ ; PUSH mutez 0 - /* [ mutez : @balance mutez + /* [ mutez : mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -518,7 +518,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; BALANCE - /* [ @balance mutez : mutez + /* [ mutez : mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -545,295 +545,294 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; IF { CDR - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; DUP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; CADAR ; DIP { DUP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; CDDDAAR } /* [ mutez : address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) - : @storage pair (pair nat mutez mutez) + /* [ option (contract unit) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; ASSERT_SOME } - /* [ mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ unit : mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; TRANSFER_TOKENS /* [ operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; NIL operation /* [ list operation : operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; SWAP /* [ operation : list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; CONS /* [ list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; SWAP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; DUP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; CADDR ; DIP { DUP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; CDDDADR } /* [ mutez : address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) - : @storage pair (pair nat mutez mutez) + /* [ option (contract unit) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; ASSERT_SOME } - /* [ mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ unit : mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; TRANSFER_TOKENS /* [ operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; SWAP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; DUP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; CADAR ; DIP { DUP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; CADDR } /* [ mutez : mutez - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; ADD /* [ mutez - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; BALANCE - /* [ @balance mutez : mutez - : @storage pair (pair nat mutez mutez) + /* [ mutez : mutez + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; SUB_MUTEZ /* [ option mutez - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; ASSERT_SOME ; DIP { DUP - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; CDDDDR } - /* [ @some mutez : address - : @storage pair (pair nat mutez mutez) + /* [ mutez : address + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) - : @storage pair (pair nat mutez mutez) + /* [ option (contract unit) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; ASSERT_SOME } - /* [ @some mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; UNIT - /* [ unit : @some mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ unit : mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; TRANSFER_TOKENS /* [ operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address : list operation ] */ ; DIP { SWAP /* [ list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ } /* [ operation : list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; CONS /* [ list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; PAIR /* [ pair (list operation) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } { DUP /* [ pair (or @parameter string nat) (pair @storage @@ -851,7 +850,7 @@ Gas remaining: 1039634.172 units remaining address) ] */ ; CDDADAR ; NOW - /* [ @now timestamp : timestamp + /* [ timestamp : timestamp : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -914,7 +913,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; NOW - /* [ @now timestamp : timestamp + /* [ timestamp : timestamp : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -956,7 +955,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; CAR - /* [ @parameter or string nat + /* [ or string nat : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -967,7 +966,7 @@ Gas remaining: 1039634.172 units remaining IF_LEFT { PUSH string "buyer" - /* [ string : @parameter.left string + /* [ string : string : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1010,7 +1009,7 @@ Gas remaining: 1039634.172 units remaining address) ] */ ; CDADAR ; DIP { AMOUNT - /* [ @amount mutez + /* [ mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1018,7 +1017,7 @@ Gas remaining: 1039634.172 units remaining (pair mutez mutez) (pair address address) address) ] */ } - /* [ mutez : @amount mutez + /* [ mutez : mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1304,7 +1303,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; IF { BALANCE - /* [ @balance mutez + /* [ mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1328,7 +1327,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; CDDDDADR } - /* [ @balance mutez : address + /* [ mutez : address : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1337,75 +1336,74 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; DIIP { CDR - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ } - /* [ @balance mutez : address - : @storage pair (pair nat mutez mutez) + /* [ mutez : address + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) - : @storage pair (pair nat mutez mutez) + /* [ option (contract unit) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; ASSERT_SOME } - /* [ @balance mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; UNIT - /* [ unit : @balance mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ unit : mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; TRANSFER_TOKENS /* [ operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; NIL operation /* [ list operation : operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; SWAP /* [ operation : list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; CONS /* [ list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; PAIR /* [ pair (list operation) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } { DUP /* [ pair (or @parameter string nat) (pair @storage @@ -1461,7 +1459,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; NOW - /* [ @now timestamp : timestamp + /* [ timestamp : timestamp : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1504,7 +1502,7 @@ Gas remaining: 1039634.172 units remaining address) ] */ ; CDDDDDR ; SENDER - /* [ @sender address : address + /* [ address : address : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1554,7 +1552,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; CAR - /* [ @parameter or string nat + /* [ or string nat : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1580,7 +1578,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; CDAAR } - /* [ @parameter.right nat : nat + /* [ nat : nat : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1718,7 +1716,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address ] */ } { BALANCE - /* [ @balance mutez + /* [ mutez : pair unit (pair nat mutez mutez) (pair nat timestamp timestamp) @@ -1739,7 +1737,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address ] */ ; CDDDDADR } - /* [ @balance mutez : address + /* [ mutez : address : pair unit (pair nat mutez mutez) (pair nat timestamp timestamp) @@ -1752,7 +1750,7 @@ Gas remaining: 1039634.172 units remaining (pair mutez mutez) (pair address address) address ] */ } - /* [ @balance mutez : address + /* [ mutez : address : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) @@ -1760,21 +1758,21 @@ Gas remaining: 1039634.172 units remaining address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) + /* [ option (contract unit) : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; ASSERT_SOME } - /* [ @balance mutez : @contract.some contract unit + /* [ mutez : contract unit : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; UNIT - /* [ unit : @balance mutez : @contract.some contract unit + /* [ unit : mutez : contract unit : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) @@ -1816,7 +1814,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address ] */ } { BALANCE - /* [ @balance mutez + /* [ mutez : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1840,7 +1838,7 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; CDDDDAAR } - /* [ @balance mutez : address + /* [ mutez : address : pair (or @parameter string nat) (pair @storage (pair nat mutez mutez) @@ -1849,72 +1847,71 @@ Gas remaining: 1039634.172 units remaining (pair address address) address) ] */ ; DIIP { CDR - /* [ @storage pair (pair nat mutez mutez) + /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ } - /* [ @balance mutez : address - : @storage pair (pair nat mutez mutez) + /* [ mutez : address + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) - : @storage pair (pair nat mutez mutez) + /* [ option (contract unit) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; ASSERT_SOME } - /* [ @balance mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; UNIT - /* [ unit : @balance mutez : @contract.some contract unit - : @storage pair (pair nat mutez mutez) + /* [ unit : mutez : contract unit + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; TRANSFER_TOKENS /* [ operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; NIL operation /* [ list operation : operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; SWAP /* [ operation : list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; CONS /* [ list operation - : @storage pair (pair nat mutez mutez) + : pair (pair nat mutez mutez) (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; PAIR /* [ pair (list operation) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } } } } } } } } + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } } } } } } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--id.tz].out index ca385364f1..e16eb48f71 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--id.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039997.267 units remaining { parameter string ; storage string ; code { CAR - /* [ @parameter string ] */ ; + /* [ string ] */ ; NIL operation - /* [ list operation : @parameter string ] */ ; + /* [ list operation : string ] */ ; PAIR - /* [ pair (list operation) (string @parameter) ] */ } } + /* [ pair (list operation) string ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--insertion_sort.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--insertion_sort.tz].out index 024399f0d5..7dd48a1600 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--insertion_sort.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--insertion_sort.tz].out @@ -5,51 +5,51 @@ Gas remaining: 1039971.505 units remaining { parameter (list int) ; storage (list int) ; code { CAR - /* [ @parameter list int ] */ ; + /* [ list int ] */ ; NIL int - /* [ list int : @parameter list int ] */ ; + /* [ list int : list int ] */ ; SWAP - /* [ @parameter list int : list int ] */ ; + /* [ list int : list int ] */ ; ITER { SWAP - /* [ list int : @parameter.elt int ] */ ; + /* [ list int : int ] */ ; DIIP { NIL int /* [ list int ] */ } - /* [ list int : @parameter.elt int : list int ] */ ; + /* [ list int : int : list int ] */ ; PUSH bool True - /* [ bool : list int : @parameter.elt int : list int ] */ ; + /* [ bool : list int : int : list int ] */ ; LOOP { IF_CONS { SWAP - /* [ @tl list int : @hd int : @parameter.elt int : list int ] */ ; + /* [ list int : int : int : list int ] */ ; DIP { DUP - /* [ @hd int : @hd int : @parameter.elt int : list int ] */ ; - DIIP { DUP /* [ @parameter.elt int : @parameter.elt int : list int ] */ } - /* [ @hd int : @hd int : @parameter.elt int : @parameter.elt int : list int ] */ ; + /* [ int : int : int : list int ] */ ; + DIIP { DUP /* [ int : int : list int ] */ } + /* [ int : int : int : int : list int ] */ ; DIP { CMPLT } - /* [ @hd int : bool : @parameter.elt int : list int ] */ ; + /* [ int : bool : int : list int ] */ ; SWAP - /* [ bool : @hd int : @parameter.elt int : list int ] */ } - /* [ @tl list int : bool : @hd int : @parameter.elt int : list int ] */ ; + /* [ bool : int : int : list int ] */ } + /* [ list int : bool : int : int : list int ] */ ; SWAP - /* [ bool : @tl list int : @hd int : @parameter.elt int : list int ] */ ; + /* [ bool : list int : int : int : list int ] */ ; IF { DIP { SWAP - /* [ @parameter.elt int : @hd int : list int ] */ ; + /* [ int : int : list int ] */ ; DIP { CONS /* [ list int ] */ } - /* [ @parameter.elt int : list int ] */ } - /* [ @tl list int : @parameter.elt int : list int ] */ ; + /* [ int : list int ] */ } + /* [ list int : int : list int ] */ ; PUSH bool True - /* [ bool : @tl list int : @parameter.elt int : list int ] */ } + /* [ bool : list int : int : list int ] */ } { SWAP - /* [ @hd int : @tl list int : @parameter.elt int : list int ] */ ; + /* [ int : list int : int : list int ] */ ; CONS - /* [ list int : @parameter.elt int : list int ] */ ; + /* [ list int : int : list int ] */ ; PUSH bool False - /* [ bool : list int : @parameter.elt int : list int ] */ } } + /* [ bool : list int : int : list int ] */ } } { NIL int - /* [ list int : @parameter.elt int : list int ] */ ; + /* [ list int : int : list int ] */ ; PUSH bool False - /* [ bool : list int : @parameter.elt int : list int ] */ } } - /* [ list int : @parameter.elt int : list int ] */ ; + /* [ bool : list int : int : list int ] */ } } + /* [ list int : int : list int ] */ ; SWAP - /* [ @parameter.elt int : list int : list int ] */ ; + /* [ int : list int : list int ] */ ; CONS /* [ list int : list int ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--int_publisher.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--int_publisher.tz].out index 85775d8e82..ca260fe7ee 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--int_publisher.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--int_publisher.tz].out @@ -12,7 +12,7 @@ Gas remaining: 1039967.523 units remaining : pair (option @parameter (pair signature int)) (pair @storage key int) : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; CAR - /* [ @parameter option (pair signature int) + /* [ option (pair signature int) : pair (option @parameter (pair signature int)) (pair @storage key int) : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; IF_NONE @@ -22,7 +22,7 @@ Gas remaining: 1039967.523 units remaining : pair (option @parameter (pair signature int)) (pair @storage key int) : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; AMOUNT - /* [ @amount mutez : mutez + /* [ mutez : mutez : pair (option @parameter (pair signature int)) (pair @storage key int) : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; CMPLE ; @@ -30,50 +30,48 @@ Gas remaining: 1039967.523 units remaining { /* [ pair (option @parameter (pair signature int)) (pair @storage key int) : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ } ; CDR - /* [ @storage pair key int + /* [ pair key int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; DIP { CDDR } - /* [ @storage pair key int : int ] */ } + /* [ pair key int : int ] */ } { DUP - /* [ @parameter.some pair signature int : @parameter.some pair signature int + /* [ pair signature int : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; DIP { SWAP /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : @parameter.some pair signature int + : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ } - /* [ @parameter.some pair signature int + /* [ pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) - : @parameter.some pair signature int + : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; SWAP /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : @parameter.some pair signature int : @parameter.some pair signature int + : pair signature int : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; CDAR ; DIP { DUP - /* [ @parameter.some pair signature int : @parameter.some pair signature int - : @parameter.some pair signature int + /* [ pair signature int : pair signature int : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; CAR - /* [ signature : @parameter.some pair signature int - : @parameter.some pair signature int + /* [ signature : pair signature int : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; DIP { CDR - /* [ int : @parameter.some pair signature int + /* [ int : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; PACK - /* [ @packed bytes : @parameter.some pair signature int + /* [ bytes : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; BLAKE2B - /* [ bytes : @parameter.some pair signature int + /* [ bytes : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ } - /* [ signature : bytes : @parameter.some pair signature int + /* [ signature : bytes : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ } - /* [ key : signature : bytes : @parameter.some pair signature int + /* [ key : signature : bytes : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; CHECK_SIGNATURE - /* [ bool : @parameter.some pair signature int + /* [ bool : pair signature int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; IF { CDR /* [ int @@ -93,10 +91,10 @@ Gas remaining: 1039967.523 units remaining /* [ pair (option @parameter (pair signature int)) (pair @storage key int) : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; CDR - /* [ @storage pair key int + /* [ pair key int : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; DIP { CDDR } - /* [ @storage pair key int : int ] */ } } ; + /* [ pair key int : int ] */ } } ; DIP { DROP /* [] */ } /* [ pair key int ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--king_of_tez.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--king_of_tez.tz].out index 940de8303d..b32f89c88d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--king_of_tez.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--king_of_tez.tz].out @@ -9,71 +9,64 @@ Gas remaining: 1039971.047 units remaining : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; CDAR ; NOW - /* [ @now timestamp : timestamp + /* [ timestamp : timestamp : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; CMPGT ; IF { CAR - /* [ @parameter key_hash ] */ ; + /* [ key_hash ] */ ; AMOUNT - /* [ @amount mutez : @parameter key_hash ] */ ; + /* [ mutez : key_hash ] */ ; PAIR - /* [ pair (mutez @amount) (key_hash @parameter) ] */ ; + /* [ pair mutez key_hash ] */ ; NOW - /* [ @now timestamp : pair (mutez @amount) (key_hash @parameter) ] */ ; - PUSH int - 604800 - /* [ int : @now timestamp : pair (mutez @amount) (key_hash @parameter) ] */ ; + /* [ timestamp : pair mutez key_hash ] */ ; + PUSH int 604800 + /* [ int : timestamp : pair mutez key_hash ] */ ; ADD - /* [ timestamp : pair (mutez @amount) (key_hash @parameter) ] */ ; + /* [ timestamp : pair mutez key_hash ] */ ; PAIR - /* [ pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ pair timestamp mutez key_hash ] */ ; NIL operation - /* [ list operation : pair timestamp (mutez @amount) (key_hash @parameter) ] */ } + /* [ list operation : pair timestamp mutez key_hash ] */ } { DUP /* [ pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; CDDAR ; AMOUNT - /* [ @amount mutez : mutez + /* [ mutez : mutez : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; CMPLT ; IF { FAIL } { CAR - /* [ @parameter key_hash ] */ ; + /* [ key_hash ] */ ; DUP - /* [ @parameter key_hash : @parameter key_hash ] */ ; + /* [ key_hash : key_hash ] */ ; DIP { AMOUNT - /* [ @amount mutez : @parameter key_hash ] */ ; + /* [ mutez : key_hash ] */ ; PAIR - /* [ pair (mutez @amount) (key_hash @parameter) ] */ ; + /* [ pair mutez key_hash ] */ ; NOW - /* [ @now timestamp : pair (mutez @amount) (key_hash @parameter) ] */ ; - PUSH int - 604800 - /* [ int : @now timestamp : pair (mutez @amount) (key_hash @parameter) ] */ ; + /* [ timestamp : pair mutez key_hash ] */ ; + PUSH int 604800 + /* [ int : timestamp : pair mutez key_hash ] */ ; ADD - /* [ timestamp : pair (mutez @amount) (key_hash @parameter) ] */ ; + /* [ timestamp : pair mutez key_hash ] */ ; PAIR - /* [ pair timestamp (mutez @amount) (key_hash @parameter) ] */ } - /* [ @parameter key_hash - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ pair timestamp mutez key_hash ] */ } + /* [ key_hash : pair timestamp mutez key_hash ] */ ; IMPLICIT_ACCOUNT - /* [ contract unit : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ contract unit : pair timestamp mutez key_hash ] */ ; AMOUNT - /* [ @amount mutez : contract unit - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ mutez : contract unit : pair timestamp mutez key_hash ] */ ; UNIT - /* [ unit : @amount mutez : contract unit - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ unit : mutez : contract unit : pair timestamp mutez key_hash ] */ ; TRANSFER_TOKENS - /* [ operation : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ operation : pair timestamp mutez key_hash ] */ ; NIL operation - /* [ list operation : operation - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ list operation : operation : pair timestamp mutez key_hash ] */ ; SWAP - /* [ operation : list operation - : pair timestamp (mutez @amount) (key_hash @parameter) ] */ ; + /* [ operation : list operation : pair timestamp mutez key_hash ] */ ; CONS - /* [ list operation : pair timestamp (mutez @amount) (key_hash @parameter) ] */ } } ; + /* [ list operation : pair timestamp mutez key_hash ] */ } } ; PAIR - /* [ pair (list operation) timestamp (mutez @amount) (key_hash @parameter) ] */ } } + /* [ pair (list operation) timestamp mutez key_hash ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--list_of_transactions.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--list_of_transactions.tz].out index 2ee8c36df0..192b717db2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--list_of_transactions.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--list_of_transactions.tz].out @@ -5,45 +5,38 @@ Gas remaining: 1039982.122 units remaining { parameter unit ; storage (list address) ; code { CDR - /* [ @storage list address ] */ ; + /* [ list address ] */ ; DUP - /* [ @storage list address : @storage list address ] */ ; - DIP { NIL operation /* [ list operation : @storage list address ] */ } - /* [ @storage list address : list operation : @storage list address ] */ ; - PUSH bool - True - /* [ bool : @storage list address : list operation : @storage list address ] */ ; + /* [ list address : list address ] */ ; + DIP { NIL operation /* [ list operation : list address ] */ } + /* [ list address : list operation : list address ] */ ; + PUSH bool True + /* [ bool : list address : list operation : list address ] */ ; LOOP { IF_CONS { CONTRACT unit - /* [ @storage.hd.contract option (contract unit) : @storage.tl list address - : list operation : @storage list address ] */ ; + /* [ option (contract unit) : list address : list operation : list address ] */ ; ASSERT_SOME ; PUSH mutez 1000000 - /* [ mutez : @storage.hd.contract.some contract unit : @storage.tl list address - : list operation : @storage list address ] */ ; + /* [ mutez : contract unit : list address : list operation : list address ] */ ; UNIT - /* [ unit : mutez : @storage.hd.contract.some contract unit - : @storage.tl list address : list operation : @storage list address ] */ ; + /* [ unit : mutez : contract unit : list address : list operation + : list address ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.tl list address : list operation - : @storage list address ] */ ; + /* [ operation : list address : list operation : list address ] */ ; SWAP - /* [ @storage.tl list address : operation : list operation - : @storage list address ] */ ; - DIP { CONS /* [ list operation : @storage list address ] */ } - /* [ @storage.tl list address : list operation : @storage list address ] */ ; - PUSH bool - True - /* [ bool : @storage.tl list address : list operation : @storage list address ] */ } + /* [ list address : operation : list operation : list address ] */ ; + DIP { CONS /* [ list operation : list address ] */ } + /* [ list address : list operation : list address ] */ ; + PUSH bool True + /* [ bool : list address : list operation : list address ] */ } { NIL address - /* [ list address : list operation : @storage list address ] */ ; - PUSH bool - False - /* [ bool : list address : list operation : @storage list address ] */ } } - /* [ @storage list address : list operation : @storage list address ] */ ; + /* [ list address : list operation : list address ] */ ; + PUSH bool False + /* [ bool : list address : list operation : list address ] */ } } + /* [ list address : list operation : list address ] */ ; DROP - /* [ list operation : @storage list address ] */ ; + /* [ list operation : list address ] */ ; PAIR - /* [ pair (list operation) (list @storage address) ] */ } } + /* [ pair (list operation) (list address) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--queue.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--queue.tz].out index f2f48023ae..3cc8befc24 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--queue.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--queue.tz].out @@ -10,7 +10,7 @@ Gas remaining: 1039952.504 units remaining : pair (option @parameter string) (pair @storage (option string) (pair nat nat) (map nat string)) ] */ ; CAR - /* [ @parameter option string + /* [ option string : pair (option @parameter string) (pair @storage (option string) (pair nat nat) (map nat string)) ] */ ; IF_NONE @@ -77,11 +77,11 @@ Gas remaining: 1039952.504 units remaining /* [ pair nat nat : map nat string ] */ ; DUP /* [ pair nat nat : pair nat nat : map nat string ] */ } - /* [ @parameter.some string : pair nat nat : pair nat nat : map nat string ] */ ; + /* [ string : pair nat nat : pair nat nat : map nat string ] */ ; SWAP - /* [ pair nat nat : @parameter.some string : pair nat nat : map nat string ] */ ; + /* [ pair nat nat : string : pair nat nat : map nat string ] */ ; CAR - /* [ nat : @parameter.some string : pair nat nat : map nat string ] */ ; + /* [ nat : string : pair nat nat : map nat string ] */ ; DIP { SOME /* [ option string : pair nat nat : map nat string ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reduce_map.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reduce_map.tz].out index fdffbd365e..cf4502fb1b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reduce_map.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reduce_map.tz].out @@ -8,36 +8,35 @@ Gas remaining: 1039975.926 units remaining /* [ pair (pair @parameter (lambda int int) (list int)) (list @storage int) : list int ] */ ; CAR - /* [ @parameter pair (lambda int int) (list int) : list int ] */ ; + /* [ pair (lambda int int) (list int) : list int ] */ ; DUP - /* [ @parameter pair (lambda int int) (list int) - : @parameter pair (lambda int int) (list int) : list int ] */ ; + /* [ pair (lambda int int) (list int) : pair (lambda int int) (list int) + : list int ] */ ; DIP { CAR /* [ lambda int int : list int ] */ ; PAIR /* [ pair (lambda int int) (list int) ] */ } - /* [ @parameter pair (lambda int int) (list int) - : pair (lambda int int) (list int) ] */ ; + /* [ pair (lambda int int) (list int) : pair (lambda int int) (list int) ] */ ; CDR /* [ list int : pair (lambda int int) (list int) ] */ ; ITER { PAIR - /* [ pair (int @elt) (lambda int int) (list int) ] */ ; + /* [ pair int (lambda int int) (list int) ] */ ; DUP - /* [ pair (int @elt) (lambda int int) (list int) - : pair (int @elt) (lambda int int) (list int) ] */ ; + /* [ pair int (lambda int int) (list int) + : pair int (lambda int int) (list int) ] */ ; CDAR ; DIP { DUP - /* [ pair (int @elt) (lambda int int) (list int) - : pair (int @elt) (lambda int int) (list int) ] */ ; + /* [ pair int (lambda int int) (list int) + : pair int (lambda int int) (list int) ] */ ; DIP { CDAR } - /* [ pair (int @elt) (lambda int int) (list int) : lambda int int ] */ ; + /* [ pair int (lambda int int) (list int) : lambda int int ] */ ; DUP - /* [ pair (int @elt) (lambda int int) (list int) - : pair (int @elt) (lambda int int) (list int) : lambda int int ] */ ; + /* [ pair int (lambda int int) (list int) : pair int (lambda int int) (list int) + : lambda int int ] */ ; CAR - /* [ @elt int : pair (int @elt) (lambda int int) (list int) : lambda int int ] */ ; + /* [ int : pair int (lambda int int) (list int) : lambda int int ] */ ; DIP { CDDR ; SWAP /* [ lambda int int : list int ] */ } - /* [ @elt int : lambda int int : list int ] */ ; + /* [ int : lambda int int : list int ] */ ; EXEC /* [ int : list int ] */ ; CONS diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reentrancy.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reentrancy.tz].out index af10f8254f..26d95bc92b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reentrancy.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reentrancy.tz].out @@ -5,45 +5,39 @@ Gas remaining: 1039981.752 units remaining { parameter unit ; storage (pair address address) ; code { CDR - /* [ @storage pair address address ] */ ; + /* [ pair address address ] */ ; DUP - /* [ @storage pair address address : @storage pair address address ] */ ; + /* [ pair address address : pair address address ] */ ; CAR - /* [ address : @storage pair address address ] */ ; - CONTRACT - unit - /* [ @contract option (contract unit) : @storage pair address address ] */ ; + /* [ address : pair address address ] */ ; + CONTRACT unit + /* [ option (contract unit) : pair address address ] */ ; ASSERT_SOME ; - PUSH mutez - 5000000 - /* [ mutez : @contract.some contract unit : @storage pair address address ] */ ; + PUSH mutez 5000000 + /* [ mutez : contract unit : pair address address ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit - : @storage pair address address ] */ ; + /* [ unit : mutez : contract unit : pair address address ] */ ; TRANSFER_TOKENS - /* [ operation : @storage pair address address ] */ ; + /* [ operation : pair address address ] */ ; DIP { DUP - /* [ @storage pair address address : @storage pair address address ] */ ; + /* [ pair address address : pair address address ] */ ; CDR - /* [ address : @storage pair address address ] */ ; - CONTRACT - unit - /* [ @contract option (contract unit) : @storage pair address address ] */ ; + /* [ address : pair address address ] */ ; + CONTRACT unit + /* [ option (contract unit) : pair address address ] */ ; ASSERT_SOME ; - PUSH mutez - 5000000 - /* [ mutez : @contract.some contract unit : @storage pair address address ] */ ; + PUSH mutez 5000000 + /* [ mutez : contract unit : pair address address ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit - : @storage pair address address ] */ ; + /* [ unit : mutez : contract unit : pair address address ] */ ; TRANSFER_TOKENS - /* [ operation : @storage pair address address ] */ } - /* [ operation : operation : @storage pair address address ] */ ; - DIIP { NIL operation /* [ list operation : @storage pair address address ] */ } - /* [ operation : operation : list operation : @storage pair address address ] */ ; - DIP { CONS /* [ list operation : @storage pair address address ] */ } - /* [ operation : list operation : @storage pair address address ] */ ; + /* [ operation : pair address address ] */ } + /* [ operation : operation : pair address address ] */ ; + DIIP { NIL operation /* [ list operation : pair address address ] */ } + /* [ operation : operation : list operation : pair address address ] */ ; + DIP { CONS /* [ list operation : pair address address ] */ } + /* [ operation : list operation : pair address address ] */ ; CONS - /* [ list operation : @storage pair address address ] */ ; + /* [ list operation : pair address address ] */ ; PAIR - /* [ pair (list operation) (pair @storage address address) ] */ } } + /* [ pair (list operation) address address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reservoir.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reservoir.tz].out index 81cfea3209..10a29a45fa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reservoir.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reservoir.tz].out @@ -5,96 +5,89 @@ Gas remaining: 1039963.237 units remaining { parameter unit ; storage (pair (pair (timestamp %T) (mutez %N)) (pair (address %A) (address %B))) ; code { CDR - /* [ @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; DUP - /* [ @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; CAAR %T ; NOW - /* [ @now timestamp : timestamp - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ timestamp : timestamp + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; COMPARE - /* [ int - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ int : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; LE - /* [ bool - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ bool : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; IF { DUP - /* [ @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; CADR %N ; BALANCE - /* [ @balance mutez : mutez - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ mutez : mutez + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; COMPARE - /* [ int - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ int : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; LE - /* [ bool - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ bool : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; IF { NIL operation /* [ list operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; PAIR - /* [ pair (list operation) - (pair @storage (pair (timestamp %T) (mutez %N)) (address %A) (address %B)) ] */ } + /* [ pair (list operation) (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ } { DUP - /* [ @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; CDDR %B ; CONTRACT unit - /* [ @contract option (contract unit) - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ option (contract unit) + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; ASSERT_SOME ; BALANCE - /* [ @balance mutez : @contract.some contract unit - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ mutez : contract unit + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; UNIT - /* [ unit : @balance mutez : @contract.some contract unit - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ unit : mutez : contract unit + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; TRANSFER_TOKENS /* [ operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; NIL operation /* [ list operation : operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; SWAP /* [ operation : list operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; CONS /* [ list operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; PAIR - /* [ pair (list operation) - (pair @storage (pair (timestamp %T) (mutez %N)) (address %A) (address %B)) ] */ } } + /* [ pair (list operation) (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ } } { DUP - /* [ @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; CDAR %A ; CONTRACT unit - /* [ @contract option (contract unit) - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ option (contract unit) + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; ASSERT_SOME ; BALANCE - /* [ @balance mutez : @contract.some contract unit - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ mutez : contract unit + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; UNIT - /* [ unit : @balance mutez : @contract.some contract unit - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + /* [ unit : mutez : contract unit + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; TRANSFER_TOKENS /* [ operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; NIL operation /* [ list operation : operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; SWAP /* [ operation : list operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; CONS /* [ list operation - : @storage pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; + : pair (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ ; PAIR - /* [ pair (list operation) - (pair @storage (pair (timestamp %T) (mutez %N)) (address %A) (address %B)) ] */ } } } + /* [ pair (list operation) (pair (timestamp %T) (mutez %N)) (address %A) (address %B) ] */ } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--scrutable_reservoir.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--scrutable_reservoir.tz].out index cf3c83df4a..52189ffb5c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--scrutable_reservoir.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--scrutable_reservoir.tz].out @@ -33,7 +33,7 @@ Gas remaining: 1039876.691 units remaining (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; CDDAR ; NOW - /* [ @now timestamp : timestamp + /* [ timestamp : timestamp : pair (unit @parameter) (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; COMPARE @@ -76,7 +76,7 @@ Gas remaining: 1039876.691 units remaining : pair (unit @parameter) (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; BALANCE - /* [ @balance mutez : mutez + /* [ mutez : mutez : pair (unit @parameter) (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; COMPARE @@ -88,13 +88,12 @@ Gas remaining: 1039876.691 units remaining : pair (unit @parameter) (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; IF { CDR - /* [ @storage pair string timestamp (pair mutez mutez) address address address ] */ ; + /* [ pair string timestamp (pair mutez mutez) address address address ] */ ; NIL operation /* [ list operation - : @storage pair string timestamp (pair mutez mutez) address address address ] */ ; + : pair string timestamp (pair mutez mutez) address address address ] */ ; PAIR - /* [ pair (list operation) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ } + /* [ pair (list operation) string timestamp (pair mutez mutez) address address address ] */ } { CDDR ; PUSH string "success" @@ -113,13 +112,13 @@ Gas remaining: 1039876.691 units remaining : pair string timestamp (pair mutez mutez) address address address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) + /* [ option (contract unit) : pair string timestamp (pair mutez mutez) address address address ] */ ; ASSERT_SOME } - /* [ mutez : @contract.some contract unit + /* [ mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit + /* [ unit : mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; TRANSFER_TOKENS /* [ operation @@ -136,13 +135,13 @@ Gas remaining: 1039876.691 units remaining : pair string timestamp (pair mutez mutez) address address address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) + /* [ option (contract unit) : pair string timestamp (pair mutez mutez) address address address ] */ ; ASSERT_SOME } - /* [ mutez : @contract.some contract unit + /* [ mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit + /* [ unit : mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; TRANSFER_TOKENS /* [ operation @@ -173,36 +172,34 @@ Gas remaining: 1039876.691 units remaining PAIR /* [ pair string timestamp (pair mutez mutez) address address address ] */ ; BALANCE - /* [ @balance mutez - : pair string timestamp (pair mutez mutez) address address address ] */ ; + /* [ mutez : pair string timestamp (pair mutez mutez) address address address ] */ ; DIP { DUP /* [ pair string timestamp (pair mutez mutez) address address address : pair string timestamp (pair mutez mutez) address address address ] */ ; CDDAAR } - /* [ @balance mutez : mutez + /* [ mutez : mutez : pair string timestamp (pair mutez mutez) address address address ] */ ; COMPARE /* [ int : pair string timestamp (pair mutez mutez) address address address ] */ ; LT /* [ bool : pair string timestamp (pair mutez mutez) address address address ] */ ; IF { BALANCE - /* [ @balance mutez - : pair string timestamp (pair mutez mutez) address address address ] */ ; + /* [ mutez : pair string timestamp (pair mutez mutez) address address address ] */ ; DIP { DUP /* [ pair string timestamp (pair mutez mutez) address address address : pair string timestamp (pair mutez mutez) address address address ] */ ; CDDDAR } - /* [ @balance mutez : address + /* [ mutez : address : pair string timestamp (pair mutez mutez) address address address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) + /* [ option (contract unit) : pair string timestamp (pair mutez mutez) address address address ] */ ; ASSERT_SOME } - /* [ @balance mutez : @contract.some contract unit + /* [ mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; UNIT - /* [ unit : @balance mutez : @contract.some contract unit + /* [ unit : mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; TRANSFER_TOKENS /* [ operation @@ -219,35 +216,34 @@ Gas remaining: 1039876.691 units remaining : pair string timestamp (pair mutez mutez) address address address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) + /* [ option (contract unit) : pair string timestamp (pair mutez mutez) address address address ] */ ; ASSERT_SOME } - /* [ mutez : @contract.some contract unit + /* [ mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit + /* [ unit : mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; TRANSFER_TOKENS /* [ operation : pair string timestamp (pair mutez mutez) address address address ] */ } ; DIP { BALANCE - /* [ @balance mutez - : pair string timestamp (pair mutez mutez) address address address ] */ ; + /* [ mutez : pair string timestamp (pair mutez mutez) address address address ] */ ; DIP { DUP /* [ pair string timestamp (pair mutez mutez) address address address : pair string timestamp (pair mutez mutez) address address address ] */ ; CDDDDDR } - /* [ @balance mutez : address + /* [ mutez : address : pair string timestamp (pair mutez mutez) address address address ] */ ; DIP { CONTRACT unit - /* [ @contract option (contract unit) + /* [ option (contract unit) : pair string timestamp (pair mutez mutez) address address address ] */ ; ASSERT_SOME } - /* [ @balance mutez : @contract.some contract unit + /* [ mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; UNIT - /* [ unit : @balance mutez : @contract.some contract unit + /* [ unit : mutez : contract unit : pair string timestamp (pair mutez mutez) address address address ] */ ; TRANSFER_TOKENS /* [ operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--spawn_identities.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--spawn_identities.tz].out index ee8349bf1e..a5e5598bb8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--spawn_identities.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--spawn_identities.tz].out @@ -6,66 +6,56 @@ Gas remaining: 1039971.200 units remaining storage (list address) ; code { /* [ pair (string @parameter) (string @storage) ] */ DUP - /* [ list operation : @parameter string ] */ ; + /* [ list operation : string ] */ ; CAR - /* [ @parameter nat : pair (nat @parameter) (list @storage address) ] */ ; - DIP { CDR - /* [ @storage list address ] */ ; - NIL operation - /* [ list operation : @storage list address ] */ } - /* [ pair (list operation) (string @parameter) ] */ ; - PUSH bool - True - /* [ bool : @parameter nat : list operation : @storage list address ] */ ; + /* [ nat : pair (nat @parameter) (list @storage address) ] */ ; + DIP { CDR /* [ list address ] */ ; NIL operation /* [ list operation : list address ] */ } + /* [ pair (list operation) string ] */ ; + PUSH bool True + /* [ bool : nat : list operation : list address ] */ ; LOOP { DUP - /* [ @parameter nat : @parameter nat : list operation : @storage list address ] */ ; - PUSH nat - 0 - /* [ nat : @parameter nat : @parameter nat : list operation - : @storage list address ] */ ; + /* [ nat : nat : list operation : list address ] */ ; + PUSH nat 0 + /* [ nat : nat : nat : list operation : list address ] */ ; CMPEQ ; - IF { PUSH bool - False - /* [ bool : @parameter nat : list operation : @storage list address ] */ } + IF { PUSH bool False /* [ bool : nat : list operation : list address ] */ } { PUSH nat 1 - /* [ nat : @parameter nat : list operation : @storage list address ] */ ; + /* [ nat : nat : list operation : list address ] */ ; SWAP - /* [ @parameter nat : nat : list operation : @storage list address ] */ ; + /* [ nat : nat : list operation : list address ] */ ; SUB - /* [ int : list operation : @storage list address ] */ ; + /* [ int : list operation : list address ] */ ; ABS - /* [ nat : list operation : @storage list address ] */ ; + /* [ nat : list operation : list address ] */ ; PUSH string "init" - /* [ string : nat : list operation : @storage list address ] */ ; - PUSH mutez - 5000000 - /* [ mutez : string : nat : list operation : @storage list address ] */ ; + /* [ string : nat : list operation : list address ] */ ; + PUSH mutez 5000000 + /* [ mutez : string : nat : list operation : list address ] */ ; NONE key_hash - /* [ option key_hash : mutez : string : nat : list operation - : @storage list address ] */ ; + /* [ option key_hash : mutez : string : nat : list operation : list address ] */ ; CREATE_CONTRACT { parameter string ; storage string ; code { CAR ; NIL operation ; PAIR } } - /* [ operation : address : nat : list operation : @storage list address ] */ ; + /* [ operation : address : nat : list operation : list address ] */ ; SWAP - /* [ address : operation : nat : list operation : @storage list address ] */ ; + /* [ address : operation : nat : list operation : list address ] */ ; DIP { SWAP - /* [ nat : operation : list operation : @storage list address ] */ ; - DIP { CONS /* [ list operation : @storage list address ] */ } - /* [ nat : list operation : @storage list address ] */ } - /* [ address : nat : list operation : @storage list address ] */ ; + /* [ nat : operation : list operation : list address ] */ ; + DIP { CONS /* [ list operation : list address ] */ } + /* [ nat : list operation : list address ] */ } + /* [ address : nat : list operation : list address ] */ ; SWAP - /* [ nat : address : list operation : @storage list address ] */ ; + /* [ nat : address : list operation : list address ] */ ; DIP { SWAP - /* [ list operation : address : @storage list address ] */ ; + /* [ list operation : address : list address ] */ ; DIP { CONS /* [ list address ] */ } /* [ list operation : list address ] */ } /* [ nat : list operation : list address ] */ ; PUSH bool True /* [ bool : nat : list operation : list address ] */ } } - /* [ @parameter nat : list operation : @storage list address ] */ ; + /* [ nat : list operation : list address ] */ ; DROP - /* [ list operation : @storage list address ] */ ; + /* [ list operation : list address ] */ ; PAIR - /* [ pair (list operation) (list @storage address) ] */ } } + /* [ pair (list operation) (list address) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert.tz].out index cfb65da18e..aa15244dcd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039994.573 units remaining { parameter bool ; storage unit ; code { CAR - /* [ @parameter bool ] */ ; + /* [ bool ] */ ; ASSERT ; UNIT /* [ unit ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpeq.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpeq.tz].out index 80458a249b..846bae98a2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpeq.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpeq.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.676 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; ASSERT_CMPEQ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpge.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpge.tz].out index 5073c99f98..2b3cea6f1c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpge.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpge.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.676 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; ASSERT_CMPGE ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpgt.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpgt.tz].out index be2cd26e3e..ad6bb1ac96 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpgt.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpgt.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.676 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; ASSERT_CMPGT ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmple.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmple.tz].out index 5cc85ff9a5..36ad2136d5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmple.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmple.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.676 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; ASSERT_CMPLE ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmplt.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmplt.tz].out index 000f0ea660..6f118050fb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmplt.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmplt.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.676 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; ASSERT_CMPLT ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpneq.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpneq.tz].out index de154d8d34..1074fab56e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpneq.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_cmpneq.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.676 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; ASSERT_CMPNEQ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_eq.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_eq.tz].out index 7e330d2e78..f50cda99d2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_eq.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_eq.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.923 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; COMPARE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_ge.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_ge.tz].out index 378c6f1546..c830756ba1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_ge.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_ge.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.923 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; COMPARE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_gt.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_gt.tz].out index 2bdf64d8f9..d1ef6bd676 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_gt.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_gt.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.923 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; COMPARE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_le.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_le.tz].out index f19c14040e..5c9142933c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_le.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_le.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.923 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; COMPARE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_lt.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_lt.tz].out index 3b1d0aea19..cd7132002f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_lt.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_lt.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.923 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; COMPARE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_neq.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_neq.tz].out index 3ac47d9013..ee74f64353 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_neq.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--assert_neq.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039990.923 units remaining { parameter (pair int int) ; storage unit ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int ] */ ; + /* [ int : pair int int ] */ ; DIP { CDR /* [ int ] */ } /* [ int : int ] */ ; COMPARE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_get_add.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_get_add.tz].out index 66533d3d5d..a83096b521 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_get_add.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_get_add.tz].out @@ -56,7 +56,7 @@ Gas remaining: 1039968.666 units remaining /* [ option int : option int : big_map int int ] */ ; IF_SOME { SWAP - /* [ option int : @some int : big_map int int ] */ ; + /* [ option int : int : big_map int int ] */ ; IF_SOME { ASSERT_CMPEQ } { FAIL } } { ASSERT_NONE } ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--build_list.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--build_list.tz].out index d345db9440..ae6c0ea324 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--build_list.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--build_list.tz].out @@ -5,38 +5,38 @@ Gas remaining: 1039982.791 units remaining { parameter nat ; storage (list nat) ; code { CAR @counter - /* [ @counter nat ] */ ; + /* [ nat ] */ ; NIL @acc nat - /* [ @acc list nat : @counter nat ] */ ; + /* [ list nat : nat ] */ ; SWAP - /* [ @counter nat : @acc list nat ] */ ; + /* [ nat : list nat ] */ ; DUP @cmp_num - /* [ @cmp_num nat : @counter nat : @acc list nat ] */ ; + /* [ nat : nat : list nat ] */ ; PUSH nat 0 - /* [ nat : @cmp_num nat : @counter nat : @acc list nat ] */ ; + /* [ nat : nat : nat : list nat ] */ ; CMPNEQ ; LOOP { DUP - /* [ @counter nat : @counter nat : @acc list nat ] */ ; - DIP { SWAP /* [ @acc list nat : @counter nat ] */ } - /* [ @counter nat : @acc list nat : @counter nat ] */ ; + /* [ nat : nat : list nat ] */ ; + DIP { SWAP /* [ list nat : nat ] */ } + /* [ nat : list nat : nat ] */ ; CONS @acc - /* [ @acc list nat : @counter nat ] */ ; + /* [ list nat : nat ] */ ; SWAP - /* [ @counter nat : @acc list nat ] */ ; + /* [ nat : list nat ] */ ; PUSH nat 1 - /* [ nat : @counter nat : @acc list nat ] */ ; + /* [ nat : nat : list nat ] */ ; SWAP - /* [ @counter nat : nat : @acc list nat ] */ ; + /* [ nat : nat : list nat ] */ ; SUB @counter - /* [ @counter int : @acc list nat ] */ ; + /* [ int : list nat ] */ ; DUP - /* [ @counter int : @counter int : @acc list nat ] */ ; - DIP { ABS /* [ nat : @acc list nat ] */ } - /* [ @counter int : nat : @acc list nat ] */ ; + /* [ int : int : list nat ] */ ; + DIP { ABS /* [ nat : list nat ] */ } + /* [ int : nat : list nat ] */ ; PUSH int 0 - /* [ int : @counter int : nat : @acc list nat ] */ ; + /* [ int : int : nat : list nat ] */ ; CMPNEQ } - /* [ @counter nat : @acc list nat ] */ ; + /* [ nat : list nat ] */ ; CONS /* [ list nat ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--carn_and_cdrn.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--carn_and_cdrn.tz].out index eccaff3d32..8c1238fd9e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--carn_and_cdrn.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--carn_and_cdrn.tz].out @@ -5,37 +5,37 @@ Gas remaining: 1039963.184 units remaining { parameter (pair nat nat nat unit) ; storage unit ; code { CAR - /* [ @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit ] */ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; CAR - /* [ nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : pair nat nat nat unit ] */ ; PUSH nat 1 - /* [ nat : nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : nat : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; CAR 0 ; PUSH nat 1 - /* [ nat : nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : nat : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; CAR 1 ; PUSH nat 4 - /* [ nat : nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : nat : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; CAR 2 ; PUSH nat 2 - /* [ nat : nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : nat : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; CDR 3 ; UNIT - /* [ unit : unit : @parameter pair nat nat nat unit ] */ ; + /* [ unit : unit : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DROP /* [] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--compare.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--compare.tz].out index 890f923d4e..a237a39ff2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--compare.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--compare.tz].out @@ -5,29 +5,25 @@ Gas remaining: 1039968.322 units remaining { parameter (pair mutez mutez) ; storage (list bool) ; code { CAR - /* [ @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez ] */ ; DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez : pair mutez mutez ] */ ; DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez : pair mutez mutez : pair mutez mutez ] */ ; DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez : @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez : pair mutez mutez : pair mutez mutez : pair mutez mutez ] */ ; DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez : pair mutez mutez : pair mutez mutez : pair mutez mutez + : pair mutez mutez ] */ ; DIIIIIP { NIL bool /* [ list bool ] */ } - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : pair mutez mutez : pair mutez mutez + : pair mutez mutez : list bool ] */ ; DIIIIP { DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : list bool ] */ ; CAR - /* [ mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ mutez : pair mutez mutez : list bool ] */ ; DIP { CDR /* [ mutez : list bool ] */ } /* [ mutez : mutez : list bool ] */ ; COMPARE @@ -36,13 +32,13 @@ Gas remaining: 1039968.322 units remaining /* [ bool : list bool ] */ ; CONS /* [ list bool ] */ } - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : pair mutez mutez : pair mutez mutez + : list bool ] */ ; DIIIP { DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : list bool ] */ ; CAR - /* [ mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ mutez : pair mutez mutez : list bool ] */ ; DIP { CDR /* [ mutez : list bool ] */ } /* [ mutez : mutez : list bool ] */ ; COMPARE @@ -51,12 +47,11 @@ Gas remaining: 1039968.322 units remaining /* [ bool : list bool ] */ ; CONS /* [ list bool ] */ } - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : pair mutez mutez : list bool ] */ ; DIIP { DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : list bool ] */ ; CAR - /* [ mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ mutez : pair mutez mutez : list bool ] */ ; DIP { CDR /* [ mutez : list bool ] */ } /* [ mutez : mutez : list bool ] */ ; COMPARE @@ -65,11 +60,11 @@ Gas remaining: 1039968.322 units remaining /* [ bool : list bool ] */ ; CONS /* [ list bool ] */ } - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : list bool ] */ ; DIP { DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : list bool ] */ ; CAR - /* [ mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ mutez : pair mutez mutez : list bool ] */ ; DIP { CDR /* [ mutez : list bool ] */ } /* [ mutez : mutez : list bool ] */ ; COMPARE @@ -78,11 +73,11 @@ Gas remaining: 1039968.322 units remaining /* [ bool : list bool ] */ ; CONS /* [ list bool ] */ } - /* [ @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : list bool ] */ ; DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ pair mutez mutez : pair mutez mutez : list bool ] */ ; CAR - /* [ mutez : @parameter pair mutez mutez : list bool ] */ ; + /* [ mutez : pair mutez mutez : list bool ] */ ; DIP { CDR /* [ mutez : list bool ] */ } /* [ mutez : mutez : list bool ] */ ; COMPARE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--compare_bytes.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--compare_bytes.tz].out index 21c57e92ae..8978929af9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--compare_bytes.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--compare_bytes.tz].out @@ -5,29 +5,25 @@ Gas remaining: 1039968.322 units remaining { parameter (pair bytes bytes) ; storage (list bool) ; code { CAR - /* [ @parameter pair bytes bytes ] */ ; + /* [ pair bytes bytes ] */ ; DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes ] */ ; + /* [ pair bytes bytes : pair bytes bytes ] */ ; DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes - : @parameter pair bytes bytes ] */ ; + /* [ pair bytes bytes : pair bytes bytes : pair bytes bytes ] */ ; DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes - : @parameter pair bytes bytes : @parameter pair bytes bytes ] */ ; + /* [ pair bytes bytes : pair bytes bytes : pair bytes bytes : pair bytes bytes ] */ ; DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes - : @parameter pair bytes bytes : @parameter pair bytes bytes - : @parameter pair bytes bytes ] */ ; + /* [ pair bytes bytes : pair bytes bytes : pair bytes bytes : pair bytes bytes + : pair bytes bytes ] */ ; DIIIIIP { NIL bool /* [ list bool ] */ } - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes - : @parameter pair bytes bytes : @parameter pair bytes bytes - : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : pair bytes bytes : pair bytes bytes + : pair bytes bytes : list bool ] */ ; DIIIIP { DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : list bool ] */ ; CAR - /* [ bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ bytes : pair bytes bytes : list bool ] */ ; DIP { CDR /* [ bytes : list bool ] */ } /* [ bytes : bytes : list bool ] */ ; COMPARE @@ -36,13 +32,13 @@ Gas remaining: 1039968.322 units remaining /* [ bool : list bool ] */ ; CONS /* [ list bool ] */ } - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes - : @parameter pair bytes bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : pair bytes bytes : pair bytes bytes + : list bool ] */ ; DIIIP { DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : list bool ] */ ; CAR - /* [ bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ bytes : pair bytes bytes : list bool ] */ ; DIP { CDR /* [ bytes : list bool ] */ } /* [ bytes : bytes : list bool ] */ ; COMPARE @@ -51,12 +47,11 @@ Gas remaining: 1039968.322 units remaining /* [ bool : list bool ] */ ; CONS /* [ list bool ] */ } - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes - : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : pair bytes bytes : list bool ] */ ; DIIP { DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : list bool ] */ ; CAR - /* [ bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ bytes : pair bytes bytes : list bool ] */ ; DIP { CDR /* [ bytes : list bool ] */ } /* [ bytes : bytes : list bool ] */ ; COMPARE @@ -65,11 +60,11 @@ Gas remaining: 1039968.322 units remaining /* [ bool : list bool ] */ ; CONS /* [ list bool ] */ } - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : list bool ] */ ; DIP { DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : list bool ] */ ; CAR - /* [ bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ bytes : pair bytes bytes : list bool ] */ ; DIP { CDR /* [ bytes : list bool ] */ } /* [ bytes : bytes : list bool ] */ ; COMPARE @@ -78,11 +73,11 @@ Gas remaining: 1039968.322 units remaining /* [ bool : list bool ] */ ; CONS /* [ list bool ] */ } - /* [ @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : list bool ] */ ; DUP - /* [ @parameter pair bytes bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ pair bytes bytes : pair bytes bytes : list bool ] */ ; CAR - /* [ bytes : @parameter pair bytes bytes : list bool ] */ ; + /* [ bytes : pair bytes bytes : list bool ] */ ; DIP { CDR /* [ bytes : list bool ] */ } /* [ bytes : bytes : list bool ] */ ; COMPARE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--guestbook.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--guestbook.tz].out index b6f156a67d..1c111b04fd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--guestbook.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--guestbook.tz].out @@ -5,32 +5,29 @@ Gas remaining: 1039986.383 units remaining { parameter string ; storage (map address (option string)) ; code { UNPAIR @message @guestbook - /* [ @message string : @guestbook map address (option string) ] */ ; + /* [ string : map address (option string) ] */ ; SWAP - /* [ @guestbook map address (option string) : @message string ] */ ; + /* [ map address (option string) : string ] */ ; DUP - /* [ @guestbook map address (option string) - : @guestbook map address (option string) : @message string ] */ ; + /* [ map address (option string) : map address (option string) : string ] */ ; SENDER - /* [ @sender address : @guestbook map address (option string) - : @guestbook map address (option string) : @message string ] */ ; + /* [ address : map address (option string) : map address (option string) + : string ] */ ; GET @previous_message - /* [ @previous_message option (option string) - : @guestbook map address (option string) : @message string ] */ ; + /* [ option (option string) : map address (option string) : string ] */ ; ASSERT_SOME ; ASSERT_NONE ; SWAP - /* [ @message string : @guestbook map address (option string) ] */ ; + /* [ string : map address (option string) ] */ ; SOME - /* [ option string : @guestbook map address (option string) ] */ ; + /* [ option string : map address (option string) ] */ ; SOME - /* [ option (option string) : @guestbook map address (option string) ] */ ; + /* [ option (option string) : map address (option string) ] */ ; SENDER - /* [ @sender address : option (option string) - : @guestbook map address (option string) ] */ ; + /* [ address : option (option string) : map address (option string) ] */ ; UPDATE - /* [ @guestbook map address (option string) ] */ ; + /* [ map address (option string) ] */ ; NIL operation - /* [ list operation : @guestbook map address (option string) ] */ ; + /* [ list operation : map address (option string) ] */ ; PAIR - /* [ pair (list operation) (map @guestbook address (option string)) ] */ } } + /* [ pair (list operation) (map address (option string)) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--macro_annotations.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--macro_annotations.tz].out index f8d3223170..2e73b3abe0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--macro_annotations.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--macro_annotations.tz].out @@ -15,10 +15,10 @@ Gas remaining: 1039992.402 units remaining UNIT /* [ unit : pair (unit %truc) unit ] */ ; DUUP @new_storage - /* [ @new_storage pair (unit %truc) unit : unit : pair (unit %truc) unit ] */ ; + /* [ pair (unit %truc) unit : unit : pair (unit %truc) unit ] */ ; DIP { DROP /* [ pair (unit %truc) unit ] */ ; DROP /* [] */ } - /* [ @new_storage pair (unit %truc) unit ] */ ; + /* [ pair (unit %truc) unit ] */ ; NIL operation - /* [ list operation : @new_storage pair (unit %truc) unit ] */ ; + /* [ list operation : pair (unit %truc) unit ] */ ; PAIR - /* [ pair (list operation) (pair @new_storage (unit %truc) unit) ] */ } } + /* [ pair (list operation) (unit %truc) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--max_in_list.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--max_in_list.tz].out index 73a2e8e886..27893a7e25 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--max_in_list.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--max_in_list.tz].out @@ -5,21 +5,21 @@ Gas remaining: 1039985.981 units remaining { parameter (list int) ; storage (option int) ; code { CAR - /* [ @parameter list int ] */ ; + /* [ list int ] */ ; DIP { NONE int /* [ option int ] */ } - /* [ @parameter list int : option int ] */ ; + /* [ list int : option int ] */ ; ITER { SWAP - /* [ option int : @parameter.elt int ] */ ; + /* [ option int : int ] */ ; IF_NONE { SOME /* [ option int ] */ } - { DIP { DUP /* [ @parameter.elt int : @parameter.elt int ] */ } - /* [ @some int : @parameter.elt int : @parameter.elt int ] */ ; + { DIP { DUP /* [ int : int ] */ } + /* [ int : int : int ] */ ; DUP - /* [ @some int : @some int : @parameter.elt int : @parameter.elt int ] */ ; - DIP { SWAP /* [ @parameter.elt int : @some int : @parameter.elt int ] */ } - /* [ @some int : @parameter.elt int : @some int : @parameter.elt int ] */ ; + /* [ int : int : int : int ] */ ; + DIP { SWAP /* [ int : int : int ] */ } + /* [ int : int : int : int ] */ ; CMPLE ; - IF { DROP /* [ @parameter.elt int ] */ } { DIP { DROP /* [] */ } /* [ @some int ] */ } ; + IF { DROP /* [ int ] */ } { DIP { DROP /* [] */ } /* [ int ] */ } ; SOME /* [ option int ] */ } } /* [ option int ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--min.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--min.tz].out index 82357667f4..962d0fa373 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--min.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--min.tz].out @@ -5,16 +5,15 @@ Gas remaining: 1039990.871 units remaining { parameter (pair int int) ; storage int ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int - : @parameter pair int int ] */ ; + /* [ pair int int : pair int int : pair int int ] */ ; CAR - /* [ int : @parameter pair int int : @parameter pair int int ] */ ; - DIP { CDR /* [ int : @parameter pair int int ] */ } - /* [ int : int : @parameter pair int int ] */ ; + /* [ int : pair int int : pair int int ] */ ; + DIP { CDR /* [ int : pair int int ] */ } + /* [ int : int : pair int int ] */ ; CMPLT ; IF { CAR /* [ int ] */ } { CDR /* [ int ] */ } ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--pair_macro.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--pair_macro.tz].out index 1e2f563c6f..8abd8525ba 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--pair_macro.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--pair_macro.tz].out @@ -19,8 +19,8 @@ Gas remaining: 1039988.218 units remaining DROP /* [ pair (unit @parameter) (unit @storage) ] */ ; CDR - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--take_my_money.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--take_my_money.tz].out index f44e40007b..f90685682e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--take_my_money.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--take_my_money.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039992.790 units remaining { parameter key_hash ; storage unit ; code { CAR - /* [ @parameter key_hash ] */ ; + /* [ key_hash ] */ ; IMPLICIT_ACCOUNT /* [ contract unit ] */ ; DIP { UNIT /* [ unit ] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--unpair_macro.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--unpair_macro.tz].out index a8af48d673..2daa0cca80 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--unpair_macro.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--unpair_macro.tz].out @@ -7,26 +7,26 @@ Gas remaining: 1039976.490 units remaining code { DROP /* [] */ ; UNIT :u4 @a4 - /* [ @a4 unit :u4 ] */ ; + /* [ unit :u4 ] */ ; UNIT :u3 @a3 - /* [ @a3 unit :u3 : @a4 unit :u4 ] */ ; + /* [ unit :u3 : unit :u4 ] */ ; UNIT :u2 @a2 - /* [ @a2 unit :u2 : @a3 unit :u3 : @a4 unit :u4 ] */ ; + /* [ unit :u2 : unit :u3 : unit :u4 ] */ ; UNIT :u1 @a1 - /* [ @a1 unit :u1 : @a2 unit :u2 : @a3 unit :u3 : @a4 unit :u4 ] */ ; + /* [ unit :u1 : unit :u2 : unit :u3 : unit :u4 ] */ ; PAIR - /* [ pair (unit :u1 @a1) (unit :u2 @a2) : @a3 unit :u3 : @a4 unit :u4 ] */ ; + /* [ pair (unit :u1) (unit :u2) : unit :u3 : unit :u4 ] */ ; UNPAIR @x1 @x2 - /* [ @x1 unit :u1 : @x2 unit :u2 : @a3 unit :u3 : @a4 unit :u4 ] */ ; + /* [ unit :u1 : unit :u2 : unit :u3 : unit :u4 ] */ ; PPAIPAIR @p1 %x1 %x2 %x3 %x4 ; UNPPAIPAIR %x1 % %x3 %x4 @uno @due @tre @quattro ; PAPAPAIR @p2 %x1 %x2 %x3 %x4 ; UNPAPAPAIR @un @deux @trois @quatre ; PAPPAIIR @p3 %x1 %x2 %x3 %x4 ; UNPAPPAIIR @one @two @three @four ; - DIP { DROP /* [ @a3 unit :u3 : @a4 unit :u4 ] */ ; DROP /* [ @a4 unit :u4 ] */ ; DROP /* [] */ } - /* [ @x1 unit :u1 ] */ ; + DIP { DROP /* [ unit :u3 : unit :u4 ] */ ; DROP /* [ unit :u4 ] */ ; DROP /* [] */ } + /* [ unit :u1 ] */ ; NIL operation - /* [ list operation : @x1 unit :u1 ] */ ; + /* [ list operation : unit :u1 ] */ ; PAIR - /* [ pair (list operation) (unit :u1 @x1) ] */ } } + /* [ pair (list operation) (unit :u1) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--authentication.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--authentication.tz].out index 80ade19809..c9c80a6e74 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--authentication.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--authentication.tz].out @@ -11,28 +11,25 @@ Gas remaining: 1039978.751 units remaining /* [ lambda unit (list operation) : nat : lambda unit (list operation) : signature : nat : key ] */ ; SELF - /* [ @self contract (pair (lambda unit (list operation)) signature) + /* [ contract (pair (lambda unit (list operation)) signature) : lambda unit (list operation) : nat : lambda unit (list operation) : signature : nat : key ] */ ; CHAIN_ID - /* [ chain_id : @self contract (pair (lambda unit (list operation)) signature) + /* [ chain_id : contract (pair (lambda unit (list operation)) signature) : lambda unit (list operation) : nat : lambda unit (list operation) : signature : nat : key ] */ ; PPAIPAIR ; PACK - /* [ @packed bytes : lambda unit (list operation) : signature : nat : key ] */ ; + /* [ bytes : lambda unit (list operation) : signature : nat : key ] */ ; DIP { SWAP /* [ signature : lambda unit (list operation) : nat : key ] */ } - /* [ @packed bytes : signature : lambda unit (list operation) : nat : key ] */ ; + /* [ bytes : signature : lambda unit (list operation) : nat : key ] */ ; DUUUUUP - /* [ key : @packed bytes : signature : lambda unit (list operation) : nat - : key ] */ ; - DIP { SWAP - /* [ signature : @packed bytes : lambda unit (list operation) : nat : key ] */ } - /* [ key : signature : @packed bytes : lambda unit (list operation) : nat - : key ] */ ; + /* [ key : bytes : signature : lambda unit (list operation) : nat : key ] */ ; + DIP { SWAP /* [ signature : bytes : lambda unit (list operation) : nat : key ] */ } + /* [ key : signature : bytes : lambda unit (list operation) : nat : key ] */ ; DUUUP - /* [ bytes : key : signature : @packed bytes : lambda unit (list operation) - : nat : key ] */ ; + /* [ bytes : key : signature : bytes : lambda unit (list operation) : nat + : key ] */ ; DIP { CHECK_SIGNATURE /* [ bool : lambda unit (list operation) : nat : key ] */ } /* [ bytes : bool : lambda unit (list operation) : nat : key ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_entrypoints.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_entrypoints.tz].out index 24288811c4..ea6e9342f6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_entrypoints.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_entrypoints.tz].out @@ -5,63 +5,59 @@ Gas remaining: 1039940.196 units remaining { storage (pair (big_map string nat) (big_map string nat)) ; parameter (or (unit %default - /* [ list operation : @storage big_map string nat ] */) + /* [ list operation : big_map string nat ] */) (or (or %mem (string %mem_left) (string %mem_right) - /* [ pair (list operation) (big_map @storage string nat) ] */) + /* [ pair (list operation) (big_map string nat) ] */) (or (or %add (pair %add_left string nat) (pair %add_right string nat)) (or %rem (string %rem_left) (string %rem_right)))) - /* [ @storage big_map string nat ] */) - /* [ @parameter string : @storage big_map string nat ] */ ; + /* [ big_map string nat ] */) + /* [ string : big_map string nat ] */ ; code { UNPAIR - /* [ @parameter or (unit %default) + /* [ or (unit %default) (or (or %mem (string %mem_left) (string %mem_right)) (or (or %add (pair %add_left string nat) (pair %add_right string nat)) (or %rem (string %rem_left) (string %rem_right)))) - : @storage pair (big_map string nat) (big_map string nat) ] */ ; + : pair (big_map string nat) (big_map string nat) ] */ ; IF_LEFT { DROP - /* [ @storage pair (big_map string nat) (big_map string nat) ] */ ; + /* [ pair (big_map string nat) (big_map string nat) ] */ ; DUP - /* [ @storage pair (big_map string nat) (big_map string nat) - : @storage pair (big_map string nat) (big_map string nat) ] */ ; + /* [ pair (big_map string nat) (big_map string nat) + : pair (big_map string nat) (big_map string nat) ] */ ; CAR - /* [ big_map string nat - : @storage pair (big_map string nat) (big_map string nat) ] */ ; + /* [ big_map string nat : pair (big_map string nat) (big_map string nat) ] */ ; PUSH mutez 0 /* [ mutez : big_map string nat - : @storage pair (big_map string nat) (big_map string nat) ] */ ; + : pair (big_map string nat) (big_map string nat) ] */ ; NONE key_hash /* [ option key_hash : mutez : big_map string nat - : @storage pair (big_map string nat) (big_map string nat) ] */ ; + : pair (big_map string nat) (big_map string nat) ] */ ; CREATE_CONTRACT { parameter string ; storage (big_map string nat) ; code { UNPAIR ; DROP ; NIL operation ; PAIR } } - /* [ operation : address - : @storage pair (big_map string nat) (big_map string nat) ] */ ; - DIP { DROP /* [ @storage pair (big_map string nat) (big_map string nat) ] */ } - /* [ operation : @storage pair (big_map string nat) (big_map string nat) ] */ ; + /* [ operation : address : pair (big_map string nat) (big_map string nat) ] */ ; + DIP { DROP /* [ pair (big_map string nat) (big_map string nat) ] */ } + /* [ operation : pair (big_map string nat) (big_map string nat) ] */ ; NIL operation /* [ list operation : operation - : @storage pair (big_map string nat) (big_map string nat) ] */ ; + : pair (big_map string nat) (big_map string nat) ] */ ; SWAP /* [ operation : list operation - : @storage pair (big_map string nat) (big_map string nat) ] */ ; + : pair (big_map string nat) (big_map string nat) ] */ ; CONS - /* [ list operation : @storage pair (big_map string nat) (big_map string nat) ] */ ; + /* [ list operation : pair (big_map string nat) (big_map string nat) ] */ ; PAIR - /* [ pair (list operation) (pair @storage (big_map string nat) (big_map string nat)) ] */ } + /* [ pair (list operation) (big_map string nat) (big_map string nat) ] */ } { IF_LEFT { IF_LEFT { DIP { UNPAIR /* [ big_map string nat : big_map string nat ] */ } - /* [ @parameter.right.mem.mem_left string : big_map string nat - : big_map string nat ] */ ; + /* [ string : big_map string nat : big_map string nat ] */ ; DIP { DUP /* [ big_map string nat : big_map string nat : big_map string nat ] */ } - /* [ @parameter.right.mem.mem_left string : big_map string nat - : big_map string nat : big_map string nat ] */ ; + /* [ string : big_map string nat : big_map string nat : big_map string nat ] */ ; MEM /* [ bool : big_map string nat : big_map string nat ] */ ; ASSERT } @@ -69,11 +65,9 @@ Gas remaining: 1039940.196 units remaining /* [ big_map string nat : big_map string nat ] */ ; SWAP /* [ big_map string nat : big_map string nat ] */ } - /* [ @parameter.right.mem.mem_right string : big_map string nat - : big_map string nat ] */ ; + /* [ string : big_map string nat : big_map string nat ] */ ; DIP { DUP /* [ big_map string nat : big_map string nat : big_map string nat ] */ } - /* [ @parameter.right.mem.mem_right string : big_map string nat - : big_map string nat : big_map string nat ] */ ; + /* [ string : big_map string nat : big_map string nat : big_map string nat ] */ ; MEM /* [ bool : big_map string nat : big_map string nat ] */ ; ASSERT ; @@ -82,7 +76,7 @@ Gas remaining: 1039940.196 units remaining { IF_LEFT { IF_LEFT { UNPAIR - /* [ string : nat : @storage pair (big_map string nat) (big_map string nat) ] */ ; + /* [ string : nat : pair (big_map string nat) (big_map string nat) ] */ ; DIIP { UNPAIR /* [ big_map string nat : big_map string nat ] */ } /* [ string : nat : big_map string nat : big_map string nat ] */ ; DIP { SOME /* [ option nat : big_map string nat : big_map string nat ] */ } @@ -90,7 +84,7 @@ Gas remaining: 1039940.196 units remaining UPDATE /* [ big_map string nat : big_map string nat ] */ } { UNPAIR - /* [ string : nat : @storage pair (big_map string nat) (big_map string nat) ] */ ; + /* [ string : nat : pair (big_map string nat) (big_map string nat) ] */ ; DIIP { UNPAIR /* [ big_map string nat : big_map string nat ] */ ; SWAP @@ -104,22 +98,18 @@ Gas remaining: 1039940.196 units remaining /* [ big_map string nat : big_map string nat ] */ } } { IF_LEFT { DIP { UNPAIR /* [ big_map string nat : big_map string nat ] */ } - /* [ @parameter.right.right.rem.rem_left string : big_map string nat - : big_map string nat ] */ ; + /* [ string : big_map string nat : big_map string nat ] */ ; DIP { NONE nat /* [ option nat : big_map string nat : big_map string nat ] */ } - /* [ @parameter.right.right.rem.rem_left string : option nat - : big_map string nat : big_map string nat ] */ ; + /* [ string : option nat : big_map string nat : big_map string nat ] */ ; UPDATE /* [ big_map string nat : big_map string nat ] */ } { DIP { UNPAIR /* [ big_map string nat : big_map string nat ] */ ; SWAP /* [ big_map string nat : big_map string nat ] */ } - /* [ @parameter.right.right.rem.rem_right string : big_map string nat - : big_map string nat ] */ ; + /* [ string : big_map string nat : big_map string nat ] */ ; DIP { NONE nat /* [ option nat : big_map string nat : big_map string nat ] */ } - /* [ @parameter.right.right.rem.rem_right string : option nat - : big_map string nat : big_map string nat ] */ ; + /* [ string : option nat : big_map string nat : big_map string nat ] */ ; UPDATE /* [ big_map string nat : big_map string nat ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_magic.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_magic.tz].out index 66e7eff8d1..dfa1a5e5e4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_magic.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_magic.tz].out @@ -9,14 +9,14 @@ Gas remaining: 1039941.750 units remaining (or (pair %import (list (pair string string)) (list (pair string string))) (or (list %add (pair string string)) (list %rem string))))) ; code { UNPAIR - /* [ @parameter or (unit %swap) + /* [ or (unit %swap) (or (or %reset (pair (big_map string string) (big_map string string)) unit) (or (pair %import (list (pair string string)) (list (pair string string))) (or (list %add (pair string string)) (list %rem string)))) - : @storage or (pair (big_map string string) (big_map string string)) unit ] */ ; + : or (pair (big_map string string) (big_map string string)) unit ] */ ; IF_LEFT { DROP - /* [ @storage or (pair (big_map string string) (big_map string string)) unit ] */ ; + /* [ or (pair (big_map string string) (big_map string string)) unit ] */ ; ASSERT_LEFT ; UNPAIR /* [ big_map string string : big_map string string ] */ ; @@ -28,13 +28,13 @@ Gas remaining: 1039941.750 units remaining /* [ or (pair (big_map string string) (big_map string string)) unit ] */ } { IF_LEFT { SWAP - /* [ @storage or (pair (big_map string string) (big_map string string)) unit - : @parameter.right.reset or (pair (big_map string string) (big_map string string)) unit ] */ ; + /* [ or (pair (big_map string string) (big_map string string)) unit + : or (pair (big_map string string) (big_map string string)) unit ] */ ; DROP - /* [ @parameter.right.reset or (pair (big_map string string) (big_map string string)) unit ] */ } + /* [ or (pair (big_map string string) (big_map string string)) unit ] */ } { IF_LEFT { DIP { ASSERT_RIGHT ; DROP /* [] */ } - /* [ @parameter.right.right.import pair (list (pair string string)) (list (pair string string)) ] */ ; + /* [ pair (list (pair string string)) (list (pair string string)) ] */ ; UNPAIR /* [ list (pair string string) : list (pair string string) ] */ ; DIP { EMPTY_BIG_MAP @@ -72,8 +72,7 @@ Gas remaining: 1039941.750 units remaining /* [ or (pair (big_map string string) (big_map string string)) unit ] */ } { IF_LEFT { DIP { ASSERT_LEFT ; UNPAIR /* [ big_map string string : big_map string string ] */ } - /* [ @parameter.right.right.right.add list (pair string string) - : big_map string string : big_map string string ] */ ; + /* [ list (pair string string) : big_map string string : big_map string string ] */ ; ITER { UNPAIR /* [ string : string : big_map string string : big_map string string ] */ ; DIP { SOME /* [ option string : big_map string string : big_map string string ] */ } @@ -86,12 +85,10 @@ Gas remaining: 1039941.750 units remaining LEFT unit /* [ or (pair (big_map string string) (big_map string string)) unit ] */ } { DIP { ASSERT_LEFT ; UNPAIR /* [ big_map string string : big_map string string ] */ } - /* [ @parameter.right.right.right.rem list string : big_map string string - : big_map string string ] */ ; + /* [ list string : big_map string string : big_map string string ] */ ; ITER { DIP { NONE string /* [ option string : big_map string string : big_map string string ] */ } - /* [ @parameter.right.right.right.rem.elt string : option string - : big_map string string : big_map string string ] */ ; + /* [ string : option string : big_map string string : big_map string string ] */ ; UPDATE /* [ big_map string string : big_map string string ] */ } /* [ big_map string string : big_map string string ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_read.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_read.tz].out index 35fc108979..fb6af71493 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_read.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_read.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039993.434 units remaining { storage nat ; parameter (big_map nat nat) ; code { CAR - /* [ @parameter big_map nat nat ] */ ; + /* [ big_map nat nat ] */ ; PUSH nat 1 - /* [ nat : @parameter big_map nat nat ] */ ; + /* [ nat : big_map nat nat ] */ ; GET /* [ option nat ] */ ; ASSERT_SOME ; NIL operation - /* [ list operation : @some nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @some) ] */ } } + /* [ pair (list operation) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_write.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_write.tz].out index 5ed2c7dc6b..2314efe7a4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_write.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--big_map_write.tz].out @@ -5,17 +5,16 @@ Gas remaining: 1039994.022 units remaining { storage unit ; parameter (big_map nat nat) ; code { UNPAIR - /* [ @parameter big_map nat nat : @storage unit ] */ ; - PUSH (option nat) - (Some 1) - /* [ option nat : @parameter big_map nat nat : @storage unit ] */ ; + /* [ big_map nat nat : unit ] */ ; + PUSH (option nat) (Some 1) + /* [ option nat : big_map nat nat : unit ] */ ; PUSH nat 1 - /* [ nat : option nat : @parameter big_map nat nat : @storage unit ] */ ; + /* [ nat : option nat : big_map nat nat : unit ] */ ; UPDATE - /* [ @parameter big_map nat nat : @storage unit ] */ ; + /* [ big_map nat nat : unit ] */ ; DROP - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract.tz].out index a8a81f106d..3be134e65c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract.tz].out @@ -6,9 +6,9 @@ Gas remaining: 1039968.907 units remaining storage unit ; code { /* [ pair (string @parameter) (string @storage) ] */ CAR - /* [ list operation : @parameter string ] */ ; + /* [ list operation : string ] */ ; IF_NONE - { /* [ list operation : @parameter string ] */ + { /* [ list operation : string ] */ PUSH string "dummy" /* [ string ] */ ; PUSH mutez 100000000 @@ -23,10 +23,10 @@ Gas remaining: 1039968.907 units remaining DIP { SOME /* [ option address ] */ ; DIP { SELF - /* [ @self contract (option address) ] */ ; + /* [ contract (option address) ] */ ; PUSH mutez 0 - /* [ mutez : @self contract (option address) ] */ } - /* [ option address : mutez : @self contract (option address) ] */ ; + /* [ mutez : contract (option address) ] */ } + /* [ option address : mutez : contract (option address) ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; NIL operation @@ -45,20 +45,19 @@ Gas remaining: 1039968.907 units remaining PAIR /* [ pair (list operation) unit ] */ } { SELF - /* [ @self contract (option address) : @parameter.some address ] */ ; + /* [ contract (option address) : address ] */ ; ADDRESS - /* [ @self.address address : @parameter.some address ] */ ; + /* [ address : address ] */ ; SENDER - /* [ @sender address : @self.address address : @parameter.some address ] */ ; - IFCMPNEQ { FAIL } { /* [ @parameter.some address ] */ } ; + /* [ address : address : address ] */ ; + IFCMPNEQ { FAIL } { /* [ address ] */ } ; CONTRACT string - /* [ @parameter.some.contract option (contract string) ] */ ; - IF_SOME { /* [ @parameter.some.contract.some contract string ] */ } { FAIL } ; + /* [ option (contract string) ] */ ; + IF_SOME { /* [ contract string ] */ } { FAIL } ; PUSH mutez 0 - /* [ mutez : @parameter.some.contract.some contract string ] */ ; - PUSH string - "abcdefg" - /* [ string : mutez : @parameter.some.contract.some contract string ] */ ; + /* [ mutez : contract string ] */ ; + PUSH string "abcdefg" + /* [ string : mutez : contract string ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract_simple.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract_simple.tz].out index 048cd27e61..6a09a9aed8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract_simple.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract_simple.tz].out @@ -5,25 +5,23 @@ Gas remaining: 1039989.249 units remaining { parameter unit ; storage unit ; code { CAR - /* [ @parameter string ] */ ; - PUSH string - "foo" - /* [ pair (list operation) (string @parameter) ] */ - /* [ list operation : @parameter string ] */ ; + /* [ string ] */ ; + PUSH string "foo" /* [ pair (list operation) string ] */ + /* [ list operation : string ] */ ; PUSH mutez 0 - /* [ mutez : string : @parameter unit ] */ ; + /* [ mutez : string : unit ] */ ; NONE key_hash - /* [ option key_hash : mutez : string : @parameter unit ] */ ; + /* [ option key_hash : mutez : string : unit ] */ ; CREATE_CONTRACT { parameter string ; storage string ; code { CAR ; NIL operation ; PAIR } } - /* [ operation : address : @parameter unit ] */ ; + /* [ operation : address : unit ] */ ; DROP - /* [ address : @parameter unit ] */ ; + /* [ address : unit ] */ ; DROP - /* [ @parameter unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @parameter unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @parameter) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--default_account.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--default_account.tz].out index fe088fd8f1..45ce559fb8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--default_account.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--default_account.tz].out @@ -7,7 +7,7 @@ Gas remaining: 1039992.790 units remaining code { DIP { UNIT /* [ unit ] */ } /* [ pair (key_hash @parameter) (unit @storage) : unit ] */ ; CAR - /* [ @parameter key_hash : unit ] */ ; + /* [ key_hash : unit ] */ ; IMPLICIT_ACCOUNT /* [ contract unit : unit ] */ ; PUSH mutez 100000000 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_appender.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_appender.tz].out index 7655ce31e1..621174989a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_appender.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_appender.tz].out @@ -5,30 +5,25 @@ Gas remaining: 1039989.364 units remaining { parameter unit ; storage (pair address string) ; code { CDR - /* [ @storage pair address string ] */ ; + /* [ pair address string ] */ ; DUP - /* [ @storage pair address string : @storage pair address string ] */ ; + /* [ pair address string : pair address string ] */ ; UNPAIR - /* [ address : string : @storage pair address string ] */ ; - CONTRACT - string - /* [ @contract option (contract string) : string - : @storage pair address string ] */ ; + /* [ address : string : pair address string ] */ ; + CONTRACT string + /* [ option (contract string) : string : pair address string ] */ ; ASSERT_SOME ; - PUSH mutez - 0 - /* [ mutez : @contract.some contract string : string - : @storage pair address string ] */ ; + PUSH mutez 0 + /* [ mutez : contract string : string : pair address string ] */ ; DIG 2 - /* [ string : mutez : @contract.some contract string - : @storage pair address string ] */ ; + /* [ string : mutez : contract string : pair address string ] */ ; TRANSFER_TOKENS - /* [ operation : @storage pair address string ] */ ; + /* [ operation : pair address string ] */ ; NIL operation - /* [ list operation : operation : @storage pair address string ] */ ; + /* [ list operation : operation : pair address string ] */ ; SWAP - /* [ operation : list operation : @storage pair address string ] */ ; + /* [ operation : list operation : pair address string ] */ ; CONS - /* [ list operation : @storage pair address string ] */ ; + /* [ list operation : pair address string ] */ ; PAIR - /* [ pair (list operation) (pair @storage address string) ] */ } } + /* [ pair (list operation) address string ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_caller.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_caller.tz].out index 199cc39695..435c3e2e78 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_caller.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_caller.tz].out @@ -5,21 +5,18 @@ Gas remaining: 1039991.291 units remaining { parameter unit ; storage (list address) ; code { CDR - /* [ @storage list address ] */ ; + /* [ list address ] */ ; DUP - /* [ @storage list address : @storage list address ] */ ; - MAP { CONTRACT - unit - /* [ @storage.elt.contract option (contract unit) : @storage list address ] */ ; + /* [ list address : list address ] */ ; + MAP { CONTRACT unit + /* [ option (contract unit) : list address ] */ ; ASSERT_SOME ; - PUSH mutez - 0 - /* [ mutez : @storage.elt.contract.some contract unit : @storage list address ] */ ; + PUSH mutez 0 + /* [ mutez : contract unit : list address ] */ ; UNIT - /* [ unit : mutez : @storage.elt.contract.some contract unit - : @storage list address ] */ ; + /* [ unit : mutez : contract unit : list address ] */ ; TRANSFER_TOKENS - /* [ operation : @storage list address ] */ } - /* [ list operation : @storage list address ] */ ; + /* [ operation : list address ] */ } + /* [ list operation : list address ] */ ; PAIR - /* [ pair (list operation) (list @storage address) ] */ } } + /* [ pair (list operation) (list address) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_storer.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_storer.tz].out index 0bdfca4c33..48c6bb61f7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_storer.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--execution_order_storer.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039996.340 units remaining { parameter string ; storage string ; code { UNPAIR - /* [ @parameter string : @storage string ] */ ; + /* [ string : string ] */ ; SWAP - /* [ @storage string : @parameter string ] */ ; + /* [ string : string ] */ ; CONCAT /* [ string ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--fa12_reference.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--fa12_reference.tz].out index d0f84d8222..f7704cda23 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--fa12_reference.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--fa12_reference.tz].out @@ -136,7 +136,7 @@ Gas remaining: 1039229.258 units remaining /* [ address : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SENDER - /* [ @sender address : address : pair address address nat + /* [ address : address : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; COMPARE /* [ int : pair address address nat @@ -163,15 +163,15 @@ Gas remaining: 1039229.258 units remaining : pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SENDER - /* [ @sender address : address + /* [ address : address : pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair (address @sender) address + /* [ pair address address : pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DUP - /* [ pair (address @sender) address : pair (address @sender) address + /* [ pair address address : pair address address : pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CDR @@ -195,10 +195,10 @@ Gas remaining: 1039229.258 units remaining { CDR /* [ map address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } } - /* [ pair (address @sender) address : map address nat + /* [ pair address address : map address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ @sender address : map address nat + /* [ address : map address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; GET /* [ option nat @@ -208,7 +208,7 @@ Gas remaining: 1039229.258 units remaining 0 /* [ nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - { /* [ @some nat + { /* [ nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } } /* [ pair address address nat : nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; @@ -219,7 +219,7 @@ Gas remaining: 1039229.258 units remaining /* [ address : pair address address nat : nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { SENDER - /* [ @sender address : pair address address nat : nat + /* [ address : pair address address nat : nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair address address nat : pair address address nat : nat @@ -284,207 +284,195 @@ Gas remaining: 1039229.258 units remaining : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some nat : pair address address nat : nat + { /* [ nat : pair address address nat : nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } } - /* [ @sender address : @some nat : pair address address nat : nat + /* [ address : nat : pair address address nat : nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair (address @sender) (nat @some) : pair address address nat : nat + /* [ pair address nat : pair address address nat : nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ address : pair (address @sender) (nat @some) : pair address address nat - : nat + /* [ address : pair address nat : pair address address nat : nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair address (address @sender) (nat @some) : pair address address nat : nat + /* [ pair address address nat : pair address address nat : nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP /* [ nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DROP /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair address (address @sender) (nat @some) + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair address (address @sender) (nat @some) + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP /* [ pair (big_map address (pair nat (map address nat))) address bool nat - : pair address (address @sender) (nat @some) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair address (address @sender) (nat @some) - : pair address (address @sender) (nat @some) + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ address : pair address (address @sender) (nat @some) + /* [ address : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair (big_map address (pair nat (map address nat))) address bool nat - : address : pair address (address @sender) (nat @some) + : address : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP /* [ address : pair (big_map address (pair nat (map address nat))) address bool nat - : pair address (address @sender) (nat @some) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR - /* [ big_map address (pair nat (map address nat)) - : pair address (address @sender) (nat @some) + /* [ big_map address (pair nat (map address nat)) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ address : big_map address (pair nat (map address nat)) - : pair address (address @sender) (nat @some) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; GET - /* [ option (pair nat (map address nat)) - : pair address (address @sender) (nat @some) + /* [ option (pair nat (map address nat)) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF_NONE { PUSH nat 0 - /* [ nat : pair address (address @sender) (nat @some) + /* [ nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { EMPTY_MAP address nat - /* [ map address nat : pair address (address @sender) (nat @some) + /* [ map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : map address nat : pair address (address @sender) (nat @some) + /* [ nat : map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EMPTY_MAP address nat - /* [ map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ map address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ pair nat (map address nat) : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ map address nat : @some pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ map address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DIP { DUP - /* [ pair address (address @sender) (nat @some) - : pair address (address @sender) (nat @some) + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair nat (map address nat) : pair address (address @sender) (nat @some) - : pair address (address @sender) (nat @some) + /* [ pair nat (map address nat) : pair address address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address (address @sender) (nat @some) : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ pair address address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ map address nat : pair address (address @sender) (nat @some) - : pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ map address nat : pair address address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address (address @sender) (nat @some) : map address nat - : pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ pair address address nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair (address @sender) (nat @some) : map address nat - : pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ pair address nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ @some nat : map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DUP - /* [ @some nat : @some nat : map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ nat : nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; INT - /* [ int : @some nat : map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ int : nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EQ - /* [ bool : @some nat : map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ bool : nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF { DROP - /* [ map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ map address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; NONE nat /* [ option nat : map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { SOME /* [ option nat : map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DIP { DIP { DUP - /* [ pair address (address @sender) (nat @some) - : pair address (address @sender) (nat @some) + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair nat (map address nat) : pair address (address @sender) (nat @some) - : pair address (address @sender) (nat @some) + /* [ pair nat (map address nat) : pair address address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address (address @sender) (nat @some) : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ pair address address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ map address nat : pair address (address @sender) (nat @some) - : pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ map address nat : pair address address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address (address @sender) (nat @some) : map address nat - : pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ pair address address nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ option nat : pair address (address @sender) (nat @some) : map address nat - : pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ option nat : pair address address nat : map address nat + : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address (address @sender) (nat @some) : option nat : map address nat - : pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ pair address address nat : option nat : map address nat + : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair (address @sender) (nat @some) : option nat : map address nat - : pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ pair address nat : option nat : map address nat + : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ @sender address : option nat : map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ address : option nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; UPDATE - /* [ map address nat : pair nat (map address nat) - : pair address (address @sender) (nat @some) + /* [ map address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair nat (map address nat) : pair nat (map address nat) - : pair address (address @sender) (nat @some) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR - /* [ nat : pair address (address @sender) (nat @some) + /* [ nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair nat (map address nat) : nat - : pair address (address @sender) (nat @some) + /* [ pair nat (map address nat) : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ map address nat : nat : pair address (address @sender) (nat @some) + /* [ map address nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ map address nat : map address nat : nat - : pair address (address @sender) (nat @some) + /* [ map address nat : map address nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP - /* [ nat : pair address (address @sender) (nat @some) + /* [ nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ map address nat : nat : pair address (address @sender) (nat @some) + /* [ map address nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ nat : map address nat : pair address (address @sender) (nat @some) + /* [ nat : map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair nat (map address nat) : pair address (address @sender) (nat @some) + /* [ pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address (address @sender) (nat @some) : pair nat (map address nat) + /* [ pair address address nat : pair nat (map address nat) : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ address : pair nat (map address nat) @@ -609,41 +597,39 @@ Gas remaining: 1039229.258 units remaining { DIP { DUP /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some pair nat (map address nat) : pair address address nat + /* [ pair nat (map address nat) : pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address address nat : @some pair nat (map address nat) + /* [ pair address address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair address nat : @some pair nat (map address nat) - : pair address address nat + /* [ pair address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ nat : @some pair nat (map address nat) : pair address address nat + /* [ nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ nat : @some pair nat (map address nat) : pair address address nat + /* [ nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : nat : @some pair nat (map address nat) : pair address address nat + /* [ nat : nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; ADD - /* [ nat : @some pair nat (map address nat) : pair address address nat + /* [ nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CDR /* [ map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some pair nat (map address nat) : map address nat - : pair address address nat + /* [ pair nat (map address nat) : map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ nat : map address nat : pair address address nat @@ -744,7 +730,7 @@ Gas remaining: 1039229.258 units remaining : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some nat + { /* [ nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat @@ -752,7 +738,7 @@ Gas remaining: 1039229.258 units remaining CDR /* [ pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : pair address bool nat + /* [ nat : pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair address bool nat : pair address bool nat @@ -765,7 +751,7 @@ Gas remaining: 1039229.258 units remaining CDR /* [ pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : pair bool nat : address + /* [ nat : pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair bool nat : pair bool nat : address @@ -778,24 +764,24 @@ Gas remaining: 1039229.258 units remaining CDR /* [ nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : nat : bool : address + /* [ nat : nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP /* [ bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : bool : address + /* [ nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ bool : @some nat : address + /* [ bool : nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair bool (nat @some) : address + /* [ pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ address : pair bool (nat @some) + /* [ address : pair bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair address bool (nat @some) + /* [ pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat @@ -805,393 +791,383 @@ Gas remaining: 1039229.258 units remaining : big_map address (pair nat (map address nat)) ] */ ; CDR /* [ pair address bool nat : big_map address (pair nat (map address nat)) ] */ } - /* [ pair address bool (nat @some) : pair address bool nat + /* [ pair address bool nat : pair address bool nat : big_map address (pair nat (map address nat)) ] */ ; DIP { DROP /* [ big_map address (pair nat (map address nat)) ] */ } - /* [ pair address bool (nat @some) - : big_map address (pair nat (map address nat)) ] */ ; + /* [ pair address bool nat : big_map address (pair nat (map address nat)) ] */ ; SWAP - /* [ big_map address (pair nat (map address nat)) - : pair address bool (nat @some) ] */ ; + /* [ big_map address (pair nat (map address nat)) : pair address bool nat ] */ ; PAIR - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + /* [ pair (big_map address (pair nat (map address nat))) address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) + /* [ pair (big_map address (pair nat (map address nat))) address bool nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ pair (big_map address (pair nat (map address nat))) address bool nat : pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP /* [ pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) + : pair (big_map address (pair nat (map address nat))) address bool nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) + : pair (big_map address (pair nat (map address nat))) address bool nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR /* [ big_map address (pair nat (map address nat)) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ address : big_map address (pair nat (map address nat)) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; GET /* [ option (pair nat (map address nat)) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF_NONE { CDR /* [ pair address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR /* [ nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PUSH nat 0 /* [ nat : nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP /* [ nat : nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR /* [ pair nat nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PUSH string "NotEnoughBalance" /* [ string : pair nat nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR /* [ pair string nat nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } ; + { /* [ pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ nat : @some pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ nat : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DIP { DUP /* [ pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ @some pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ pair nat (map address nat) : pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address address nat : @some pair nat (map address nat) + /* [ pair address address nat : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ nat : pair address address nat : @some pair nat (map address nat) + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ nat : pair address address nat : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address address nat : nat : @some pair nat (map address nat) + /* [ pair address address nat : nat : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair address nat : nat : @some pair nat (map address nat) + /* [ pair address nat : nat : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ nat : nat : @some pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ nat : nat : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ nat : nat : @some pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ nat : nat : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SUB - /* [ int : @some pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ int : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; ISNAT - /* [ option nat : @some pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ option nat : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF_NONE { CAR /* [ nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ nat : pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP /* [ pair address address nat : nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR /* [ pair address nat : nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR /* [ nat : nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR /* [ pair nat nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PUSH string "NotEnoughBalance" /* [ string : pair nat nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR /* [ pair string nat nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some nat : @some pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } ; + { /* [ nat : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CDR /* [ map address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ @some pair nat (map address nat) : map address nat - : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ pair nat (map address nat) : map address nat : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ nat : map address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ @some nat : nat : map address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ nat : nat : map address nat : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP /* [ map address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ @some nat : map address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ nat : map address nat : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair (nat @some) (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ pair (nat @some) (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ pair nat (map address nat) : pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address address nat : pair (nat @some) (map address nat) + /* [ pair address address nat : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair (nat @some) (map address nat) : pair (nat @some) (map address nat) + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ @some nat : pair (nat @some) (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ nat : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; INT - /* [ int : pair (nat @some) (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ int : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EQ - /* [ bool : pair (nat @some) (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ bool : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF { DUP - /* [ pair (nat @some) (map address nat) : pair (nat @some) (map address nat) + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ map address nat : pair (nat @some) (map address nat) - : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ map address nat : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SIZE - /* [ nat : pair (nat @some) (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ nat : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; INT - /* [ int : pair (nat @some) (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ int : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EQ - /* [ bool : pair (nat @some) (map address nat) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ bool : pair nat (map address nat) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF { DROP /* [ pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; NONE (pair nat (map address nat)) /* [ option (pair nat (map address nat)) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { SOME - /* [ option (pair (nat @some) (map address nat)) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } } + /* [ option (pair nat (map address nat)) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } } { SOME - /* [ option (pair (nat @some) (map address nat)) : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } ; + /* [ option (pair nat (map address nat)) : pair address address nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; SWAP /* [ pair address address nat : option (pair nat (map address nat)) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ address : option (pair nat (map address nat)) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DIP { DUP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair (big_map address (pair nat (map address nat))) address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ big_map address (pair nat (map address nat)) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ option (pair nat (map address nat)) : big_map address (pair nat (map address nat)) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ address : option (pair nat (map address nat)) : big_map address (pair nat (map address nat)) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; UPDATE /* [ big_map address (pair nat (map address nat)) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; - DIP { CDR /* [ pair address bool (nat @some) ] */ } - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) - : pair address bool (nat @some) ] */ ; + /* [ pair (big_map address (pair nat (map address nat))) address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; + DIP { CDR /* [ pair address bool nat ] */ } + /* [ pair (big_map address (pair nat (map address nat))) address bool nat + : pair address bool nat ] */ ; CAR - /* [ big_map address (pair nat (map address nat)) - : pair address bool (nat @some) ] */ } - /* [ big_map address (pair nat (map address nat)) - : big_map address (pair nat (map address nat)) - : pair address bool (nat @some) ] */ ; - DIP { DROP /* [ pair address bool (nat @some) ] */ } + /* [ big_map address (pair nat (map address nat)) : pair address bool nat ] */ } /* [ big_map address (pair nat (map address nat)) - : pair address bool (nat @some) ] */ ; + : big_map address (pair nat (map address nat)) : pair address bool nat ] */ ; + DIP { DROP /* [ pair address bool nat ] */ } + /* [ big_map address (pair nat (map address nat)) : pair address bool nat ] */ ; PAIR - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DUP /* [ pair address address nat : pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CDR /* [ pair address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR /* [ nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; NEG /* [ int - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair (big_map address (pair nat (map address nat))) address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ @some nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ int : @some nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ int : nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; ADD /* [ int - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; ISNAT /* [ option nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF_NONE { PUSH string "Internal: Negative total supply" /* [ string - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } ; + { /* [ nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DUP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair (big_map address (pair nat (map address nat))) address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ @some nat : pair address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ nat : pair address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair address bool (nat @some) : pair address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair address bool nat : pair address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR /* [ address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ pair address bool (nat @some) : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ pair address bool nat : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair bool (nat @some) : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ @some nat : pair bool (nat @some) : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair bool nat : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ nat : pair bool nat : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair bool (nat @some) : pair bool (nat @some) : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair bool nat : pair bool nat : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR /* [ bool : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ pair bool (nat @some) : bool : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ pair bool nat : bool : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ @some nat : bool : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ @some nat : @some nat : bool : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ nat : bool : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ nat : nat : bool : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP /* [ bool : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } - /* [ @some nat : bool : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } + /* [ nat : bool : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ bool : @some nat : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ bool : nat : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair bool (nat @some) : address - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair bool nat : address + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ address : pair bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ address : pair bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair (big_map address (pair nat (map address nat))) address bool nat + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR /* [ big_map address (pair nat (map address nat)) ] */ } - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) + /* [ pair (big_map address (pair nat (map address nat))) address bool nat : big_map address (pair nat (map address nat)) ] */ ; CDR - /* [ pair address bool (nat @some) - : big_map address (pair nat (map address nat)) ] */ } - /* [ pair address bool (nat @some) : pair address bool (nat @some) + /* [ pair address bool nat : big_map address (pair nat (map address nat)) ] */ } + /* [ pair address bool nat : pair address bool nat : big_map address (pair nat (map address nat)) ] */ ; DIP { DROP /* [ big_map address (pair nat (map address nat)) ] */ } - /* [ pair address bool (nat @some) - : big_map address (pair nat (map address nat)) ] */ ; + /* [ pair address bool nat : big_map address (pair nat (map address nat)) ] */ ; SWAP - /* [ big_map address (pair nat (map address nat)) - : pair address bool (nat @some) ] */ ; + /* [ big_map address (pair nat (map address nat)) : pair address bool nat ] */ ; PAIR - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair address address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DROP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } ; + /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; NIL operation /* [ list operation : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR /* [ pair (list operation) (big_map address (pair nat (map address nat))) address bool nat ] */ } { SENDER - /* [ @sender address : pair address nat + /* [ address : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair (address @sender) address nat + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat @@ -1218,307 +1194,297 @@ Gas remaining: 1039229.258 units remaining FAILWITH /* [] */ } { /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ } } - /* [ pair (address @sender) address nat + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair (address @sender) address nat + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP /* [ pair (big_map address (pair nat (map address nat))) address bool nat - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair (address @sender) address nat : pair (address @sender) address nat + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair (big_map address (pair nat (map address nat))) address bool nat - : pair (address @sender) address nat : pair (address @sender) address nat + : pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (address @sender) address nat + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DUP - /* [ pair (address @sender) address nat : pair (address @sender) address nat + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR - /* [ @sender address + /* [ address : pair (big_map address (pair nat (map address nat))) address bool nat - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR - /* [ big_map address (pair nat (map address nat)) - : pair (address @sender) address nat + /* [ big_map address (pair nat (map address nat)) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @sender address : big_map address (pair nat (map address nat)) - : pair (address @sender) address nat + /* [ address : big_map address (pair nat (map address nat)) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; GET - /* [ option (pair nat (map address nat)) : pair (address @sender) address nat + /* [ option (pair nat (map address nat)) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF_NONE { EMPTY_MAP address nat - /* [ map address nat : pair (address @sender) address nat + /* [ map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { CDR - /* [ map address nat : pair (address @sender) address nat + /* [ map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } } - /* [ pair (address @sender) address nat : map address nat - : pair (address @sender) address nat + /* [ pair address address nat : map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair address nat : map address nat : pair (address @sender) address nat + /* [ pair address nat : map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ address : map address nat : pair (address @sender) address nat + /* [ address : map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; GET - /* [ option nat : pair (address @sender) address nat + /* [ option nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF_NONE { PUSH nat 0 - /* [ nat : pair (address @sender) address nat + /* [ nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - { /* [ @some nat : pair (address @sender) address nat + { /* [ nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DUP - /* [ nat : nat : pair (address @sender) address nat + /* [ nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; INT - /* [ int : nat : pair (address @sender) address nat + /* [ int : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EQ - /* [ bool : nat : pair (address @sender) address nat + /* [ bool : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF { DROP - /* [ pair (address @sender) address nat + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { DIP { DUP - /* [ pair (address @sender) address nat : pair (address @sender) address nat + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : pair (address @sender) address nat - : pair (address @sender) address nat + /* [ nat : pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (address @sender) address nat : nat - : pair (address @sender) address nat + /* [ pair address address nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ pair address nat : nat : pair (address @sender) address nat + /* [ pair address nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ nat : nat : pair (address @sender) address nat + /* [ nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; INT - /* [ int : nat : pair (address @sender) address nat + /* [ int : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EQ - /* [ bool : nat : pair (address @sender) address nat + /* [ bool : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF { DROP - /* [ pair (address @sender) address nat + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { PUSH string "UnsafeAllowanceChange" - /* [ string : nat : pair (address @sender) address nat + /* [ string : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair string nat : pair (address @sender) address nat + /* [ pair string nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } } ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair (address @sender) address nat + /* [ pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP /* [ pair (big_map address (pair nat (map address nat))) address bool nat - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair (address @sender) address nat : pair (address @sender) address nat + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ @sender address : pair (address @sender) address nat + /* [ address : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair (big_map address (pair nat (map address nat))) address bool nat - : @sender address : pair (address @sender) address nat + : address : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ @sender address + /* [ address : pair (big_map address (pair nat (map address nat))) address bool nat - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR - /* [ big_map address (pair nat (map address nat)) - : pair (address @sender) address nat + /* [ big_map address (pair nat (map address nat)) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @sender address : big_map address (pair nat (map address nat)) - : pair (address @sender) address nat + /* [ address : big_map address (pair nat (map address nat)) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; GET - /* [ option (pair nat (map address nat)) : pair (address @sender) address nat + /* [ option (pair nat (map address nat)) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF_NONE { PUSH nat 0 - /* [ nat : pair (address @sender) address nat + /* [ nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { EMPTY_MAP address nat - /* [ map address nat : pair (address @sender) address nat + /* [ map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : map address nat : pair (address @sender) address nat + /* [ nat : map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair nat (map address nat) : pair (address @sender) address nat + /* [ pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EMPTY_MAP address nat - /* [ map address nat : pair nat (map address nat) - : pair (address @sender) address nat + /* [ map address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) - : pair (address @sender) address nat + /* [ pair nat (map address nat) : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ map address nat : @some pair nat (map address nat) - : pair (address @sender) address nat + /* [ map address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DIP { DUP - /* [ pair (address @sender) address nat : pair (address @sender) address nat + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair nat (map address nat) : pair (address @sender) address nat - : pair (address @sender) address nat + /* [ pair nat (map address nat) : pair address address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (address @sender) address nat : pair nat (map address nat) - : pair (address @sender) address nat + /* [ pair address address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ map address nat : pair (address @sender) address nat - : pair nat (map address nat) : pair (address @sender) address nat + /* [ map address nat : pair address address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (address @sender) address nat : map address nat - : pair nat (map address nat) : pair (address @sender) address nat + /* [ pair address address nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR /* [ pair address nat : map address nat : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR /* [ nat : map address nat : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DUP /* [ nat : nat : map address nat : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; INT /* [ int : nat : map address nat : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EQ /* [ bool : nat : map address nat : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF { DROP - /* [ map address nat : pair nat (map address nat) - : pair (address @sender) address nat + /* [ map address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; NONE nat /* [ option nat : map address nat : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { SOME /* [ option nat : map address nat : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DIP { DIP { DUP - /* [ pair (address @sender) address nat : pair (address @sender) address nat + /* [ pair address address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair nat (map address nat) : pair (address @sender) address nat - : pair (address @sender) address nat + /* [ pair nat (map address nat) : pair address address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (address @sender) address nat : pair nat (map address nat) - : pair (address @sender) address nat + /* [ pair address address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ map address nat : pair (address @sender) address nat - : pair nat (map address nat) : pair (address @sender) address nat + /* [ map address nat : pair address address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (address @sender) address nat : map address nat - : pair nat (map address nat) : pair (address @sender) address nat + /* [ pair address address nat : map address nat : pair nat (map address nat) + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ option nat : pair (address @sender) address nat : map address nat - : pair nat (map address nat) : pair (address @sender) address nat + /* [ option nat : pair address address nat : map address nat + : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (address @sender) address nat : option nat : map address nat - : pair nat (map address nat) : pair (address @sender) address nat + /* [ pair address address nat : option nat : map address nat + : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR /* [ pair address nat : option nat : map address nat - : pair nat (map address nat) : pair (address @sender) address nat + : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ address : option nat : map address nat : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; UPDATE - /* [ map address nat : pair nat (map address nat) - : pair (address @sender) address nat + /* [ map address nat : pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair nat (map address nat) : pair nat (map address nat) - : pair (address @sender) address nat + : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CAR - /* [ nat : pair (address @sender) address nat + /* [ nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair nat (map address nat) : nat : pair (address @sender) address nat + /* [ pair nat (map address nat) : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ map address nat : nat : pair (address @sender) address nat + /* [ map address nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ map address nat : map address nat : nat - : pair (address @sender) address nat + /* [ map address nat : map address nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP - /* [ nat : pair (address @sender) address nat + /* [ nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ map address nat : nat : pair (address @sender) address nat + /* [ map address nat : nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ nat : map address nat : pair (address @sender) address nat + /* [ nat : map address nat : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair nat (map address nat) : pair (address @sender) address nat + /* [ pair nat (map address nat) : pair address address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair (address @sender) address nat : pair nat (map address nat) + /* [ pair address address nat : pair nat (map address nat) : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ @sender address : pair nat (map address nat) + /* [ address : pair nat (map address nat) : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { SOME /* [ option (pair nat (map address nat)) : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @sender address : option (pair nat (map address nat)) + /* [ address : option (pair nat (map address nat)) : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat @@ -1529,7 +1495,7 @@ Gas remaining: 1039229.258 units remaining /* [ option (pair nat (map address nat)) : big_map address (pair nat (map address nat)) : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @sender address : option (pair nat (map address nat)) + /* [ address : option (pair nat (map address nat)) : big_map address (pair nat (map address nat)) : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; UPDATE @@ -1656,12 +1622,12 @@ Gas remaining: 1039229.258 units remaining 0 /* [ nat : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - { /* [ @some nat : contract nat + { /* [ nat : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { AMOUNT - /* [ @amount mutez : contract nat + /* [ mutez : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : @amount mutez : contract nat + /* [ nat : mutez : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; TRANSFER_TOKENS /* [ operation @@ -1742,9 +1708,9 @@ Gas remaining: 1039229.258 units remaining /* [ nat : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { AMOUNT - /* [ @amount mutez : contract nat + /* [ mutez : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : @amount mutez : contract nat + /* [ nat : mutez : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; TRANSFER_TOKENS /* [ operation @@ -1802,9 +1768,9 @@ Gas remaining: 1039229.258 units remaining /* [ nat : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { AMOUNT - /* [ @amount mutez : contract nat + /* [ mutez : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : @amount mutez : contract nat + /* [ nat : mutez : contract nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; TRANSFER_TOKENS /* [ operation @@ -1832,7 +1798,7 @@ Gas remaining: 1039229.258 units remaining /* [ address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SENDER - /* [ @sender address : address + /* [ address : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; COMPARE /* [ int @@ -1934,7 +1900,7 @@ Gas remaining: 1039229.258 units remaining /* [ address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SENDER - /* [ @sender address : address + /* [ address : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; COMPARE /* [ int @@ -2047,9 +2013,9 @@ Gas remaining: 1039229.258 units remaining /* [ address : contract address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { AMOUNT - /* [ @amount mutez : contract address + /* [ mutez : contract address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ address : @amount mutez : contract address + /* [ address : mutez : contract address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; TRANSFER_TOKENS /* [ operation @@ -2076,7 +2042,7 @@ Gas remaining: 1039229.258 units remaining /* [ address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SENDER - /* [ @sender address : address + /* [ address : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; COMPARE /* [ int @@ -2171,34 +2137,32 @@ Gas remaining: 1039229.258 units remaining { DIP { DUP /* [ pair address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some pair nat (map address nat) : pair address nat : pair address nat + /* [ pair nat (map address nat) : pair address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address nat : @some pair nat (map address nat) : pair address nat + /* [ pair address nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ nat : @some pair nat (map address nat) : pair address nat + /* [ nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) - : pair address nat + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ nat : @some pair nat (map address nat) : pair address nat + /* [ nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : nat : @some pair nat (map address nat) : pair address nat + /* [ nat : nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; ADD - /* [ nat : @some pair nat (map address nat) : pair address nat + /* [ nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) - : pair address nat + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CDR /* [ map address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some pair nat (map address nat) : map address nat : pair address nat + /* [ pair nat (map address nat) : map address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ nat : map address nat : pair address nat @@ -2292,7 +2256,7 @@ Gas remaining: 1039229.258 units remaining : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some nat + { /* [ nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat @@ -2300,7 +2264,7 @@ Gas remaining: 1039229.258 units remaining CDR /* [ pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : pair address bool nat + /* [ nat : pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair address bool nat : pair address bool nat @@ -2313,7 +2277,7 @@ Gas remaining: 1039229.258 units remaining CDR /* [ pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : pair bool nat : address + /* [ nat : pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair bool nat : pair bool nat : address @@ -2326,24 +2290,24 @@ Gas remaining: 1039229.258 units remaining CDR /* [ nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : nat : bool : address + /* [ nat : nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP /* [ bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : bool : address + /* [ nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ bool : @some nat : address + /* [ bool : nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair bool (nat @some) : address + /* [ pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ address : pair bool (nat @some) + /* [ address : pair bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair address bool (nat @some) + /* [ pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat @@ -2353,29 +2317,23 @@ Gas remaining: 1039229.258 units remaining : big_map address (pair nat (map address nat)) ] */ ; CDR /* [ pair address bool nat : big_map address (pair nat (map address nat)) ] */ } - /* [ pair address bool (nat @some) : pair address bool nat + /* [ pair address bool nat : pair address bool nat : big_map address (pair nat (map address nat)) ] */ ; DIP { DROP /* [ big_map address (pair nat (map address nat)) ] */ } - /* [ pair address bool (nat @some) - : big_map address (pair nat (map address nat)) ] */ ; + /* [ pair address bool nat : big_map address (pair nat (map address nat)) ] */ ; SWAP - /* [ big_map address (pair nat (map address nat)) - : pair address bool (nat @some) ] */ ; + /* [ big_map address (pair nat (map address nat)) : pair address bool nat ] */ ; PAIR - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DROP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; NIL operation /* [ list operation - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair (list operation) - (big_map address (pair nat (map address nat))) - address - bool - (nat @some) ] */ } + /* [ pair (list operation) (big_map address (pair nat (map address nat))) address bool nat ] */ } { DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; @@ -2386,7 +2344,7 @@ Gas remaining: 1039229.258 units remaining /* [ address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SENDER - /* [ @sender address : address + /* [ address : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; COMPARE /* [ int @@ -2466,41 +2424,38 @@ Gas remaining: 1039229.258 units remaining : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some pair nat (map address nat) : pair address nat + { /* [ pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) - : pair address nat + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ nat : @some pair nat (map address nat) : pair address nat + /* [ nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DIP { DUP /* [ pair address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some pair nat (map address nat) : pair address nat : pair address nat + /* [ pair nat (map address nat) : pair address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address nat : @some pair nat (map address nat) : pair address nat + /* [ pair address nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ nat : pair address nat : @some pair nat (map address nat) - : pair address nat + /* [ nat : pair address nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address nat : nat : @some pair nat (map address nat) - : pair address nat + /* [ pair address nat : nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ nat : nat : @some pair nat (map address nat) : pair address nat + /* [ nat : nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ nat : nat : @some pair nat (map address nat) : pair address nat + /* [ nat : nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SUB - /* [ int : @some pair nat (map address nat) : pair address nat + /* [ int : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; ISNAT - /* [ option nat : @some pair nat (map address nat) : pair address nat + /* [ option nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF_NONE { CAR @@ -2529,66 +2484,63 @@ Gas remaining: 1039229.258 units remaining : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some nat : @some pair nat (map address nat) : pair address nat + { /* [ nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DUP - /* [ @some pair nat (map address nat) : @some pair nat (map address nat) - : pair address nat + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { CDR /* [ map address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some pair nat (map address nat) : map address nat : pair address nat + /* [ pair nat (map address nat) : map address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR /* [ nat : map address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : nat : map address nat : pair address nat + /* [ nat : nat : map address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP /* [ map address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : map address nat : pair address nat + /* [ nat : map address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair (nat @some) (map address nat) : pair address nat + /* [ pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ pair (nat @some) (map address nat) : pair address nat : pair address nat + /* [ pair nat (map address nat) : pair address nat : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ pair address nat : pair (nat @some) (map address nat) : pair address nat + /* [ pair address nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP - /* [ pair (nat @some) (map address nat) : pair (nat @some) (map address nat) - : pair address nat + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CAR - /* [ @some nat : pair (nat @some) (map address nat) : pair address nat + /* [ nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; INT - /* [ int : pair (nat @some) (map address nat) : pair address nat + /* [ int : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EQ - /* [ bool : pair (nat @some) (map address nat) : pair address nat + /* [ bool : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF { DUP - /* [ pair (nat @some) (map address nat) : pair (nat @some) (map address nat) - : pair address nat + /* [ pair nat (map address nat) : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; CDR - /* [ map address nat : pair (nat @some) (map address nat) : pair address nat + /* [ map address nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SIZE - /* [ nat : pair (nat @some) (map address nat) : pair address nat + /* [ nat : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; INT - /* [ int : pair (nat @some) (map address nat) : pair address nat + /* [ int : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; EQ - /* [ bool : pair (nat @some) (map address nat) : pair address nat + /* [ bool : pair nat (map address nat) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; IF { DROP /* [ pair address nat @@ -2597,10 +2549,10 @@ Gas remaining: 1039229.258 units remaining /* [ option (pair nat (map address nat)) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } { SOME - /* [ option (pair (nat @some) (map address nat)) : pair address nat + /* [ option (pair nat (map address nat)) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } } { SOME - /* [ option (pair (nat @some) (map address nat)) : pair address nat + /* [ option (pair nat (map address nat)) : pair address nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; SWAP /* [ pair address nat : option (pair nat (map address nat)) @@ -2675,7 +2627,7 @@ Gas remaining: 1039229.258 units remaining : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; FAILWITH /* [] */ } - { /* [ @some nat + { /* [ nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat @@ -2683,7 +2635,7 @@ Gas remaining: 1039229.258 units remaining CDR /* [ pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : pair address bool nat + /* [ nat : pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair address bool nat : pair address bool nat @@ -2696,7 +2648,7 @@ Gas remaining: 1039229.258 units remaining CDR /* [ pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : pair bool nat : address + /* [ nat : pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair bool nat : pair bool nat : address @@ -2709,24 +2661,24 @@ Gas remaining: 1039229.258 units remaining CDR /* [ nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : nat : bool : address + /* [ nat : nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DROP /* [ bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ } - /* [ @some nat : bool : address + /* [ nat : bool : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ bool : @some nat : address + /* [ bool : nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair bool (nat @some) : address + /* [ pair bool nat : address : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; SWAP - /* [ address : pair bool (nat @some) + /* [ address : pair bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair address bool (nat @some) + /* [ pair address bool nat : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DIP { DUP /* [ pair (big_map address (pair nat (map address nat))) address bool nat @@ -2736,26 +2688,20 @@ Gas remaining: 1039229.258 units remaining : big_map address (pair nat (map address nat)) ] */ ; CDR /* [ pair address bool nat : big_map address (pair nat (map address nat)) ] */ } - /* [ pair address bool (nat @some) : pair address bool nat + /* [ pair address bool nat : pair address bool nat : big_map address (pair nat (map address nat)) ] */ ; DIP { DROP /* [ big_map address (pair nat (map address nat)) ] */ } - /* [ pair address bool (nat @some) - : big_map address (pair nat (map address nat)) ] */ ; + /* [ pair address bool nat : big_map address (pair nat (map address nat)) ] */ ; SWAP - /* [ big_map address (pair nat (map address nat)) - : pair address bool (nat @some) ] */ ; + /* [ big_map address (pair nat (map address nat)) : pair address bool nat ] */ ; PAIR - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ } + /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ } /* [ pair address nat - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; DROP - /* [ pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + /* [ pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; NIL operation /* [ list operation - : pair (big_map address (pair nat (map address nat))) address bool (nat @some) ] */ ; + : pair (big_map address (pair nat (map address nat))) address bool nat ] */ ; PAIR - /* [ pair (list operation) - (big_map address (pair nat (map address nat))) - address - bool - (nat @some) ] */ } } } } } } + /* [ pair (list operation) (big_map address (pair nat (map address nat))) address bool nat ] */ } } } } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--generic_multisig.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--generic_multisig.tz].out index 7abc822c7f..d04a4b6064 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--generic_multisig.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--generic_multisig.tz].out @@ -13,7 +13,7 @@ Gas remaining: 1039928.421 units remaining (list %sigs (option signature)))) ; storage (pair (nat %stored_counter) (pair (nat %threshold) (list %keys key))) ; code { UNPAIR - /* [ @parameter or (unit %default) + /* [ or (unit %default) (pair %main (pair :payload (nat %counter) @@ -21,69 +21,68 @@ Gas remaining: 1039928.421 units remaining (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)))) (list %sigs (option signature))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; IF_LEFT { DROP - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; NIL operation /* [ list operation - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; PAIR - /* [ pair (list operation) - (pair @storage (nat %stored_counter) (nat %threshold) (list %keys key)) ] */ } + /* [ pair (list operation) (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } { PUSH mutez 0 /* [ mutez - : @parameter.main pair (pair :payload + : pair (pair :payload (nat %counter) (or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)))) (list %sigs (option signature)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; AMOUNT - /* [ @amount mutez : mutez - : @parameter.main pair (pair :payload + /* [ mutez : mutez + : pair (pair :payload (nat %counter) (or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)))) (list %sigs (option signature)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ASSERT_CMPEQ ; SWAP - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @parameter.main pair (pair :payload + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) + : pair (pair :payload (nat %counter) (or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)))) (list %sigs (option signature)) ] */ ; DUP - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @parameter.main pair (pair :payload + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) + : pair (pair :payload (nat %counter) (or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)))) (list %sigs (option signature)) ] */ ; DIP { SWAP - /* [ @parameter.main pair (pair :payload + /* [ pair (pair :payload (nat %counter) (or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)))) (list %sigs (option signature)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @parameter.main pair (pair :payload + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) + : pair (pair :payload (nat %counter) (or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)))) (list %sigs (option signature)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { UNPAIR /* [ pair :payload (nat %counter) @@ -91,7 +90,7 @@ Gas remaining: 1039928.421 units remaining (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DUP /* [ pair :payload (nat %counter) @@ -104,9 +103,9 @@ Gas remaining: 1039928.421 units remaining (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SELF - /* [ @self contract unit + /* [ contract unit : pair :payload (nat %counter) (or :action @@ -118,9 +117,9 @@ Gas remaining: 1039928.421 units remaining (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ADDRESS - /* [ @self.address address + /* [ address : pair :payload (nat %counter) (or :action @@ -132,9 +131,9 @@ Gas remaining: 1039928.421 units remaining (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; CHAIN_ID - /* [ chain_id : @self.address address + /* [ chain_id : address : pair :payload (nat %counter) (or :action @@ -146,9 +145,9 @@ Gas remaining: 1039928.421 units remaining (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; PAIR - /* [ pair chain_id (address @self.address) + /* [ pair chain_id address : pair :payload (nat %counter) (or :action @@ -160,9 +159,9 @@ Gas remaining: 1039928.421 units remaining (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; PAIR - /* [ pair (pair chain_id (address @self.address)) + /* [ pair (pair chain_id address) (pair :payload (nat %counter) (or :action @@ -174,265 +173,260 @@ Gas remaining: 1039928.421 units remaining (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; PACK - /* [ @packed bytes + /* [ bytes : pair :payload (nat %counter) (or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { UNPAIR @counter - /* [ @counter nat + /* [ nat : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { SWAP /* [ list (option signature) : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @counter nat : list (option signature) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ nat : list (option signature) : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @packed bytes : @counter nat : list (option signature) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ bytes : nat : list (option signature) : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ @counter nat : @packed bytes : list (option signature) + /* [ nat : bytes : list (option signature) : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @counter nat : @packed bytes : list (option signature) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) : nat : bytes + : list (option signature) : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; UNPAIR @stored_counter - /* [ @stored_counter nat : pair (nat %threshold) (list %keys key) : @counter nat - : @packed bytes : list (option signature) + /* [ nat : pair (nat %threshold) (list %keys key) : nat : bytes + : list (option signature) : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { SWAP - /* [ @counter nat : pair (nat %threshold) (list %keys key) : @packed bytes + /* [ nat : pair (nat %threshold) (list %keys key) : bytes : list (option signature) : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @stored_counter nat : @counter nat : pair (nat %threshold) (list %keys key) - : @packed bytes : list (option signature) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ nat : nat : pair (nat %threshold) (list %keys key) : bytes + : list (option signature) : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ASSERT_CMPEQ ; DIP { SWAP - /* [ list (option signature) : @packed bytes + /* [ list (option signature) : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ pair (nat %threshold) (list %keys key) : list (option signature) - : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ pair (nat %threshold) (list %keys key) : list (option signature) : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; UNPAIR @threshold @keys - /* [ @threshold nat : @keys list key : list (option signature) : @packed bytes + /* [ nat : list key : list (option signature) : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { PUSH @valid nat 0 - /* [ @valid nat : @keys list key : list (option signature) : @packed bytes + /* [ nat : list key : list (option signature) : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ @keys list key : @valid nat : list (option signature) : @packed bytes + /* [ list key : nat : list (option signature) : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ITER { DIP { SWAP - /* [ list (option signature) : @valid nat : @packed bytes + /* [ list (option signature) : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @keys.elt key : list (option signature) : @valid nat : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ key : list (option signature) : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ list (option signature) : @keys.elt key : @valid nat : @packed bytes + /* [ list (option signature) : key : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; IF_CONS { IF_SOME { SWAP - /* [ @tl list (option signature) : @hd.some signature : @keys.elt key - : @valid nat : @packed bytes + /* [ list (option signature) : signature : key : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { SWAP - /* [ @keys.elt key : @hd.some signature : @valid nat : @packed bytes + /* [ key : signature : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIIP { DUUP - /* [ bytes : @valid nat : @packed bytes + /* [ bytes : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @keys.elt key : @hd.some signature : bytes : @valid nat : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ key : signature : bytes : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; { DUUUP - /* [ bytes : @keys.elt key : @hd.some signature : bytes : @valid nat - : @packed bytes + /* [ bytes : key : signature : bytes : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { CHECK_SIGNATURE - /* [ bool : @valid nat : @packed bytes + /* [ bool : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ bytes : bool : @valid nat : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ bytes : bool : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ bool : bytes : @valid nat : @packed bytes + /* [ bool : bytes : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; IF { DROP - /* [ @valid nat : @packed bytes + /* [ nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } { FAILWITH /* [] */ } } ; PUSH nat 1 - /* [ nat : @valid nat : @packed bytes + /* [ nat : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ADD @valid - /* [ @valid nat : @packed bytes + /* [ nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @tl list (option signature) : @valid nat : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ list (option signature) : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } { SWAP - /* [ @keys.elt key : @tl list (option signature) : @valid nat : @packed bytes + /* [ key : list (option signature) : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DROP - /* [ @tl list (option signature) : @valid nat : @packed bytes + /* [ list (option signature) : nat : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } } + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } } { FAIL } ; SWAP - /* [ @valid nat : @tl list (option signature) : @packed bytes + /* [ nat : list (option signature) : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @valid nat : list (option signature) : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ nat : list (option signature) : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @threshold nat : @valid nat : list (option signature) : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ nat : nat : list (option signature) : bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ASSERT_CMPLE ; IF_CONS { FAIL } - { /* [ @packed bytes + { /* [ bytes : or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } ; DROP /* [ or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { UNPAIR /* [ nat : pair (nat %threshold) (list %keys key) ] */ ; PUSH nat 1 /* [ nat : nat : pair (nat %threshold) (list %keys key) ] */ ; ADD @new_counter - /* [ @new_counter nat : pair (nat %threshold) (list %keys key) ] */ ; + /* [ nat : pair (nat %threshold) (list %keys key) ] */ ; PAIR - /* [ pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ } + /* [ pair nat (nat %threshold) (list %keys key) ] */ } /* [ or :action (lambda %operation unit (list operation)) (pair %change_keys (nat %threshold) (list %keys key)) - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + : pair nat (nat %threshold) (list %keys key) ] */ ; IF_LEFT { UNIT - /* [ unit : @operation lambda unit (list operation) - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + /* [ unit : lambda unit (list operation) + : pair nat (nat %threshold) (list %keys key) ] */ ; EXEC - /* [ list operation - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ } - { DIP { CAR /* [ @new_counter nat ] */ } - /* [ @change_keys pair (nat %threshold) (list %keys key) : @new_counter nat ] */ ; + /* [ list operation : pair nat (nat %threshold) (list %keys key) ] */ } + { DIP { CAR /* [ nat ] */ } + /* [ pair (nat %threshold) (list %keys key) : nat ] */ ; SWAP - /* [ @new_counter nat : @change_keys pair (nat %threshold) (list %keys key) ] */ ; + /* [ nat : pair (nat %threshold) (list %keys key) ] */ ; PAIR - /* [ pair (nat @new_counter) (pair @change_keys (nat %threshold) (list %keys key)) ] */ ; + /* [ pair nat (nat %threshold) (list %keys key) ] */ ; NIL operation - /* [ list operation - : pair (nat @new_counter) (pair @change_keys (nat %threshold) (list %keys key)) ] */ } ; + /* [ list operation : pair nat (nat %threshold) (list %keys key) ] */ } ; PAIR - /* [ pair (list operation) (nat @new_counter) (nat %threshold) (list %keys key) ] */ } } } + /* [ pair (list operation) nat (nat %threshold) (list %keys key) ] */ } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--groth16.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--groth16.tz].out index 9c4775b883..8c9ddb0e95 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--groth16.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--groth16.tz].out @@ -7,7 +7,7 @@ Gas remaining: 1039478.027 units remaining (pair (pair (bls12_381_fr %input_x) (bls12_381_fr %input_y)) (pair (pair (bls12_381_g1 %proof_a) (bls12_381_g2 %proof_b)) (bls12_381_g1 %proof_c))) ; code { CAR - /* [ @parameter pair (pair (bls12_381_fr %input_x) (bls12_381_fr %input_y)) + /* [ pair (pair (bls12_381_fr %input_x) (bls12_381_fr %input_y)) (pair (bls12_381_g1 %proof_a) (bls12_381_g2 %proof_b)) (bls12_381_g1 %proof_c) ] */ ; UNPPAIPPAIIR ; @@ -15,213 +15,176 @@ Gas remaining: 1039478.027 units remaining { PUSH @vk_gamma_c bls12_381_g1 0x063bd6e11e2fcaac1dd8cf68c6b1925a73c3c583e298ed37c41c3715115cf96358a42dbe85a0228cbfd8a6c8a8c54cd015b5ae2860d1cc47f84698d951f14d9448d03f04df2ca0ffe609a2067d6f1a892163a5e05e541279134cae52b1f23c6b - /* [ @vk_gamma_c bls12_381_g1 ] */ ; + /* [ bls12_381_g1 ] */ ; PUSH @vk_gamma_b bls12_381_g1 0x11f5b5db1da7f1f26217edcce2219d016003af6e5b4d1ca3ad0ff477e354717e658bf16beddc4f4fb76ce39d3327811e0601709dc7ed98c70463cfa1ba33f99851b52b51d1a042d7425bec6277287441c399973632445ce61e7fdd63a70f0f60 - /* [ @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ bls12_381_g1 : bls12_381_g1 ] */ ; PUSH @vk_gamma_a bls12_381_g1 0x03535a322edd23c55b0ca025e54d450d95df49cc9ee873dcd500e8219f4771264bf159b3b105954d85c7bea8ffe1ea0400c767fe58989366c2837fba76f1b4f46644f19be8ad01e22d894b649e427e0d7e04677ee3919d982f0f96bb0a2f0c34 - /* [ @vk_gamma_a bls12_381_g1 : @vk_gamma_b bls12_381_g1 - : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; PUSH @vk_delta bls12_381_g2 0x10c6d5cdca84fc3c7f33061add256f48e0ab03a697832b338901898b650419eb6f334b28153fb73ad2ecd1cd2ac67053161e9f46cfbdaf7b1132a4654a55162850249650f9b873ac3113fa8c02ef1cd1df481480a4457f351d28f4da89d19fa405c3d77f686dc9a24d2681c9184bf2b091f62e6b24df651a3da8bd7067e14e7908fb02f8955b84af5081614cb5bc49b416d9edf914fc608c441b3f2eb8b6043736ddb9d4e4d62334a23b5625c14ef3e1a7e99258386310221b22d83a5eac035c - /* [ @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; PUSH @vk_gamma bls12_381_g2 0x16dcbd28bff336c2649c7dd1d8391ac7ce6f7ef0124a9db7a4a485a124199eded7ce963c1c18aee1eca9994fe06f192c00e0fb653e1fc737d8d0e2f2f91424ca01f6e6e7c5c04f1c43db03a2900cf6b942aaed6ae77daea6200e094b78c38d770028d531a9d1a118ec23d5a39be7aa6dc28f778da1988856d2235c4a35e81fa48380f050d4baf7ebd7b5e058bf294da916afc34562f097c02a8fcbcf62a00de44f8ae6cfa7acb8ad254e3aeea8b2af12f65b7ee0f54855cb9bd432f3436f238f - /* [ @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ bls12_381_g2 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; PUSH @vk_b bls12_381_g2 0x0e9383f98df2c6e8b5b45f3876c3384596a0cdbc41349f83c4380bf463a050cdbd1d5057aa483a642e66486d1ed7362a1869e423c3877095e215c17282b11108601166f928043254bbce603bf86f4cec9f2e97e9660e98e4f5bce9b2b3bbacb40946b702ccfcc9a31e0bfc1543a2128edcc95807740a2310ae25eb47b935648e392c58dfae5b5e899d3b970d64e4e9e209741ea8bfedcfcc16b3fd890ff02c788ec0943feaaf01bbb354317acb85fcfd611133e4e563d53ca4e0f50e21cf2e7e - /* [ @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 - : @vk_gamma_a bls12_381_g1 : @vk_gamma_b bls12_381_g1 - : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g1 ] */ ; PUSH @vk_a bls12_381_g1 0x1040577c7d349e332735fc947c868c24a665f812f5dc1e7f60e65e2df80be2267a4b7341ed2287285fccd517acd96d910abba947235c364553aa6445f2f2b3a1a728225a330286ba5197ab87f0edc560d89fc7b623812f7d0d633341726e597a - /* [ @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ } + /* [ bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 + : bls12_381_g1 : bls12_381_g1 ] */ } /* [ bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 + : bls12_381_g1 : bls12_381_g1 ] */ ; DUP /* [ bls12_381_fr : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 - : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; DUP 12 /* [ bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; MUL /* [ bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 - : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; DUP 3 /* [ bls12_381_fr : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; DUP 14 /* [ bls12_381_g1 : bls12_381_fr : bls12_381_g1 : bls12_381_fr : bls12_381_fr - : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 - : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 - : @vk_gamma_a bls12_381_g1 : @vk_gamma_b bls12_381_g1 - : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 + : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; MUL /* [ bls12_381_g1 : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; ADD /* [ bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 - : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; DUP 11 /* [ bls12_381_g1 : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; ADD @vk_x - /* [ @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; NIL (pair bls12_381_g1 bls12_381_g2) - /* [ list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 : bls12_381_fr - : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr + : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g1 ] */ ; DUP 9 - /* [ bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 + /* [ bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 + : bls12_381_g1 : bls12_381_g1 ] */ ; DUP 9 /* [ bls12_381_g1 : bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; NEG /* [ bls12_381_g1 : bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; PAIR /* [ pair bls12_381_g1 bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; CONS - /* [ list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 : bls12_381_fr - : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr + : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g1 ] */ ; DUP 11 - /* [ bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 + /* [ bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 + : bls12_381_g1 : bls12_381_g1 ] */ ; DUP 8 /* [ bls12_381_g1 : bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; NEG /* [ bls12_381_g1 : bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; PAIR /* [ pair bls12_381_g1 bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; CONS - /* [ list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 : bls12_381_fr - : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr + : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g1 ] */ ; DUP 10 - /* [ bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 + /* [ bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 + : bls12_381_g1 : bls12_381_g1 ] */ ; DUP 3 /* [ bls12_381_g1 : bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; NEG /* [ bls12_381_g1 : bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; PAIR /* [ pair bls12_381_g1 bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; CONS - /* [ list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 : bls12_381_fr - : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr + : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g1 ] */ ; DUP 6 - /* [ bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 + /* [ bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 + : bls12_381_g1 : bls12_381_g1 ] */ ; DUP 6 /* [ bls12_381_g1 : bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; PAIR /* [ pair bls12_381_g1 bls12_381_g2 : list (pair bls12_381_g1 bls12_381_g2) - : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; CONS - /* [ list (pair bls12_381_g1 bls12_381_g2) : @vk_x bls12_381_g1 : bls12_381_fr - : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 - : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 : @vk_gamma bls12_381_g2 - : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ list (pair bls12_381_g1 bls12_381_g2) : bls12_381_g1 : bls12_381_fr + : bls12_381_fr : bls12_381_g1 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g2 : bls12_381_g2 : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 + : bls12_381_g1 ] */ ; PAIRING_CHECK - /* [ bool : @vk_x bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 - : bls12_381_g2 : bls12_381_g1 : @vk_a bls12_381_g1 : @vk_b bls12_381_g2 - : @vk_gamma bls12_381_g2 : @vk_delta bls12_381_g2 : @vk_gamma_a bls12_381_g1 - : @vk_gamma_b bls12_381_g1 : @vk_gamma_c bls12_381_g1 ] */ ; + /* [ bool : bls12_381_g1 : bls12_381_fr : bls12_381_fr : bls12_381_g1 + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g2 : bls12_381_g2 + : bls12_381_g2 : bls12_381_g1 : bls12_381_g1 : bls12_381_g1 ] */ ; ASSERT ; DROP 13 /* [] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--hardlimit.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--hardlimit.tz].out index 81b23672a7..249282a0a2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--hardlimit.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--hardlimit.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039991.583 units remaining { parameter unit ; storage int ; code { CDR - /* [ @storage int ] */ ; + /* [ int ] */ ; DUP - /* [ @storage int : @storage int ] */ ; + /* [ int : int ] */ ; PUSH int 0 - /* [ int : @storage int : @storage int ] */ ; + /* [ int : int : int ] */ ; CMPLT ; - IF { PUSH int -1 /* [ int : @storage int ] */ ; ADD /* [ int ] */ } { FAIL } ; + IF { PUSH int -1 /* [ int : int ] */ ; ADD /* [ int ] */ } { FAIL } ; NIL operation /* [ list operation : int ] */ ; PAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--legacy_multisig.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--legacy_multisig.tz].out index 6f09d0a63e..45564ca3bf 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--legacy_multisig.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--legacy_multisig.tz].out @@ -12,17 +12,17 @@ Gas remaining: 1039931.026 units remaining (list %sigs (option signature))) ; storage (pair (nat %stored_counter) (pair (nat %threshold) (list %keys key))) ; code { UNPAIR - /* [ @parameter pair (pair :payload + /* [ pair (pair :payload (nat %counter) (or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))))) (list %sigs (option signature)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @parameter pair (pair :payload + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) + : pair (pair :payload (nat %counter) (or :action (pair :transfer (mutez %amount) (contract %dest unit)) @@ -30,9 +30,9 @@ Gas remaining: 1039931.026 units remaining (pair %change_keys (nat %threshold) (list %keys key))))) (list %sigs (option signature)) ] */ ; DUP - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @parameter pair (pair :payload + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) + : pair (pair :payload (nat %counter) (or :action (pair :transfer (mutez %amount) (contract %dest unit)) @@ -40,23 +40,23 @@ Gas remaining: 1039931.026 units remaining (pair %change_keys (nat %threshold) (list %keys key))))) (list %sigs (option signature)) ] */ ; DIP { SWAP - /* [ @parameter pair (pair :payload + /* [ pair (pair :payload (nat %counter) (or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))))) (list %sigs (option signature)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @parameter pair (pair :payload + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) + : pair (pair :payload (nat %counter) (or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))))) (list %sigs (option signature)) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { UNPAIR /* [ pair :payload (nat %counter) @@ -65,7 +65,7 @@ Gas remaining: 1039931.026 units remaining (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key)))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DUP /* [ pair :payload (nat %counter) @@ -80,9 +80,9 @@ Gas remaining: 1039931.026 units remaining (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key)))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SELF - /* [ @self contract + /* [ contract (pair (pair :payload (nat %counter) (or :action @@ -103,9 +103,9 @@ Gas remaining: 1039931.026 units remaining (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key)))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ADDRESS - /* [ @self.address address + /* [ address : pair :payload (nat %counter) (or :action @@ -119,9 +119,9 @@ Gas remaining: 1039931.026 units remaining (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key)))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; CHAIN_ID - /* [ chain_id : @self.address address + /* [ chain_id : address : pair :payload (nat %counter) (or :action @@ -135,9 +135,9 @@ Gas remaining: 1039931.026 units remaining (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key)))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; PAIR - /* [ pair chain_id (address @self.address) + /* [ pair chain_id address : pair :payload (nat %counter) (or :action @@ -151,9 +151,9 @@ Gas remaining: 1039931.026 units remaining (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key)))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; PAIR - /* [ pair (pair chain_id (address @self.address)) + /* [ pair (pair chain_id address) (pair :payload (nat %counter) (or :action @@ -167,9 +167,9 @@ Gas remaining: 1039931.026 units remaining (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key)))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; PACK - /* [ @packed bytes + /* [ bytes : pair :payload (nat %counter) (or :action @@ -177,325 +177,313 @@ Gas remaining: 1039931.026 units remaining (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key)))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { UNPAIR @counter - /* [ @counter nat + /* [ nat : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) : list (option signature) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { SWAP /* [ list (option signature) : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @counter nat : list (option signature) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ nat : list (option signature) : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @packed bytes : @counter nat : list (option signature) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ bytes : nat : list (option signature) : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ @counter nat : @packed bytes : list (option signature) + /* [ nat : bytes : list (option signature) : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) - : @counter nat : @packed bytes : list (option signature) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ pair (nat %stored_counter) (nat %threshold) (list %keys key) : nat : bytes + : list (option signature) : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; UNPAIR @stored_counter - /* [ @stored_counter nat : pair (nat %threshold) (list %keys key) : @counter nat - : @packed bytes : list (option signature) + /* [ nat : pair (nat %threshold) (list %keys key) : nat : bytes + : list (option signature) : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { SWAP - /* [ @counter nat : pair (nat %threshold) (list %keys key) : @packed bytes + /* [ nat : pair (nat %threshold) (list %keys key) : bytes : list (option signature) : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @stored_counter nat : @counter nat : pair (nat %threshold) (list %keys key) - : @packed bytes : list (option signature) + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ nat : nat : pair (nat %threshold) (list %keys key) : bytes + : list (option signature) : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ASSERT_CMPEQ ; DIP { SWAP - /* [ list (option signature) : @packed bytes + /* [ list (option signature) : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ pair (nat %threshold) (list %keys key) : list (option signature) - : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ pair (nat %threshold) (list %keys key) : list (option signature) : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; UNPAIR @threshold @keys - /* [ @threshold nat : @keys list key : list (option signature) : @packed bytes + /* [ nat : list key : list (option signature) : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { PUSH @valid nat 0 - /* [ @valid nat : @keys list key : list (option signature) : @packed bytes + /* [ nat : list key : list (option signature) : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ @keys list key : @valid nat : list (option signature) : @packed bytes + /* [ list key : nat : list (option signature) : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ITER { DIP { SWAP - /* [ list (option signature) : @valid nat : @packed bytes + /* [ list (option signature) : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @keys.elt key : list (option signature) : @valid nat : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ key : list (option signature) : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ list (option signature) : @keys.elt key : @valid nat : @packed bytes + /* [ list (option signature) : key : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; IF_CONS { IF_SOME { SWAP - /* [ @tl list (option signature) : @hd.some signature : @keys.elt key - : @valid nat : @packed bytes + /* [ list (option signature) : signature : key : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { SWAP - /* [ @keys.elt key : @hd.some signature : @valid nat : @packed bytes + /* [ key : signature : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIIP { DUUP - /* [ bytes : @valid nat : @packed bytes + /* [ bytes : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @keys.elt key : @hd.some signature : bytes : @valid nat : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ key : signature : bytes : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; { DUUUP - /* [ bytes : @keys.elt key : @hd.some signature : bytes : @valid nat - : @packed bytes + /* [ bytes : key : signature : bytes : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { CHECK_SIGNATURE - /* [ bool : @valid nat : @packed bytes + /* [ bool : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ bytes : bool : @valid nat : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ bytes : bool : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; SWAP - /* [ bool : bytes : @valid nat : @packed bytes + /* [ bool : bytes : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; IF { DROP - /* [ @valid nat : @packed bytes + /* [ nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } { FAILWITH /* [] */ } } ; PUSH nat 1 - /* [ nat : @valid nat : @packed bytes + /* [ nat : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ADD @valid - /* [ @valid nat : @packed bytes + /* [ nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @tl list (option signature) : @valid nat : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ list (option signature) : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } { SWAP - /* [ @keys.elt key : @tl list (option signature) : @valid nat : @packed bytes + /* [ key : list (option signature) : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DROP - /* [ @tl list (option signature) : @valid nat : @packed bytes + /* [ list (option signature) : nat : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } } + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } } { FAIL } ; SWAP - /* [ @valid nat : @tl list (option signature) : @packed bytes + /* [ nat : list (option signature) : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @valid nat : list (option signature) : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ nat : list (option signature) : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } - /* [ @threshold nat : @valid nat : list (option signature) : @packed bytes + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ } + /* [ nat : nat : list (option signature) : bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; ASSERT_CMPLE ; DROP - /* [ @packed bytes + /* [ bytes : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DROP /* [ or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : @storage pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; + : pair (nat %stored_counter) (nat %threshold) (list %keys key) ] */ ; DIP { UNPAIR /* [ nat : pair (nat %threshold) (list %keys key) ] */ ; PUSH nat 1 /* [ nat : nat : pair (nat %threshold) (list %keys key) ] */ ; ADD @new_counter - /* [ @new_counter nat : pair (nat %threshold) (list %keys key) ] */ ; + /* [ nat : pair (nat %threshold) (list %keys key) ] */ ; PAIR - /* [ pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ } + /* [ pair nat (nat %threshold) (list %keys key) ] */ } /* [ or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + : pair nat (nat %threshold) (list %keys key) ] */ ; NIL operation /* [ list operation : or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + : pair nat (nat %threshold) (list %keys key) ] */ ; SWAP /* [ or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))) : list operation - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + : pair nat (nat %threshold) (list %keys key) ] */ ; IF_LEFT { UNPAIR /* [ mutez : contract unit : list operation - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + : pair nat (nat %threshold) (list %keys key) ] */ ; UNIT /* [ unit : mutez : contract unit : list operation - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + : pair nat (nat %threshold) (list %keys key) ] */ ; TRANSFER_TOKENS - /* [ operation : list operation - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + /* [ operation : list operation : pair nat (nat %threshold) (list %keys key) ] */ ; CONS - /* [ list operation - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ } + /* [ list operation : pair nat (nat %threshold) (list %keys key) ] */ } { IF_LEFT { SET_DELEGATE - /* [ operation : list operation - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ ; + /* [ operation : list operation : pair nat (nat %threshold) (list %keys key) ] */ ; CONS - /* [ list operation - : pair (nat @new_counter) (nat %threshold) (list %keys key) ] */ } + /* [ list operation : pair nat (nat %threshold) (list %keys key) ] */ } { DIP { SWAP - /* [ pair (nat @new_counter) (nat %threshold) (list %keys key) - : list operation ] */ ; + /* [ pair nat (nat %threshold) (list %keys key) : list operation ] */ ; CAR - /* [ @new_counter nat : list operation ] */ } - /* [ @change_keys pair (nat %threshold) (list %keys key) : @new_counter nat - : list operation ] */ ; + /* [ nat : list operation ] */ } + /* [ pair (nat %threshold) (list %keys key) : nat : list operation ] */ ; SWAP - /* [ @new_counter nat : @change_keys pair (nat %threshold) (list %keys key) - : list operation ] */ ; + /* [ nat : pair (nat %threshold) (list %keys key) : list operation ] */ ; PAIR - /* [ pair (nat @new_counter) (pair @change_keys (nat %threshold) (list %keys key)) - : list operation ] */ ; + /* [ pair nat (nat %threshold) (list %keys key) : list operation ] */ ; SWAP - /* [ list operation - : pair (nat @new_counter) (pair @change_keys (nat %threshold) (list %keys key)) ] */ } } ; + /* [ list operation : pair nat (nat %threshold) (list %keys key) ] */ } } ; PAIR - /* [ pair (list operation) (nat @new_counter) (nat %threshold) (list %keys key) ] */ } } + /* [ pair (list operation) nat (nat %threshold) (list %keys key) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lockup.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lockup.tz].out index 095ac3aedd..c9137027d4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lockup.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lockup.tz].out @@ -5,44 +5,38 @@ Gas remaining: 1039981.235 units remaining { parameter unit ; storage (pair timestamp (pair mutez address)) ; code { CDR - /* [ @storage pair timestamp mutez address ] */ ; + /* [ pair timestamp mutez address ] */ ; DUP - /* [ @storage pair timestamp mutez address - : @storage pair timestamp mutez address ] */ ; + /* [ pair timestamp mutez address : pair timestamp mutez address ] */ ; CAR - /* [ timestamp : @storage pair timestamp mutez address ] */ ; + /* [ timestamp : pair timestamp mutez address ] */ ; NOW - /* [ @now timestamp : timestamp : @storage pair timestamp mutez address ] */ ; + /* [ timestamp : timestamp : pair timestamp mutez address ] */ ; CMPLT ; - IF { FAIL } { /* [ @storage pair timestamp mutez address ] */ } ; + IF { FAIL } { /* [ pair timestamp mutez address ] */ } ; DUP - /* [ @storage pair timestamp mutez address - : @storage pair timestamp mutez address ] */ ; + /* [ pair timestamp mutez address : pair timestamp mutez address ] */ ; CDR - /* [ pair mutez address : @storage pair timestamp mutez address ] */ ; + /* [ pair mutez address : pair timestamp mutez address ] */ ; DUP - /* [ pair mutez address : pair mutez address - : @storage pair timestamp mutez address ] */ ; + /* [ pair mutez address : pair mutez address : pair timestamp mutez address ] */ ; CAR - /* [ mutez : pair mutez address : @storage pair timestamp mutez address ] */ ; - DIP { CDR /* [ address : @storage pair timestamp mutez address ] */ } - /* [ mutez : address : @storage pair timestamp mutez address ] */ ; - DIP { CONTRACT - unit - /* [ @contract option (contract unit) : @storage pair timestamp mutez address ] */ ; + /* [ mutez : pair mutez address : pair timestamp mutez address ] */ ; + DIP { CDR /* [ address : pair timestamp mutez address ] */ } + /* [ mutez : address : pair timestamp mutez address ] */ ; + DIP { CONTRACT unit + /* [ option (contract unit) : pair timestamp mutez address ] */ ; ASSERT_SOME } - /* [ mutez : @contract.some contract unit - : @storage pair timestamp mutez address ] */ ; + /* [ mutez : contract unit : pair timestamp mutez address ] */ ; UNIT - /* [ unit : mutez : @contract.some contract unit - : @storage pair timestamp mutez address ] */ ; + /* [ unit : mutez : contract unit : pair timestamp mutez address ] */ ; TRANSFER_TOKENS - /* [ operation : @storage pair timestamp mutez address ] */ ; + /* [ operation : pair timestamp mutez address ] */ ; NIL operation - /* [ list operation : operation : @storage pair timestamp mutez address ] */ ; + /* [ list operation : operation : pair timestamp mutez address ] */ ; SWAP - /* [ operation : list operation : @storage pair timestamp mutez address ] */ ; + /* [ operation : list operation : pair timestamp mutez address ] */ ; CONS - /* [ list operation : @storage pair timestamp mutez address ] */ ; + /* [ list operation : pair timestamp mutez address ] */ ; PAIR - /* [ pair (list operation) (pair @storage timestamp mutez address) ] */ } } + /* [ pair (list operation) timestamp mutez address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lqt_fa12.mligo.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lqt_fa12.mligo.tz].out index a6bf02f518..f5298f8535 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lqt_fa12.mligo.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lqt_fa12.mligo.tz].out @@ -45,7 +45,7 @@ Gas remaining: 1039662.882 units remaining (address %admin) (nat %total_supply)) ] */ ; CDR - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) @@ -66,7 +66,7 @@ Gas remaining: 1039662.882 units remaining PUSH mutez 0 /* [ mutez - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) @@ -85,8 +85,8 @@ Gas remaining: 1039662.882 units remaining (address %admin) (nat %total_supply)) ] */ ; AMOUNT - /* [ @amount mutez : mutez - : @storage pair (big_map %tokens address nat) + /* [ mutez : mutez + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) @@ -106,7 +106,7 @@ Gas remaining: 1039662.882 units remaining (nat %total_supply)) ] */ ; COMPARE /* [ int - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) @@ -126,7 +126,7 @@ Gas remaining: 1039662.882 units remaining (nat %total_supply)) ] */ ; NEQ /* [ bool - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) @@ -147,7 +147,7 @@ Gas remaining: 1039662.882 units remaining IF { PUSH string "DontSendTez" /* [ string - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) @@ -167,7 +167,7 @@ Gas remaining: 1039662.882 units remaining (nat %total_supply)) ] */ ; FAILWITH /* [] */ } - { /* [ @storage pair (big_map %tokens address nat) + { /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) @@ -200,12 +200,12 @@ Gas remaining: 1039662.882 units remaining (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply)) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR - /* [ @parameter or (or (or (pair %approve (address %spender) (nat %value)) + /* [ or (or (or (pair %approve (address %spender) (nat %value)) (pair %getAllowance (pair %request (address %owner) (address %spender)) (contract %callback nat))) @@ -213,7 +213,7 @@ Gas remaining: 1039662.882 units remaining (pair %getTotalSupply (unit %request) (contract %callback nat)))) (or (pair %mintOrBurn (int %quantity) (address %target)) (pair %transfer (address %from) (address %to) (nat %value))) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -221,428 +221,417 @@ Gas remaining: 1039662.882 units remaining { IF_LEFT { IF_LEFT { SWAP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.left.left.approve pair (address %spender) (nat %value) ] */ ; + (nat %total_supply) : pair (address %spender) (nat %value) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.left.left.approve pair (address %spender) (nat %value) ] */ ; + (nat %total_supply) : pair (address %spender) (nat %value) ] */ ; DUG 2 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SWAP - /* [ @parameter.left.left.approve pair (address %spender) (nat %value) + /* [ pair (address %spender) (nat %value) : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.left.left.approve pair (address %spender) (nat %value) - : @parameter.left.left.approve pair (address %spender) (nat %value) + /* [ pair (address %spender) (nat %value) : pair (address %spender) (nat %value) : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 2 - /* [ @parameter.left.left.approve pair (address %spender) (nat %value) + /* [ pair (address %spender) (nat %value) : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SENDER - /* [ @sender address : address - : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ address : address : big_map (pair (address %owner) (address %spender)) nat + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PAIR - /* [ pair (address @sender) address + /* [ pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PUSH nat 0 - /* [ nat : pair (address @sender) address + /* [ nat : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 - /* [ @parameter.left.left.approve pair (address %spender) (nat %value) : nat - : pair (address @sender) address + /* [ pair (address %spender) (nat %value) : nat : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.left.left.approve pair (address %spender) (nat %value) - : @parameter.left.left.approve pair (address %spender) (nat %value) : nat - : pair (address @sender) address + /* [ pair (address %spender) (nat %value) : pair (address %spender) (nat %value) + : nat : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 4 - /* [ @parameter.left.left.approve pair (address %spender) (nat %value) : nat - : pair (address @sender) address + /* [ pair (address %spender) (nat %value) : nat : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR - /* [ nat : nat : pair (address @sender) address + /* [ nat : nat : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; COMPARE - /* [ int : pair (address @sender) address + /* [ int : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GT - /* [ bool : pair (address @sender) address + /* [ bool : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PUSH nat 0 - /* [ nat : bool : pair (address @sender) address + /* [ nat : bool : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 /* [ big_map (pair (address %owner) (address %spender)) nat : nat : bool - : pair (address @sender) address - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair address address : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP /* [ big_map (pair (address %owner) (address %spender)) nat : big_map (pair (address %owner) (address %spender)) nat : nat : bool - : pair (address @sender) address - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair address address : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 4 /* [ big_map (pair (address %owner) (address %spender)) nat : nat : bool - : pair (address @sender) address + : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 - /* [ pair (address @sender) address + /* [ pair address address : big_map (pair (address %owner) (address %spender)) nat : nat : bool : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ pair (address @sender) address : pair (address @sender) address + /* [ pair address address : pair address address : big_map (pair (address %owner) (address %spender)) nat : nat : bool : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 4 - /* [ pair (address @sender) address + /* [ pair address address : big_map (pair (address %owner) (address %spender)) nat : nat : bool - : pair (address @sender) address + : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GET - /* [ option nat : nat : bool : pair (address @sender) address + /* [ option nat : nat : bool : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF_NONE { PUSH nat 0 - /* [ nat : nat : bool : pair (address @sender) address + /* [ nat : nat : bool : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } - { /* [ @some nat : nat : bool : pair (address @sender) address + { /* [ nat : nat : bool : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; COMPARE - /* [ int : bool : pair (address @sender) address + /* [ int : bool : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GT - /* [ bool : bool : pair (address @sender) address + /* [ bool : bool : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; AND - /* [ bool : pair (address @sender) address + /* [ bool : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF { PUSH string "UnsafeAllowanceChange" - /* [ string : pair (address @sender) address + /* [ string : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; FAILWITH /* [] */ } - { /* [ pair (address @sender) address + { /* [ pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DIG 3 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : pair (address @sender) address + (nat %total_supply) : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) ] */ ; + : pair (address %spender) (nat %value) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : pair (address @sender) address + (nat %total_supply) : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) ] */ ; + : pair (address %spender) (nat %value) ] */ ; DUG 4 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : pair (address @sender) address + (nat %total_supply) : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : pair (address @sender) address + (nat %total_supply) : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR - /* [ pair (address %admin) (nat %total_supply) : pair (address @sender) address + /* [ pair (address %admin) (nat %total_supply) : pair address address : big_map (pair (address %owner) (address %spender)) nat - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 /* [ big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @parameter.left.left.approve pair (address %spender) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (address %spender) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 - /* [ @parameter.left.left.approve pair (address %spender) (nat %value) + /* [ pair (address %spender) (nat %value) : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PUSH nat 0 /* [ nat : nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SWAP /* [ nat : nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP /* [ nat : nat : nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 2 /* [ nat : nat : nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; COMPARE /* [ int : nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; EQ /* [ bool : nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF { DROP /* [ big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; NONE nat /* [ option nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } { SOME /* [ option nat : big_map (pair (address %owner) (address %spender)) nat - : pair (address %admin) (nat %total_supply) : pair (address @sender) address - : @storage pair (big_map %tokens address nat) + : pair (address %admin) (nat %total_supply) : pair address address + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DIG 3 - /* [ pair (address @sender) address : option nat + /* [ pair address address : option nat : big_map (pair (address %owner) (address %spender)) nat : pair (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; UPDATE /* [ big_map (pair (address %owner) (address %spender)) nat : pair (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -650,12 +639,12 @@ Gas remaining: 1039662.882 units remaining /* [ pair (big_map (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SWAP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) @@ -685,107 +674,107 @@ Gas remaining: 1039662.882 units remaining (address %admin) (nat %total_supply) ] */ } { SWAP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) ] */ ; + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) ] */ ; + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) ] */ ; DIG 2 - /* [ @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + /* [ pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; NIL operation /* [ list operation - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SWAP - /* [ @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + /* [ pair (pair %request (address %owner) (address %spender)) (contract %callback nat) : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + /* [ pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 2 - /* [ @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + /* [ pair (pair %request (address %owner) (address %spender)) (contract %callback nat) : list operation - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ contract nat : list operation - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PUSH mutez 0 /* [ mutez : contract nat : list operation - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 4 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : mutez : contract nat : list operation - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -793,24 +782,24 @@ Gas remaining: 1039662.882 units remaining /* [ pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : mutez : contract nat : list operation - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ big_map (pair (address %owner) (address %spender)) nat : mutez : contract nat : list operation - : @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 4 - /* [ @parameter.left.left.getAllowance pair (pair %request (address %owner) (address %spender)) (contract %callback nat) + /* [ pair (pair %request (address %owner) (address %spender)) (contract %callback nat) : big_map (pair (address %owner) (address %spender)) nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -818,13 +807,13 @@ Gas remaining: 1039662.882 units remaining /* [ pair (address %owner) (address %spender) : big_map (pair (address %owner) (address %spender)) nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GET /* [ option nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -832,163 +821,156 @@ Gas remaining: 1039662.882 units remaining { PUSH nat 0 /* [ nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } - { /* [ @some nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + { /* [ nat : mutez : contract nat : list operation + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; TRANSFER_TOKENS /* [ operation : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CONS /* [ list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PAIR /* [ pair (list operation) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ } } + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ } } { IF_LEFT { SWAP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) ] */ ; + (nat %total_supply) : pair (address %owner) (contract %callback nat) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) ] */ ; + (nat %total_supply) : pair (address %owner) (contract %callback nat) ] */ ; DIG 2 - /* [ @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + /* [ pair (address %owner) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; NIL operation - /* [ list operation - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + /* [ list operation : pair (address %owner) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SWAP - /* [ @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : list operation - : @storage pair (big_map %tokens address nat) + /* [ pair (address %owner) (contract %callback nat) : list operation + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : list operation - : @storage pair (big_map %tokens address nat) + /* [ pair (address %owner) (contract %callback nat) + : pair (address %owner) (contract %callback nat) : list operation + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 2 - /* [ @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : list operation - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + /* [ pair (address %owner) (contract %callback nat) : list operation + : pair (address %owner) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ contract nat : list operation - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (address %owner) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PUSH mutez 0 /* [ mutez : contract nat : list operation - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (address %owner) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 4 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : mutez : contract nat : list operation - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (address %owner) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ big_map address nat : mutez : contract nat : list operation - : @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + : pair (address %owner) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 4 - /* [ @parameter.left.right.getBalance pair (address %owner) (contract %callback nat) - : big_map address nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + /* [ pair (address %owner) (contract %callback nat) : big_map address nat + : mutez : contract nat : list operation + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ address : big_map address nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GET /* [ option nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -996,109 +978,104 @@ Gas remaining: 1039662.882 units remaining { PUSH nat 0 /* [ nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } - { /* [ @some nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + { /* [ nat : mutez : contract nat : list operation + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; TRANSFER_TOKENS /* [ operation : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CONS /* [ list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PAIR /* [ pair (list operation) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ } + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ } { SWAP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.left.right.getTotalSupply pair (unit %request) (contract %callback nat) ] */ ; + (nat %total_supply) : pair (unit %request) (contract %callback nat) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.left.right.getTotalSupply pair (unit %request) (contract %callback nat) ] */ ; + (nat %total_supply) : pair (unit %request) (contract %callback nat) ] */ ; DIG 2 - /* [ @parameter.left.right.getTotalSupply pair (unit %request) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + /* [ pair (unit %request) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; NIL operation - /* [ list operation - : @parameter.left.right.getTotalSupply pair (unit %request) (contract %callback nat) - : @storage pair (big_map %tokens address nat) + /* [ list operation : pair (unit %request) (contract %callback nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SWAP - /* [ @parameter.left.right.getTotalSupply pair (unit %request) (contract %callback nat) - : list operation - : @storage pair (big_map %tokens address nat) + /* [ pair (unit %request) (contract %callback nat) : list operation + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PUSH mutez 0 /* [ mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -1106,465 +1083,427 @@ Gas remaining: 1039662.882 units remaining /* [ pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (address %admin) (nat %total_supply) : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ nat : mutez : contract nat : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; TRANSFER_TOKENS /* [ operation : list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CONS /* [ list operation - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PAIR /* [ pair (list operation) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ } } } + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ } } } { IF_LEFT { SWAP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : pair (int %quantity) (address %target) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : pair (int %quantity) (address %target) ] */ ; DUG 2 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (address %admin) (nat %total_supply) - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR - /* [ address - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ address : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SENDER - /* [ @sender address : address - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ address : address : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; COMPARE - /* [ int : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ int : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; NEQ - /* [ bool : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ bool : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF { PUSH string "OnlyAdmin" - /* [ string : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ string : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; FAILWITH /* [] */ } - { /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + { /* [ pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DUP - /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ pair (int %quantity) (address %target) + : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR - /* [ int : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ int : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : int : pair (int %quantity) (address %target) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : int : pair (int %quantity) (address %target) ] */ ; DUG 3 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : int : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR - /* [ big_map address nat : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ big_map address nat : int : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : big_map address nat : int - : @storage pair (big_map %tokens address nat) + /* [ pair (int %quantity) (address %target) : big_map address nat : int + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : big_map address nat : int - : @storage pair (big_map %tokens address nat) + /* [ pair (int %quantity) (address %target) + : pair (int %quantity) (address %target) : big_map address nat : int + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 - /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : big_map address nat : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ pair (int %quantity) (address %target) : big_map address nat : int + : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ address : big_map address nat : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GET - /* [ option nat : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ option nat : int : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF_NONE { PUSH nat 0 - /* [ nat : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ nat : int : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } - { /* [ @some nat : int - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + { /* [ nat : int : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; ADD - /* [ int : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ int : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; ISNAT - /* [ option nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ option nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF_NONE { PUSH string "Cannot burn more than the target's balance." - /* [ string : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ string : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; FAILWITH /* [] */ } - { /* [ @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + { /* [ nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; SWAP - /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @some nat - : @storage pair (big_map %tokens address nat) + /* [ pair (int %quantity) (address %target) : nat + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @some nat - : @storage pair (big_map %tokens address nat) + /* [ pair (int %quantity) (address %target) + : pair (int %quantity) (address %target) : nat + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 2 - /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ pair (int %quantity) (address %target) : nat + : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR - /* [ int : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ int : nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : int : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : int : nat + : pair (int %quantity) (address %target) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : int : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : int : nat + : pair (int %quantity) (address %target) ] */ ; DUG 4 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : int : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : int : nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : int : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : int : nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR - /* [ pair (address %admin) (nat %total_supply) : int : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ pair (address %admin) (nat %total_supply) : int : nat + : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR - /* [ nat : int : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ nat : int : nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; ADD - /* [ int : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ int : nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; ABS - /* [ nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + /* [ nat : nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : nat + : pair (int %quantity) (address %target) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : nat + : pair (int %quantity) (address %target) ] */ ; DUG 4 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : nat : nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : nat : nat : pair (int %quantity) (address %target) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 4 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : nat + : pair (int %quantity) (address %target) ] */ ; CAR /* [ big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : nat + : pair (int %quantity) (address %target) ] */ ; PUSH nat 0 /* [ nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : nat + : pair (int %quantity) (address %target) ] */ ; DIG 4 - /* [ @some nat : nat : big_map address nat + /* [ nat : nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : pair (int %quantity) (address %target) ] */ ; DUP - /* [ @some nat : @some nat : nat : big_map address nat + /* [ nat : nat : nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : pair (int %quantity) (address %target) ] */ ; DUG 5 - /* [ @some nat : nat : big_map address nat + /* [ nat : nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : nat + : pair (int %quantity) (address %target) ] */ ; COMPARE /* [ int : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : nat + : pair (int %quantity) (address %target) ] */ ; EQ /* [ bool : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat : @some nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : nat + : pair (int %quantity) (address %target) ] */ ; IF { DIG 3 - /* [ @some nat : big_map address nat + /* [ nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : pair (int %quantity) (address %target) ] */ ; DROP /* [ big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : pair (int %quantity) (address %target) ] */ ; NONE nat /* [ option nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ } + (nat %total_supply) : nat : pair (int %quantity) (address %target) ] */ } { DIG 3 - /* [ @some nat : big_map address nat + /* [ nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ ; + (nat %total_supply) : nat : pair (int %quantity) (address %target) ] */ ; SOME /* [ option nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) : nat - : @parameter.right.mintOrBurn pair (int %quantity) (address %target) ] */ } ; + (nat %total_supply) : nat : pair (int %quantity) (address %target) ] */ } ; DIG 4 - /* [ @parameter.right.mintOrBurn pair (int %quantity) (address %target) - : option nat : big_map address nat + /* [ pair (int %quantity) (address %target) : option nat : big_map address nat : pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : nat ] */ ; @@ -1697,585 +1636,564 @@ Gas remaining: 1039662.882 units remaining address nat ] */ } { SWAP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) ] */ ; + (nat %total_supply) : pair (address %from) (address %to) (nat %value) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) ] */ ; + (nat %total_supply) : pair (address %from) (address %to) (nat %value) ] */ ; DUG 2 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) - (nat %total_supply) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + (nat %total_supply) : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) ] */ ; + : pair (address %from) (address %to) (nat %value) ] */ ; DUP - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) ] */ ; + : pair (address %from) (address %to) (nat %value) ] */ ; DUG 3 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) + : pair (address %from) (address %to) (nat %value) : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SENDER - /* [ @sender address : address : big_map address nat + /* [ address : address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; COMPARE /* [ int : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; EQ /* [ bool : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF { SWAP /* [ big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } { SENDER - /* [ @sender address : big_map address nat + /* [ address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @sender address : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : address + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @sender address : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) + : pair (address %from) (address %to) (nat %value) : address + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 4 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @sender address : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : address + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR - /* [ address : @sender address : big_map address nat + /* [ address : address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PAIR - /* [ pair address (address @sender) : big_map address nat + /* [ pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : pair address (address @sender) : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : pair address address + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : pair address (address @sender) : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) + : pair (address %from) (address %to) (nat %value) : pair address address + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 4 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : pair address (address @sender) : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : pair address address + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR - /* [ pair (address %to) (nat %value) : pair address (address @sender) + /* [ pair (address %to) (nat %value) : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR - /* [ nat : pair address (address @sender) : big_map address nat + /* [ nat : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 3 /* [ big_map (pair (address %owner) (address %spender)) nat : nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP /* [ big_map (pair (address %owner) (address %spender)) nat : big_map (pair (address %owner) (address %spender)) nat : nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 4 /* [ big_map (pair (address %owner) (address %spender)) nat : nat - : pair address (address @sender) : big_map address nat + : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ pair address (address @sender) + /* [ pair address address : big_map (pair (address %owner) (address %spender)) nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ pair address (address @sender) : pair address (address @sender) + /* [ pair address address : pair address address : big_map (pair (address %owner) (address %spender)) nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 - /* [ pair address (address @sender) + /* [ pair address address : big_map (pair (address %owner) (address %spender)) nat : nat - : pair address (address @sender) : big_map address nat + : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GET - /* [ option nat : nat : pair address (address @sender) : big_map address nat + /* [ option nat : nat : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF_NONE { PUSH nat 0 - /* [ nat : nat : pair address (address @sender) : big_map address nat + /* [ nat : nat : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } - { /* [ @some nat : nat : pair address (address @sender) : big_map address nat + { /* [ nat : nat : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; SUB - /* [ int : pair address (address @sender) : big_map address nat + /* [ int : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; ISNAT - /* [ option nat : pair address (address @sender) : big_map address nat + /* [ option nat : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF_NONE { PUSH string "NotEnoughAllowance" - /* [ string : pair address (address @sender) : big_map address nat + /* [ string : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; FAILWITH /* [] */ } - { /* [ @some nat : pair address (address @sender) : big_map address nat + { /* [ nat : pair address address : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DIG 3 - /* [ big_map (pair (address %owner) (address %spender)) nat : @some nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ big_map (pair (address %owner) (address %spender)) nat : nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PUSH nat 0 - /* [ nat : big_map (pair (address %owner) (address %spender)) nat : @some nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ nat : big_map (pair (address %owner) (address %spender)) nat : nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ @some nat : nat : big_map (pair (address %owner) (address %spender)) nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ nat : nat : big_map (pair (address %owner) (address %spender)) nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @some nat : @some nat : nat - : big_map (pair (address %owner) (address %spender)) nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ nat : nat : nat : big_map (pair (address %owner) (address %spender)) nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 - /* [ @some nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @some nat : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ nat : nat : big_map (pair (address %owner) (address %spender)) nat : nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; COMPARE - /* [ int : big_map (pair (address %owner) (address %spender)) nat : @some nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ int : big_map (pair (address %owner) (address %spender)) nat : nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; EQ - /* [ bool : big_map (pair (address %owner) (address %spender)) nat : @some nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ bool : big_map (pair (address %owner) (address %spender)) nat : nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF { SWAP - /* [ @some nat : big_map (pair (address %owner) (address %spender)) nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ nat : big_map (pair (address %owner) (address %spender)) nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DROP /* [ big_map (pair (address %owner) (address %spender)) nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; NONE nat /* [ option nat : big_map (pair (address %owner) (address %spender)) nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } { SWAP - /* [ @some nat : big_map (pair (address %owner) (address %spender)) nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + /* [ nat : big_map (pair (address %owner) (address %spender)) nat + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SOME /* [ option nat : big_map (pair (address %owner) (address %spender)) nat - : pair address (address @sender) : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair address address : big_map address nat + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DIG 2 - /* [ pair address (address @sender) : option nat + /* [ pair address address : option nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; UPDATE /* [ big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DIG 2 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) + /* [ pair (address %from) (address %to) (nat %value) : big_map (pair (address %owner) (address %spender)) nat : big_map address nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) + /* [ pair (address %from) (address %to) (nat %value) + : pair (address %from) (address %to) (nat %value) : big_map (pair (address %owner) (address %spender)) nat : big_map address nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) + /* [ pair (address %from) (address %to) (nat %value) : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (address %to) (nat %value) : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 /* [ big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP /* [ big_map address nat : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 /* [ big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 4 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat : nat + /* [ pair (address %from) (address %to) (nat %value) : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat : big_map address nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat : nat + /* [ pair (address %from) (address %to) (nat %value) + : pair (address %from) (address %to) (nat %value) : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat : big_map address nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 5 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat : nat + /* [ pair (address %from) (address %to) (nat %value) : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ address : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GET /* [ option nat : nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -2283,32 +2201,28 @@ Gas remaining: 1039662.882 units remaining { PUSH nat 0 /* [ nat : nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } - { /* [ @some nat : nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + { /* [ nat : nat : big_map (pair (address %owner) (address %spender)) nat + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; SUB /* [ int : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; ISNAT /* [ option nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -2316,249 +2230,244 @@ Gas remaining: 1039662.882 units remaining { PUSH string "NotEnoughBalance" /* [ string : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; FAILWITH /* [] */ } - { /* [ @some nat : big_map (pair (address %owner) (address %spender)) nat - : big_map address nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + { /* [ nat : big_map (pair (address %owner) (address %spender)) nat + : big_map address nat : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DIG 2 - /* [ big_map address nat : @some nat + /* [ big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; PUSH nat 0 - /* [ nat : big_map address nat : @some nat + /* [ nat : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ @some nat : nat : big_map address nat + /* [ nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @some nat : @some nat : nat : big_map address nat + /* [ nat : nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 - /* [ @some nat : nat : big_map address nat : @some nat + /* [ nat : nat : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; COMPARE - /* [ int : big_map address nat : @some nat + /* [ int : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; EQ - /* [ bool : big_map address nat : @some nat + /* [ bool : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF { SWAP - /* [ @some nat : big_map address nat + /* [ nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DROP /* [ big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; NONE nat /* [ option nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } { SWAP - /* [ @some nat : big_map address nat + /* [ nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SOME /* [ option nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DIG 3 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : option nat : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : option nat + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : option nat : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) + : pair (address %from) (address %to) (nat %value) : option nat + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 4 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : option nat : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : option nat + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ address : option nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; UPDATE /* [ big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) + : pair (address %from) (address %to) (nat %value) : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (address %to) (nat %value) : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SWAP /* [ big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP /* [ big_map address nat : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 2 /* [ big_map address nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 4 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat : nat : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : big_map address nat : nat + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat : nat : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) + : pair (address %from) (address %to) (nat %value) : big_map address nat : nat + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 5 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : big_map address nat : nat : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : big_map address nat : nat + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -2566,24 +2475,24 @@ Gas remaining: 1039662.882 units remaining /* [ pair (address %to) (nat %value) : big_map address nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ address : big_map address nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; GET /* [ option nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -2592,31 +2501,31 @@ Gas remaining: 1039662.882 units remaining 0 /* [ nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } - { /* [ @some nat : nat : big_map address nat + { /* [ nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; ADD /* [ nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SWAP /* [ big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; @@ -2624,122 +2533,122 @@ Gas remaining: 1039662.882 units remaining 0 /* [ nat : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 /* [ nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUP /* [ nat : nat : nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DUG 3 /* [ nat : nat : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; COMPARE /* [ int : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; EQ /* [ bool : big_map address nat : nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; IF { SWAP /* [ nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DROP /* [ big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; NONE nat /* [ option nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } { SWAP /* [ nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; SOME /* [ option nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : @storage pair (big_map %tokens address nat) + : pair (address %from) (address %to) (nat %value) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ } ; DIG 3 - /* [ @parameter.right.transfer pair (address %from) (address %to) (nat %value) - : option nat : big_map address nat + /* [ pair (address %from) (address %to) (nat %value) : option nat + : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CDR /* [ pair (address %to) (nat %value) : option nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; CAR /* [ address : option nat : big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; UPDATE /* [ big_map address nat : big_map (pair (address %owner) (address %spender)) nat - : @storage pair (big_map %tokens address nat) + : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) ] */ ; DIG 2 - /* [ @storage pair (big_map %tokens address nat) + /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) : big_map address nat diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_en2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_en2.tz].out index 8359f718cb..b01d416e6e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_en2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_en2.tz].out @@ -5,22 +5,21 @@ Gas remaining: 1039921.322 units remaining { parameter unit ; storage (option address) ; code { SENDER - /* [ @sender address : pair (unit @parameter) (option @storage address) ] */ ; + /* [ address : pair (unit @parameter) (option @storage address) ] */ ; SELF - /* [ @self contract unit : @sender address + /* [ contract unit : address : pair (unit @parameter) (option @storage address) ] */ ; ADDRESS - /* [ @self.address address : @sender address - : pair (unit @parameter) (option @storage address) ] */ ; + /* [ address : address : pair (unit @parameter) (option @storage address) ] */ ; { /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ COMPARE - /* [ mutez : @amount mutez + /* [ mutez : mutez : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ ; EQ /* [ bool : pair (unit @parameter) (option @storage address) ] */ ; IF { CDR - /* [ @storage option address ] */ ; - { /* [ mutez : @amount mutez + /* [ option address ] */ ; + { /* [ mutez : mutez : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ IF_NONE { { /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ @@ -37,118 +36,89 @@ Gas remaining: 1039921.322 units remaining /* [ list operation ] */ } /* [] */ ; DUP - /* [ @parameter or (or (nat %add) (nat %sub)) (unit %default) + /* [ or (or (nat %add) (nat %sub)) (unit %default) : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ ; - CONTRACT %add - unit - /* [ @parameter or (or (nat %add) (nat %sub)) (unit %default) : @storage int ] */ ; + CONTRACT %add unit + /* [ or (or (nat %add) (nat %sub)) (unit %default) : int ] */ ; { /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ IF_NONE - { /* [ @storage.some address : list operation ] */ } + { /* [ address : list operation ] */ } { { UNIT /* [ int ] */ ; FAILWITH /* [] */ } } } ; DUP - /* [ @storage int : @parameter.left.sub nat ] */ ; + /* [ int : nat ] */ ; CONTRACT %fact nat /* [ int ] */ ; - { /* [ @parameter.default unit : @storage int ] */ + { /* [ unit : int ] */ IF_NONE { /* [] */ } { { UNIT /* [ list operation : int ] */ ; FAILWITH /* [] */ } } /* [] */ } ; DUP /* [ pair (list operation) int ] */ ; - CONTRACT %add - nat - /* [ @storage.some.contract option (contract nat) : @storage.some address - : list operation ] */ ; + CONTRACT %add nat + /* [ option (contract nat) : address : list operation ] */ ; { IF_NONE - { { UNIT /* [ unit : @storage.some address : list operation ] */ ; FAILWITH /* [] */ } } - { /* [ @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ } } ; - PUSH mutez - 0 - /* [ mutez : @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ ; - PUSH nat - 12 - /* [ nat : mutez : @storage.some.contract.some contract nat - : @storage.some address : list operation ] */ ; + { { UNIT /* [ unit : address : list operation ] */ ; FAILWITH /* [] */ } } + { /* [ contract nat : address : list operation ] */ } } ; + PUSH mutez 0 + /* [ mutez : contract nat : address : list operation ] */ ; + PUSH nat 12 + /* [ nat : mutez : contract nat : address : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.some address : list operation ] */ ; + /* [ operation : address : list operation ] */ ; SWAP - /* [ @storage.some address : operation : list operation ] */ ; + /* [ address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage.some address : list operation ] */ ; + /* [ address : list operation ] */ ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; - CONTRACT - unit - /* [ @storage.some.contract option (contract unit) : @storage.some address - : list operation ] */ ; + /* [ address : address : list operation ] */ ; + CONTRACT unit + /* [ option (contract unit) : address : list operation ] */ ; { IF_NONE - { { UNIT /* [ unit : @storage.some address : list operation ] */ ; FAILWITH /* [] */ } } - { /* [ @storage.some.contract.some contract unit : @storage.some address - : list operation ] */ } } ; - PUSH mutez - 0 - /* [ mutez : @storage.some.contract.some contract unit : @storage.some address - : list operation ] */ ; - PUSH unit - Unit - /* [ unit : mutez : @storage.some.contract.some contract unit - : @storage.some address : list operation ] */ ; + { { UNIT /* [ unit : address : list operation ] */ ; FAILWITH /* [] */ } } + { /* [ contract unit : address : list operation ] */ } } ; + PUSH mutez 0 + /* [ mutez : contract unit : address : list operation ] */ ; + PUSH unit Unit + /* [ unit : mutez : contract unit : address : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.some address : list operation ] */ ; + /* [ operation : address : list operation ] */ ; SWAP - /* [ @storage.some address : operation : list operation ] */ ; + /* [ address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage.some address : list operation ] */ ; + /* [ address : list operation ] */ ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; - CONTRACT %sub - nat - /* [ @storage.some.contract option (contract nat) : @storage.some address - : list operation ] */ ; + /* [ address : address : list operation ] */ ; + CONTRACT %sub nat + /* [ option (contract nat) : address : list operation ] */ ; { IF_NONE - { { UNIT /* [ unit : @storage.some address : list operation ] */ ; FAILWITH /* [] */ } } - { /* [ @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ } } ; - PUSH mutez - 0 - /* [ mutez : @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ ; - PUSH nat - 3 - /* [ nat : mutez : @storage.some.contract.some contract nat - : @storage.some address : list operation ] */ ; + { { UNIT /* [ unit : address : list operation ] */ ; FAILWITH /* [] */ } } + { /* [ contract nat : address : list operation ] */ } } ; + PUSH mutez 0 + /* [ mutez : contract nat : address : list operation ] */ ; + PUSH nat 3 + /* [ nat : mutez : contract nat : address : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.some address : list operation ] */ ; + /* [ operation : address : list operation ] */ ; SWAP - /* [ @storage.some address : operation : list operation ] */ ; + /* [ address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage.some address : list operation ] */ ; + /* [ address : list operation ] */ ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; - CONTRACT %add - nat - /* [ @storage.some.contract option (contract nat) : @storage.some address - : list operation ] */ ; + /* [ address : address : list operation ] */ ; + CONTRACT %add nat + /* [ option (contract nat) : address : list operation ] */ ; { IF_NONE - { { UNIT /* [ unit : @storage.some address : list operation ] */ ; FAILWITH /* [] */ } } - { /* [ @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ } } ; - PUSH mutez - 0 - /* [ mutez : @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ ; - PUSH nat - 5 - /* [ nat : mutez : @storage.some.contract.some contract nat - : @storage.some address : list operation ] */ ; + { { UNIT /* [ unit : address : list operation ] */ ; FAILWITH /* [] */ } } + { /* [ contract nat : address : list operation ] */ } } ; + PUSH mutez 0 + /* [ mutez : contract nat : address : list operation ] */ ; + PUSH nat 5 + /* [ nat : mutez : contract nat : address : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.some address : list operation ] */ ; + /* [ operation : address : list operation ] */ ; SWAP - /* [ @storage.some address : operation : list operation ] */ ; + /* [ address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage.some address : list operation ] */ ; + /* [ address : list operation ] */ ; DROP /* [ list operation ] */ ; DIP { NONE address /* [ option address ] */ } @@ -156,16 +126,16 @@ Gas remaining: 1039921.322 units remaining PAIR /* [ pair (list operation) (option address) ] */ } { CAR - /* [ @parameter unit ] */ ; + /* [ unit ] */ ; DUP - /* [ @parameter unit : @parameter unit ] */ ; + /* [ unit : unit ] */ ; DIP { DIP { PUSH int 0 /* [ int ] */ ; PUSH mutez 0 /* [ mutez : int ] */ ; NONE key_hash /* [ option key_hash : mutez : int ] */ } - /* [ @parameter unit : option key_hash : mutez : int ] */ ; + /* [ unit : option key_hash : mutez : int ] */ ; DROP /* [ option key_hash : mutez : int ] */ ; CREATE_CONTRACT @@ -181,12 +151,12 @@ Gas remaining: 1039921.322 units remaining NIL operation ; PAIR } } /* [ operation : address ] */ } - /* [ @parameter unit : operation : address ] */ ; + /* [ unit : operation : address ] */ ; DIP { SELF - /* [ @self contract unit : operation : address ] */ ; + /* [ contract unit : operation : address ] */ ; PUSH mutez 0 - /* [ mutez : @self contract unit : operation : address ] */ } - /* [ @parameter unit : mutez : @self contract unit : operation : address ] */ ; + /* [ mutez : contract unit : operation : address ] */ } + /* [ unit : mutez : contract unit : operation : address ] */ ; TRANSFER_TOKENS /* [ operation : operation : address ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_entrypoints_counter.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_entrypoints_counter.tz].out index 4fb6261d70..8e192681a6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_entrypoints_counter.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_entrypoints_counter.tz].out @@ -5,16 +5,15 @@ Gas remaining: 1039924.032 units remaining { parameter unit ; storage (option address) ; code { SENDER - /* [ @sender address : pair (unit @parameter) (option @storage address) ] */ ; + /* [ address : pair (unit @parameter) (option @storage address) ] */ ; SELF - /* [ @self contract unit : @sender address + /* [ contract unit : address : pair (unit @parameter) (option @storage address) ] */ ; ADDRESS - /* [ @self.address address : @sender address - : pair (unit @parameter) (option @storage address) ] */ ; + /* [ address : address : pair (unit @parameter) (option @storage address) ] */ ; IFCMPEQ { CDR - /* [ @storage option address ] */ ; + /* [ option address ] */ ; ASSERT_SOME /* [ int : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ ; @@ -23,105 +22,79 @@ Gas remaining: 1039924.032 units remaining /* [ list operation ] */ } /* [] */ ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; + /* [ address : address : list operation ] */ ; CONTRACT %add unit /* [ int ] */ - /* [ @storage.some.contract option (contract unit) : @storage.some address - : list operation ] */ ; + /* [ option (contract unit) : address : list operation ] */ ; ASSERT_NONE ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; + /* [ address : address : list operation ] */ ; CONTRACT %fact nat /* [ list operation : int ] */ - /* [ @storage.some.contract option (contract nat) : @storage.some address - : list operation ] */ ; + /* [ option (contract nat) : address : list operation ] */ ; ASSERT_NONE ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; - CONTRACT %add - nat - /* [ @storage.some.contract option (contract nat) : @storage.some address - : list operation ] */ ; + /* [ address : address : list operation ] */ ; + CONTRACT %add nat + /* [ option (contract nat) : address : list operation ] */ ; ASSERT_SOME ; - PUSH mutez - 0 - /* [ mutez : @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ ; - PUSH nat - 12 - /* [ nat : mutez : @storage.some.contract.some contract nat - : @storage.some address : list operation ] */ ; + PUSH mutez 0 + /* [ mutez : contract nat : address : list operation ] */ ; + PUSH nat 12 + /* [ nat : mutez : contract nat : address : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.some address : list operation ] */ ; + /* [ operation : address : list operation ] */ ; SWAP - /* [ @storage.some address : operation : list operation ] */ ; + /* [ address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage.some address : list operation ] */ ; + /* [ address : list operation ] */ ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; - CONTRACT - unit - /* [ @storage.some.contract option (contract unit) : @storage.some address - : list operation ] */ ; + /* [ address : address : list operation ] */ ; + CONTRACT unit + /* [ option (contract unit) : address : list operation ] */ ; ASSERT_SOME ; - PUSH mutez - 0 - /* [ mutez : @storage.some.contract.some contract unit : @storage.some address - : list operation ] */ ; - PUSH unit - Unit - /* [ unit : mutez : @storage.some.contract.some contract unit - : @storage.some address : list operation ] */ ; + PUSH mutez 0 + /* [ mutez : contract unit : address : list operation ] */ ; + PUSH unit Unit + /* [ unit : mutez : contract unit : address : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.some address : list operation ] */ ; + /* [ operation : address : list operation ] */ ; SWAP - /* [ @storage.some address : operation : list operation ] */ ; + /* [ address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage.some address : list operation ] */ ; + /* [ address : list operation ] */ ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; - CONTRACT %sub - nat - /* [ @storage.some.contract option (contract nat) : @storage.some address - : list operation ] */ ; + /* [ address : address : list operation ] */ ; + CONTRACT %sub nat + /* [ option (contract nat) : address : list operation ] */ ; ASSERT_SOME ; - PUSH mutez - 0 - /* [ mutez : @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ ; - PUSH nat - 3 - /* [ nat : mutez : @storage.some.contract.some contract nat - : @storage.some address : list operation ] */ ; + PUSH mutez 0 + /* [ mutez : contract nat : address : list operation ] */ ; + PUSH nat 3 + /* [ nat : mutez : contract nat : address : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.some address : list operation ] */ ; + /* [ operation : address : list operation ] */ ; SWAP - /* [ @storage.some address : operation : list operation ] */ ; + /* [ address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage.some address : list operation ] */ ; + /* [ address : list operation ] */ ; DUP - /* [ @storage.some address : @storage.some address : list operation ] */ ; - CONTRACT %add - nat - /* [ @storage.some.contract option (contract nat) : @storage.some address - : list operation ] */ ; + /* [ address : address : list operation ] */ ; + CONTRACT %add nat + /* [ option (contract nat) : address : list operation ] */ ; ASSERT_SOME ; - PUSH mutez - 0 - /* [ mutez : @storage.some.contract.some contract nat : @storage.some address - : list operation ] */ ; - PUSH nat - 5 - /* [ nat : mutez : @storage.some.contract.some contract nat - : @storage.some address : list operation ] */ ; + PUSH mutez 0 + /* [ mutez : contract nat : address : list operation ] */ ; + PUSH nat 5 + /* [ nat : mutez : contract nat : address : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : @storage.some address : list operation ] */ ; + /* [ operation : address : list operation ] */ ; SWAP - /* [ @storage.some address : operation : list operation ] */ ; + /* [ address : operation : list operation ] */ ; DIP { CONS /* [ list operation ] */ } - /* [ @storage.some address : list operation ] */ ; + /* [ address : list operation ] */ ; DROP /* [ list operation ] */ ; DIP { NONE address /* [ option address ] */ } @@ -129,16 +102,16 @@ Gas remaining: 1039924.032 units remaining PAIR /* [ pair (list operation) (option address) ] */ } { CAR - /* [ @parameter unit ] */ ; + /* [ unit ] */ ; DUP - /* [ @parameter unit : @parameter unit ] */ ; + /* [ unit : unit ] */ ; DIP { DIP { PUSH int 0 /* [ int ] */ ; PUSH mutez 0 /* [ mutez : int ] */ ; NONE key_hash /* [ option key_hash : mutez : int ] */ } - /* [ @parameter unit : option key_hash : mutez : int ] */ ; + /* [ unit : option key_hash : mutez : int ] */ ; DROP /* [ option key_hash : mutez : int ] */ ; CREATE_CONTRACT @@ -154,12 +127,12 @@ Gas remaining: 1039924.032 units remaining NIL operation ; PAIR } } /* [ operation : address ] */ } - /* [ @parameter unit : operation : address ] */ ; + /* [ unit : operation : address ] */ ; DIP { SELF - /* [ @self contract unit : operation : address ] */ ; + /* [ contract unit : operation : address ] */ ; PUSH mutez 0 - /* [ mutez : @self contract unit : operation : address ] */ } - /* [ @parameter unit : mutez : @self contract unit : operation : address ] */ ; + /* [ mutez : contract unit : operation : address ] */ } + /* [ unit : mutez : contract unit : operation : address ] */ ; TRANSFER_TOKENS /* [ operation : operation : address ] */ ; NIL operation @@ -176,5 +149,5 @@ Gas remaining: 1039924.032 units remaining /* [ list operation : option address ] */ ; PAIR /* [ pair (list operation) (option address) ] */ } - /* [ @amount mutez + /* [ mutez : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--parameterized_multisig.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--parameterized_multisig.tz].out index dec3b5dcf5..b26188b480 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--parameterized_multisig.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--parameterized_multisig.tz].out @@ -10,29 +10,26 @@ Gas remaining: 1039928.103 units remaining : pair (or @parameter nat (pair signature nat)) (pair @storage bool (map nat (pair bool bool)) key key) ] */ ; CAR - /* [ @parameter or nat (pair signature nat) + /* [ or nat (pair signature nat) : pair (or @parameter nat (pair signature nat)) (pair @storage bool (map nat (pair bool bool)) key key) ] */ ; DIP { CDDR } - /* [ @parameter or nat (pair signature nat) - : pair (map nat (pair bool bool)) key key ] */ ; + /* [ or nat (pair signature nat) : pair (map nat (pair bool bool)) key key ] */ ; IF_LEFT { DIP { DUP /* [ pair (map nat (pair bool bool)) key key : pair (map nat (pair bool bool)) key key ] */ ; CAR /* [ map nat (pair bool bool) : pair (map nat (pair bool bool)) key key ] */ } - /* [ @parameter.left nat : map nat (pair bool bool) - : pair (map nat (pair bool bool)) key key ] */ ; + /* [ nat : map nat (pair bool bool) : pair (map nat (pair bool bool)) key key ] */ ; GET /* [ option (pair bool bool) : pair (map nat (pair bool bool)) key key ] */ ; IF_NONE { PUSH bool False /* [ bool : pair (map nat (pair bool bool)) key key ] */ } { DUP - /* [ @some pair bool bool : @some pair bool bool - : pair (map nat (pair bool bool)) key key ] */ ; + /* [ pair bool bool : pair bool bool : pair (map nat (pair bool bool)) key key ] */ ; CAR - /* [ bool : @some pair bool bool : pair (map nat (pair bool bool)) key key ] */ ; + /* [ bool : pair bool bool : pair (map nat (pair bool bool)) key key ] */ ; DIP { CDR /* [ bool : pair (map nat (pair bool bool)) key key ] */ } /* [ bool : bool : pair (map nat (pair bool bool)) key key ] */ ; AND @@ -40,17 +37,16 @@ Gas remaining: 1039928.103 units remaining PAIR /* [ pair bool (map nat (pair bool bool)) key key ] */ } { DUP - /* [ @parameter.right pair signature nat : @parameter.right pair signature nat + /* [ pair signature nat : pair signature nat : pair (map nat (pair bool bool)) key key ] */ ; CAR - /* [ signature : @parameter.right pair signature nat - : pair (map nat (pair bool bool)) key key ] */ ; + /* [ signature : pair signature nat : pair (map nat (pair bool bool)) key key ] */ ; DIP { CDR /* [ nat : pair (map nat (pair bool bool)) key key ] */ ; DUP /* [ nat : nat : pair (map nat (pair bool bool)) key key ] */ ; PACK - /* [ @packed bytes : nat : pair (map nat (pair bool bool)) key key ] */ ; + /* [ bytes : nat : pair (map nat (pair bool bool)) key key ] */ ; BLAKE2B /* [ bytes : nat : pair (map nat (pair bool bool)) key key ] */ } /* [ signature : bytes : nat : pair (map nat (pair bool bool)) key key ] */ ; @@ -105,7 +101,7 @@ Gas remaining: 1039928.103 units remaining { PUSH (pair bool bool) (Pair False False) /* [ pair bool bool : map nat (pair bool bool) : pair key key ] */ } - { /* [ @some pair bool bool : map nat (pair bool bool) : pair key key ] */ } ; + { /* [ pair bool bool : map nat (pair bool bool) : pair key key ] */ } ; CDR /* [ bool : map nat (pair bool bool) : pair key key ] */ ; PUSH bool True @@ -145,7 +141,7 @@ Gas remaining: 1039928.103 units remaining { PUSH (pair bool bool) (Pair False False) /* [ pair bool bool : nat : map nat (pair bool bool) : pair key key ] */ } - { /* [ @some pair bool bool : nat : map nat (pair bool bool) : pair key key ] */ } ; + { /* [ pair bool bool : nat : map nat (pair bool bool) : pair key key ] */ } ; CAR /* [ bool : nat : map nat (pair bool bool) : pair key key ] */ ; PUSH bool True diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--replay.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--replay.tz].out index 1415fae1de..902e300c2c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--replay.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--replay.tz].out @@ -5,29 +5,25 @@ Gas remaining: 1039989.740 units remaining { parameter unit ; storage unit ; code { CDR - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; SOURCE - /* [ @source address : list operation : @storage unit ] */ ; - CONTRACT - unit - /* [ @source.contract option (contract unit) : list operation : @storage unit ] */ ; + /* [ address : list operation : unit ] */ ; + CONTRACT unit + /* [ option (contract unit) : list operation : unit ] */ ; ASSERT_SOME ; - PUSH mutez - 1 - /* [ mutez : @source.contract.some contract unit : list operation - : @storage unit ] */ ; + PUSH mutez 1 + /* [ mutez : contract unit : list operation : unit ] */ ; UNIT - /* [ unit : mutez : @source.contract.some contract unit : list operation - : @storage unit ] */ ; + /* [ unit : mutez : contract unit : list operation : unit ] */ ; TRANSFER_TOKENS - /* [ operation : list operation : @storage unit ] */ ; + /* [ operation : list operation : unit ] */ ; DUP - /* [ operation : operation : list operation : @storage unit ] */ ; - DIP { CONS /* [ list operation : @storage unit ] */ } - /* [ operation : list operation : @storage unit ] */ ; + /* [ operation : operation : list operation : unit ] */ ; + DIP { CONS /* [ list operation : unit ] */ } + /* [ operation : list operation : unit ] */ ; CONS - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--reveal_signed_preimage.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--reveal_signed_preimage.tz].out index 3776d2441d..63c755149a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--reveal_signed_preimage.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--reveal_signed_preimage.tz].out @@ -8,13 +8,13 @@ Gas remaining: 1039977.336 units remaining /* [ pair (pair @parameter bytes signature) (pair @storage bytes key) : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; UNPAIR - /* [ @parameter pair bytes signature : @storage pair bytes key + /* [ pair bytes signature : pair bytes key : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; CAR - /* [ bytes : @storage pair bytes key + /* [ bytes : pair bytes key : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; SHA256 - /* [ bytes : @storage pair bytes key + /* [ bytes : pair bytes key : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; DIP { CAR /* [ bytes : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ } @@ -25,10 +25,10 @@ Gas remaining: 1039977.336 units remaining /* [ pair (pair @parameter bytes signature) (pair @storage bytes key) : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; UNPAIR - /* [ @parameter pair bytes signature : @storage pair bytes key + /* [ pair bytes signature : pair bytes key : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; SWAP - /* [ @storage pair bytes key : @parameter pair bytes signature + /* [ pair bytes key : pair bytes signature : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; DIP { UNPAIR /* [ bytes : signature @@ -36,7 +36,7 @@ Gas remaining: 1039977.336 units remaining SWAP /* [ signature : bytes : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ } - /* [ @storage pair bytes key : signature : bytes + /* [ pair bytes key : signature : bytes : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; CDR /* [ key : signature : bytes @@ -45,26 +45,26 @@ Gas remaining: 1039977.336 units remaining /* [ bool : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; ASSERT ; CDR - /* [ @storage pair bytes key ] */ ; + /* [ pair bytes key ] */ ; DUP - /* [ @storage pair bytes key : @storage pair bytes key ] */ ; + /* [ pair bytes key : pair bytes key ] */ ; CDR - /* [ key : @storage pair bytes key ] */ ; + /* [ key : pair bytes key ] */ ; HASH_KEY - /* [ key_hash : @storage pair bytes key ] */ ; + /* [ key_hash : pair bytes key ] */ ; IMPLICIT_ACCOUNT - /* [ contract unit : @storage pair bytes key ] */ ; + /* [ contract unit : pair bytes key ] */ ; BALANCE - /* [ @balance mutez : contract unit : @storage pair bytes key ] */ ; + /* [ mutez : contract unit : pair bytes key ] */ ; UNIT - /* [ unit : @balance mutez : contract unit : @storage pair bytes key ] */ ; + /* [ unit : mutez : contract unit : pair bytes key ] */ ; TRANSFER_TOKENS - /* [ operation : @storage pair bytes key ] */ ; + /* [ operation : pair bytes key ] */ ; NIL operation - /* [ list operation : operation : @storage pair bytes key ] */ ; + /* [ list operation : operation : pair bytes key ] */ ; SWAP - /* [ operation : list operation : @storage pair bytes key ] */ ; + /* [ operation : list operation : pair bytes key ] */ ; CONS - /* [ list operation : @storage pair bytes key ] */ ; + /* [ list operation : pair bytes key ] */ ; PAIR - /* [ pair (list operation) (pair @storage bytes key) ] */ } } + /* [ pair (list operation) bytes key ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--self_address_receiver.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--self_address_receiver.tz].out index 03a739cbe9..f00cbadabc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--self_address_receiver.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--self_address_receiver.tz].out @@ -5,15 +5,15 @@ Gas remaining: 1039991.719 units remaining { parameter (lambda unit address) ; storage unit ; code { UNPAIR - /* [ @parameter lambda unit address : @storage unit ] */ ; + /* [ lambda unit address : unit ] */ ; UNIT - /* [ unit : @parameter lambda unit address : @storage unit ] */ ; + /* [ unit : lambda unit address : unit ] */ ; EXEC - /* [ address : @storage unit ] */ ; + /* [ address : unit ] */ ; SELF_ADDRESS - /* [ @self address : address : @storage unit ] */ ; + /* [ address : address : unit ] */ ; ASSERT_CMPEQ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--self_address_sender.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--self_address_sender.tz].out index b723850379..14a5873217 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--self_address_sender.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--self_address_sender.tz].out @@ -5,15 +5,14 @@ Gas remaining: 1039991.879 units remaining { parameter (contract (lambda unit address)) ; storage unit ; code { CAR - /* [ @parameter contract (lambda unit address) ] */ ; + /* [ contract (lambda unit address) ] */ ; BALANCE - /* [ @balance mutez : @parameter contract (lambda unit address) ] */ ; + /* [ mutez : contract (lambda unit address) ] */ ; LAMBDA unit address - { DROP /* [] */ ; SELF_ADDRESS /* [ @self address ] */ } - /* [ lambda unit address : @balance mutez - : @parameter contract (lambda unit address) ] */ ; + { DROP /* [] */ ; SELF_ADDRESS /* [ address ] */ } + /* [ lambda unit address : mutez : contract (lambda unit address) ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; DIP { UNIT /* [ unit ] */ ; NIL operation /* [ list operation : unit ] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_fungible.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_fungible.tz].out index a472529a08..55032656ef 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_fungible.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_fungible.tz].out @@ -7,65 +7,62 @@ Gas remaining: 1039973.685 units remaining (pair %mint (contract %destination (ticket unit)) (nat %amount))) ; storage address ; code { AMOUNT - /* [ @amount mutez + /* [ mutez : pair (or @parameter (ticket %burn unit) (pair %mint (contract %destination (ticket unit)) (nat %amount))) (address @storage) ] */ ; PUSH mutez 0 - /* [ mutez : @amount mutez + /* [ mutez : mutez : pair (or @parameter (ticket %burn unit) (pair %mint (contract %destination (ticket unit)) (nat %amount))) (address @storage) ] */ ; ASSERT_CMPEQ ; UNPAIR - /* [ @parameter or (ticket %burn unit) + /* [ or (ticket %burn unit) (pair %mint (contract %destination (ticket unit)) (nat %amount)) - : @storage address ] */ ; + : address ] */ ; IF_LEFT { READ_TICKET - /* [ pair address unit nat : @parameter.burn ticket unit : @storage address ] */ ; + /* [ pair address unit nat : ticket unit : address ] */ ; CAR - /* [ address : @parameter.burn ticket unit : @storage address ] */ ; + /* [ address : ticket unit : address ] */ ; SELF_ADDRESS - /* [ @self address : address : @parameter.burn ticket unit : @storage address ] */ ; + /* [ address : address : ticket unit : address ] */ ; ASSERT_CMPEQ ; DROP - /* [ @storage address ] */ ; + /* [ address ] */ ; NIL operation - /* [ list operation : @storage address ] */ } + /* [ list operation : address ] */ } { DUP @manager 2 - /* [ @manager address - : @parameter.mint pair (contract %destination (ticket unit)) (nat %amount) - : @storage address ] */ ; + /* [ address : pair (contract %destination (ticket unit)) (nat %amount) + : address ] */ ; SENDER - /* [ @sender address : @manager address - : @parameter.mint pair (contract %destination (ticket unit)) (nat %amount) - : @storage address ] */ ; + /* [ address : address + : pair (contract %destination (ticket unit)) (nat %amount) : address ] */ ; ASSERT_CMPEQ ; UNPAIR - /* [ contract (ticket unit) : nat : @storage address ] */ ; + /* [ contract (ticket unit) : nat : address ] */ ; SWAP - /* [ nat : contract (ticket unit) : @storage address ] */ ; + /* [ nat : contract (ticket unit) : address ] */ ; UNIT - /* [ unit : nat : contract (ticket unit) : @storage address ] */ ; + /* [ unit : nat : contract (ticket unit) : address ] */ ; TICKET - /* [ ticket unit : contract (ticket unit) : @storage address ] */ ; - PUSH mutez - 0 - /* [ mutez : ticket unit : contract (ticket unit) : @storage address ] */ ; + /* [ ticket unit : contract (ticket unit) : address ] */ ; + PUSH mutez 0 + /* [ mutez : ticket unit : contract (ticket unit) : address ] */ ; SWAP - /* [ ticket unit : mutez : contract (ticket unit) : @storage address ] */ ; + /* [ ticket unit : mutez : contract (ticket unit) : address ] */ ; TRANSFER_TOKENS - /* [ operation : @storage address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @storage address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @storage address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @storage address ] */ } ; + /* [ list operation : address ] */ } ; PAIR - /* [ pair (list operation) (address @storage) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_non_fungible.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_non_fungible.tz].out index d05c187d10..c2a6e9a1ea 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_non_fungible.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_non_fungible.tz].out @@ -5,69 +5,56 @@ Gas remaining: 1039970.718 units remaining { parameter (or (ticket %burn nat) (contract %mint_destination (ticket nat))) ; storage (pair (address %manager) (nat %counter)) ; code { AMOUNT - /* [ @amount mutez + /* [ mutez : pair (or @parameter (ticket %burn nat) (contract %mint_destination (ticket nat))) (pair @storage (address %manager) (nat %counter)) ] */ ; PUSH mutez 0 - /* [ mutez : @amount mutez + /* [ mutez : mutez : pair (or @parameter (ticket %burn nat) (contract %mint_destination (ticket nat))) (pair @storage (address %manager) (nat %counter)) ] */ ; ASSERT_CMPEQ ; UNPAIR 3 - /* [ or (ticket %burn nat) (contract %mint_destination (ticket nat)) - : @manager address : @counter nat ] */ ; + /* [ or (ticket %burn nat) (contract %mint_destination (ticket nat)) : address + : nat ] */ ; IF_LEFT { READ_TICKET - /* [ pair address nat nat : @burn ticket nat : @manager address : @counter nat ] */ ; + /* [ pair address nat nat : ticket nat : address : nat ] */ ; CAR - /* [ address : @burn ticket nat : @manager address : @counter nat ] */ ; + /* [ address : ticket nat : address : nat ] */ ; SELF_ADDRESS - /* [ @self address : address : @burn ticket nat : @manager address - : @counter nat ] */ ; + /* [ address : address : ticket nat : address : nat ] */ ; ASSERT_CMPEQ ; DROP - /* [ @manager address : @counter nat ] */ ; + /* [ address : nat ] */ ; NIL operation - /* [ list operation : @manager address : @counter nat ] */ } - { DUP @manager - 2 - /* [ @manager address : @mint_destination contract (ticket nat) - : @manager address : @counter nat ] */ ; + /* [ list operation : address : nat ] */ } + { DUP @manager 2 + /* [ address : contract (ticket nat) : address : nat ] */ ; SENDER - /* [ @sender address : @manager address - : @mint_destination contract (ticket nat) : @manager address : @counter nat ] */ ; + /* [ address : address : contract (ticket nat) : address : nat ] */ ; ASSERT_CMPEQ ; - PUSH @amount - nat - 1 - /* [ @amount nat : @mint_destination contract (ticket nat) : @manager address - : @counter nat ] */ ; - DUP @counter - 4 - /* [ @counter nat : @amount nat : @mint_destination contract (ticket nat) - : @manager address : @counter nat ] */ ; + PUSH @amount nat 1 + /* [ nat : contract (ticket nat) : address : nat ] */ ; + DUP @counter 4 + /* [ nat : nat : contract (ticket nat) : address : nat ] */ ; TICKET - /* [ ticket nat : @mint_destination contract (ticket nat) : @manager address - : @counter nat ] */ ; - PUSH mutez - 0 - /* [ mutez : ticket nat : @mint_destination contract (ticket nat) - : @manager address : @counter nat ] */ ; + /* [ ticket nat : contract (ticket nat) : address : nat ] */ ; + PUSH mutez 0 + /* [ mutez : ticket nat : contract (ticket nat) : address : nat ] */ ; SWAP - /* [ ticket nat : mutez : @mint_destination contract (ticket nat) - : @manager address : @counter nat ] */ ; + /* [ ticket nat : mutez : contract (ticket nat) : address : nat ] */ ; TRANSFER_TOKENS - /* [ operation : @manager address : @counter nat ] */ ; + /* [ operation : address : nat ] */ ; NIL operation - /* [ list operation : operation : @manager address : @counter nat ] */ ; + /* [ list operation : operation : address : nat ] */ ; SWAP - /* [ operation : list operation : @manager address : @counter nat ] */ ; + /* [ operation : list operation : address : nat ] */ ; CONS - /* [ list operation : @manager address : @counter nat ] */ ; + /* [ list operation : address : nat ] */ ; DIP 2 - { PUSH nat 1 /* [ nat : @counter nat ] */ ; ADD /* [ nat ] */ } - /* [ list operation : @manager address : nat ] */ } ; + { PUSH nat 1 /* [ nat : nat ] */ ; ADD /* [ nat ] */ } + /* [ list operation : address : nat ] */ } ; PAIR 3 /* [ pair (list operation) address nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_fungible.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_fungible.tz].out index 75d3716056..4be42ebff4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_fungible.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_fungible.tz].out @@ -7,14 +7,14 @@ Gas remaining: 1039935.806 units remaining (pair %send (contract %destination (ticket unit)) (nat %amount) (address %ticketer))) ; storage (pair (address %manager) (big_map %tickets address (ticket unit))) ; code { AMOUNT - /* [ @amount mutez + /* [ mutez : pair (or @parameter (ticket %receive unit) (pair %send (contract %destination (ticket unit)) (nat %amount) (address %ticketer))) (pair @storage (address %manager) (big_map %tickets address (ticket unit))) ] */ ; PUSH mutez 0 - /* [ mutez : @amount mutez + /* [ mutez : mutez : pair (or @parameter (ticket %receive unit) (pair %send (contract %destination (ticket unit)) (nat %amount) (address %ticketer))) @@ -24,201 +24,152 @@ Gas remaining: 1039935.806 units remaining 3 /* [ or (ticket %receive unit) (pair %send (contract %destination (ticket unit)) (nat %amount) (address %ticketer)) - : @manager address : @tickets big_map address (ticket unit) ] */ ; + : address : big_map address (ticket unit) ] */ ; IF_LEFT { READ_TICKET - /* [ pair address unit nat : @receive ticket unit : @manager address - : @tickets big_map address (ticket unit) ] */ ; + /* [ pair address unit nat : ticket unit : address + : big_map address (ticket unit) ] */ ; CAR @ticketer - /* [ @ticketer address : @receive ticket unit : @manager address - : @tickets big_map address (ticket unit) ] */ ; + /* [ address : ticket unit : address : big_map address (ticket unit) ] */ ; DUP - /* [ @ticketer address : @ticketer address : @receive ticket unit - : @manager address : @tickets big_map address (ticket unit) ] */ ; + /* [ address : address : ticket unit : address : big_map address (ticket unit) ] */ ; DIG 4 - /* [ @tickets big_map address (ticket unit) : @ticketer address - : @ticketer address : @receive ticket unit : @manager address ] */ ; + /* [ big_map address (ticket unit) : address : address : ticket unit : address ] */ ; NONE (ticket unit) - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @ticketer address : @ticketer address : @receive ticket unit - : @manager address ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) : address : address + : ticket unit : address ] */ ; DIG 2 - /* [ @ticketer address : option (ticket unit) - : @tickets big_map address (ticket unit) : @ticketer address - : @receive ticket unit : @manager address ] */ ; + /* [ address : option (ticket unit) : big_map address (ticket unit) : address + : ticket unit : address ] */ ; GET_AND_UPDATE - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @ticketer address : @receive ticket unit : @manager address ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) : address + : ticket unit : address ] */ ; IF_SOME { DIG 3 - /* [ @receive ticket unit : @some ticket unit - : @tickets big_map address (ticket unit) : @ticketer address - : @manager address ] */ ; + /* [ ticket unit : ticket unit : big_map address (ticket unit) : address + : address ] */ ; PAIR - /* [ pair (ticket @receive unit) (ticket @some unit) - : @tickets big_map address (ticket unit) : @ticketer address - : @manager address ] */ ; + /* [ pair (ticket unit) (ticket unit) : big_map address (ticket unit) : address + : address ] */ ; JOIN_TICKETS - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @ticketer address : @manager address ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) : address : address ] */ ; ASSERT_SOME } { DIG 2 - /* [ @receive ticket unit : @tickets big_map address (ticket unit) - : @ticketer address : @manager address ] */ } ; + /* [ ticket unit : big_map address (ticket unit) : address : address ] */ } ; SOME - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @ticketer address : @manager address ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) : address : address ] */ ; DIG 2 - /* [ @ticketer address : option (ticket unit) - : @tickets big_map address (ticket unit) : @manager address ] */ ; + /* [ address : option (ticket unit) : big_map address (ticket unit) : address ] */ ; GET_AND_UPDATE - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @manager address ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) : address ] */ ; ASSERT_NONE ; SWAP - /* [ @manager address : @tickets big_map address (ticket unit) ] */ ; + /* [ address : big_map address (ticket unit) ] */ ; PAIR - /* [ pair (address @manager) (big_map @tickets address (ticket unit)) ] */ ; + /* [ pair address (big_map address (ticket unit)) ] */ ; NIL operation - /* [ list operation - : pair (address @manager) (big_map @tickets address (ticket unit)) ] */ } + /* [ list operation : pair address (big_map address (ticket unit)) ] */ } { DUP @manager 2 - /* [ @manager address - : @send pair (contract %destination (ticket unit)) (nat %amount) (address %ticketer) - : @manager address : @tickets big_map address (ticket unit) ] */ ; + /* [ address + : pair (contract %destination (ticket unit)) (nat %amount) (address %ticketer) + : address : big_map address (ticket unit) ] */ ; SENDER - /* [ @sender address : @manager address - : @send pair (contract %destination (ticket unit)) (nat %amount) (address %ticketer) - : @manager address : @tickets big_map address (ticket unit) ] */ ; + /* [ address : address + : pair (contract %destination (ticket unit)) (nat %amount) (address %ticketer) + : address : big_map address (ticket unit) ] */ ; ASSERT_CMPEQ ; UNPAIR 3 - /* [ @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address : @tickets big_map address (ticket unit) ] */ ; + /* [ contract (ticket unit) : nat : address : address + : big_map address (ticket unit) ] */ ; DIG 4 - /* [ @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ big_map address (ticket unit) : contract (ticket unit) : nat : address + : address ] */ ; NONE (ticket unit) - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) + : contract (ticket unit) : nat : address : address ] */ ; DUP @ticketer 5 - /* [ @ticketer address : option (ticket unit) - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ address : option (ticket unit) : big_map address (ticket unit) + : contract (ticket unit) : nat : address : address ] */ ; GET_AND_UPDATE - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) + : contract (ticket unit) : nat : address : address ] */ ; ASSERT_SOME ; READ_TICKET - /* [ pair address unit nat : @some ticket unit - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ pair address unit nat : ticket unit : big_map address (ticket unit) + : contract (ticket unit) : nat : address : address ] */ ; GET @total_amount 4 - /* [ @total_amount nat : @some ticket unit - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ nat : ticket unit : big_map address (ticket unit) : contract (ticket unit) + : nat : address : address ] */ ; DUP @amount 5 - /* [ @amount nat : @total_amount nat : @some ticket unit - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ nat : nat : ticket unit : big_map address (ticket unit) + : contract (ticket unit) : nat : address : address ] */ ; SWAP - /* [ @total_amount nat : @amount nat : @some ticket unit - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ nat : nat : ticket unit : big_map address (ticket unit) + : contract (ticket unit) : nat : address : address ] */ ; SUB - /* [ int : @some ticket unit : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ int : ticket unit : big_map address (ticket unit) : contract (ticket unit) + : nat : address : address ] */ ; ISNAT - /* [ option nat : @some ticket unit : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @amount nat : @ticketer address - : @manager address ] */ ; + /* [ option nat : ticket unit : big_map address (ticket unit) + : contract (ticket unit) : nat : address : address ] */ ; ASSERT_SOME @remaining_amount ; DIG 4 - /* [ @amount nat : @remaining_amount nat : @some ticket unit - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @ticketer address - : @manager address ] */ ; + /* [ nat : nat : ticket unit : big_map address (ticket unit) + : contract (ticket unit) : address : address ] */ ; PAIR - /* [ pair (nat @amount) (nat @remaining_amount) : @some ticket unit - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @ticketer address - : @manager address ] */ ; + /* [ pair nat nat : ticket unit : big_map address (ticket unit) + : contract (ticket unit) : address : address ] */ ; SWAP - /* [ @some ticket unit : pair (nat @amount) (nat @remaining_amount) - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @ticketer address - : @manager address ] */ ; + /* [ ticket unit : pair nat nat : big_map address (ticket unit) + : contract (ticket unit) : address : address ] */ ; SPLIT_TICKET - /* [ option (pair (ticket @amount unit) (ticket @remaining_amount unit)) - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @ticketer address - : @manager address ] */ ; + /* [ option (pair (ticket unit) (ticket unit)) : big_map address (ticket unit) + : contract (ticket unit) : address : address ] */ ; ASSERT_SOME ; UNPAIR @to_send @to_keep - /* [ @to_send ticket unit : @to_keep ticket unit - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @ticketer address - : @manager address ] */ ; + /* [ ticket unit : ticket unit : big_map address (ticket unit) + : contract (ticket unit) : address : address ] */ ; DUG 5 - /* [ @to_keep ticket unit : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @ticketer address : @manager address - : @to_send ticket unit ] */ ; + /* [ ticket unit : big_map address (ticket unit) : contract (ticket unit) + : address : address : ticket unit ] */ ; SOME - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @ticketer address : @manager address - : @to_send ticket unit ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) + : contract (ticket unit) : address : address : ticket unit ] */ ; DIG 3 - /* [ @ticketer address : option (ticket unit) - : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @manager address - : @to_send ticket unit ] */ ; + /* [ address : option (ticket unit) : big_map address (ticket unit) + : contract (ticket unit) : address : ticket unit ] */ ; GET_AND_UPDATE - /* [ option (ticket unit) : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @manager address - : @to_send ticket unit ] */ ; + /* [ option (ticket unit) : big_map address (ticket unit) + : contract (ticket unit) : address : ticket unit ] */ ; ASSERT_NONE ; DIG 2 - /* [ @manager address : @tickets big_map address (ticket unit) - : @destination contract (ticket unit) : @to_send ticket unit ] */ ; + /* [ address : big_map address (ticket unit) : contract (ticket unit) + : ticket unit ] */ ; PAIR - /* [ pair (address @manager) (big_map @tickets address (ticket unit)) - : @destination contract (ticket unit) : @to_send ticket unit ] */ ; + /* [ pair address (big_map address (ticket unit)) : contract (ticket unit) + : ticket unit ] */ ; SWAP - /* [ @destination contract (ticket unit) - : pair (address @manager) (big_map @tickets address (ticket unit)) - : @to_send ticket unit ] */ ; + /* [ contract (ticket unit) : pair address (big_map address (ticket unit)) + : ticket unit ] */ ; PUSH mutez 0 - /* [ mutez : @destination contract (ticket unit) - : pair (address @manager) (big_map @tickets address (ticket unit)) - : @to_send ticket unit ] */ ; + /* [ mutez : contract (ticket unit) + : pair address (big_map address (ticket unit)) : ticket unit ] */ ; DIG 3 - /* [ @to_send ticket unit : mutez : @destination contract (ticket unit) - : pair (address @manager) (big_map @tickets address (ticket unit)) ] */ ; + /* [ ticket unit : mutez : contract (ticket unit) + : pair address (big_map address (ticket unit)) ] */ ; TRANSFER_TOKENS - /* [ operation - : pair (address @manager) (big_map @tickets address (ticket unit)) ] */ ; + /* [ operation : pair address (big_map address (ticket unit)) ] */ ; NIL operation - /* [ list operation : operation - : pair (address @manager) (big_map @tickets address (ticket unit)) ] */ ; + /* [ list operation : operation : pair address (big_map address (ticket unit)) ] */ ; SWAP - /* [ operation : list operation - : pair (address @manager) (big_map @tickets address (ticket unit)) ] */ ; + /* [ operation : list operation : pair address (big_map address (ticket unit)) ] */ ; CONS - /* [ list operation - : pair (address @manager) (big_map @tickets address (ticket unit)) ] */ } ; + /* [ list operation : pair address (big_map address (ticket unit)) ] */ } ; PAIR - /* [ pair (list operation) (address @manager) (big_map @tickets address (ticket unit)) ] */ } } + /* [ pair (list operation) address (big_map address (ticket unit)) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_non_fungible.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_non_fungible.tz].out index b449006d49..1a9b220534 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_non_fungible.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_non_fungible.tz].out @@ -7,14 +7,14 @@ Gas remaining: 1039952.622 units remaining (pair %send (contract %destination (ticket nat)) (address %ticketer) (nat %id))) ; storage (pair (address %manager) (big_map %tickets (pair address nat) (ticket nat))) ; code { AMOUNT - /* [ @amount mutez + /* [ mutez : pair (or @parameter (ticket %receive nat) (pair %send (contract %destination (ticket nat)) (address %ticketer) (nat %id))) (pair @storage (address %manager) (big_map %tickets (pair address nat) (ticket nat))) ] */ ; PUSH mutez 0 - /* [ mutez : @amount mutez + /* [ mutez : mutez : pair (or @parameter (ticket %receive nat) (pair %send (contract %destination (ticket nat)) (address %ticketer) (nat %id))) @@ -24,109 +24,98 @@ Gas remaining: 1039952.622 units remaining 3 /* [ or (ticket %receive nat) (pair %send (contract %destination (ticket nat)) (address %ticketer) (nat %id)) - : @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + : address : big_map (pair address nat) (ticket nat) ] */ ; IF_LEFT { READ_TICKET - /* [ pair address nat nat : @receive ticket nat : @manager address - : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ pair address nat nat : ticket nat : address + : big_map (pair address nat) (ticket nat) ] */ ; CAST (pair (address %ticketer) (nat %id) (nat %amount)) - /* [ pair (address %ticketer) (nat %id) (nat %amount) : @receive ticket nat - : @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ pair (address %ticketer) (nat %id) (nat %amount) : ticket nat : address + : big_map (pair address nat) (ticket nat) ] */ ; UNPAIR 3 - /* [ @ticketer address : @id nat : @amount nat : @receive ticket nat - : @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ address : nat : nat : ticket nat : address + : big_map (pair address nat) (ticket nat) ] */ ; DIG 2 - /* [ @amount nat : @ticketer address : @id nat : @receive ticket nat - : @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ nat : address : nat : ticket nat : address + : big_map (pair address nat) (ticket nat) ] */ ; PUSH nat 1 - /* [ nat : @amount nat : @ticketer address : @id nat : @receive ticket nat - : @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ nat : nat : address : nat : ticket nat : address + : big_map (pair address nat) (ticket nat) ] */ ; ASSERT_CMPEQ ; PAIR - /* [ pair (address @ticketer) (nat @id) : @receive ticket nat : @manager address - : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ pair address nat : ticket nat : address + : big_map (pair address nat) (ticket nat) ] */ ; DIP { SOME - /* [ option (ticket nat) : @manager address - : @tickets big_map (pair address nat) (ticket nat) ] */ ; - DIP { SWAP - /* [ @tickets big_map (pair address nat) (ticket nat) : @manager address ] */ } - /* [ option (ticket nat) : @tickets big_map (pair address nat) (ticket nat) - : @manager address ] */ } - /* [ pair (address @ticketer) (nat @id) : option (ticket nat) - : @tickets big_map (pair address nat) (ticket nat) : @manager address ] */ ; + /* [ option (ticket nat) : address : big_map (pair address nat) (ticket nat) ] */ ; + DIP { SWAP /* [ big_map (pair address nat) (ticket nat) : address ] */ } + /* [ option (ticket nat) : big_map (pair address nat) (ticket nat) : address ] */ } + /* [ pair address nat : option (ticket nat) + : big_map (pair address nat) (ticket nat) : address ] */ ; GET_AND_UPDATE - /* [ option (ticket nat) : @tickets big_map (pair address nat) (ticket nat) - : @manager address ] */ ; + /* [ option (ticket nat) : big_map (pair address nat) (ticket nat) : address ] */ ; ASSERT_NONE ; SWAP - /* [ @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ address : big_map (pair address nat) (ticket nat) ] */ ; PAIR - /* [ pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ ; + /* [ pair address (big_map (pair address nat) (ticket nat)) ] */ ; NIL operation - /* [ list operation - : pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ } + /* [ list operation : pair address (big_map (pair address nat) (ticket nat)) ] */ } { DUP @manager 2 - /* [ @manager address - : @send pair (contract %destination (ticket nat)) (address %ticketer) (nat %id) - : @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ address + : pair (contract %destination (ticket nat)) (address %ticketer) (nat %id) + : address : big_map (pair address nat) (ticket nat) ] */ ; SENDER - /* [ @sender address : @manager address - : @send pair (contract %destination (ticket nat)) (address %ticketer) (nat %id) - : @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ address : address + : pair (contract %destination (ticket nat)) (address %ticketer) (nat %id) + : address : big_map (pair address nat) (ticket nat) ] */ ; ASSERT_CMPEQ ; UNPAIR - /* [ contract (ticket nat) : pair (address %ticketer) (nat %id) - : @manager address : @tickets big_map (pair address nat) (ticket nat) ] */ ; + /* [ contract (ticket nat) : pair (address %ticketer) (nat %id) : address + : big_map (pair address nat) (ticket nat) ] */ ; DIG 3 - /* [ @tickets big_map (pair address nat) (ticket nat) : contract (ticket nat) - : pair (address %ticketer) (nat %id) : @manager address ] */ ; + /* [ big_map (pair address nat) (ticket nat) : contract (ticket nat) + : pair (address %ticketer) (nat %id) : address ] */ ; NONE (ticket nat) - /* [ option (ticket nat) : @tickets big_map (pair address nat) (ticket nat) - : contract (ticket nat) : pair (address %ticketer) (nat %id) - : @manager address ] */ ; + /* [ option (ticket nat) : big_map (pair address nat) (ticket nat) + : contract (ticket nat) : pair (address %ticketer) (nat %id) : address ] */ ; DIG 3 /* [ pair (address %ticketer) (nat %id) : option (ticket nat) - : @tickets big_map (pair address nat) (ticket nat) : contract (ticket nat) - : @manager address ] */ ; + : big_map (pair address nat) (ticket nat) : contract (ticket nat) : address ] */ ; GET_AND_UPDATE - /* [ option (ticket nat) : @tickets big_map (pair address nat) (ticket nat) - : contract (ticket nat) : @manager address ] */ ; + /* [ option (ticket nat) : big_map (pair address nat) (ticket nat) + : contract (ticket nat) : address ] */ ; ASSERT_SOME ; SWAP - /* [ @tickets big_map (pair address nat) (ticket nat) : @some ticket nat - : contract (ticket nat) : @manager address ] */ ; + /* [ big_map (pair address nat) (ticket nat) : ticket nat + : contract (ticket nat) : address ] */ ; DIG 3 - /* [ @manager address : @tickets big_map (pair address nat) (ticket nat) - : @some ticket nat : contract (ticket nat) ] */ ; + /* [ address : big_map (pair address nat) (ticket nat) : ticket nat + : contract (ticket nat) ] */ ; PAIR - /* [ pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) - : @some ticket nat : contract (ticket nat) ] */ ; + /* [ pair address (big_map (pair address nat) (ticket nat)) : ticket nat + : contract (ticket nat) ] */ ; DUG 2 - /* [ @some ticket nat : contract (ticket nat) - : pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ ; + /* [ ticket nat : contract (ticket nat) + : pair address (big_map (pair address nat) (ticket nat)) ] */ ; PUSH mutez 0 - /* [ mutez : @some ticket nat : contract (ticket nat) - : pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ ; + /* [ mutez : ticket nat : contract (ticket nat) + : pair address (big_map (pair address nat) (ticket nat)) ] */ ; SWAP - /* [ @some ticket nat : mutez : contract (ticket nat) - : pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ ; + /* [ ticket nat : mutez : contract (ticket nat) + : pair address (big_map (pair address nat) (ticket nat)) ] */ ; TRANSFER_TOKENS - /* [ operation - : pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ ; + /* [ operation : pair address (big_map (pair address nat) (ticket nat)) ] */ ; NIL operation /* [ list operation : operation - : pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ ; + : pair address (big_map (pair address nat) (ticket nat)) ] */ ; SWAP /* [ operation : list operation - : pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ ; + : pair address (big_map (pair address nat) (ticket nat)) ] */ ; CONS - /* [ list operation - : pair (address @manager) (big_map @tickets (pair address nat) (ticket nat)) ] */ } ; + /* [ list operation : pair address (big_map (pair address nat) (ticket nat)) ] */ } ; PAIR - /* [ pair (list operation) - (address @manager) - (big_map @tickets (pair address nat) (ticket nat)) ] */ } } + /* [ pair (list operation) address (big_map (pair address nat) (ticket nat)) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--tzip4_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--tzip4_view.tz].out index 5411d04597..6da4ea7906 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--tzip4_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--tzip4_view.tz].out @@ -7,15 +7,15 @@ Gas remaining: 1039984.179 units remaining (pair %view_add (pair int int) (contract int))) ; storage unit ; code { CAR - /* [ @parameter or (pair %view_const unit (contract nat)) + /* [ or (pair %view_const unit (contract nat)) (pair %view_add (pair int int) (contract int)) ] */ ; IF_LEFT { CDR /* [ contract nat ] */ ; AMOUNT - /* [ @amount mutez : contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 5 - /* [ nat : @amount mutez : contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; NIL operation @@ -37,9 +37,9 @@ Gas remaining: 1039984.179 units remaining ADD /* [ int : contract int ] */ ; AMOUNT - /* [ @amount mutez : int : contract int ] */ ; + /* [ mutez : int : contract int ] */ ; SWAP - /* [ int : @amount mutez : contract int ] */ ; + /* [ int : mutez : contract int ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat.tz].out index d40dafa17c..de37fea144 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat.tz].out @@ -5,76 +5,66 @@ Gas remaining: 1039965.793 units remaining { parameter bytes ; storage unit ; code { CAR @preimage - /* [ @preimage bytes ] */ ; + /* [ bytes ] */ ; DIP { PUSH @from key_hash "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" - /* [ @from key_hash ] */ ; + /* [ key_hash ] */ ; IMPLICIT_ACCOUNT /* [ contract unit ] */ ; PUSH @to key_hash "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN" - /* [ @to key_hash : contract unit ] */ ; + /* [ key_hash : contract unit ] */ ; IMPLICIT_ACCOUNT /* [ contract unit : contract unit ] */ ; - PUSH @target_hash - bytes - 0x123456 - /* [ @target_hash bytes : contract unit : contract unit ] */ ; + PUSH @target_hash bytes 0x123456 + /* [ bytes : contract unit : contract unit ] */ ; PUSH @deadline timestamp "2018-08-08 00:00:00Z" - /* [ @deadline timestamp : @target_hash bytes : contract unit : contract unit ] */ } - /* [ @preimage bytes : @deadline timestamp : @target_hash bytes : contract unit - : contract unit ] */ ; + /* [ timestamp : bytes : contract unit : contract unit ] */ } + /* [ bytes : timestamp : bytes : contract unit : contract unit ] */ ; SWAP - /* [ @deadline timestamp : @preimage bytes : @target_hash bytes : contract unit - : contract unit ] */ ; + /* [ timestamp : bytes : bytes : contract unit : contract unit ] */ ; NOW - /* [ @now timestamp : @deadline timestamp : @preimage bytes : @target_hash bytes - : contract unit : contract unit ] */ ; + /* [ timestamp : timestamp : bytes : bytes : contract unit : contract unit ] */ ; IFCMPLT { DROP - /* [ @target_hash bytes : contract unit : contract unit ] */ ; + /* [ bytes : contract unit : contract unit ] */ ; DROP /* [ contract unit : contract unit ] */ ; DROP /* [ contract unit ] */ ; BALANCE - /* [ @balance mutez : contract unit ] */ ; + /* [ mutez : contract unit ] */ ; UNIT - /* [ unit : @balance mutez : contract unit ] */ ; + /* [ unit : mutez : contract unit ] */ ; TRANSFER_TOKENS /* [ operation ] */ } { DUP - /* [ @preimage bytes : @preimage bytes : @target_hash bytes : contract unit - : contract unit ] */ ; + /* [ bytes : bytes : bytes : contract unit : contract unit ] */ ; SIZE - /* [ nat : @preimage bytes : @target_hash bytes : contract unit - : contract unit ] */ ; + /* [ nat : bytes : bytes : contract unit : contract unit ] */ ; PUSH @max_length nat 32 - /* [ @max_length nat : nat : @preimage bytes : @target_hash bytes - : contract unit : contract unit ] */ ; + /* [ nat : nat : bytes : bytes : contract unit : contract unit ] */ ; IFCMPLT { PUSH string "preimage too long" - /* [ string : @preimage bytes : @target_hash bytes : contract unit - : contract unit ] */ ; + /* [ string : bytes : bytes : contract unit : contract unit ] */ ; FAILWITH /* [] */ } { SHA256 @candidate_hash - /* [ @candidate_hash bytes : @target_hash bytes : contract unit - : contract unit ] */ ; + /* [ bytes : bytes : contract unit : contract unit ] */ ; IFCMPNEQ { PUSH string "invalid preimage" /* [ string : contract unit : contract unit ] */ ; FAILWITH /* [] */ } { BALANCE - /* [ @balance mutez : contract unit : contract unit ] */ ; + /* [ mutez : contract unit : contract unit ] */ ; UNIT - /* [ unit : @balance mutez : contract unit : contract unit ] */ ; + /* [ unit : mutez : contract unit : contract unit ] */ ; TRANSFER_TOKENS /* [ operation : contract unit ] */ ; DIP { DROP /* [] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat_dapp.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat_dapp.tz].out index d04625a6d0..6a8693771e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat_dapp.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat_dapp.tz].out @@ -15,7 +15,7 @@ Gas remaining: 1039911.852 units remaining unit) ; code { NIL @operations operation - /* [ @operations list operation + /* [ list operation : pair (or @parameter (pair %fund (address %dest) @@ -38,7 +38,7 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline)))) - unit) : @operations list operation ] */ ; + unit) : list operation ] */ ; UNPAPAIR @% @% @% ; DIP { DUP /* [ big_map @@ -49,8 +49,8 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ } - /* [ @parameter or (pair %fund + : list operation ] */ } + /* [ or (pair %fund (address %dest) (pair %settings (bytes %target_hash) (timestamp %deadline))) (or %claim_refund (bytes %preimage_claim) (bytes %refund_hash)) @@ -62,10 +62,10 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; IF_LEFT { UNPAIR @% @% - /* [ @dest address : @settings pair (bytes %target_hash) (timestamp %deadline) + /* [ address : pair (bytes %target_hash) (timestamp %deadline) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -74,10 +74,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DUP - /* [ @dest address : @dest address - : @settings pair (bytes %target_hash) (timestamp %deadline) + /* [ address : address : pair (bytes %target_hash) (timestamp %deadline) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -86,11 +85,11 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; CONTRACT @dest unit - /* [ @dest option (contract unit) : @dest address - : @settings pair (bytes %target_hash) (timestamp %deadline) + /* [ option (contract unit) : address + : pair (bytes %target_hash) (timestamp %deadline) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -99,10 +98,10 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT_SOME ; DROP - /* [ @dest address : @settings pair (bytes %target_hash) (timestamp %deadline) + /* [ address : pair (bytes %target_hash) (timestamp %deadline) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -111,9 +110,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; SWAP - /* [ @settings pair (bytes %target_hash) (timestamp %deadline) : @dest address + /* [ pair (bytes %target_hash) (timestamp %deadline) : address : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -122,9 +121,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; UNPAIR @% @% - /* [ @target_hash bytes : @deadline timestamp : @dest address + /* [ bytes : timestamp : address : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -133,9 +132,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DIP { AMOUNT @amount - /* [ @amount mutez : @deadline timestamp : @dest address + /* [ mutez : timestamp : address : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -144,9 +143,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; SENDER - /* [ @sender address : @amount mutez : @deadline timestamp : @dest address + /* [ address : mutez : timestamp : address : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -155,10 +154,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DUP - /* [ @sender address : @sender address : @amount mutez : @deadline timestamp - : @dest address + /* [ address : address : mutez : timestamp : address : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -167,11 +165,10 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; CONTRACT @from unit - /* [ @from option (contract unit) : @sender address : @amount mutez - : @deadline timestamp : @dest address + /* [ option (contract unit) : address : mutez : timestamp : address : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -180,10 +177,10 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT_SOME ; DROP - /* [ @sender address : @amount mutez : @deadline timestamp : @dest address + /* [ address : mutez : timestamp : address : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -192,9 +189,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DIP { PAIR - /* [ pair (mutez @amount) (timestamp @deadline) : @dest address + /* [ pair mutez timestamp : address : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -203,9 +200,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; SWAP - /* [ @dest address : pair (mutez @amount) (timestamp @deadline) + /* [ address : pair mutez timestamp : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -214,9 +211,8 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ } - /* [ @sender address : @dest address - : pair (mutez @amount) (timestamp @deadline) + : list operation ] */ } + /* [ address : address : pair mutez timestamp : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -225,10 +221,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; PAIR - /* [ pair (address @sender) (address @dest) - : pair (mutez @amount) (timestamp @deadline) + /* [ pair address address : pair mutez timestamp : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -237,9 +232,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; PAIR - /* [ pair (pair (address @sender) (address @dest)) (mutez @amount) (timestamp @deadline) + /* [ pair (pair address address) mutez timestamp : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -248,10 +243,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; SOME @xcat - /* [ @xcat option - (pair (pair (address @sender) (address @dest)) (mutez @amount) (timestamp @deadline)) + /* [ option (pair (pair address address) mutez timestamp) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -260,87 +254,78 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; SWAP /* [ big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) - : @xcat option - (pair (pair (address @sender) (address @dest)) (mutez @amount) (timestamp @deadline)) + : option (pair (pair address address) mutez timestamp) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ } - /* [ @target_hash bytes + : list operation ] */ } + /* [ bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) - : @xcat option - (pair (pair (address @sender) (address @dest)) (mutez @amount) (timestamp @deadline)) + : option (pair (pair address address) mutez timestamp) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DUP - /* [ @target_hash bytes : @target_hash bytes + /* [ bytes : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) - : @xcat option - (pair (pair (address @sender) (address @dest)) (mutez @amount) (timestamp @deadline)) + : option (pair (pair address address) mutez timestamp) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DIP { MEM - /* [ bool - : @xcat option - (pair (pair (address @sender) (address @dest)) (mutez @amount) (timestamp @deadline)) + /* [ bool : option (pair (pair address address) mutez timestamp) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; NOT - /* [ bool - : @xcat option - (pair (pair (address @sender) (address @dest)) (mutez @amount) (timestamp @deadline)) + /* [ bool : option (pair (pair address address) mutez timestamp) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT } - /* [ @target_hash bytes - : @xcat option - (pair (pair (address @sender) (address @dest)) (mutez @amount) (timestamp @deadline)) + /* [ bytes : option (pair (pair address address) mutez timestamp) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; UPDATE /* [ big_map bytes (pair (pair address address) mutez timestamp) : unit - : @operations list operation ] */ ; + : list operation ] */ ; PAIR @new_storage - /* [ @new_storage pair (big_map bytes (pair (pair address address) mutez timestamp)) unit - : @operations list operation ] */ ; + /* [ pair (big_map bytes (pair (pair address address) mutez timestamp)) unit + : list operation ] */ ; SWAP - /* [ @operations list operation - : @new_storage pair (big_map bytes (pair (pair address address) mutez timestamp)) unit ] */ ; + /* [ list operation + : pair (big_map bytes (pair (pair address address) mutez timestamp)) unit ] */ ; PAIR - /* [ pair (list @operations operation) - (pair @new_storage (big_map bytes (pair (pair address address) mutez timestamp)) unit) ] */ } + /* [ pair (list operation) + (big_map bytes (pair (pair address address) mutez timestamp)) + unit ] */ } { IF_LEFT { DUP - /* [ @parameter.claim_refund.preimage_claim bytes - : @parameter.claim_refund.preimage_claim bytes + /* [ bytes : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -349,9 +334,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; SIZE - /* [ nat : @parameter.claim_refund.preimage_claim bytes + /* [ nat : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -360,10 +345,10 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; PUSH nat 32 - /* [ nat : nat : @parameter.claim_refund.preimage_claim bytes + /* [ nat : nat : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -372,10 +357,10 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT_CMPGE ; SHA256 @hash - /* [ @hash bytes + /* [ bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -384,9 +369,9 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DUP - /* [ @hash bytes : @hash bytes + /* [ bytes : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -395,78 +380,73 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DIP { SWAP /* [ big_map bytes (pair (pair %recipients (address %from) (address %dest)) - (pair %settings (mutez %amount) (timestamp %deadline))) : @hash bytes + (pair %settings (mutez %amount) (timestamp %deadline))) : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ } - /* [ @hash bytes + : list operation ] */ } + /* [ bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) - (pair %settings (mutez %amount) (timestamp %deadline))) : @hash bytes + (pair %settings (mutez %amount) (timestamp %deadline))) : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DIIP { GET /* [ option (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT_SOME ; DUP - /* [ @some pair (pair %recipients (address %from) (address %dest)) + /* [ pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline)) - : @some pair (pair %recipients (address %from) (address %dest)) + : pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline)) : unit - : @operations list operation ] */ ; + : list operation ] */ ; CADR @% ; CONTRACT @dest unit - /* [ @dest option (contract unit) - : @some pair (pair %recipients (address %from) (address %dest)) + /* [ option (contract unit) + : pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline)) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT_SOME ; SWAP - /* [ @some pair (pair %recipients (address %from) (address %dest)) - (pair %settings (mutez %amount) (timestamp %deadline)) - : @dest.some contract unit : unit : @operations list operation ] */ ; + /* [ pair (pair %recipients (address %from) (address %dest)) + (pair %settings (mutez %amount) (timestamp %deadline)) : contract unit + : unit : list operation ] */ ; CDR @% - /* [ @settings pair (mutez %amount) (timestamp %deadline) - : @dest.some contract unit : unit : @operations list operation ] */ ; + /* [ pair (mutez %amount) (timestamp %deadline) : contract unit : unit + : list operation ] */ ; UNPAIR @% @% - /* [ @amount mutez : @deadline timestamp : @dest.some contract unit : unit - : @operations list operation ] */ ; + /* [ mutez : timestamp : contract unit : unit : list operation ] */ ; SWAP - /* [ @deadline timestamp : @amount mutez : @dest.some contract unit : unit - : @operations list operation ] */ ; + /* [ timestamp : mutez : contract unit : unit : list operation ] */ ; NOW - /* [ @now timestamp : @deadline timestamp : @amount mutez - : @dest.some contract unit : unit : @operations list operation ] */ ; + /* [ timestamp : timestamp : mutez : contract unit : unit : list operation ] */ ; ASSERT_CMPLT ; UNIT - /* [ unit : @amount mutez : @dest.some contract unit : unit - : @operations list operation ] */ ; + /* [ unit : mutez : contract unit : unit : list operation ] */ ; TRANSFER_TOKENS - /* [ operation : unit : @operations list operation ] */ } - /* [ @hash bytes + /* [ operation : unit : list operation ] */ } + /* [ bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : operation - : unit : @operations list operation ] */ } + : unit : list operation ] */ } { DUP - /* [ @parameter.claim_refund.refund_hash bytes - : @parameter.claim_refund.refund_hash bytes + /* [ bytes : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) @@ -475,7 +455,7 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; DIP { GET /* [ option (pair (pair %recipients (address %from) (address %dest)) @@ -484,129 +464,126 @@ Gas remaining: 1039911.852 units remaining bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT_SOME ; DUP - /* [ @some pair (pair %recipients (address %from) (address %dest)) + /* [ pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline)) - : @some pair (pair %recipients (address %from) (address %dest)) + : pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline)) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; CAAR @% ; CONTRACT @from unit - /* [ @from option (contract unit) - : @some pair (pair %recipients (address %from) (address %dest)) + /* [ option (contract unit) + : pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline)) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT_SOME ; SWAP - /* [ @some pair (pair %recipients (address %from) (address %dest)) - (pair %settings (mutez %amount) (timestamp %deadline)) - : @from.some contract unit + /* [ pair (pair %recipients (address %from) (address %dest)) + (pair %settings (mutez %amount) (timestamp %deadline)) : contract unit : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; CDR - /* [ pair (mutez %amount) (timestamp %deadline) : @from.some contract unit + /* [ pair (mutez %amount) (timestamp %deadline) : contract unit : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; UNPAIR @% @% - /* [ @amount mutez : @deadline timestamp : @from.some contract unit + /* [ mutez : timestamp : contract unit : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; SWAP - /* [ @deadline timestamp : @amount mutez : @from.some contract unit + /* [ timestamp : mutez : contract unit : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; NOW - /* [ @now timestamp : @deadline timestamp : @amount mutez - : @from.some contract unit + /* [ timestamp : timestamp : mutez : contract unit : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; ASSERT_CMPGE ; UNIT - /* [ unit : @amount mutez : @from.some contract unit + /* [ unit : mutez : contract unit : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; TRANSFER_TOKENS /* [ operation : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : unit - : @operations list operation ] */ ; + : list operation ] */ ; SWAP /* [ big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : operation - : unit : @operations list operation ] */ } - /* [ @parameter.claim_refund.refund_hash bytes + : unit : list operation ] */ } + /* [ bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : operation - : unit : @operations list operation ] */ } ; + : unit : list operation ] */ } ; NONE @none (pair (pair address address) (pair mutez timestamp)) - /* [ @none option (pair (pair address address) mutez timestamp) : bytes + /* [ option (pair (pair address address) mutez timestamp) : bytes : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : operation - : unit : @operations list operation ] */ ; + : unit : list operation ] */ ; SWAP - /* [ bytes : @none option (pair (pair address address) mutez timestamp) + /* [ bytes : option (pair (pair address address) mutez timestamp) : big_map bytes (pair (pair %recipients (address %from) (address %dest)) (pair %settings (mutez %amount) (timestamp %deadline))) : operation - : unit : @operations list operation ] */ ; + : unit : list operation ] */ ; UPDATE @cleared_map - /* [ @cleared_map big_map bytes (pair (pair address address) mutez timestamp) - : operation : unit : @operations list operation ] */ ; + /* [ big_map bytes (pair (pair address address) mutez timestamp) : operation + : unit : list operation ] */ ; SWAP - /* [ operation - : @cleared_map big_map bytes (pair (pair address address) mutez timestamp) - : unit : @operations list operation ] */ ; + /* [ operation : big_map bytes (pair (pair address address) mutez timestamp) + : unit : list operation ] */ ; DIP { PAIR - /* [ pair (big_map @cleared_map bytes (pair (pair address address) mutez timestamp)) unit - : @operations list operation ] */ ; + /* [ pair (big_map bytes (pair (pair address address) mutez timestamp)) unit + : list operation ] */ ; SWAP - /* [ @operations list operation - : pair (big_map @cleared_map bytes (pair (pair address address) mutez timestamp)) unit ] */ } - /* [ operation : @operations list operation - : pair (big_map @cleared_map bytes (pair (pair address address) mutez timestamp)) unit ] */ ; + /* [ list operation + : pair (big_map bytes (pair (pair address address) mutez timestamp)) unit ] */ } + /* [ operation : list operation + : pair (big_map bytes (pair (pair address address) mutez timestamp)) unit ] */ ; CONS /* [ list operation - : pair (big_map @cleared_map bytes (pair (pair address address) mutez timestamp)) unit ] */ ; + : pair (big_map bytes (pair (pair address address) mutez timestamp)) unit ] */ ; PAIR /* [ pair (list operation) - (big_map @cleared_map bytes (pair (pair address address) mutez timestamp)) + (big_map bytes (pair (pair address address) mutez timestamp)) unit ] */ } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--bug_262.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--bug_262.tz].out index 3b073d4c1a..3d406c545a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--bug_262.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--bug_262.tz].out @@ -6,7 +6,7 @@ Gas remaining: 1039994.949 units remaining storage unit ; code { DROP /* [] */ ; - LAMBDA unit unit { /* [ @arg unit ] */ } + LAMBDA unit unit { /* [ unit ] */ } /* [ lambda unit unit ] */ ; UNIT /* [ unit : lambda unit unit ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--pairk_annot.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--pairk_annot.tz].out index d5d3ee59a1..cc58de6ff1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--pairk_annot.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--pairk_annot.tz].out @@ -5,17 +5,15 @@ Gas remaining: 1039992.198 units remaining { parameter unit ; storage unit ; code { SENDER - /* [ @sender address : pair (unit @parameter) (unit @storage) ] */ ; + /* [ address : pair (unit @parameter) (unit @storage) ] */ ; SOURCE - /* [ @source address : @sender address - : pair (unit @parameter) (unit @storage) ] */ ; + /* [ address : address : pair (unit @parameter) (unit @storage) ] */ ; PAIR 2 /* [ pair address address : pair (unit @parameter) (unit @storage) ] */ ; SOURCE - /* [ @source address : pair address address - : pair (unit @parameter) (unit @storage) ] */ ; + /* [ address : pair address address : pair (unit @parameter) (unit @storage) ] */ ; SENDER - /* [ @sender address : @source address : pair address address + /* [ address : address : pair address address : pair (unit @parameter) (unit @storage) ] */ ; PAIR 2 /* [ pair address address : pair address address @@ -25,8 +23,8 @@ Gas remaining: 1039992.198 units remaining DROP /* [ pair (unit @parameter) (unit @storage) ] */ ; CDR - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--abs.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--abs.tz].out index 51d095b2c6..a112b754b8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--abs.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--abs.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039991.794 units remaining { parameter nat ; storage unit ; code { CAR - /* [ @parameter nat ] */ ; + /* [ nat ] */ ; DUP - /* [ @parameter nat : @parameter nat ] */ ; + /* [ nat : nat ] */ ; NEG - /* [ int : @parameter nat ] */ ; + /* [ int : nat ] */ ; ABS - /* [ nat : @parameter nat ] */ ; + /* [ nat : nat ] */ ; COMPARE /* [ int ] */ ; ASSERT_EQ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add.tz].out index 59a2ea3ad0..96ae56d4b8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add.tz].out @@ -5,80 +5,80 @@ Gas remaining: 1039944.723 units remaining { parameter unit ; storage unit ; code { CAR - /* [ @parameter unit ] */ ; + /* [ unit ] */ ; PUSH int 2 - /* [ int : @parameter unit ] */ ; + /* [ int : unit ] */ ; PUSH int 2 - /* [ int : int : @parameter unit ] */ ; + /* [ int : int : unit ] */ ; ADD - /* [ int : @parameter unit ] */ ; + /* [ int : unit ] */ ; PUSH int 4 - /* [ int : int : @parameter unit ] */ ; + /* [ int : int : unit ] */ ; ASSERT_CMPEQ ; PUSH int 2 - /* [ int : @parameter unit ] */ ; + /* [ int : unit ] */ ; PUSH int 2 - /* [ int : int : @parameter unit ] */ ; + /* [ int : int : unit ] */ ; ADD - /* [ int : @parameter unit ] */ ; + /* [ int : unit ] */ ; PUSH int 4 - /* [ int : int : @parameter unit ] */ ; + /* [ int : int : unit ] */ ; ASSERT_CMPEQ ; PUSH int 2 - /* [ int : @parameter unit ] */ ; + /* [ int : unit ] */ ; PUSH nat 2 - /* [ nat : int : @parameter unit ] */ ; + /* [ nat : int : unit ] */ ; ADD - /* [ int : @parameter unit ] */ ; + /* [ int : unit ] */ ; PUSH int 4 - /* [ int : int : @parameter unit ] */ ; + /* [ int : int : unit ] */ ; ASSERT_CMPEQ ; PUSH nat 2 - /* [ nat : @parameter unit ] */ ; + /* [ nat : unit ] */ ; PUSH int 2 - /* [ int : nat : @parameter unit ] */ ; + /* [ int : nat : unit ] */ ; ADD - /* [ int : @parameter unit ] */ ; + /* [ int : unit ] */ ; PUSH int 4 - /* [ int : int : @parameter unit ] */ ; + /* [ int : int : unit ] */ ; ASSERT_CMPEQ ; PUSH nat 2 - /* [ nat : @parameter unit ] */ ; + /* [ nat : unit ] */ ; PUSH nat 2 - /* [ nat : nat : @parameter unit ] */ ; + /* [ nat : nat : unit ] */ ; ADD - /* [ nat : @parameter unit ] */ ; + /* [ nat : unit ] */ ; PUSH nat 4 - /* [ nat : nat : @parameter unit ] */ ; + /* [ nat : nat : unit ] */ ; ASSERT_CMPEQ ; PUSH int 60 - /* [ int : @parameter unit ] */ ; + /* [ int : unit ] */ ; PUSH timestamp "2019-09-09T12:08:37Z" - /* [ timestamp : int : @parameter unit ] */ ; + /* [ timestamp : int : unit ] */ ; ADD - /* [ timestamp : @parameter unit ] */ ; + /* [ timestamp : unit ] */ ; PUSH timestamp "2019-09-09T12:09:37Z" - /* [ timestamp : timestamp : @parameter unit ] */ ; + /* [ timestamp : timestamp : unit ] */ ; ASSERT_CMPEQ ; PUSH timestamp "2019-09-09T12:08:37Z" - /* [ timestamp : @parameter unit ] */ ; + /* [ timestamp : unit ] */ ; PUSH int 60 - /* [ int : timestamp : @parameter unit ] */ ; + /* [ int : timestamp : unit ] */ ; ADD - /* [ timestamp : @parameter unit ] */ ; + /* [ timestamp : unit ] */ ; PUSH timestamp "2019-09-09T12:09:37Z" - /* [ timestamp : timestamp : @parameter unit ] */ ; + /* [ timestamp : timestamp : unit ] */ ; ASSERT_CMPEQ ; PUSH mutez 1000 - /* [ mutez : @parameter unit ] */ ; + /* [ mutez : unit ] */ ; PUSH mutez 1000 - /* [ mutez : mutez : @parameter unit ] */ ; + /* [ mutez : mutez : unit ] */ ; ADD - /* [ mutez : @parameter unit ] */ ; + /* [ mutez : unit ] */ ; PUSH mutez 2000 - /* [ mutez : mutez : @parameter unit ] */ ; + /* [ mutez : mutez : unit ] */ ; ASSERT_CMPEQ ; NIL operation - /* [ list operation : @parameter unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @parameter) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_fr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_fr.tz].out index 41ecd6af9e..57132f0aa1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_fr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_fr.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.329 units remaining { parameter (pair bls12_381_fr bls12_381_fr) ; storage (option bls12_381_fr) ; code { CAR - /* [ @parameter pair bls12_381_fr bls12_381_fr ] */ ; + /* [ pair bls12_381_fr bls12_381_fr ] */ ; UNPAIR /* [ bls12_381_fr : bls12_381_fr ] */ ; ADD diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_g1.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_g1.tz].out index 1a5fda2c09..2a9525014b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_g1.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_g1.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.329 units remaining { parameter (pair bls12_381_g1 bls12_381_g1) ; storage (option bls12_381_g1) ; code { CAR - /* [ @parameter pair bls12_381_g1 bls12_381_g1 ] */ ; + /* [ pair bls12_381_g1 bls12_381_g1 ] */ ; UNPAIR /* [ bls12_381_g1 : bls12_381_g1 ] */ ; ADD diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_g2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_g2.tz].out index 72f1ae318a..6c61074094 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_g2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_bls12_381_g2.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.329 units remaining { parameter (pair bls12_381_g2 bls12_381_g2) ; storage (option bls12_381_g2) ; code { CAR - /* [ @parameter pair bls12_381_g2 bls12_381_g2 ] */ ; + /* [ pair bls12_381_g2 bls12_381_g2 ] */ ; UNPAIR /* [ bls12_381_g2 : bls12_381_g2 ] */ ; ADD diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_delta_timestamp.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_delta_timestamp.tz].out index 6719af88ac..97c142b4a3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_delta_timestamp.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_delta_timestamp.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039993.598 units remaining { parameter (pair int timestamp) ; storage (option timestamp) ; code { CAR - /* [ @parameter pair int timestamp ] */ ; + /* [ pair int timestamp ] */ ; DUP - /* [ @parameter pair int timestamp : @parameter pair int timestamp ] */ ; + /* [ pair int timestamp : pair int timestamp ] */ ; CAR - /* [ int : @parameter pair int timestamp ] */ ; + /* [ int : pair int timestamp ] */ ; DIP { CDR /* [ timestamp ] */ } /* [ int : timestamp ] */ ; ADD diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_timestamp_delta.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_timestamp_delta.tz].out index 1ee99fb394..3bad19cb98 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_timestamp_delta.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--add_timestamp_delta.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039993.598 units remaining { parameter (pair timestamp int) ; storage (option timestamp) ; code { CAR - /* [ @parameter pair timestamp int ] */ ; + /* [ pair timestamp int ] */ ; DUP - /* [ @parameter pair timestamp int : @parameter pair timestamp int ] */ ; + /* [ pair timestamp int : pair timestamp int ] */ ; CAR - /* [ timestamp : @parameter pair timestamp int ] */ ; + /* [ timestamp : pair timestamp int ] */ ; DIP { CDR /* [ int ] */ } /* [ timestamp : int ] */ ; ADD diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--address.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--address.tz].out index 5cf9f0d75e..9037cc408c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--address.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--address.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039995.954 units remaining { parameter (contract unit) ; storage (option address) ; code { CAR - /* [ @parameter contract unit ] */ ; + /* [ contract unit ] */ ; ADDRESS - /* [ @parameter.address address ] */ ; + /* [ address ] */ ; SOME /* [ option address ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_fib_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_fib_view.tz].out index 913ab6f7c0..6dab057503 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_fib_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_fib_view.tz].out @@ -5,34 +5,34 @@ Gas remaining: 1039985.607 units remaining { parameter address ; storage mutez ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 3 - /* [ nat : @parameter address : @parameter address ] */ ; + /* [ nat : address : address ] */ ; VIEW "fib" nat - /* [ @parameter.contract option nat : @parameter address ] */ ; + /* [ option nat : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 15000000 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; AMOUNT - /* [ @amount mutez : operation ] */ ; + /* [ mutez : operation ] */ ; SWAP - /* [ operation : @amount mutez ] */ ; + /* [ operation : mutez ] */ ; NIL operation - /* [ list operation : operation : @amount mutez ] */ ; + /* [ list operation : operation : mutez ] */ ; SWAP - /* [ operation : list operation : @amount mutez ] */ ; + /* [ operation : list operation : mutez ] */ ; CONS - /* [ list operation : @amount mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @amount) ] */ } } + /* [ pair (list operation) mutez ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_nonexistent_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_nonexistent_view.tz].out index 993af15413..2ee88f7fe0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_nonexistent_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_nonexistent_view.tz].out @@ -5,33 +5,32 @@ Gas remaining: 1039985.815 units remaining { parameter address ; storage mutez ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; - VIEW "nonexistent" - (pair nat nat) - /* [ @parameter.contract option (pair nat nat) : @parameter address ] */ ; + /* [ nat : address : address ] */ ; + VIEW "nonexistent" (pair nat nat) + /* [ option (pair nat nat) : address ] */ ; ASSERT_NONE ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 15000000 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; AMOUNT - /* [ @amount mutez : operation ] */ ; + /* [ mutez : operation ] */ ; SWAP - /* [ operation : @amount mutez ] */ ; + /* [ operation : mutez ] */ ; NIL operation - /* [ list operation : operation : @amount mutez ] */ ; + /* [ list operation : operation : mutez ] */ ; SWAP - /* [ operation : list operation : @amount mutez ] */ ; + /* [ operation : list operation : mutez ] */ ; CONS - /* [ list operation : @amount mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @amount) ] */ } } + /* [ pair (list operation) mutez ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_view.tz].out index 06ea3b71b6..4a525f9baa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--amount_after_view.tz].out @@ -5,35 +5,34 @@ Gas remaining: 1039985.432 units remaining { parameter address ; storage mutez ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; - VIEW "id" - (pair nat nat) - /* [ @parameter.contract option (pair nat nat) : @parameter address ] */ ; + /* [ nat : address : address ] */ ; + VIEW "id" (pair nat nat) + /* [ option (pair nat nat) : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 15000000 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; AMOUNT - /* [ @amount mutez : operation ] */ ; + /* [ mutez : operation ] */ ; SWAP - /* [ operation : @amount mutez ] */ ; + /* [ operation : mutez ] */ ; NIL operation - /* [ list operation : operation : @amount mutez ] */ ; + /* [ list operation : operation : mutez ] */ ; SWAP - /* [ operation : list operation : @amount mutez ] */ ; + /* [ operation : list operation : mutez ] */ ; CONS - /* [ list operation : @amount mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @amount) ] */ } } + /* [ pair (list operation) mutez ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and.tz].out index 5297423475..c248d20f7b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and.tz].out @@ -5,18 +5,18 @@ Gas remaining: 1039994.393 units remaining { parameter (pair :param (bool %first) (bool %second)) ; storage (option bool) ; code { CAR - /* [ @param pair :param (bool %first) (bool %second) ] */ ; + /* [ pair :param (bool %first) (bool %second) ] */ ; UNPAIR /* [ bool : bool ] */ ; AND @and - /* [ @and bool ] */ ; + /* [ bool ] */ ; SOME @res - /* [ @res option bool ] */ ; + /* [ option bool ] */ ; NIL @noop operation - /* [ @noop list operation : @res option bool ] */ ; + /* [ list operation : option bool ] */ ; PAIR - /* [ pair (list @noop operation) (option @res bool) ] */ ; + /* [ pair (list operation) (option bool) ] */ ; UNPAIR @x @y - /* [ @x list operation : @y option bool ] */ ; + /* [ list operation : option bool ] */ ; PAIR %a %b - /* [ pair (list %a @x operation) (option %b @y bool) ] */ } } + /* [ pair (list %a operation) (option %b bool) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and_binary.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and_binary.tz].out index 3dd31c494b..e55d20d732 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and_binary.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and_binary.tz].out @@ -45,6 +45,6 @@ Gas remaining: 1039971.036 units remaining UNIT /* [ unit ] */ ; NIL @noop operation - /* [ @noop list operation : unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list @noop operation) unit ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and_logical_1.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and_logical_1.tz].out index b86f797ac5..73fe19cce8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and_logical_1.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--and_logical_1.tz].out @@ -5,12 +5,12 @@ Gas remaining: 1039996.174 units remaining { parameter (pair bool bool) ; storage bool ; code { CAR - /* [ @parameter pair bool bool ] */ ; + /* [ pair bool bool ] */ ; UNPAIR /* [ bool : bool ] */ ; AND @and - /* [ @and bool ] */ ; + /* [ bool ] */ ; NIL @noop operation - /* [ @noop list operation : @and bool ] */ ; + /* [ list operation : bool ] */ ; PAIR - /* [ pair (list @noop operation) (bool @and) ] */ } } + /* [ pair (list operation) bool ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance.tz].out index 9f65f60772..54bc171a17 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance.tz].out @@ -7,8 +7,8 @@ Gas remaining: 1039996.803 units remaining code { DROP /* [] */ ; BALANCE - /* [ @balance mutez ] */ ; + /* [ mutez ] */ ; NIL operation - /* [ list operation : @balance mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @balance) ] */ } } + /* [ pair (list operation) mutez ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_fib_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_fib_view.tz].out index a5c419e3c2..0ec9c49abe 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_fib_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_fib_view.tz].out @@ -5,34 +5,34 @@ Gas remaining: 1039985.607 units remaining { parameter address ; storage mutez ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 3 - /* [ nat : @parameter address : @parameter address ] */ ; + /* [ nat : address : address ] */ ; VIEW "fib" nat - /* [ @parameter.contract option nat : @parameter address ] */ ; + /* [ option nat : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 15000000 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; BALANCE - /* [ @balance mutez : operation ] */ ; + /* [ mutez : operation ] */ ; SWAP - /* [ operation : @balance mutez ] */ ; + /* [ operation : mutez ] */ ; NIL operation - /* [ list operation : operation : @balance mutez ] */ ; + /* [ list operation : operation : mutez ] */ ; SWAP - /* [ operation : list operation : @balance mutez ] */ ; + /* [ operation : list operation : mutez ] */ ; CONS - /* [ list operation : @balance mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @balance) ] */ } } + /* [ pair (list operation) mutez ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_nonexistent_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_nonexistent_view.tz].out index 406353dd48..3642c58517 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_nonexistent_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_nonexistent_view.tz].out @@ -5,33 +5,32 @@ Gas remaining: 1039985.815 units remaining { parameter address ; storage mutez ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; - VIEW "nonexistent" - (pair nat nat) - /* [ @parameter.contract option (pair nat nat) : @parameter address ] */ ; + /* [ nat : address : address ] */ ; + VIEW "nonexistent" (pair nat nat) + /* [ option (pair nat nat) : address ] */ ; ASSERT_NONE ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 15000000 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; BALANCE - /* [ @balance mutez : operation ] */ ; + /* [ mutez : operation ] */ ; SWAP - /* [ operation : @balance mutez ] */ ; + /* [ operation : mutez ] */ ; NIL operation - /* [ list operation : operation : @balance mutez ] */ ; + /* [ list operation : operation : mutez ] */ ; SWAP - /* [ operation : list operation : @balance mutez ] */ ; + /* [ operation : list operation : mutez ] */ ; CONS - /* [ list operation : @balance mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @balance) ] */ } } + /* [ pair (list operation) mutez ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_view.tz].out index 4bd6b2e3b9..be6fdfb5fc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--balance_after_view.tz].out @@ -5,35 +5,34 @@ Gas remaining: 1039985.432 units remaining { parameter address ; storage mutez ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; - VIEW "id" - (pair nat nat) - /* [ @parameter.contract option (pair nat nat) : @parameter address ] */ ; + /* [ nat : address : address ] */ ; + VIEW "id" (pair nat nat) + /* [ option (pair nat nat) : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 15000000 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; BALANCE - /* [ @balance mutez : operation ] */ ; + /* [ mutez : operation ] */ ; SWAP - /* [ operation : @balance mutez ] */ ; + /* [ operation : mutez ] */ ; NIL operation - /* [ list operation : operation : @balance mutez ] */ ; + /* [ list operation : operation : mutez ] */ ; SWAP - /* [ operation : list operation : @balance mutez ] */ ; + /* [ operation : list operation : mutez ] */ ; CONS - /* [ list operation : @balance mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @balance) ] */ } } + /* [ pair (list operation) mutez ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_mem_nat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_mem_nat.tz].out index bf19b32abc..b5b64d9fe3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_mem_nat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_mem_nat.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039991.894 units remaining { parameter nat ; storage (pair (big_map nat nat) (option bool)) ; code { UNPAIR - /* [ @parameter nat : @storage pair (big_map nat nat) (option bool) ] */ ; + /* [ nat : pair (big_map nat nat) (option bool) ] */ ; DIP { CAR /* [ big_map nat nat ] */ ; DUP /* [ big_map nat nat : big_map nat nat ] */ } - /* [ @parameter nat : big_map nat nat : big_map nat nat ] */ ; + /* [ nat : big_map nat nat : big_map nat nat ] */ ; MEM /* [ bool : big_map nat nat ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_mem_string.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_mem_string.tz].out index eea9c26f23..8c673b81b3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_mem_string.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_mem_string.tz].out @@ -5,12 +5,12 @@ Gas remaining: 1039991.894 units remaining { parameter string ; storage (pair (big_map string nat) (option bool)) ; code { UNPAIR - /* [ @parameter string : @storage pair (big_map string nat) (option bool) ] */ ; + /* [ string : pair (big_map string nat) (option bool) ] */ ; DIP { CAR /* [ big_map string nat ] */ ; DUP /* [ big_map string nat : big_map string nat ] */ } - /* [ @parameter string : big_map string nat : big_map string nat ] */ ; + /* [ string : big_map string nat : big_map string nat ] */ ; MEM /* [ bool : big_map string nat ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_to_self.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_to_self.tz].out index 3ca70236e9..58940cbf64 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_to_self.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--big_map_to_self.tz].out @@ -5,55 +5,53 @@ Gas remaining: 1039984.417 units remaining { parameter (or (pair %have_fun (big_map string nat) unit) (unit %default)) ; storage (big_map string nat) ; code { UNPAIR - /* [ @parameter or (pair %have_fun (big_map string nat) unit) (unit %default) - : @storage big_map string nat ] */ ; - DIP { NIL operation /* [ list operation : @storage big_map string nat ] */ } - /* [ @parameter or (pair %have_fun (big_map string nat) unit) (unit %default) - : list operation : @storage big_map string nat ] */ ; + /* [ or (pair %have_fun (big_map string nat) unit) (unit %default) + : big_map string nat ] */ ; + DIP { NIL operation /* [ list operation : big_map string nat ] */ } + /* [ or (pair %have_fun (big_map string nat) unit) (unit %default) + : list operation : big_map string nat ] */ ; IF_LEFT - { DROP /* [ list operation : @storage big_map string nat ] */ } + { DROP /* [ list operation : big_map string nat ] */ } { DROP - /* [ list operation : @storage big_map string nat ] */ ; + /* [ list operation : big_map string nat ] */ ; SELF %have_fun - /* [ @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + /* [ contract (pair (big_map string nat) unit) : list operation + : big_map string nat ] */ ; PUSH mutez 0 - /* [ mutez : @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + /* [ mutez : contract (pair (big_map string nat) unit) : list operation + : big_map string nat ] */ ; DUP 4 - /* [ big_map string nat : mutez - : @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + /* [ big_map string nat : mutez : contract (pair (big_map string nat) unit) + : list operation : big_map string nat ] */ ; PUSH (option nat) (Some 8) /* [ option nat : big_map string nat : mutez - : @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + : contract (pair (big_map string nat) unit) : list operation + : big_map string nat ] */ ; PUSH string "hahaha" /* [ string : option nat : big_map string nat : mutez - : @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + : contract (pair (big_map string nat) unit) : list operation + : big_map string nat ] */ ; UPDATE - /* [ big_map string nat : mutez - : @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + /* [ big_map string nat : mutez : contract (pair (big_map string nat) unit) + : list operation : big_map string nat ] */ ; UNIT /* [ unit : big_map string nat : mutez - : @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + : contract (pair (big_map string nat) unit) : list operation + : big_map string nat ] */ ; SWAP /* [ big_map string nat : unit : mutez - : @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + : contract (pair (big_map string nat) unit) : list operation + : big_map string nat ] */ ; PAIR /* [ pair (big_map string nat) unit : mutez - : @self contract (pair (big_map string nat) unit) : list operation - : @storage big_map string nat ] */ ; + : contract (pair (big_map string nat) unit) : list operation + : big_map string nat ] */ ; TRANSFER_TOKENS - /* [ operation : list operation : @storage big_map string nat ] */ ; + /* [ operation : list operation : big_map string nat ] */ ; CONS - /* [ list operation : @storage big_map string nat ] */ } ; + /* [ list operation : big_map string nat ] */ } ; PAIR - /* [ pair (list operation) (big_map @storage string nat) ] */ } } + /* [ pair (list operation) (big_map string nat) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_to_int.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_to_int.tz].out index 89cc976195..dd14b051ce 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_to_int.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_to_int.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.803 units remaining { parameter bls12_381_fr ; storage int ; code { CAR - /* [ @parameter bls12_381_fr ] */ ; + /* [ bls12_381_fr ] */ ; INT /* [ int ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_to_mutez.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_to_mutez.tz].out index 1d053fb07d..0c345677e3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_to_mutez.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_to_mutez.tz].out @@ -5,14 +5,14 @@ Gas remaining: 1039992.954 units remaining { parameter bls12_381_fr ; storage mutez ; code { CAR - /* [ @parameter bls12_381_fr ] */ ; + /* [ bls12_381_fr ] */ ; INT /* [ int ] */ ; ISNAT /* [ option nat ] */ ; ASSERT_SOME ; PUSH mutez 1 - /* [ mutez : @some nat ] */ ; + /* [ mutez : nat ] */ ; MUL /* [ mutez ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_z_int.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_z_int.tz].out index 86cd57e993..a8ea2adf58 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_z_int.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_z_int.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.803 units remaining { parameter int ; storage bls12_381_fr ; code { UNPAIR - /* [ @parameter int : @storage bls12_381_fr ] */ ; + /* [ int : bls12_381_fr ] */ ; MUL /* [ bls12_381_fr ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_z_nat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_z_nat.tz].out index e59e46f180..b5556ae1c3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_z_nat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_fr_z_nat.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.803 units remaining { parameter nat ; storage bls12_381_fr ; code { UNPAIR - /* [ @parameter nat : @storage bls12_381_fr ] */ ; + /* [ nat : bls12_381_fr ] */ ; MUL /* [ bls12_381_fr ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_z_fr_int.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_z_fr_int.tz].out index 3667cd6a20..0481a27c26 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_z_fr_int.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_z_fr_int.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039996.340 units remaining { parameter int ; storage bls12_381_fr ; code { UNPAIR - /* [ @parameter int : @storage bls12_381_fr ] */ ; + /* [ int : bls12_381_fr ] */ ; SWAP - /* [ @storage bls12_381_fr : @parameter int ] */ ; + /* [ bls12_381_fr : int ] */ ; MUL /* [ bls12_381_fr ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_z_fr_nat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_z_fr_nat.tz].out index 27e1f8bf1e..cdc8bcc73a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_z_fr_nat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bls12_381_z_fr_nat.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039996.340 units remaining { parameter nat ; storage bls12_381_fr ; code { UNPAIR - /* [ @parameter nat : @storage bls12_381_fr ] */ ; + /* [ nat : bls12_381_fr ] */ ; SWAP - /* [ @storage bls12_381_fr : @parameter nat ] */ ; + /* [ bls12_381_fr : nat ] */ ; MUL /* [ bls12_381_fr ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bytes.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bytes.tz].out index b74b858d65..c0bee3c072 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bytes.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--bytes.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039997.267 units remaining { parameter bytes ; storage unit ; code { CDR - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--car.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--car.tz].out index b4a68b0f55..1ff040e522 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--car.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--car.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.637 units remaining { parameter (pair (nat :l) (nat :r)) ; storage nat ; code { CAR - /* [ @parameter pair (nat :l) (nat :r) ] */ ; + /* [ pair (nat :l) (nat :r) ] */ ; CAR /* [ nat :l ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--cdr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--cdr.tz].out index e87fa10d40..fed4de220b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--cdr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--cdr.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.637 units remaining { parameter (pair (nat :l) (nat :r)) ; storage nat ; code { CAR - /* [ @parameter pair (nat :l) (nat :r) ] */ ; + /* [ pair (nat :l) (nat :r) ] */ ; CDR /* [ nat :r ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--chain_id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--chain_id.tz].out index 422def3f3a..c884228e39 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--chain_id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--chain_id.tz].out @@ -9,8 +9,8 @@ Gas remaining: 1039996.340 units remaining DROP /* [ pair (unit @parameter) (unit @storage) ] */ ; CAR - /* [ @parameter unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @parameter unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @parameter) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--check_signature.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--check_signature.tz].out index 908fd7a944..f0c95ff26b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--check_signature.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--check_signature.tz].out @@ -12,31 +12,31 @@ Gas remaining: 1039988.024 units remaining : pair (key @parameter) (pair @storage signature string) : pair (key @parameter) (pair @storage signature string) ] */ ; DIP { CDR - /* [ @storage pair signature string + /* [ pair signature string : pair (key @parameter) (pair @storage signature string) ] */ ; DUP - /* [ @storage pair signature string : @storage pair signature string + /* [ pair signature string : pair signature string : pair (key @parameter) (pair @storage signature string) ] */ ; CAR - /* [ signature : @storage pair signature string + /* [ signature : pair signature string : pair (key @parameter) (pair @storage signature string) ] */ ; DIP { CDR /* [ string : pair (key @parameter) (pair @storage signature string) ] */ ; PACK - /* [ @packed bytes : pair (key @parameter) (pair @storage signature string) ] */ } - /* [ signature : @packed bytes + /* [ bytes : pair (key @parameter) (pair @storage signature string) ] */ } + /* [ signature : bytes : pair (key @parameter) (pair @storage signature string) ] */ } - /* [ pair (key @parameter) (pair @storage signature string) : signature - : @packed bytes : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ pair (key @parameter) (pair @storage signature string) : signature : bytes + : pair (key @parameter) (pair @storage signature string) ] */ ; CAR - /* [ @parameter key : signature : @packed bytes + /* [ key : signature : bytes : pair (key @parameter) (pair @storage signature string) ] */ ; CHECK_SIGNATURE /* [ bool : pair (key @parameter) (pair @storage signature string) ] */ ; IF { /* [ pair (key @parameter) (pair @storage signature string) ] */ } { FAIL } ; CDR - /* [ @storage pair signature string ] */ ; + /* [ pair signature string ] */ ; NIL operation - /* [ list operation : @storage pair signature string ] */ ; + /* [ list operation : pair signature string ] */ ; PAIR - /* [ pair (list operation) (pair @storage signature string) ] */ } } + /* [ pair (list operation) signature string ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-get.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-get.tz].out index 68803bd268..1e47e5749e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-get.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-get.tz].out @@ -5,41 +5,41 @@ Gas remaining: 1039964.212 units remaining { parameter (pair nat nat nat unit) ; storage unit ; code { CAR - /* [ @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit ] */ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; CAR - /* [ nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : pair nat nat nat unit ] */ ; PUSH nat 1 - /* [ nat : nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : nat : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; GET 1 - /* [ nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : pair nat nat nat unit ] */ ; PUSH nat 1 - /* [ nat : nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : nat : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; GET 3 - /* [ nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : pair nat nat nat unit ] */ ; PUSH nat 4 - /* [ nat : nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : nat : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; GET 5 - /* [ nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : pair nat nat nat unit ] */ ; PUSH nat 2 - /* [ nat : nat : @parameter pair nat nat nat unit ] */ ; + /* [ nat : nat : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DUP - /* [ @parameter pair nat nat nat unit : @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit : pair nat nat nat unit ] */ ; GET 6 - /* [ unit : @parameter pair nat nat nat unit ] */ ; + /* [ unit : pair nat nat nat unit ] */ ; UNIT - /* [ unit : unit : @parameter pair nat nat nat unit ] */ ; + /* [ unit : unit : pair nat nat nat unit ] */ ; ASSERT_CMPEQ ; DROP /* [] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-set-2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-set-2.tz].out index 5aae03d8c9..df7efb635d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-set-2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-set-2.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039989.821 units remaining { parameter (pair nat nat nat unit) ; storage (option (pair int nat string bytes)) ; code { CAR - /* [ @parameter pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit ] */ ; PUSH int 2 - /* [ int : @parameter pair nat nat nat unit ] */ ; + /* [ int : pair nat nat nat unit ] */ ; UPDATE 1 /* [ pair int nat nat unit ] */ ; PUSH string "toto" diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-set.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-set.tz].out index 4590c47289..973309367c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-set.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-set.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039990.023 units remaining { parameter unit ; storage (pair nat nat nat unit) ; code { CDR - /* [ @storage pair nat nat nat unit ] */ ; + /* [ pair nat nat nat unit ] */ ; PUSH nat 2 - /* [ nat : @storage pair nat nat nat unit ] */ ; + /* [ nat : pair nat nat nat unit ] */ ; UPDATE 1 /* [ pair nat nat nat unit ] */ ; PUSH nat 12 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comparisons.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comparisons.tz].out index b2d5fd360e..93155db081 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comparisons.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comparisons.tz].out @@ -5,54 +5,54 @@ Gas remaining: 1039972.732 units remaining { parameter (list int) ; storage (list (list bool)) ; code { CAR - /* [ @parameter list int ] */ ; + /* [ list int ] */ ; NIL (list bool) - /* [ list (list bool) : @parameter list int ] */ ; + /* [ list (list bool) : list int ] */ ; DIP { DUP - /* [ @parameter list int : @parameter list int ] */ ; - MAP { EQ /* [ bool : @parameter list int ] */ } - /* [ list bool : @parameter list int ] */ } - /* [ list (list bool) : list bool : @parameter list int ] */ ; + /* [ list int : list int ] */ ; + MAP { EQ /* [ bool : list int ] */ } + /* [ list bool : list int ] */ } + /* [ list (list bool) : list bool : list int ] */ ; SWAP - /* [ list bool : list (list bool) : @parameter list int ] */ ; + /* [ list bool : list (list bool) : list int ] */ ; CONS - /* [ list (list bool) : @parameter list int ] */ ; + /* [ list (list bool) : list int ] */ ; DIP { DUP - /* [ @parameter list int : @parameter list int ] */ ; - MAP { NEQ /* [ bool : @parameter list int ] */ } - /* [ list bool : @parameter list int ] */ } - /* [ list (list bool) : list bool : @parameter list int ] */ ; + /* [ list int : list int ] */ ; + MAP { NEQ /* [ bool : list int ] */ } + /* [ list bool : list int ] */ } + /* [ list (list bool) : list bool : list int ] */ ; SWAP - /* [ list bool : list (list bool) : @parameter list int ] */ ; + /* [ list bool : list (list bool) : list int ] */ ; CONS - /* [ list (list bool) : @parameter list int ] */ ; + /* [ list (list bool) : list int ] */ ; DIP { DUP - /* [ @parameter list int : @parameter list int ] */ ; - MAP { LE /* [ bool : @parameter list int ] */ } - /* [ list bool : @parameter list int ] */ } - /* [ list (list bool) : list bool : @parameter list int ] */ ; + /* [ list int : list int ] */ ; + MAP { LE /* [ bool : list int ] */ } + /* [ list bool : list int ] */ } + /* [ list (list bool) : list bool : list int ] */ ; SWAP - /* [ list bool : list (list bool) : @parameter list int ] */ ; + /* [ list bool : list (list bool) : list int ] */ ; CONS - /* [ list (list bool) : @parameter list int ] */ ; + /* [ list (list bool) : list int ] */ ; DIP { DUP - /* [ @parameter list int : @parameter list int ] */ ; - MAP { LT /* [ bool : @parameter list int ] */ } - /* [ list bool : @parameter list int ] */ } - /* [ list (list bool) : list bool : @parameter list int ] */ ; + /* [ list int : list int ] */ ; + MAP { LT /* [ bool : list int ] */ } + /* [ list bool : list int ] */ } + /* [ list (list bool) : list bool : list int ] */ ; SWAP - /* [ list bool : list (list bool) : @parameter list int ] */ ; + /* [ list bool : list (list bool) : list int ] */ ; CONS - /* [ list (list bool) : @parameter list int ] */ ; + /* [ list (list bool) : list int ] */ ; DIP { DUP - /* [ @parameter list int : @parameter list int ] */ ; - MAP { GE /* [ bool : @parameter list int ] */ } - /* [ list bool : @parameter list int ] */ } - /* [ list (list bool) : list bool : @parameter list int ] */ ; + /* [ list int : list int ] */ ; + MAP { GE /* [ bool : list int ] */ } + /* [ list bool : list int ] */ } + /* [ list (list bool) : list bool : list int ] */ ; SWAP - /* [ list bool : list (list bool) : @parameter list int ] */ ; + /* [ list bool : list (list bool) : list int ] */ ; CONS - /* [ list (list bool) : @parameter list int ] */ ; + /* [ list (list bool) : list int ] */ ; DIP { MAP { GT /* [ bool ] */ } /* [ list bool ] */ } /* [ list (list bool) : list bool ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_hello.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_hello.tz].out index 48e25043a9..e63917515e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_hello.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_hello.tz].out @@ -5,11 +5,8 @@ Gas remaining: 1039995.099 units remaining { parameter (list string) ; storage (list string) ; code { CAR - /* [ @parameter list string ] */ ; - MAP { PUSH @hello string "Hello " - /* [ @hello string : @parameter.elt string ] */ ; - CONCAT - /* [ string ] */ } + /* [ list string ] */ ; + MAP { PUSH @hello string "Hello " /* [ string : string ] */ ; CONCAT /* [ string ] */ } /* [ list string ] */ ; NIL operation /* [ list operation : list string ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_hello_bytes.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_hello_bytes.tz].out index 683dba908f..6aff3cefe2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_hello_bytes.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_hello_bytes.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039995.173 units remaining { parameter (list bytes) ; storage (list bytes) ; code { CAR - /* [ @parameter list bytes ] */ ; - MAP { PUSH bytes 0xff /* [ bytes : @parameter.elt bytes ] */ ; CONCAT /* [ bytes ] */ } + /* [ list bytes ] */ ; + MAP { PUSH bytes 0xff /* [ bytes : bytes ] */ ; CONCAT /* [ bytes ] */ } /* [ list bytes ] */ ; NIL operation /* [ list operation : list bytes ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_list.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_list.tz].out index f6c5e9f9d2..eaae9a64bc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_list.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--concat_list.tz].out @@ -5,17 +5,17 @@ Gas remaining: 1039991.417 units remaining { parameter (list string) ; storage string ; code { CAR - /* [ @parameter list string ] */ ; + /* [ list string ] */ ; PUSH string "" - /* [ string : @parameter list string ] */ ; + /* [ string : list string ] */ ; SWAP - /* [ @parameter list string : string ] */ ; + /* [ list string : string ] */ ; ITER { SWAP - /* [ string : @parameter.elt string ] */ ; + /* [ string : string ] */ ; DIP { NIL string - /* [ list string : @parameter.elt string ] */ ; + /* [ list string : string ] */ ; SWAP - /* [ @parameter.elt string : list string ] */ ; + /* [ string : list string ] */ ; CONS /* [ list string ] */ } /* [ string : list string ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--cons.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--cons.tz].out index 966f587d5d..4d5b4200cb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--cons.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--cons.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.280 units remaining { parameter int ; storage (list int) ; code { UNPAIR - /* [ @parameter int : @storage list int ] */ ; + /* [ int : list int ] */ ; CONS /* [ list int ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--contains_all.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--contains_all.tz].out index c17de30cc1..4597157387 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--contains_all.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--contains_all.tz].out @@ -5,12 +5,11 @@ Gas remaining: 1039972.367 units remaining { parameter (pair (list string) (list string)) ; storage (option bool) ; code { CAR - /* [ @parameter pair (list string) (list string) ] */ ; + /* [ pair (list string) (list string) ] */ ; DUP - /* [ @parameter pair (list string) (list string) - : @parameter pair (list string) (list string) ] */ ; + /* [ pair (list string) (list string) : pair (list string) (list string) ] */ ; CAR - /* [ list string : @parameter pair (list string) (list string) ] */ ; + /* [ list string : pair (list string) (list string) ] */ ; DIP { CDR /* [ list string ] */ } /* [ list string : list string ] */ ; EMPTY_SET string @@ -18,18 +17,17 @@ Gas remaining: 1039972.367 units remaining SWAP /* [ list string : set string : list string ] */ ; ITER { PAIR - /* [ pair (string @elt) (set string) : list string ] */ ; + /* [ pair string (set string) : list string ] */ ; DUP - /* [ pair (string @elt) (set string) : pair (string @elt) (set string) - : list string ] */ ; + /* [ pair string (set string) : pair string (set string) : list string ] */ ; CAR - /* [ @elt string : pair (string @elt) (set string) : list string ] */ ; + /* [ string : pair string (set string) : list string ] */ ; DIP { CDR /* [ set string : list string ] */ } - /* [ @elt string : set string : list string ] */ ; + /* [ string : set string : list string ] */ ; PUSH bool True - /* [ bool : @elt string : set string : list string ] */ ; + /* [ bool : string : set string : list string ] */ ; SWAP - /* [ @elt string : bool : set string : list string ] */ ; + /* [ string : bool : set string : list string ] */ ; UPDATE /* [ set string : list string ] */ } /* [ set string : list string ] */ ; @@ -42,22 +40,20 @@ Gas remaining: 1039972.367 units remaining SWAP /* [ list string : pair (set string) bool ] */ ; ITER { PAIR - /* [ pair (string @elt) (set string) bool ] */ ; + /* [ pair string (set string) bool ] */ ; DUP - /* [ pair (string @elt) (set string) bool - : pair (string @elt) (set string) bool ] */ ; + /* [ pair string (set string) bool : pair string (set string) bool ] */ ; DUP - /* [ pair (string @elt) (set string) bool : pair (string @elt) (set string) bool - : pair (string @elt) (set string) bool ] */ ; + /* [ pair string (set string) bool : pair string (set string) bool + : pair string (set string) bool ] */ ; CAR - /* [ @elt string : pair (string @elt) (set string) bool - : pair (string @elt) (set string) bool ] */ ; + /* [ string : pair string (set string) bool : pair string (set string) bool ] */ ; DIP { CDAR ; DIP { CDDR } /* [ set string : bool ] */ ; DUP /* [ set string : set string : bool ] */ } - /* [ @elt string : set string : set string : bool ] */ ; + /* [ string : set string : set string : bool ] */ ; MEM /* [ bool : set string : bool ] */ ; DIP { SWAP /* [ bool : set string ] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--contract.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--contract.tz].out index 1f4e9435d0..9b1a354a4d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--contract.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--contract.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039993.550 units remaining { parameter address ; storage unit ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT unit - /* [ @parameter.contract option (contract unit) ] */ ; + /* [ option (contract unit) ] */ ; ASSERT_SOME ; DROP /* [] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract.tz].out index f00d5c3abc..a1ee25882b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract.tz].out @@ -6,13 +6,13 @@ Gas remaining: 1039988.704 units remaining storage (option address) ; code { /* [ pair (unit @parameter) (unit @storage) ] */ DROP - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; UNIT /* [ unit ] */ ; AMOUNT - /* [ pair (list operation) (unit @storage) ] */ ; + /* [ pair (list operation) unit ] */ ; NONE key_hash - /* [ option key_hash : @amount mutez : unit ] */ ; + /* [ option key_hash : mutez : unit ] */ ; CREATE_CONTRACT { parameter unit ; storage unit ; code { CDR ; NIL operation ; PAIR } } /* [ operation : address ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname.tz].out index b2be29868b..cc16e3e475 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname.tz].out @@ -6,13 +6,13 @@ Gas remaining: 1039988.704 units remaining storage (option address) ; code { /* [ pair (unit @parameter) (unit @storage) ] */ DROP - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; UNIT /* [ unit ] */ ; AMOUNT - /* [ pair (list operation) (unit @storage) ] */ ; + /* [ pair (list operation) unit ] */ ; NONE key_hash - /* [ option key_hash : @amount mutez : unit ] */ ; + /* [ option key_hash : mutez : unit ] */ ; CREATE_CONTRACT { parameter %root unit ; storage unit ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname_alt.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname_alt.tz].out index aa067134f4..f0a55dc59f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname_alt.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname_alt.tz].out @@ -6,13 +6,13 @@ Gas remaining: 1039988.704 units remaining storage (option address) ; code { /* [ pair (unit @parameter) (unit @storage) ] */ DROP - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; UNIT /* [ unit ] */ ; AMOUNT - /* [ pair (list operation) (unit @storage) ] */ ; + /* [ pair (list operation) unit ] */ ; NONE key_hash - /* [ option key_hash : @amount mutez : unit ] */ ; + /* [ option key_hash : mutez : unit ] */ ; CREATE_CONTRACT { parameter (unit %root) ; storage unit ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_with_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_with_view.tz].out index 3688daf145..4bb8cbb75d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_with_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_with_view.tz].out @@ -6,13 +6,13 @@ Gas remaining: 1039987.516 units remaining storage (option address) ; code { /* [ pair (unit @parameter) (unit @storage) ] */ DROP - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; UNIT /* [ unit ] */ ; AMOUNT - /* [ pair (list operation) (unit @storage) ] */ ; + /* [ pair (list operation) unit ] */ ; NONE key_hash - /* [ option key_hash : @amount mutez : unit ] */ ; + /* [ option key_hash : mutez : unit ] */ ; CREATE_CONTRACT { parameter unit /* [ nat ] */ ; storage unit ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--diff_timestamps.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--diff_timestamps.tz].out index 3e72c5fb47..ff4b824e48 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--diff_timestamps.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--diff_timestamps.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039994.373 units remaining { parameter (pair timestamp timestamp) ; storage int ; code { CAR - /* [ @parameter pair timestamp timestamp ] */ ; + /* [ pair timestamp timestamp ] */ ; DUP - /* [ @parameter pair timestamp timestamp : @parameter pair timestamp timestamp ] */ ; + /* [ pair timestamp timestamp : pair timestamp timestamp ] */ ; CAR - /* [ timestamp : @parameter pair timestamp timestamp ] */ ; + /* [ timestamp : pair timestamp timestamp ] */ ; DIP { CDR /* [ timestamp ] */ } /* [ timestamp : timestamp ] */ ; SUB diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dig_eq.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dig_eq.tz].out index 0d560d1622..e0c28a15aa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dig_eq.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dig_eq.tz].out @@ -6,147 +6,147 @@ Gas remaining: 1039899.367 units remaining (pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat) ; storage unit ; code { CAR - /* [ @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + /* [ pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DUP - /* [ @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + /* [ pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; UNPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAIR ; DIG 0 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 1 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 2 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 3 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 4 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 5 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 6 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 7 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 8 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 9 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 10 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 11 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 12 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 13 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 14 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 15 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 16 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 0 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 1 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 2 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 3 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 4 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 5 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 6 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 7 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 8 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 9 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 10 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 11 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 12 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 13 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 14 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 15 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; DIG 16 /* [ nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat : nat - : @parameter pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; + : pair nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat nat ] */ ; PAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAIR ; ASSERT_CMPEQ ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dign.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dign.tz].out index f7bd2c2759..7eb0edf56c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dign.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dign.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039991.580 units remaining { parameter (pair (pair (pair (pair nat nat) nat) nat) nat) ; storage nat ; code { CAR - /* [ @parameter pair (pair (pair (pair nat nat) nat) nat) nat ] */ ; + /* [ pair (pair (pair (pair nat nat) nat) nat) nat ] */ ; UNPAIR /* [ pair (pair (pair nat nat) nat) nat : nat ] */ ; UNPAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dip.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dip.tz].out index a06ff055da..7333f45ae0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dip.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dip.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039993.958 units remaining { parameter (pair nat nat) ; storage (pair nat nat) ; code { CAR - /* [ @parameter pair nat nat ] */ ; + /* [ pair nat nat ] */ ; UNPAIR /* [ nat : nat ] */ ; DUP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dipn.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dipn.tz].out index 5fa326fd82..d6d5a4a444 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dipn.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dipn.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039990.690 units remaining { parameter (pair (pair (pair (pair nat nat) nat) nat) nat) ; storage nat ; code { CAR - /* [ @parameter pair (pair (pair (pair nat nat) nat) nat) nat ] */ ; + /* [ pair (pair (pair (pair nat nat) nat) nat) nat ] */ ; UNPAIR /* [ pair (pair (pair nat nat) nat) nat : nat ] */ ; UNPAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dropn.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dropn.tz].out index 1a7da15e1d..866acca93d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dropn.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dropn.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039993.947 units remaining { parameter (pair (pair (pair (pair nat nat) nat) nat) nat) ; storage nat ; code { CAR - /* [ @parameter pair (pair (pair (pair nat nat) nat) nat) nat ] */ ; + /* [ pair (pair (pair (pair nat nat) nat) nat) nat ] */ ; UNPAIR /* [ pair (pair (pair nat nat) nat) nat : nat ] */ ; UNPAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dugn.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dugn.tz].out index 432e6ea15b..be823b7e5a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dugn.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--dugn.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039992.076 units remaining { parameter (pair (pair (pair (pair nat nat) nat) nat) nat) ; storage nat ; code { CAR - /* [ @parameter pair (pair (pair (pair nat nat) nat) nat) nat ] */ ; + /* [ pair (pair (pair (pair nat nat) nat) nat) nat ] */ ; UNPAIR /* [ pair (pair (pair nat nat) nat) nat : nat ] */ ; UNPAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ediv.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ediv.tz].out index 7c08138391..22bc94ccf5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ediv.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ediv.tz].out @@ -9,45 +9,42 @@ Gas remaining: 1039978.198 units remaining (option (pair int nat)) (option (pair nat nat))) ; code { CAR - /* [ @parameter pair int int ] */ ; + /* [ pair int int ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int ] */ ; + /* [ pair int int : pair int int ] */ ; UNPAIR - /* [ int : int : @parameter pair int int ] */ ; + /* [ int : int : pair int int ] */ ; ABS - /* [ nat : int : @parameter pair int int ] */ ; - DIP { ABS /* [ nat : @parameter pair int int ] */ } - /* [ nat : nat : @parameter pair int int ] */ ; + /* [ nat : int : pair int int ] */ ; + DIP { ABS /* [ nat : pair int int ] */ } + /* [ nat : nat : pair int int ] */ ; EDIV - /* [ option (pair nat nat) : @parameter pair int int ] */ ; + /* [ option (pair nat nat) : pair int int ] */ ; SWAP - /* [ @parameter pair int int : option (pair nat nat) ] */ ; + /* [ pair int int : option (pair nat nat) ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int : option (pair nat nat) ] */ ; + /* [ pair int int : pair int int : option (pair nat nat) ] */ ; UNPAIR - /* [ int : int : @parameter pair int int : option (pair nat nat) ] */ ; + /* [ int : int : pair int int : option (pair nat nat) ] */ ; ABS - /* [ nat : int : @parameter pair int int : option (pair nat nat) ] */ ; + /* [ nat : int : pair int int : option (pair nat nat) ] */ ; EDIV - /* [ option (pair int nat) : @parameter pair int int : option (pair nat nat) ] */ ; + /* [ option (pair int nat) : pair int int : option (pair nat nat) ] */ ; SWAP - /* [ @parameter pair int int : option (pair int nat) : option (pair nat nat) ] */ ; + /* [ pair int int : option (pair int nat) : option (pair nat nat) ] */ ; DUP - /* [ @parameter pair int int : @parameter pair int int : option (pair int nat) + /* [ pair int int : pair int int : option (pair int nat) : option (pair nat nat) ] */ ; UNPAIR - /* [ int : int : @parameter pair int int : option (pair int nat) - : option (pair nat nat) ] */ ; + /* [ int : int : pair int int : option (pair int nat) : option (pair nat nat) ] */ ; DIP { ABS - /* [ nat : @parameter pair int int : option (pair int nat) - : option (pair nat nat) ] */ } - /* [ int : nat : @parameter pair int int : option (pair int nat) - : option (pair nat nat) ] */ ; + /* [ nat : pair int int : option (pair int nat) : option (pair nat nat) ] */ } + /* [ int : nat : pair int int : option (pair int nat) : option (pair nat nat) ] */ ; EDIV - /* [ option (pair int nat) : @parameter pair int int : option (pair int nat) + /* [ option (pair int nat) : pair int int : option (pair int nat) : option (pair nat nat) ] */ ; SWAP - /* [ @parameter pair int int : option (pair int nat) : option (pair int nat) + /* [ pair int int : option (pair int nat) : option (pair int nat) : option (pair nat nat) ] */ ; UNPAIR /* [ int : int : option (pair int nat) : option (pair int nat) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ediv_mutez.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ediv_mutez.tz].out index 14e42df958..3eb9d8ee8e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ediv_mutez.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ediv_mutez.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039987.261 units remaining { parameter (pair mutez (or mutez nat)) ; storage (or (option (pair nat mutez)) (option (pair mutez mutez))) ; code { CAR - /* [ @parameter pair mutez (or mutez nat) ] */ ; + /* [ pair mutez (or mutez nat) ] */ ; UNPAIR /* [ mutez : or mutez nat ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--exec_concat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--exec_concat.tz].out index 549d8c43a1..e1136e251f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--exec_concat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--exec_concat.tz].out @@ -5,27 +5,27 @@ Gas remaining: 1039991.097 units remaining { parameter string ; storage string ; code { CAR - /* [ @parameter string ] */ ; + /* [ string ] */ ; LAMBDA string string { PUSH string "_abc" - /* [ string : @arg string ] */ ; + /* [ string : string ] */ ; NIL string - /* [ list string : string : @arg string ] */ ; + /* [ list string : string : string ] */ ; SWAP - /* [ string : list string : @arg string ] */ ; + /* [ string : list string : string ] */ ; CONS - /* [ list string : @arg string ] */ ; + /* [ list string : string ] */ ; SWAP - /* [ @arg string : list string ] */ ; + /* [ string : list string ] */ ; CONS /* [ list string ] */ ; CONCAT /* [ string ] */ } - /* [ lambda string string : @parameter string ] */ ; + /* [ lambda string string : string ] */ ; SWAP - /* [ @parameter string : lambda string string ] */ ; + /* [ string : lambda string string ] */ ; EXEC /* [ string ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--first.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--first.tz].out index f499a2848d..b870c0049f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--first.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--first.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039994.458 units remaining { parameter (list nat) ; storage nat ; code { CAR - /* [ @parameter list nat ] */ ; - IF_CONS { DIP { DROP /* [] */ } /* [ @parameter.hd nat ] */ } { FAIL } ; + /* [ list nat ] */ ; + IF_CONS { DIP { DROP /* [] */ } /* [ nat ] */ } { FAIL } ; NIL operation - /* [ list operation : @parameter.hd nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @parameter.hd) ] */ } } + /* [ pair (list operation) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_big_map_value.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_big_map_value.tz].out index f73f65be90..b8bc404ba2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_big_map_value.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_big_map_value.tz].out @@ -8,10 +8,10 @@ Gas remaining: 1039990.479 units remaining /* [ pair (string @parameter) (pair @storage (big_map string string) (option string)) : pair (string @parameter) (pair @storage (big_map string string) (option string)) ] */ ; CAR - /* [ @parameter string + /* [ string : pair (string @parameter) (pair @storage (big_map string string) (option string)) ] */ ; DIP { CDAR ; DUP /* [ big_map string string : big_map string string ] */ } - /* [ @parameter string : big_map string string : big_map string string ] */ ; + /* [ string : big_map string string : big_map string string ] */ ; GET /* [ option string : big_map string string ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_map_value.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_map_value.tz].out index 4f2d0daec1..b81b76b414 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_map_value.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_map_value.tz].out @@ -8,10 +8,10 @@ Gas remaining: 1039991.007 units remaining /* [ pair (string @parameter) (pair @storage (option string) (map string string)) : pair (string @parameter) (pair @storage (option string) (map string string)) ] */ ; CAR - /* [ @parameter string + /* [ string : pair (string @parameter) (pair @storage (option string) (map string string)) ] */ ; DIP { CDDR ; DUP /* [ map string string : map string string ] */ } - /* [ @parameter string : map string string : map string string ] */ ; + /* [ string : map string string : map string string ] */ ; GET /* [ option string : map string string ] */ ; PAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_consistency_checker.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_consistency_checker.tz].out index 9207eb8cb0..708e74488e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_consistency_checker.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_consistency_checker.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039995.929 units remaining { parameter (pair mutez (pair timestamp int)) ; storage bytes ; code { CAR - /* [ @parameter pair mutez timestamp int ] */ ; + /* [ pair mutez timestamp int ] */ ; PACK - /* [ @parameter.packed bytes ] */ ; + /* [ bytes ] */ ; BLAKE2B /* [ bytes ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_key.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_key.tz].out index 4aa56e3c38..a264bbc85a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_key.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_key.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.037 units remaining { parameter key ; storage (option key_hash) ; code { CAR - /* [ @parameter key ] */ ; + /* [ key ] */ ; HASH_KEY /* [ key_hash ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_string.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_string.tz].out index c306d5a30c..1d1de3f9d3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_string.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--hash_string.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039996.340 units remaining { parameter string ; storage bytes ; code { CAR - /* [ @parameter string ] */ ; + /* [ string ] */ ; PACK - /* [ @parameter.packed bytes ] */ ; + /* [ bytes ] */ ; BLAKE2B /* [ bytes ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--if.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--if.tz].out index 80f2e7d06e..98bfeff38a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--if.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--if.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039994.330 units remaining { parameter bool ; storage (option bool) ; code { CAR - /* [ @parameter bool ] */ ; + /* [ bool ] */ ; IF { PUSH bool True /* [ bool ] */ } { PUSH bool False /* [ bool ] */ } ; SOME /* [ option bool ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--if_some.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--if_some.tz].out index 6e687533cf..8b08a2d5ec 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--if_some.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--if_some.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039995.219 units remaining { parameter (option string) ; storage string ; code { CAR - /* [ @parameter option string ] */ ; - IF_SOME { /* [ @parameter.some string ] */ } { PUSH string "" /* [ string ] */ } ; + /* [ option string ] */ ; + IF_SOME { /* [ string ] */ } { PUSH string "" /* [ string ] */ } ; NIL operation /* [ list operation : string ] */ ; PAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--int.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--int.tz].out index 8c62b46c4e..f15c4ec76c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--int.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--int.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.037 units remaining { parameter nat ; storage (option int) ; code { CAR - /* [ @parameter nat ] */ ; + /* [ nat ] */ ; INT /* [ int ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--iter_fail.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--iter_fail.tz].out index 5ee9362441..1908b7dacd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--iter_fail.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--iter_fail.tz].out @@ -5,10 +5,10 @@ Gas remaining: 1039996.234 units remaining { parameter (set nat) ; storage unit ; code { UNPAIR - /* [ @parameter set nat : @storage unit ] */ ; + /* [ set nat : unit ] */ ; ITER { FAILWITH /* [] */ } - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--keccak.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--keccak.tz].out index 4cd6b60f60..4acc9ec372 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--keccak.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--keccak.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.037 units remaining { storage (option bytes) ; parameter bytes ; code { CAR - /* [ @parameter bytes ] */ ; + /* [ bytes ] */ ; KECCAK /* [ bytes ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--left_right.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--left_right.tz].out index 134e09cf31..fc31ac5a8c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--left_right.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--left_right.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039994.130 units remaining { parameter (or bool string) ; storage (or string bool) ; code { CAR - /* [ @parameter or bool string ] */ ; + /* [ or bool string ] */ ; IF_LEFT { RIGHT string /* [ or string bool ] */ } { LEFT bool /* [ or string bool ] */ } ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--level.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--level.tz].out index 31affbff79..fb05172d33 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--level.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--level.tz].out @@ -7,8 +7,8 @@ Gas remaining: 1039996.803 units remaining code { DROP /* [] */ ; LEVEL - /* [ @level nat ] */ ; + /* [ nat ] */ ; NIL operation - /* [ list operation : @level nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @level) ] */ } } + /* [ pair (list operation) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_concat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_concat.tz].out index abbb479966..4dcfe2d854 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_concat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_concat.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039995.574 units remaining { parameter (list string) ; storage string ; code { UNPAIR - /* [ @parameter list string : @storage string ] */ ; + /* [ list string : string ] */ ; SWAP - /* [ @storage string : @parameter list string ] */ ; + /* [ string : list string ] */ ; CONS /* [ list string ] */ ; CONCAT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_concat_bytes.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_concat_bytes.tz].out index e7565c18c8..70cfda9b44 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_concat_bytes.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_concat_bytes.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039995.574 units remaining { parameter (list bytes) ; storage bytes ; code { UNPAIR - /* [ @parameter list bytes : @storage bytes ] */ ; + /* [ list bytes : bytes ] */ ; SWAP - /* [ @storage bytes : @parameter list bytes ] */ ; + /* [ bytes : list bytes ] */ ; CONS /* [ list bytes ] */ ; CONCAT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_id.tz].out index f3d28a3c8b..f6a546b1ab 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_id.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039996.880 units remaining { parameter (list string) ; storage (list string) ; code { CAR - /* [ @parameter list string ] */ ; + /* [ list string ] */ ; NIL operation - /* [ list operation : @parameter list string ] */ ; + /* [ list operation : list string ] */ ; PAIR - /* [ pair (list operation) (list @parameter string) ] */ } } + /* [ pair (list operation) (list string) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_id_map.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_id_map.tz].out index 3791f05f48..accc65e203 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_id_map.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_id_map.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039996.174 units remaining { parameter (list string) ; storage (list string) ; code { CAR - /* [ @parameter list string ] */ ; - MAP { /* [ @parameter.elt string ] */ } + /* [ list string ] */ ; + MAP { /* [ string ] */ } /* [ list string ] */ ; NIL operation /* [ list operation : list string ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_iter.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_iter.tz].out index e108d2f581..a4f4c5f7d4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_iter.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_iter.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039994.793 units remaining { parameter (list int) ; storage int ; code { CAR - /* [ @parameter list int ] */ ; + /* [ list int ] */ ; PUSH int 1 - /* [ int : @parameter list int ] */ ; + /* [ int : list int ] */ ; SWAP - /* [ @parameter list int : int ] */ ; + /* [ list int : int ] */ ; ITER { MUL /* [ int ] */ } /* [ int ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_map_block.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_map_block.tz].out index a9bf9d5d89..4ba9faa600 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_map_block.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_map_block.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039990.664 units remaining { parameter (list int) ; storage (list int) ; code { CAR - /* [ @parameter list int ] */ ; + /* [ list int ] */ ; PUSH int 0 - /* [ int : @parameter list int ] */ ; + /* [ int : list int ] */ ; SWAP - /* [ @parameter list int : int ] */ ; + /* [ list int : int ] */ ; MAP { DIP { DUP /* [ int : int ] */ } - /* [ @parameter.elt int : int : int ] */ ; + /* [ int : int : int ] */ ; ADD /* [ int : int ] */ ; DIP { PUSH int 1 /* [ int : int ] */ ; ADD /* [ int ] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_size.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_size.tz].out index 5df93cac0e..d93117b2c7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_size.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--list_size.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.720 units remaining { parameter (list int) ; storage nat ; code { CAR - /* [ @parameter list int ] */ ; + /* [ list int ] */ ; SIZE /* [ nat ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_failwith.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_failwith.tz].out index d2256f6e44..9cf5eef021 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_failwith.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_failwith.tz].out @@ -5,10 +5,10 @@ Gas remaining: 1039996.317 units remaining { parameter bool ; storage unit ; code { UNPAIR - /* [ @parameter bool : @storage unit ] */ ; + /* [ bool : unit ] */ ; LOOP { FAILWITH /* [] */ } - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_left.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_left.tz].out index d1ce4870cb..9e1ec7ab5b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_left.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_left.tz].out @@ -5,32 +5,31 @@ Gas remaining: 1039983.876 units remaining { parameter (list string) ; storage (list string) ; code { CAR - /* [ @parameter list string ] */ ; + /* [ list string ] */ ; NIL string - /* [ list string : @parameter list string ] */ ; + /* [ list string : list string ] */ ; SWAP - /* [ @parameter list string : list string ] */ ; + /* [ list string : list string ] */ ; PAIR - /* [ pair (list @parameter string) (list string) ] */ ; + /* [ pair (list string) (list string) ] */ ; LEFT (list string) - /* [ or (pair (list @parameter string) (list string)) (list string) ] */ ; + /* [ or (pair (list string) (list string)) (list string) ] */ ; LOOP_LEFT { DUP - /* [ pair (list @parameter string) (list string) - : pair (list @parameter string) (list string) ] */ ; + /* [ pair (list string) (list string) : pair (list string) (list string) ] */ ; CAR - /* [ @parameter list string : pair (list @parameter string) (list string) ] */ ; + /* [ list string : pair (list string) (list string) ] */ ; DIP { CDR /* [ list string ] */ } - /* [ @parameter list string : list string ] */ ; + /* [ list string : list string ] */ ; IF_CONS { SWAP - /* [ @parameter.tl list string : @parameter.hd string : list string ] */ ; + /* [ list string : string : list string ] */ ; DIP { CONS /* [ list string ] */ } - /* [ @parameter.tl list string : list string ] */ ; + /* [ list string : list string ] */ ; PAIR - /* [ pair (list @parameter.tl string) (list string) ] */ ; + /* [ pair (list string) (list string) ] */ ; LEFT (list string) - /* [ or (pair (list @parameter.tl string) (list string)) (list string) ] */ } + /* [ or (pair (list string) (list string)) (list string) ] */ } { RIGHT (pair (list string) (list string)) /* [ or (pair (list string) (list string)) (list string) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_left_failwith.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_left_failwith.tz].out index 7a1be23a3c..7182ae0699 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_left_failwith.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--loop_left_failwith.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.076 units remaining { parameter (or string nat) ; storage nat ; code { CAR - /* [ @parameter or string nat ] */ ; + /* [ or string nat ] */ ; LOOP_LEFT { FAILWITH /* [] */ } /* [ nat ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_id.tz].out index 95edb551e4..d467decad1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_id.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039996.494 units remaining { parameter (map nat nat) ; storage (map nat nat) ; code { CAR - /* [ @parameter map nat nat ] */ ; + /* [ map nat nat ] */ ; NIL operation - /* [ list operation : @parameter map nat nat ] */ ; + /* [ list operation : map nat nat ] */ ; PAIR - /* [ pair (list operation) (map @parameter nat nat) ] */ } } + /* [ pair (list operation) (map nat nat) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_iter.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_iter.tz].out index 667a1fd118..f865564d10 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_iter.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_iter.tz].out @@ -5,38 +5,30 @@ Gas remaining: 1039985.509 units remaining { parameter (map (int :k) (int :e)) ; storage (pair (int :k) (int :e)) ; code { CAR - /* [ @parameter map (int :k) (int :e) ] */ ; + /* [ map (int :k) (int :e) ] */ ; PUSH @acc_e (int :e) 0 - /* [ @acc_e int :e : @parameter map (int :k) (int :e) ] */ ; - PUSH @acc_k - (int :k) - 0 - /* [ @acc_k int :k : @acc_e int :e : @parameter map (int :k) (int :e) ] */ ; + /* [ int :e : map (int :k) (int :e) ] */ ; + PUSH @acc_k (int :k) 0 + /* [ int :k : int :e : map (int :k) (int :e) ] */ ; PAIR % %r - /* [ pair (int :k @acc_k) (int :e %r @acc_e) - : @parameter map (int :k) (int :e) ] */ ; + /* [ pair (int :k) (int :e %r) : map (int :k) (int :e) ] */ ; SWAP - /* [ @parameter map (int :k) (int :e) - : pair (int :k @acc_k) (int :e %r @acc_e) ] */ ; + /* [ map (int :k) (int :e) : pair (int :k) (int :e %r) ] */ ; ITER { DIP { DUP - /* [ pair (int :k @acc_k) (int :e %r @acc_e) - : pair (int :k @acc_k) (int :e %r @acc_e) ] */ ; + /* [ pair (int :k) (int :e %r) : pair (int :k) (int :e %r) ] */ ; CAR - /* [ @acc_k int :k : pair (int :k @acc_k) (int :e %r @acc_e) ] */ ; - DIP { CDR /* [ @acc_e int :e ] */ } - /* [ @acc_k int :k : @acc_e int :e ] */ } - /* [ pair (int :k @key) (int :e @elt) : @acc_k int :k : @acc_e int :e ] */ ; + /* [ int :k : pair (int :k) (int :e %r) ] */ ; + DIP { CDR /* [ int :e ] */ } + /* [ int :k : int :e ] */ } + /* [ pair (int :k @key) (int :e @elt) : int :k : int :e ] */ ; DUP /* [ pair (int :k @key) (int :e @elt) : pair (int :k @key) (int :e @elt) - : @acc_k int :k : @acc_e int :e ] */ ; - DIP { CAR - /* [ @key int :k : @acc_k int :k : @acc_e int :e ] */ ; - ADD - /* [ int :k : @acc_e int :e ] */ } - /* [ pair (int :k @key) (int :e @elt) : int :k : @acc_e int :e ] */ ; + : int :k : int :e ] */ ; + DIP { CAR /* [ int :k : int :k : int :e ] */ ; ADD /* [ int :k : int :e ] */ } + /* [ pair (int :k @key) (int :e @elt) : int :k : int :e ] */ ; SWAP - /* [ int :k : pair (int :k @key) (int :e @elt) : @acc_e int :e ] */ ; - DIP { CDR /* [ @elt int :e : @acc_e int :e ] */ ; ADD /* [ int :e ] */ } + /* [ int :k : pair (int :k @key) (int :e @elt) : int :e ] */ ; + DIP { CDR /* [ int :e : int :e ] */ ; ADD /* [ int :e ] */ } /* [ int :k : int :e ] */ ; PAIR % %r /* [ pair (int :k) (int :e %r) ] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_map.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_map.tz].out index 1340f8b3a7..e88ae3f051 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_map.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_map.tz].out @@ -5,16 +5,16 @@ Gas remaining: 1039992.454 units remaining { parameter nat ; storage (map string nat) ; code { UNPAIR - /* [ @parameter nat : @storage map string nat ] */ ; + /* [ nat : map string nat ] */ ; SWAP - /* [ @storage map string nat : @parameter nat ] */ ; + /* [ map string nat : nat ] */ ; MAP { CDR - /* [ @elt nat : @parameter nat ] */ ; - DIP { DUP /* [ @parameter nat : @parameter nat ] */ } - /* [ @elt nat : @parameter nat : @parameter nat ] */ ; + /* [ nat : nat ] */ ; + DIP { DUP /* [ nat : nat ] */ } + /* [ nat : nat : nat ] */ ; ADD - /* [ nat : @parameter nat ] */ } - /* [ map string nat : @parameter nat ] */ ; + /* [ nat : nat ] */ } + /* [ map string nat : nat ] */ ; DIP { DROP /* [] */ } /* [ map string nat ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_map_sideeffect.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_map_sideeffect.tz].out index cfc62c6b58..b0bfcafece 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_map_sideeffect.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_map_sideeffect.tz].out @@ -5,32 +5,31 @@ Gas remaining: 1039986.934 units remaining { parameter nat ; storage (pair (map string nat) nat) ; code { UNPAIR - /* [ @parameter nat : @storage pair (map string nat) nat ] */ ; + /* [ nat : pair (map string nat) nat ] */ ; SWAP - /* [ @storage pair (map string nat) nat : @parameter nat ] */ ; + /* [ pair (map string nat) nat : nat ] */ ; CAR - /* [ map string nat : @parameter nat ] */ ; - DIP 2 - { PUSH @sum nat 0 /* [ @sum nat ] */ } - /* [ map string nat : @parameter nat : @sum nat ] */ ; + /* [ map string nat : nat ] */ ; + DIP 2 { PUSH @sum nat 0 /* [ nat ] */ } + /* [ map string nat : nat : nat ] */ ; MAP { CDR - /* [ @elt nat : @parameter nat : @sum nat ] */ ; - DIP { DUP /* [ @parameter nat : @parameter nat : @sum nat ] */ } - /* [ @elt nat : @parameter nat : @parameter nat : @sum nat ] */ ; + /* [ nat : nat : nat ] */ ; + DIP { DUP /* [ nat : nat : nat ] */ } + /* [ nat : nat : nat : nat ] */ ; ADD - /* [ nat : @parameter nat : @sum nat ] */ ; + /* [ nat : nat : nat ] */ ; DUP - /* [ nat : nat : @parameter nat : @sum nat ] */ ; + /* [ nat : nat : nat : nat ] */ ; DUG 2 - /* [ nat : @parameter nat : nat : @sum nat ] */ ; - DIP 2 { ADD @sum /* [ @sum nat ] */ } - /* [ nat : @parameter nat : @sum nat ] */ } - /* [ map string nat : @parameter nat : @sum nat ] */ ; - DIP { DROP /* [ @sum nat ] */ } - /* [ map string nat : @sum nat ] */ ; + /* [ nat : nat : nat : nat ] */ ; + DIP 2 { ADD @sum /* [ nat ] */ } + /* [ nat : nat : nat ] */ } + /* [ map string nat : nat : nat ] */ ; + DIP { DROP /* [ nat ] */ } + /* [ map string nat : nat ] */ ; PAIR - /* [ pair (map string nat) (nat @sum) ] */ ; + /* [ pair (map string nat) nat ] */ ; NIL operation - /* [ list operation : pair (map string nat) (nat @sum) ] */ ; + /* [ list operation : pair (map string nat) nat ] */ ; PAIR - /* [ pair (list operation) (map string nat) (nat @sum) ] */ } } + /* [ pair (list operation) (map string nat) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_mem_nat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_mem_nat.tz].out index 4ae552e9ee..c7b7f76e84 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_mem_nat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_mem_nat.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039991.954 units remaining { parameter nat ; storage (pair (map nat nat) (option bool)) ; code { UNPAIR - /* [ @parameter nat : @storage pair (map nat nat) (option bool) ] */ ; + /* [ nat : pair (map nat nat) (option bool) ] */ ; DIP { CAR /* [ map nat nat ] */ ; DUP /* [ map nat nat : map nat nat ] */ } - /* [ @parameter nat : map nat nat : map nat nat ] */ ; + /* [ nat : map nat nat : map nat nat ] */ ; MEM /* [ bool : map nat nat ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_mem_string.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_mem_string.tz].out index a9f6e1a867..e741df944c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_mem_string.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_mem_string.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039991.954 units remaining { parameter string ; storage (pair (map string nat) (option bool)) ; code { UNPAIR - /* [ @parameter string : @storage pair (map string nat) (option bool) ] */ ; + /* [ string : pair (map string nat) (option bool) ] */ ; DIP { CAR /* [ map string nat ] */ ; DUP /* [ map string nat : map string nat ] */ } - /* [ @parameter string : map string nat : map string nat ] */ ; + /* [ string : map string nat : map string nat ] */ ; MEM /* [ bool : map string nat ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_size.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_size.tz].out index 762f71b9e4..4e5ff13c44 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_size.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_size.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.637 units remaining { parameter (map string nat) ; storage nat ; code { CAR - /* [ @parameter map string nat ] */ ; + /* [ map string nat ] */ ; SIZE /* [ nat ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--merge_comparable_pairs.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--merge_comparable_pairs.tz].out index a1636639be..32eaeec5fc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--merge_comparable_pairs.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--merge_comparable_pairs.tz].out @@ -5,20 +5,16 @@ Gas remaining: 1039990.293 units remaining { parameter (set (pair (nat %n) (pair %p (string %s) (int %i)))) ; storage nat ; code { UNPAIR - /* [ @parameter set (pair (nat %n) (pair %p (string %s) (int %i))) - : @storage nat ] */ ; + /* [ set (pair (nat %n) (pair %p (string %s) (int %i))) : nat ] */ ; SWAP - /* [ @storage nat - : @parameter set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ ; - PUSH nat - 3 - /* [ nat : @storage nat - : @parameter set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ ; + /* [ nat : set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ ; + PUSH nat 3 + /* [ nat : nat : set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ ; COMPARE - /* [ int : @parameter set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ ; + /* [ int : set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ ; GT - /* [ bool : @parameter set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ ; - IF { /* [ @parameter set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ } + /* [ bool : set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ ; + IF { /* [ set (pair (nat %n) (pair %p (string %s) (int %i))) ] */ } { DROP /* [] */ ; EMPTY_SET (pair nat (pair string int)) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul.tz].out index f433d84bc7..30f48b2b33 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039959.301 units remaining { parameter unit ; storage unit ; code { CAR - /* [ @parameter unit ] */ ; + /* [ unit ] */ ; DROP /* [] */ ; PUSH nat 7987 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_fr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_fr.tz].out index 8a91c75c36..934d44cc7f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_fr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_fr.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.329 units remaining { parameter (pair bls12_381_fr bls12_381_fr) ; storage (option bls12_381_fr) ; code { CAR - /* [ @parameter pair bls12_381_fr bls12_381_fr ] */ ; + /* [ pair bls12_381_fr bls12_381_fr ] */ ; UNPAIR /* [ bls12_381_fr : bls12_381_fr ] */ ; MUL diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_g1.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_g1.tz].out index af8cddeb62..e4c03bde34 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_g1.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_g1.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.329 units remaining { parameter (pair bls12_381_g1 bls12_381_fr) ; storage (option bls12_381_g1) ; code { CAR - /* [ @parameter pair bls12_381_g1 bls12_381_fr ] */ ; + /* [ pair bls12_381_g1 bls12_381_fr ] */ ; UNPAIR /* [ bls12_381_g1 : bls12_381_fr ] */ ; MUL diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_g2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_g2.tz].out index 8d2ac845a1..2aa5b65aa2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_g2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_bls12_381_g2.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.329 units remaining { parameter (pair bls12_381_g2 bls12_381_fr) ; storage (option bls12_381_g2) ; code { CAR - /* [ @parameter pair bls12_381_g2 bls12_381_fr ] */ ; + /* [ pair bls12_381_g2 bls12_381_fr ] */ ; UNPAIR /* [ bls12_381_g2 : bls12_381_fr ] */ ; MUL diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_overflow.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_overflow.tz].out index ad738aeb3c..928f99a937 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_overflow.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mul_overflow.tz].out @@ -5,24 +5,24 @@ Gas remaining: 1039991.544 units remaining { parameter (or unit unit) ; storage unit ; code { CAR - /* [ @parameter or unit unit ] */ ; + /* [ or unit unit ] */ ; IF_LEFT { PUSH nat 922337203685477580700 - /* [ nat : @parameter.left unit ] */ ; + /* [ nat : unit ] */ ; PUSH mutez 10 - /* [ mutez : nat : @parameter.left unit ] */ ; + /* [ mutez : nat : unit ] */ ; MUL - /* [ mutez : @parameter.left unit ] */ ; + /* [ mutez : unit ] */ ; DROP - /* [ @parameter.left unit ] */ } + /* [ unit ] */ } { PUSH mutez 10 - /* [ mutez : @parameter.right unit ] */ ; + /* [ mutez : unit ] */ ; PUSH nat 922337203685477580700 - /* [ nat : mutez : @parameter.right unit ] */ ; + /* [ nat : mutez : unit ] */ ; MUL - /* [ mutez : @parameter.right unit ] */ ; + /* [ mutez : unit ] */ ; DROP - /* [ @parameter.right unit ] */ } ; + /* [ unit ] */ } ; NIL operation /* [ list operation : unit ] */ ; PAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--munch.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--munch.tz].out index 9cf384f318..408c777022 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--munch.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--munch.tz].out @@ -6,8 +6,8 @@ Gas remaining: 1039996.425 units remaining (or (bytes %bytes) (or (lambda %lambda unit unit) (or (nat %nat) (list %list_nat nat)))) ; storage unit ; code { CDR - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mutez_to_bls12_381_fr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mutez_to_bls12_381_fr.tz].out index 9c284e7518..37edec9875 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mutez_to_bls12_381_fr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--mutez_to_bls12_381_fr.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039991.653 units remaining { parameter mutez ; storage bls12_381_fr ; code { CAR - /* [ @parameter mutez ] */ ; + /* [ mutez ] */ ; PUSH mutez 1 - /* [ mutez : @parameter mutez ] */ ; + /* [ mutez : mutez ] */ ; SWAP - /* [ @parameter mutez : mutez ] */ ; + /* [ mutez : mutez ] */ ; EDIV /* [ option (pair nat mutez) ] */ ; ASSERT_SOME ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg.tz].out index 560c536a06..f6165c43af 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.361 units remaining { parameter (or int nat) ; storage int ; code { CAR - /* [ @parameter or int nat ] */ ; + /* [ or int nat ] */ ; IF_LEFT { NEG /* [ int ] */ } { NEG /* [ int ] */ } ; NIL operation /* [ list operation : int ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_fr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_fr.tz].out index 15d9345e79..2b4b2cd34c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_fr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_fr.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.037 units remaining { parameter bls12_381_fr ; storage (option bls12_381_fr) ; code { CAR - /* [ @parameter bls12_381_fr ] */ ; + /* [ bls12_381_fr ] */ ; NEG /* [ bls12_381_fr ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_g1.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_g1.tz].out index 7b94dec1bb..6731ef3233 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_g1.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_g1.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.037 units remaining { parameter bls12_381_g1 ; storage (option bls12_381_g1) ; code { CAR - /* [ @parameter bls12_381_g1 ] */ ; + /* [ bls12_381_g1 ] */ ; NEG /* [ bls12_381_g1 ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_g2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_g2.tz].out index 33b0e288b2..7d143177dd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_g2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--neg_bls12_381_g2.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.037 units remaining { parameter bls12_381_g2 ; storage (option bls12_381_g2) ; code { CAR - /* [ @parameter bls12_381_g2 ] */ ; + /* [ bls12_381_g2 ] */ ; NEG /* [ bls12_381_g2 ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--noop.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--noop.tz].out index e1e6b07b9b..9b6744eac4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--noop.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--noop.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039997.267 units remaining { parameter unit ; storage unit ; code { CDR - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--not.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--not.tz].out index cbac38ac95..736a7ad2f6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--not.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--not.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.037 units remaining { parameter bool ; storage (option bool) ; code { CAR - /* [ @parameter bool ] */ ; + /* [ bool ] */ ; NOT /* [ bool ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--not_binary.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--not_binary.tz].out index 209a98cae3..3fd8b510e4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--not_binary.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--not_binary.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039994.585 units remaining { parameter (or int nat) ; storage (option int) ; code { CAR - /* [ @parameter or int nat ] */ ; + /* [ or int nat ] */ ; IF_LEFT { NOT /* [ int ] */ } { NOT /* [ int ] */ } ; SOME /* [ option int ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--or.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--or.tz].out index dae4936160..7cf3920c62 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--or.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--or.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039993.625 units remaining { parameter (pair bool bool) ; storage (option bool) ; code { CAR - /* [ @parameter pair bool bool ] */ ; + /* [ pair bool bool ] */ ; DUP - /* [ @parameter pair bool bool : @parameter pair bool bool ] */ ; + /* [ pair bool bool : pair bool bool ] */ ; CAR - /* [ bool : @parameter pair bool bool ] */ ; + /* [ bool : pair bool bool ] */ ; SWAP - /* [ @parameter pair bool bool : bool ] */ ; + /* [ pair bool bool : bool ] */ ; CDR /* [ bool : bool ] */ ; OR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--or_binary.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--or_binary.tz].out index 62b84d5ed5..d678551abb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--or_binary.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--or_binary.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.329 units remaining { parameter (pair nat nat) ; storage (option nat) ; code { CAR - /* [ @parameter pair nat nat ] */ ; + /* [ pair nat nat ] */ ; UNPAIR /* [ nat : nat ] */ ; OR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--originate_big_map.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--originate_big_map.tz].out index acc17962c4..2419600071 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--originate_big_map.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--originate_big_map.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039996.374 units remaining { parameter (big_map int int) ; storage (big_map int int) ; code { CAR - /* [ @parameter big_map int int ] */ ; + /* [ big_map int int ] */ ; NIL operation - /* [ list operation : @parameter big_map int int ] */ ; + /* [ list operation : big_map int int ] */ ; PAIR - /* [ pair (list operation) (big_map @parameter int int) ] */ } } + /* [ pair (list operation) (big_map int int) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack.tz].out index 7b44a4f9b7..af9e0fa761 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack.tz].out @@ -5,17 +5,17 @@ Gas remaining: 1039986.390 units remaining { parameter (pair (pair (pair string (list int)) (set nat)) bytes) ; storage unit ; code { CAR - /* [ @parameter pair (pair (pair string (list int)) (set nat)) bytes ] */ ; + /* [ pair (pair (pair string (list int)) (set nat)) bytes ] */ ; UNPAIR /* [ pair (pair string (list int)) (set nat) : bytes ] */ ; DIP { DUP /* [ bytes : bytes ] */ } /* [ pair (pair string (list int)) (set nat) : bytes : bytes ] */ ; PACK - /* [ @packed bytes : bytes : bytes ] */ ; + /* [ bytes : bytes : bytes ] */ ; ASSERT_CMPEQ ; UNPACK (pair (pair string (list int)) (set nat)) - /* [ @unpacked option (pair (pair string (list int)) (set nat)) ] */ ; + /* [ option (pair (pair string (list int)) (set nat)) ] */ ; ASSERT_SOME ; DROP /* [] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack_rev.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack_rev.tz].out index 24bac27623..9656d1b931 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack_rev.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack_rev.tz].out @@ -5,22 +5,20 @@ Gas remaining: 1039885.614 units remaining { parameter (pair int nat string bytes mutez bool key_hash timestamp address) ; storage unit ; code { CAR - /* [ @parameter pair int nat string bytes mutez bool key_hash timestamp address ] */ ; + /* [ pair int nat string bytes mutez bool key_hash timestamp address ] */ ; DUP - /* [ @parameter pair int nat string bytes mutez bool key_hash timestamp address - : @parameter pair int nat string bytes mutez bool key_hash timestamp address ] */ ; + /* [ pair int nat string bytes mutez bool key_hash timestamp address + : pair int nat string bytes mutez bool key_hash timestamp address ] */ ; CAR - /* [ int - : @parameter pair int nat string bytes mutez bool key_hash timestamp address ] */ ; + /* [ int : pair int nat string bytes mutez bool key_hash timestamp address ] */ ; DIP { UNPAIR /* [ int : pair nat string bytes mutez bool key_hash timestamp address ] */ } /* [ int : int : pair nat string bytes mutez bool key_hash timestamp address ] */ ; PACK - /* [ @packed bytes : int - : pair nat string bytes mutez bool key_hash timestamp address ] */ ; + /* [ bytes : int : pair nat string bytes mutez bool key_hash timestamp address ] */ ; UNPACK int - /* [ @packed.unpacked option int : int + /* [ option int : int : pair nat string bytes mutez bool key_hash timestamp address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; @@ -32,11 +30,10 @@ Gas remaining: 1039885.614 units remaining DIP { UNPAIR /* [ nat : pair string bytes mutez bool key_hash timestamp address ] */ } /* [ nat : nat : pair string bytes mutez bool key_hash timestamp address ] */ ; PACK - /* [ @packed bytes : nat - : pair string bytes mutez bool key_hash timestamp address ] */ ; + /* [ bytes : nat : pair string bytes mutez bool key_hash timestamp address ] */ ; UNPACK nat - /* [ @packed.unpacked option nat : nat + /* [ option nat : nat : pair string bytes mutez bool key_hash timestamp address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; @@ -48,11 +45,10 @@ Gas remaining: 1039885.614 units remaining DIP { UNPAIR /* [ string : pair bytes mutez bool key_hash timestamp address ] */ } /* [ string : string : pair bytes mutez bool key_hash timestamp address ] */ ; PACK - /* [ @packed bytes : string : pair bytes mutez bool key_hash timestamp address ] */ ; + /* [ bytes : string : pair bytes mutez bool key_hash timestamp address ] */ ; UNPACK string - /* [ @packed.unpacked option string : string - : pair bytes mutez bool key_hash timestamp address ] */ ; + /* [ option string : string : pair bytes mutez bool key_hash timestamp address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; DUP @@ -63,11 +59,10 @@ Gas remaining: 1039885.614 units remaining DIP { UNPAIR /* [ bytes : pair mutez bool key_hash timestamp address ] */ } /* [ bytes : bytes : pair mutez bool key_hash timestamp address ] */ ; PACK - /* [ @packed bytes : bytes : pair mutez bool key_hash timestamp address ] */ ; + /* [ bytes : bytes : pair mutez bool key_hash timestamp address ] */ ; UNPACK bytes - /* [ @packed.unpacked option bytes : bytes - : pair mutez bool key_hash timestamp address ] */ ; + /* [ option bytes : bytes : pair mutez bool key_hash timestamp address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; DUP @@ -78,11 +73,9 @@ Gas remaining: 1039885.614 units remaining DIP { UNPAIR /* [ mutez : pair bool key_hash timestamp address ] */ } /* [ mutez : mutez : pair bool key_hash timestamp address ] */ ; PACK - /* [ @packed bytes : mutez : pair bool key_hash timestamp address ] */ ; - UNPACK - mutez - /* [ @packed.unpacked option mutez : mutez - : pair bool key_hash timestamp address ] */ ; + /* [ bytes : mutez : pair bool key_hash timestamp address ] */ ; + UNPACK mutez + /* [ option mutez : mutez : pair bool key_hash timestamp address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; DUP @@ -93,10 +86,9 @@ Gas remaining: 1039885.614 units remaining DIP { UNPAIR /* [ bool : pair key_hash timestamp address ] */ } /* [ bool : bool : pair key_hash timestamp address ] */ ; PACK - /* [ @packed bytes : bool : pair key_hash timestamp address ] */ ; - UNPACK - bool - /* [ @packed.unpacked option bool : bool : pair key_hash timestamp address ] */ ; + /* [ bytes : bool : pair key_hash timestamp address ] */ ; + UNPACK bool + /* [ option bool : bool : pair key_hash timestamp address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; DUP @@ -106,10 +98,9 @@ Gas remaining: 1039885.614 units remaining DIP { UNPAIR /* [ key_hash : pair timestamp address ] */ } /* [ key_hash : key_hash : pair timestamp address ] */ ; PACK - /* [ @packed bytes : key_hash : pair timestamp address ] */ ; - UNPACK - key_hash - /* [ @packed.unpacked option key_hash : key_hash : pair timestamp address ] */ ; + /* [ bytes : key_hash : pair timestamp address ] */ ; + UNPACK key_hash + /* [ option key_hash : key_hash : pair timestamp address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; DUP @@ -119,49 +110,49 @@ Gas remaining: 1039885.614 units remaining DIP { UNPAIR /* [ timestamp : address ] */ } /* [ timestamp : timestamp : address ] */ ; PACK - /* [ @packed bytes : timestamp : address ] */ ; + /* [ bytes : timestamp : address ] */ ; UNPACK timestamp - /* [ @packed.unpacked option timestamp : timestamp : address ] */ ; + /* [ option timestamp : timestamp : address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; DUP /* [ address : address ] */ ; PACK - /* [ @packed bytes : address ] */ ; + /* [ bytes : address ] */ ; UNPACK address - /* [ @packed.unpacked option address : address ] */ ; + /* [ option address : address ] */ ; ASSERT_SOME ; ASSERT_CMPEQ ; PUSH int 0 /* [ int ] */ ; PACK - /* [ @packed bytes ] */ ; + /* [ bytes ] */ ; UNPACK nat - /* [ @packed.unpacked option nat ] */ ; + /* [ option nat ] */ ; ASSERT_SOME ; DROP /* [] */ ; PUSH int -1 /* [ int ] */ ; PACK - /* [ @packed bytes ] */ ; + /* [ bytes ] */ ; UNPACK nat - /* [ @packed.unpacked option nat ] */ ; + /* [ option nat ] */ ; ASSERT_NONE ; PUSH bytes 0x /* [ bytes ] */ ; UNPACK nat - /* [ @unpacked option nat ] */ ; + /* [ option nat ] */ ; ASSERT_NONE ; PUSH bytes 0x04 /* [ bytes ] */ ; UNPACK nat - /* [ @unpacked option nat ] */ ; + /* [ option nat ] */ ; ASSERT_NONE ; PUSH bytes 0x05 /* [ bytes ] */ ; UNPACK nat - /* [ @unpacked option nat ] */ ; + /* [ option nat ] */ ; ASSERT_NONE ; UNIT /* [ unit ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack_rev_cty.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack_rev_cty.tz].out index 65b65eb188..fa8d73ac9b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack_rev_cty.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--packunpack_rev_cty.tz].out @@ -15,7 +15,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes)) ; storage unit ; code { CAR - /* [ @parameter pair key + /* [ pair key unit signature (option signature) @@ -26,7 +26,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; DUP - /* [ @parameter pair key + /* [ pair key unit signature (option signature) @@ -36,7 +36,7 @@ Gas remaining: 1039871.738 units remaining (or key_hash timestamp) (map int string) (lambda string bytes) - : @parameter pair key + : pair key unit signature (option signature) @@ -48,7 +48,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; CAR /* [ key - : @parameter pair key + : pair key unit signature (option signature) @@ -80,7 +80,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; PACK - /* [ @packed bytes : key + /* [ bytes : key : pair unit signature (option signature) @@ -91,7 +91,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; DIP { PACK - /* [ @packed bytes + /* [ bytes : pair unit signature (option signature) @@ -103,7 +103,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; UNPACK key - /* [ @packed.unpacked option key + /* [ option key : pair unit signature (option signature) @@ -115,7 +115,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes + /* [ bytes : pair unit signature (option signature) @@ -125,7 +125,7 @@ Gas remaining: 1039871.738 units remaining (or key_hash timestamp) (map int string) (lambda string bytes) ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes + /* [ bytes : bytes : pair unit signature (option signature) @@ -186,7 +186,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; PACK - /* [ @packed bytes : unit + /* [ bytes : unit : pair signature (option signature) (list unit) @@ -196,7 +196,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; DIP { PACK - /* [ @packed bytes + /* [ bytes : pair signature (option signature) (list unit) @@ -207,7 +207,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; UNPACK unit - /* [ @packed.unpacked option unit + /* [ option unit : pair signature (option signature) (list unit) @@ -218,7 +218,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes + /* [ bytes : pair signature (option signature) (list unit) @@ -227,7 +227,7 @@ Gas remaining: 1039871.738 units remaining (or key_hash timestamp) (map int string) (lambda string bytes) ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes + /* [ bytes : bytes : pair signature (option signature) (list unit) @@ -282,7 +282,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; PACK - /* [ @packed bytes : signature + /* [ bytes : signature : pair (option signature) (list unit) (set bool) @@ -291,7 +291,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; DIP { PACK - /* [ @packed bytes + /* [ bytes : pair (option signature) (list unit) (set bool) @@ -301,7 +301,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; UNPACK signature - /* [ @packed.unpacked option signature + /* [ option signature : pair (option signature) (list unit) (set bool) @@ -311,7 +311,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes + /* [ bytes : pair (option signature) (list unit) (set bool) @@ -319,7 +319,7 @@ Gas remaining: 1039871.738 units remaining (or key_hash timestamp) (map int string) (lambda string bytes) ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes + /* [ bytes : bytes : pair (option signature) (list unit) (set bool) @@ -368,7 +368,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; PACK - /* [ @packed bytes : option signature + /* [ bytes : option signature : pair (list unit) (set bool) (pair int int) @@ -376,7 +376,7 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; DIP { PACK - /* [ @packed bytes + /* [ bytes : pair (list unit) (set bool) (pair int int) @@ -385,7 +385,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; UNPACK (option signature) - /* [ @packed.unpacked option (option signature) + /* [ option (option signature) : pair (list unit) (set bool) (pair int int) @@ -394,14 +394,14 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes + /* [ bytes : pair (list unit) (set bool) (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes + /* [ bytes : bytes : pair (list unit) (set bool) (pair int int) @@ -444,14 +444,14 @@ Gas remaining: 1039871.738 units remaining (map int string) (lambda string bytes) ] */ ; PACK - /* [ @packed bytes : list unit + /* [ bytes : list unit : pair (set bool) (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; DIP { PACK - /* [ @packed bytes + /* [ bytes : pair (set bool) (pair int int) (or key_hash timestamp) @@ -459,7 +459,7 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; UNPACK (list unit) - /* [ @packed.unpacked option (list unit) + /* [ option (list unit) : pair (set bool) (pair int int) (or key_hash timestamp) @@ -467,13 +467,13 @@ Gas remaining: 1039871.738 units remaining (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes + /* [ bytes : pair (set bool) (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes + /* [ bytes : bytes : pair (set bool) (pair int int) (or key_hash timestamp) @@ -504,20 +504,20 @@ Gas remaining: 1039871.738 units remaining /* [ set bool : set bool : pair (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; PACK - /* [ @packed bytes : set bool + /* [ bytes : set bool : pair (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; DIP { PACK - /* [ @packed bytes + /* [ bytes : pair (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; UNPACK (set bool) - /* [ @packed.unpacked option (set bool) + /* [ option (set bool) : pair (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes + /* [ bytes : pair (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes + /* [ bytes : bytes : pair (pair int int) (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; ASSERT_CMPEQ ; DUP @@ -532,20 +532,20 @@ Gas remaining: 1039871.738 units remaining /* [ pair int int : pair int int : pair (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; PACK - /* [ @packed bytes : pair int int + /* [ bytes : pair int int : pair (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; DIP { PACK - /* [ @packed bytes + /* [ bytes : pair (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; UNPACK (pair int int) - /* [ @packed.unpacked option (pair int int) + /* [ option (pair int int) : pair (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes + /* [ bytes : pair (or key_hash timestamp) (map int string) (lambda string bytes) ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes + /* [ bytes : bytes : pair (or key_hash timestamp) (map int string) (lambda string bytes) ] */ ; ASSERT_CMPEQ ; DUP @@ -559,20 +559,18 @@ Gas remaining: 1039871.738 units remaining /* [ or key_hash timestamp : or key_hash timestamp : pair (map int string) (lambda string bytes) ] */ ; PACK - /* [ @packed bytes : or key_hash timestamp + /* [ bytes : or key_hash timestamp : pair (map int string) (lambda string bytes) ] */ ; DIP { PACK - /* [ @packed bytes : pair (map int string) (lambda string bytes) ] */ ; + /* [ bytes : pair (map int string) (lambda string bytes) ] */ ; UNPACK (or key_hash timestamp) - /* [ @packed.unpacked option (or key_hash timestamp) + /* [ option (or key_hash timestamp) : pair (map int string) (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes - : pair (map int string) (lambda string bytes) ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes - : pair (map int string) (lambda string bytes) ] */ ; + /* [ bytes : pair (map int string) (lambda string bytes) ] */ } + /* [ bytes : bytes : pair (map int string) (lambda string bytes) ] */ ; ASSERT_CMPEQ ; DUP /* [ pair (map int string) (lambda string bytes) @@ -582,29 +580,28 @@ Gas remaining: 1039871.738 units remaining DIP { UNPAIR /* [ map int string : lambda string bytes ] */ } /* [ map int string : map int string : lambda string bytes ] */ ; PACK - /* [ @packed bytes : map int string : lambda string bytes ] */ ; + /* [ bytes : map int string : lambda string bytes ] */ ; DIP { PACK - /* [ @packed bytes : lambda string bytes ] */ ; - UNPACK - (map int string) - /* [ @packed.unpacked option (map int string) : lambda string bytes ] */ ; + /* [ bytes : lambda string bytes ] */ ; + UNPACK (map int string) + /* [ option (map int string) : lambda string bytes ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes : lambda string bytes ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes : lambda string bytes ] */ ; + /* [ bytes : lambda string bytes ] */ } + /* [ bytes : bytes : lambda string bytes ] */ ; ASSERT_CMPEQ ; DUP /* [ lambda string bytes : lambda string bytes ] */ ; PACK - /* [ @packed bytes : lambda string bytes ] */ ; + /* [ bytes : lambda string bytes ] */ ; DIP { PACK - /* [ @packed bytes ] */ ; + /* [ bytes ] */ ; UNPACK (lambda string bytes) - /* [ @packed.unpacked option (lambda string bytes) ] */ ; + /* [ option (lambda string bytes) ] */ ; ASSERT_SOME ; PACK - /* [ @packed.unpacked.some.packed bytes ] */ } - /* [ @packed bytes : @packed.unpacked.some.packed bytes ] */ ; + /* [ bytes ] */ } + /* [ bytes : bytes ] */ ; ASSERT_CMPEQ ; UNIT /* [ unit ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pair_id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pair_id.tz].out index a00f9863b5..94da0387de 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pair_id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pair_id.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.649 units remaining { parameter (pair bool bool) ; storage (option (pair bool bool)) ; code { CAR - /* [ @parameter pair bool bool ] */ ; + /* [ pair bool bool ] */ ; SOME /* [ option (pair bool bool) ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pairing_check.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pairing_check.tz].out index bbe35404c5..9e3d820ae3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pairing_check.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pairing_check.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039995.709 units remaining { parameter (list (pair bls12_381_g1 bls12_381_g2)) ; storage (option bool) ; code { CAR - /* [ @parameter list (pair bls12_381_g1 bls12_381_g2) ] */ ; + /* [ list (pair bls12_381_g1 bls12_381_g2) ] */ ; PAIRING_CHECK /* [ bool ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec.tz].out index 694b580189..31dc4c3442 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec.tz].out @@ -12,9 +12,9 @@ Gas remaining: 1039992.874 units remaining SWAP /* [ pair (nat @parameter) (nat @storage) : lambda (pair nat nat) nat ] */ ; UNPAIR - /* [ @parameter nat : @storage nat : lambda (pair nat nat) nat ] */ ; + /* [ nat : nat : lambda (pair nat nat) nat ] */ ; DIP { APPLY /* [ lambda nat nat ] */ } - /* [ @parameter nat : lambda nat nat ] */ ; + /* [ nat : lambda nat nat ] */ ; EXEC /* [ nat ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec_2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec_2.tz].out index fe43c13c58..d5bee84966 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec_2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec_2.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039986.241 units remaining { parameter int ; storage (list int) ; code { UNPAIR @p @s - /* [ @p int : @s list int ] */ ; + /* [ int : list int ] */ ; LAMBDA (pair int (pair int int)) int @@ -17,19 +17,19 @@ Gas remaining: 1039986.241 units remaining /* [ int : int ] */ ; MUL /* [ int ] */ } - /* [ lambda (pair int int int) int : @p int : @s list int ] */ ; + /* [ lambda (pair int int int) int : int : list int ] */ ; SWAP - /* [ @p int : lambda (pair int int int) int : @s list int ] */ ; + /* [ int : lambda (pair int int int) int : list int ] */ ; APPLY - /* [ lambda (pair int int) int : @s list int ] */ ; + /* [ lambda (pair int int) int : list int ] */ ; PUSH int 3 - /* [ int : lambda (pair int int) int : @s list int ] */ ; + /* [ int : lambda (pair int int) int : list int ] */ ; APPLY - /* [ lambda int int : @s list int ] */ ; + /* [ lambda int int : list int ] */ ; SWAP - /* [ @s list int : lambda int int ] */ ; + /* [ list int : lambda int int ] */ ; MAP { DIP { DUP /* [ lambda int int : lambda int int ] */ } - /* [ @s.elt int : lambda int int : lambda int int ] */ ; + /* [ int : lambda int int : lambda int int ] */ ; EXEC /* [ int : lambda int int ] */ } /* [ list int : lambda int int ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--proxy.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--proxy.tz].out index 0fef718ad0..13484ffe93 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--proxy.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--proxy.tz].out @@ -5,16 +5,16 @@ Gas remaining: 1039994.321 units remaining { parameter (contract unit) ; storage unit ; code { UNPAIR - /* [ @parameter contract unit : @storage unit ] */ ; + /* [ contract unit : unit ] */ ; AMOUNT - /* [ @amount mutez : @parameter contract unit : @storage unit ] */ ; + /* [ mutez : contract unit : unit ] */ ; UNIT - /* [ unit : @amount mutez : @parameter contract unit : @storage unit ] */ ; + /* [ unit : mutez : contract unit : unit ] */ ; TRANSFER_TOKENS - /* [ operation : @storage unit ] */ ; - DIP { NIL operation /* [ list operation : @storage unit ] */ } - /* [ operation : list operation : @storage unit ] */ ; + /* [ operation : unit ] */ ; + DIP { NIL operation /* [ list operation : unit ] */ } + /* [ operation : list operation : unit ] */ ; CONS - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--reverse.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--reverse.tz].out index e1b6e0e42d..b981ed5fd1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--reverse.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--reverse.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039994.173 units remaining { parameter (list string) ; storage (list string) ; code { CAR - /* [ @parameter list string ] */ ; + /* [ list string ] */ ; NIL string - /* [ list string : @parameter list string ] */ ; + /* [ list string : list string ] */ ; SWAP - /* [ @parameter list string : list string ] */ ; + /* [ list string : list string ] */ ; ITER { CONS /* [ list string ] */ } /* [ list string ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--reverse_loop.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--reverse_loop.tz].out index a933dde91d..90deb8d0ee 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--reverse_loop.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--reverse_loop.tz].out @@ -5,25 +5,25 @@ Gas remaining: 1039987.683 units remaining { parameter (list string) ; storage (list string) ; code { CAR - /* [ @parameter list string ] */ ; + /* [ list string ] */ ; NIL string - /* [ list string : @parameter list string ] */ ; + /* [ list string : list string ] */ ; SWAP - /* [ @parameter list string : list string ] */ ; + /* [ list string : list string ] */ ; PUSH bool True - /* [ bool : @parameter list string : list string ] */ ; + /* [ bool : list string : list string ] */ ; LOOP { IF_CONS { SWAP - /* [ @parameter.tl list string : @parameter.hd string : list string ] */ ; + /* [ list string : string : list string ] */ ; DIP { CONS /* [ list string ] */ } - /* [ @parameter.tl list string : list string ] */ ; + /* [ list string : list string ] */ ; PUSH bool True - /* [ bool : @parameter.tl list string : list string ] */ } + /* [ bool : list string : list string ] */ } { NIL string /* [ list string : list string ] */ ; PUSH bool False /* [ bool : list string : list string ] */ } } - /* [ @parameter list string : list string ] */ ; + /* [ list string : list string ] */ ; DROP /* [ list string ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sapling_empty_state.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sapling_empty_state.tz].out index 1e6704e390..4c086d8ba2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sapling_empty_state.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sapling_empty_state.tz].out @@ -7,8 +7,8 @@ Gas remaining: 1039996.757 units remaining code { DROP /* [] */ ; SAPLING_EMPTY_STATE 8 - /* [ @sapling sapling_state 8 ] */ ; + /* [ sapling_state 8 ] */ ; NIL operation - /* [ list operation : @sapling sapling_state 8 ] */ ; + /* [ list operation : sapling_state 8 ] */ ; PAIR - /* [ pair (list operation) (sapling_state @sapling 8) ] */ } } + /* [ pair (list operation) (sapling_state 8) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self.tz].out index 20c61753d7..c8fa2465d3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self.tz].out @@ -7,10 +7,10 @@ Gas remaining: 1039996.340 units remaining code { DROP /* [] */ ; SELF - /* [ @self contract unit ] */ ; + /* [ contract unit ] */ ; ADDRESS - /* [ @self.address address ] */ ; + /* [ address ] */ ; NIL operation - /* [ list operation : @self.address address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @self.address) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address.tz].out index 85a78babbf..49f29fea1d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address.tz].out @@ -9,16 +9,16 @@ Gas remaining: 1039988.984 units remaining LAMBDA unit address - { DROP /* [] */ ; SELF_ADDRESS /* [ @self address ] */ } + { DROP /* [] */ ; SELF_ADDRESS /* [ address ] */ } /* [ lambda unit address ] */ ; UNIT /* [ unit : lambda unit address ] */ ; EXEC /* [ address ] */ ; SELF - /* [ @self contract unit : address ] */ ; + /* [ contract unit : address ] */ ; ADDRESS - /* [ @self.address address : address ] */ ; + /* [ address : address ] */ ; ASSERT_CMPEQ ; UNIT /* [ unit ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_fib_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_fib_view.tz].out index 39965ce344..cd5019522f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_fib_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_fib_view.tz].out @@ -5,34 +5,34 @@ Gas remaining: 1039985.607 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 3 - /* [ nat : @parameter address : @parameter address ] */ ; + /* [ nat : address : address ] */ ; VIEW "fib" nat - /* [ @parameter.contract option nat : @parameter address ] */ ; + /* [ option nat : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SELF_ADDRESS - /* [ @self address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @self address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @self address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @self address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @self address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @self) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_nonexistent_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_nonexistent_view.tz].out index edf400d781..7460189802 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_nonexistent_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_nonexistent_view.tz].out @@ -5,32 +5,32 @@ Gas remaining: 1039986.090 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; + /* [ nat : address : address ] */ ; VIEW "id" string - /* [ @parameter.contract option string : @parameter address ] */ ; + /* [ option string : address ] */ ; ASSERT_NONE ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SELF_ADDRESS - /* [ @self address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @self address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @self address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @self address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @self address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @self) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_view.tz].out index 0397ca3113..617936b482 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_address_after_view.tz].out @@ -5,35 +5,34 @@ Gas remaining: 1039985.432 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; - VIEW "id" - (pair nat nat) - /* [ @parameter.contract option (pair nat nat) : @parameter address ] */ ; + /* [ nat : address : address ] */ ; + VIEW "id" (pair nat nat) + /* [ option (pair nat nat) : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SELF_ADDRESS - /* [ @self address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @self address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @self address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @self address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @self address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @self) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_fib_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_fib_view.tz].out index b56362023b..def66072a7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_fib_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_fib_view.tz].out @@ -5,36 +5,36 @@ Gas remaining: 1039985.135 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 3 - /* [ nat : @parameter address : @parameter address ] */ ; + /* [ nat : address : address ] */ ; VIEW "fib" nat - /* [ @parameter.contract option nat : @parameter address ] */ ; + /* [ option nat : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SELF - /* [ @self contract address : operation ] */ ; + /* [ contract address : operation ] */ ; ADDRESS - /* [ @self.address address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @self.address address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @self.address address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @self.address address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @self.address address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @self.address) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_nonexistent_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_nonexistent_view.tz].out index f0e96b982f..9496c6c3b4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_nonexistent_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_nonexistent_view.tz].out @@ -5,35 +5,34 @@ Gas remaining: 1039985.527 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; - VIEW "nonexistent" - string - /* [ @parameter.contract option string : @parameter address ] */ ; + /* [ nat : address : address ] */ ; + VIEW "nonexistent" string + /* [ option string : address ] */ ; ASSERT_NONE ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SELF - /* [ @self contract address : operation ] */ ; + /* [ contract address : operation ] */ ; ADDRESS - /* [ @self.address address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @self.address address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @self.address address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @self.address address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @self.address address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @self.address) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_view.tz].out index 1eabb808db..344a0011b6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_after_view.tz].out @@ -5,37 +5,36 @@ Gas remaining: 1039984.961 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; - VIEW "id" - (pair nat nat) - /* [ @parameter.contract option (pair nat nat) : @parameter address ] */ ; + /* [ nat : address : address ] */ ; + VIEW "id" (pair nat nat) + /* [ option (pair nat nat) : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SELF - /* [ @self contract address : operation ] */ ; + /* [ contract address : operation ] */ ; ADDRESS - /* [ @self.address address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @self.address address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @self.address address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @self.address address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @self.address address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @self.address) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_with_default_entrypoint.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_with_default_entrypoint.tz].out index a930dfbb00..5b31d4f735 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_with_default_entrypoint.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_with_default_entrypoint.tz].out @@ -7,21 +7,21 @@ Gas remaining: 1039988.615 units remaining code { DROP /* [] */ ; SELF - /* [ @self contract unit ] */ ; + /* [ contract unit ] */ ; DROP /* [] */ ; SELF %A - /* [ @self contract nat ] */ ; + /* [ contract nat ] */ ; DROP /* [] */ ; SELF %default - /* [ @self contract unit ] */ ; + /* [ contract unit ] */ ; PACK - /* [ @self.packed bytes ] */ ; + /* [ bytes ] */ ; SELF - /* [ @self contract unit : @self.packed bytes ] */ ; + /* [ contract unit : bytes ] */ ; PACK - /* [ @self.packed bytes : @self.packed bytes ] */ ; + /* [ bytes : bytes ] */ ; ASSERT_CMPEQ ; UNIT /* [ unit ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_with_entrypoint.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_with_entrypoint.tz].out index b2c618af82..41cd05c68a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_with_entrypoint.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--self_with_entrypoint.tz].out @@ -7,59 +7,59 @@ Gas remaining: 1039967.216 units remaining code { DROP /* [] */ ; SELF %A - /* [ @self contract nat ] */ ; + /* [ contract nat ] */ ; PACK @Apacked - /* [ @Apacked bytes ] */ ; + /* [ bytes ] */ ; SELF %default - /* [ @self contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) - : @Apacked bytes ] */ ; + /* [ contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) + : bytes ] */ ; PACK @defpacked - /* [ @defpacked bytes : @Apacked bytes ] */ ; + /* [ bytes : bytes ] */ ; DUP - /* [ @defpacked bytes : @defpacked bytes : @Apacked bytes ] */ ; - DIP { SWAP /* [ @Apacked bytes : @defpacked bytes ] */ } - /* [ @defpacked bytes : @Apacked bytes : @defpacked bytes ] */ ; + /* [ bytes : bytes : bytes ] */ ; + DIP { SWAP /* [ bytes : bytes ] */ } + /* [ bytes : bytes : bytes ] */ ; ASSERT_CMPNEQ ; SELF - /* [ @self contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) - : @defpacked bytes ] */ ; + /* [ contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) + : bytes ] */ ; PACK @selfpacked - /* [ @selfpacked bytes : @defpacked bytes ] */ ; + /* [ bytes : bytes ] */ ; ASSERT_CMPEQ ; SELF %A - /* [ @self contract nat ] */ ; + /* [ contract nat ] */ ; CAST (contract nat) - /* [ @self contract nat ] */ ; + /* [ contract nat ] */ ; DROP /* [] */ ; SELF %B - /* [ @self contract bool ] */ ; + /* [ contract bool ] */ ; CAST (contract bool) - /* [ @self contract bool ] */ ; + /* [ contract bool ] */ ; DROP /* [] */ ; SELF %maybe_C - /* [ @self contract (or (unit %Z) (string %C)) ] */ ; + /* [ contract (or (unit %Z) (string %C)) ] */ ; CAST (contract (or unit string)) - /* [ @self contract (or unit string) ] */ ; + /* [ contract (or unit string) ] */ ; DROP /* [] */ ; SELF %Z - /* [ @self contract unit ] */ ; + /* [ contract unit ] */ ; CAST (contract unit) - /* [ @self contract unit ] */ ; + /* [ contract unit ] */ ; DROP /* [] */ ; SELF - /* [ @self contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) ] */ ; + /* [ contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) ] */ ; CAST (contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C)))) - /* [ @self contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) ] */ ; + /* [ contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) ] */ ; DROP /* [] */ ; SELF %default - /* [ @self contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) ] */ ; + /* [ contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) ] */ ; CAST (contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C)))) - /* [ @self contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) ] */ ; + /* [ contract (or (or (nat %A) (bool %B)) (or %maybe_C (unit %Z) (string %C))) ] */ ; DROP /* [] */ ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender.tz].out index 13306e1832..f266979f0d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender.tz].out @@ -7,8 +7,8 @@ Gas remaining: 1039996.803 units remaining code { DROP /* [] */ ; SENDER - /* [ @sender address ] */ ; + /* [ address ] */ ; NIL operation - /* [ list operation : @sender address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @sender) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_fib_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_fib_view.tz].out index c43e1af741..ae57014a5d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_fib_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_fib_view.tz].out @@ -5,34 +5,34 @@ Gas remaining: 1039985.607 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 3 - /* [ nat : @parameter address : @parameter address ] */ ; + /* [ nat : address : address ] */ ; VIEW "fib" nat - /* [ @parameter.contract option nat : @parameter address ] */ ; + /* [ option nat : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SENDER - /* [ @sender address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @sender address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @sender address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @sender address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @sender address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @sender) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_nonexistent_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_nonexistent_view.tz].out index 2a5f179482..f6f3014bed 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_nonexistent_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_nonexistent_view.tz].out @@ -5,32 +5,32 @@ Gas remaining: 1039986.090 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; + /* [ nat : address : address ] */ ; VIEW "id" string - /* [ @parameter.contract option string : @parameter address ] */ ; + /* [ option string : address ] */ ; ASSERT_NONE ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SENDER - /* [ @sender address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @sender address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @sender address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @sender address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @sender address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @sender) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_view.tz].out index dd8ce3c3c4..85d670b179 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sender_after_view.tz].out @@ -5,35 +5,34 @@ Gas remaining: 1039985.432 units remaining { parameter address ; storage address ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; DUP - /* [ @parameter address : @parameter address ] */ ; + /* [ address : address ] */ ; PUSH nat 0 - /* [ nat : @parameter address : @parameter address ] */ ; - VIEW "id" - (pair nat nat) - /* [ @parameter.contract option (pair nat nat) : @parameter address ] */ ; + /* [ nat : address : address ] */ ; + VIEW "id" (pair nat nat) + /* [ option (pair nat nat) : address ] */ ; ASSERT_SOME ; DROP - /* [ @parameter address ] */ ; + /* [ address ] */ ; CONTRACT nat - /* [ @parameter.contract option (contract nat) ] */ ; + /* [ option (contract nat) ] */ ; ASSERT_SOME ; PUSH mutez 1500 - /* [ mutez : @parameter.contract.some contract nat ] */ ; + /* [ mutez : contract nat ] */ ; PUSH nat 0 - /* [ nat : mutez : @parameter.contract.some contract nat ] */ ; + /* [ nat : mutez : contract nat ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; SENDER - /* [ @sender address : operation ] */ ; + /* [ address : operation ] */ ; SWAP - /* [ operation : @sender address ] */ ; + /* [ operation : address ] */ ; NIL operation - /* [ list operation : operation : @sender address ] */ ; + /* [ list operation : operation : address ] */ ; SWAP - /* [ operation : list operation : @sender address ] */ ; + /* [ operation : list operation : address ] */ ; CONS - /* [ list operation : @sender address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @sender) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_delegate.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_delegate.tz].out index 5cd6196905..421679abb6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_delegate.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_delegate.tz].out @@ -5,12 +5,12 @@ Gas remaining: 1039995.476 units remaining { parameter (option key_hash) ; storage unit ; code { UNPAIR - /* [ @parameter option key_hash : @storage unit ] */ ; + /* [ option key_hash : unit ] */ ; SET_DELEGATE - /* [ operation : @storage unit ] */ ; - DIP { NIL operation /* [ list operation : @storage unit ] */ } - /* [ operation : list operation : @storage unit ] */ ; + /* [ operation : unit ] */ ; + DIP { NIL operation /* [ list operation : unit ] */ } + /* [ operation : list operation : unit ] */ ; CONS - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_id.tz].out index c23de89b0c..06ee5f76c9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_id.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039996.880 units remaining { parameter (set string) ; storage (set string) ; code { CAR - /* [ @parameter set string ] */ ; + /* [ set string ] */ ; NIL operation - /* [ list operation : @parameter set string ] */ ; + /* [ list operation : set string ] */ ; PAIR - /* [ pair (list operation) (set @parameter string) ] */ } } + /* [ pair (list operation) (set string) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_iter.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_iter.tz].out index 557343e232..7be78c7ad6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_iter.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_iter.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039994.793 units remaining { parameter (set int) ; storage int ; code { CAR - /* [ @parameter set int ] */ ; + /* [ set int ] */ ; PUSH int 0 - /* [ int : @parameter set int ] */ ; + /* [ int : set int ] */ ; SWAP - /* [ @parameter set int : int ] */ ; + /* [ set int : int ] */ ; ITER { ADD /* [ int ] */ } /* [ int ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_member.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_member.tz].out index 9915de41f3..f218d06ece 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_member.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_member.tz].out @@ -12,11 +12,11 @@ Gas remaining: 1039988.400 units remaining : pair (string @parameter) (pair @storage (set string) (option bool)) : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; CAR - /* [ @parameter string + /* [ string : pair (string @parameter) (pair @storage (set string) (option bool)) : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; DIP { CDAR } - /* [ @parameter string : set string + /* [ string : set string : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; MEM /* [ bool diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_size.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_size.tz].out index 56486e319e..da56a47991 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_size.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_size.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.720 units remaining { parameter (set int) ; storage nat ; code { CAR - /* [ @parameter set int ] */ ; + /* [ set int ] */ ; SIZE /* [ nat ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sha3.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sha3.tz].out index 3712c9fcfa..6cc41f18a4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sha3.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sha3.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.037 units remaining { storage (option bytes) ; parameter bytes ; code { CAR - /* [ @parameter bytes ] */ ; + /* [ bytes ] */ ; SHA3 /* [ bytes ] */ ; SOME diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--shifts.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--shifts.tz].out index 017c8d622e..07199a261f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--shifts.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--shifts.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039993.299 units remaining { parameter (or (pair nat nat) (pair nat nat)) ; storage (option nat) ; code { CAR - /* [ @parameter or (pair nat nat) (pair nat nat) ] */ ; + /* [ or (pair nat nat) (pair nat nat) ] */ ; IF_LEFT { UNPAIR /* [ nat : nat ] */ ; LSL /* [ nat ] */ } { UNPAIR /* [ nat : nat ] */ ; LSR /* [ nat ] */ } ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slice.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slice.tz].out index 91998251ba..9852bd98dc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slice.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slice.tz].out @@ -5,16 +5,16 @@ Gas remaining: 1039992.627 units remaining { parameter (pair nat nat) ; storage (option string) ; code { UNPAIR - /* [ @parameter pair nat nat : @storage option string ] */ ; + /* [ pair nat nat : option string ] */ ; SWAP - /* [ @storage option string : @parameter pair nat nat ] */ ; + /* [ option string : pair nat nat ] */ ; IF_SOME { SWAP - /* [ @parameter pair nat nat : @storage.some string ] */ ; + /* [ pair nat nat : string ] */ ; UNPAIR - /* [ nat : nat : @storage.some string ] */ ; + /* [ nat : nat : string ] */ ; SLICE - /* [ @storage.some.slice option string ] */ } + /* [ option string ] */ } { DROP /* [] */ ; NONE string /* [ option string ] */ } ; NIL operation /* [ list operation : option string ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slice_bytes.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slice_bytes.tz].out index 3a99320e8a..acfe24dfab 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slice_bytes.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slice_bytes.tz].out @@ -5,16 +5,16 @@ Gas remaining: 1039992.627 units remaining { parameter (pair nat nat) ; storage (option bytes) ; code { UNPAIR - /* [ @parameter pair nat nat : @storage option bytes ] */ ; + /* [ pair nat nat : option bytes ] */ ; SWAP - /* [ @storage option bytes : @parameter pair nat nat ] */ ; + /* [ option bytes : pair nat nat ] */ ; IF_SOME { SWAP - /* [ @parameter pair nat nat : @storage.some bytes ] */ ; + /* [ pair nat nat : bytes ] */ ; UNPAIR - /* [ nat : nat : @storage.some bytes ] */ ; + /* [ nat : nat : bytes ] */ ; SLICE - /* [ @storage.some.slice option bytes ] */ } + /* [ option bytes ] */ } { DROP /* [] */ ; NONE bytes /* [ option bytes ] */ } ; NIL operation /* [ list operation : option bytes ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slices.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slices.tz].out index f3a7054373..e09315842b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slices.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slices.tz].out @@ -23,19 +23,16 @@ Gas remaining: 1039935.257 units remaining /* [ option nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; IF_SOME - { /* [ @some nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ } + { /* [ nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ } { FAIL } ; PUSH nat 128 - /* [ nat : @some nat : bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; SLICE @payload - /* [ @payload option bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; ASSERT_SOME ; DUP - /* [ @payload.some bytes : @payload.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; DIP { DIP { DUP /* [ pair (pair @parameter bytes signature) (key @storage) : pair (pair @parameter bytes signature) (key @storage) ] */ ; @@ -47,20 +44,15 @@ Gas remaining: 1039935.257 units remaining 0 /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; SLICE - /* [ @slice option bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; ASSERT_SOME } - /* [ @payload.some bytes : @slice.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; SHA256 - /* [ bytes : @slice.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; ASSERT_CMPEQ } - /* [ @payload.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; DUP - /* [ @payload.some bytes : @payload.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; DIP { DIP { DUP /* [ pair (pair @parameter bytes signature) (key @storage) : pair (pair @parameter bytes signature) (key @storage) ] */ ; @@ -72,20 +64,15 @@ Gas remaining: 1039935.257 units remaining 32 /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; SLICE - /* [ @slice option bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; ASSERT_SOME } - /* [ @payload.some bytes : @slice.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; BLAKE2B - /* [ bytes : @slice.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; ASSERT_CMPEQ } - /* [ @payload.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; DUP - /* [ @payload.some bytes : @payload.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; DIP { DIP { DUP /* [ pair (pair @parameter bytes signature) (key @storage) : pair (pair @parameter bytes signature) (key @storage) ] */ ; @@ -97,60 +84,54 @@ Gas remaining: 1039935.257 units remaining 64 /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; SLICE - /* [ @slice option bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; ASSERT_SOME } - /* [ @payload.some bytes : @slice.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; SHA512 - /* [ bytes : @slice.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; ASSERT_CMPEQ } - /* [ @payload.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; DIP { DUP /* [ pair (pair @parameter bytes signature) (key @storage) : pair (pair @parameter bytes signature) (key @storage) ] */ ; CDR - /* [ @storage key : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ key : pair (pair @parameter bytes signature) (key @storage) ] */ ; DIP { DUP /* [ pair (pair @parameter bytes signature) (key @storage) : pair (pair @parameter bytes signature) (key @storage) ] */ ; CADR } - /* [ @storage key : signature - : pair (pair @parameter bytes signature) (key @storage) ] */ } - /* [ @payload.some bytes : @storage key : signature + /* [ key : signature : pair (pair @parameter bytes signature) (key @storage) ] */ } + /* [ bytes : key : signature : pair (pair @parameter bytes signature) (key @storage) ] */ ; SWAP - /* [ @storage key : @payload.some bytes : signature + /* [ key : bytes : signature : pair (pair @parameter bytes signature) (key @storage) ] */ ; DIP { SWAP - /* [ signature : @payload.some bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ } - /* [ @storage key : signature : @payload.some bytes + /* [ signature : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ } + /* [ key : signature : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; CHECK_SIGNATURE /* [ bool : pair (pair @parameter bytes signature) (key @storage) ] */ ; ASSERT ; CDR - /* [ @storage key ] */ ; + /* [ key ] */ ; DUP - /* [ @storage key : @storage key ] */ ; + /* [ key : key ] */ ; HASH_KEY - /* [ key_hash : @storage key ] */ ; + /* [ key_hash : key ] */ ; IMPLICIT_ACCOUNT - /* [ contract unit : @storage key ] */ ; + /* [ contract unit : key ] */ ; BALANCE - /* [ @balance mutez : contract unit : @storage key ] */ ; + /* [ mutez : contract unit : key ] */ ; UNIT - /* [ unit : @balance mutez : contract unit : @storage key ] */ ; + /* [ unit : mutez : contract unit : key ] */ ; TRANSFER_TOKENS - /* [ operation : @storage key ] */ ; + /* [ operation : key ] */ ; NIL operation - /* [ list operation : operation : @storage key ] */ ; + /* [ list operation : operation : key ] */ ; SWAP - /* [ operation : list operation : @storage key ] */ ; + /* [ operation : list operation : key ] */ ; CONS - /* [ list operation : @storage key ] */ ; + /* [ list operation : key ] */ ; PAIR - /* [ pair (list operation) (key @storage) ] */ } } + /* [ pair (list operation) key ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--source.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--source.tz].out index 2dda854b96..5988f87997 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--source.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--source.tz].out @@ -7,8 +7,8 @@ Gas remaining: 1039996.803 units remaining code { DROP /* [] */ ; SOURCE - /* [ @source address ] */ ; + /* [ address ] */ ; NIL operation - /* [ list operation : @source address ] */ ; + /* [ list operation : address ] */ ; PAIR - /* [ pair (list operation) (address @source) ] */ } } + /* [ pair (list operation) address ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--split_bytes.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--split_bytes.tz].out index 996fc728d9..046f01cc63 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--split_bytes.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--split_bytes.tz].out @@ -5,59 +5,58 @@ Gas remaining: 1039970.057 units remaining { parameter bytes ; storage (list bytes) ; code { UNPAIR - /* [ @parameter bytes : @storage list bytes ] */ ; + /* [ bytes : list bytes ] */ ; DIP { NIL bytes - /* [ list bytes : @storage list bytes ] */ ; + /* [ list bytes : list bytes ] */ ; SWAP - /* [ @storage list bytes : list bytes ] */ ; + /* [ list bytes : list bytes ] */ ; ITER { CONS /* [ list bytes ] */ } /* [ list bytes ] */ } - /* [ @parameter bytes : list bytes ] */ ; + /* [ bytes : list bytes ] */ ; DUP - /* [ @parameter bytes : @parameter bytes : list bytes ] */ ; + /* [ bytes : bytes : list bytes ] */ ; SIZE - /* [ nat : @parameter bytes : list bytes ] */ ; + /* [ nat : bytes : list bytes ] */ ; PUSH nat 0 - /* [ nat : nat : @parameter bytes : list bytes ] */ ; + /* [ nat : nat : bytes : list bytes ] */ ; CMPNEQ ; - DIP { PUSH @index nat 0 /* [ @index nat : @parameter bytes : list bytes ] */ } - /* [ bool : @index nat : @parameter bytes : list bytes ] */ ; + DIP { PUSH @index nat 0 /* [ nat : bytes : list bytes ] */ } + /* [ bool : nat : bytes : list bytes ] */ ; LOOP { PAIR - /* [ pair (nat @index) (bytes @parameter) : list bytes ] */ ; + /* [ pair nat bytes : list bytes ] */ ; DUP - /* [ pair (nat @index) (bytes @parameter) : pair (nat @index) (bytes @parameter) - : list bytes ] */ ; + /* [ pair nat bytes : pair nat bytes : list bytes ] */ ; DIP { UNPAIR - /* [ @index nat : @parameter bytes : list bytes ] */ ; - DIP { PUSH nat 1 /* [ nat : @parameter bytes : list bytes ] */ } - /* [ @index nat : nat : @parameter bytes : list bytes ] */ ; + /* [ nat : bytes : list bytes ] */ ; + DIP { PUSH nat 1 /* [ nat : bytes : list bytes ] */ } + /* [ nat : nat : bytes : list bytes ] */ ; SLICE - /* [ @parameter.slice option bytes : list bytes ] */ ; + /* [ option bytes : list bytes ] */ ; ASSERT_SOME ; CONS @storage - /* [ @storage list bytes ] */ } - /* [ pair (nat @index) (bytes @parameter) : @storage list bytes ] */ ; + /* [ list bytes ] */ } + /* [ pair nat bytes : list bytes ] */ ; UNPAIR - /* [ @index nat : @parameter bytes : @storage list bytes ] */ ; + /* [ nat : bytes : list bytes ] */ ; PUSH nat 1 - /* [ nat : @index nat : @parameter bytes : @storage list bytes ] */ ; + /* [ nat : nat : bytes : list bytes ] */ ; ADD @index - /* [ @index nat : @parameter bytes : @storage list bytes ] */ ; + /* [ nat : bytes : list bytes ] */ ; DUP - /* [ @index nat : @index nat : @parameter bytes : @storage list bytes ] */ ; - DIP { DIP { DUP /* [ @parameter bytes : @parameter bytes : @storage list bytes ] */ } - /* [ @index nat : @parameter bytes : @parameter bytes : @storage list bytes ] */ ; + /* [ nat : nat : bytes : list bytes ] */ ; + DIP { DIP { DUP /* [ bytes : bytes : list bytes ] */ } + /* [ nat : bytes : bytes : list bytes ] */ ; SWAP - /* [ @parameter bytes : @index nat : @parameter bytes : @storage list bytes ] */ ; + /* [ bytes : nat : bytes : list bytes ] */ ; SIZE - /* [ nat : @index nat : @parameter bytes : @storage list bytes ] */ ; + /* [ nat : nat : bytes : list bytes ] */ ; CMPNEQ } - /* [ @index nat : bool : @parameter bytes : @storage list bytes ] */ ; + /* [ nat : bool : bytes : list bytes ] */ ; SWAP - /* [ bool : @index nat : @parameter bytes : @storage list bytes ] */ } - /* [ @index nat : @parameter bytes : list bytes ] */ ; + /* [ bool : nat : bytes : list bytes ] */ } + /* [ nat : bytes : list bytes ] */ ; DROP - /* [ @parameter bytes : list bytes ] */ ; + /* [ bytes : list bytes ] */ ; DROP /* [ list bytes ] */ ; NIL bytes diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--split_string.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--split_string.tz].out index 299964b064..fe0abf63c8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--split_string.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--split_string.tz].out @@ -5,59 +5,58 @@ Gas remaining: 1039970.057 units remaining { parameter string ; storage (list string) ; code { UNPAIR - /* [ @parameter string : @storage list string ] */ ; + /* [ string : list string ] */ ; DIP { NIL string - /* [ list string : @storage list string ] */ ; + /* [ list string : list string ] */ ; SWAP - /* [ @storage list string : list string ] */ ; + /* [ list string : list string ] */ ; ITER { CONS /* [ list string ] */ } /* [ list string ] */ } - /* [ @parameter string : list string ] */ ; + /* [ string : list string ] */ ; DUP - /* [ @parameter string : @parameter string : list string ] */ ; + /* [ string : string : list string ] */ ; SIZE - /* [ nat : @parameter string : list string ] */ ; + /* [ nat : string : list string ] */ ; PUSH nat 0 - /* [ nat : nat : @parameter string : list string ] */ ; + /* [ nat : nat : string : list string ] */ ; CMPNEQ ; - DIP { PUSH @index nat 0 /* [ @index nat : @parameter string : list string ] */ } - /* [ bool : @index nat : @parameter string : list string ] */ ; + DIP { PUSH @index nat 0 /* [ nat : string : list string ] */ } + /* [ bool : nat : string : list string ] */ ; LOOP { PAIR - /* [ pair (nat @index) (string @parameter) : list string ] */ ; + /* [ pair nat string : list string ] */ ; DUP - /* [ pair (nat @index) (string @parameter) - : pair (nat @index) (string @parameter) : list string ] */ ; + /* [ pair nat string : pair nat string : list string ] */ ; DIP { UNPAIR - /* [ @index nat : @parameter string : list string ] */ ; - DIP { PUSH nat 1 /* [ nat : @parameter string : list string ] */ } - /* [ @index nat : nat : @parameter string : list string ] */ ; + /* [ nat : string : list string ] */ ; + DIP { PUSH nat 1 /* [ nat : string : list string ] */ } + /* [ nat : nat : string : list string ] */ ; SLICE - /* [ @parameter.slice option string : list string ] */ ; + /* [ option string : list string ] */ ; ASSERT_SOME ; CONS @storage - /* [ @storage list string ] */ } - /* [ pair (nat @index) (string @parameter) : @storage list string ] */ ; + /* [ list string ] */ } + /* [ pair nat string : list string ] */ ; UNPAIR - /* [ @index nat : @parameter string : @storage list string ] */ ; + /* [ nat : string : list string ] */ ; PUSH nat 1 - /* [ nat : @index nat : @parameter string : @storage list string ] */ ; + /* [ nat : nat : string : list string ] */ ; ADD @index - /* [ @index nat : @parameter string : @storage list string ] */ ; + /* [ nat : string : list string ] */ ; DUP - /* [ @index nat : @index nat : @parameter string : @storage list string ] */ ; - DIP { DIP { DUP /* [ @parameter string : @parameter string : @storage list string ] */ } - /* [ @index nat : @parameter string : @parameter string : @storage list string ] */ ; + /* [ nat : nat : string : list string ] */ ; + DIP { DIP { DUP /* [ string : string : list string ] */ } + /* [ nat : string : string : list string ] */ ; SWAP - /* [ @parameter string : @index nat : @parameter string : @storage list string ] */ ; + /* [ string : nat : string : list string ] */ ; SIZE - /* [ nat : @index nat : @parameter string : @storage list string ] */ ; + /* [ nat : nat : string : list string ] */ ; CMPNEQ } - /* [ @index nat : bool : @parameter string : @storage list string ] */ ; + /* [ nat : bool : string : list string ] */ ; SWAP - /* [ bool : @index nat : @parameter string : @storage list string ] */ } - /* [ @index nat : @parameter string : list string ] */ ; + /* [ bool : nat : string : list string ] */ } + /* [ nat : string : list string ] */ ; DROP - /* [ @parameter string : list string ] */ ; + /* [ string : list string ] */ ; DROP /* [ list string ] */ ; NIL string diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_fr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_fr.tz].out index e35be568dc..0ce3797042 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_fr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_fr.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.500 units remaining { parameter bls12_381_fr ; storage (option bls12_381_fr) ; code { CAR - /* [ @parameter bls12_381_fr ] */ ; + /* [ bls12_381_fr ] */ ; SOME /* [ option bls12_381_fr ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_g1.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_g1.tz].out index 6099a85699..221602a62b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_g1.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_g1.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.500 units remaining { parameter bls12_381_g1 ; storage (option bls12_381_g1) ; code { CAR - /* [ @parameter bls12_381_g1 ] */ ; + /* [ bls12_381_g1 ] */ ; SOME /* [ option bls12_381_g1 ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_g2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_g2.tz].out index b5e37ea723..5296f8c2d2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_g2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_bls12_381_g2.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.500 units remaining { parameter bls12_381_g2 ; storage (option bls12_381_g2) ; code { CAR - /* [ @parameter bls12_381_g2 ] */ ; + /* [ bls12_381_g2 ] */ ; SOME /* [ option bls12_381_g2 ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_input.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_input.tz].out index 7fdb4c654e..63ada8111c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_input.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_input.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039997.267 units remaining { parameter string ; storage string ; code { CAR - /* [ @parameter string ] */ ; + /* [ string ] */ ; NIL operation - /* [ list operation : @parameter string ] */ ; + /* [ list operation : string ] */ ; PAIR - /* [ pair (list operation) (string @parameter) ] */ } } + /* [ pair (list operation) string ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_now.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_now.tz].out index 30ac264044..84a7ccf389 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_now.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--store_now.tz].out @@ -7,8 +7,8 @@ Gas remaining: 1039996.803 units remaining code { DROP /* [] */ ; NOW - /* [ @now timestamp ] */ ; + /* [ timestamp ] */ ; NIL operation - /* [ list operation : @now timestamp ] */ ; + /* [ list operation : timestamp ] */ ; PAIR - /* [ pair (list operation) (timestamp @now) ] */ } } + /* [ pair (list operation) timestamp ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--str_id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--str_id.tz].out index 5075f31f21..ebe457e16a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--str_id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--str_id.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.500 units remaining { parameter string ; storage (option string) ; code { CAR - /* [ @parameter string ] */ ; + /* [ string ] */ ; SOME /* [ option string ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sub_timestamp_delta.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sub_timestamp_delta.tz].out index 87b04ad96c..1e2fc89bc9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sub_timestamp_delta.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--sub_timestamp_delta.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039994.373 units remaining { parameter (pair timestamp int) ; storage timestamp ; code { CAR - /* [ @parameter pair timestamp int ] */ ; + /* [ pair timestamp int ] */ ; DUP - /* [ @parameter pair timestamp int : @parameter pair timestamp int ] */ ; + /* [ pair timestamp int : pair timestamp int ] */ ; CAR - /* [ timestamp : @parameter pair timestamp int ] */ ; + /* [ timestamp : pair timestamp int ] */ ; DIP { CDR /* [ int ] */ } /* [ timestamp : int ] */ ; SUB diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--subset.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--subset.tz].out index c796800664..79400d7b93 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--subset.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--subset.tz].out @@ -5,12 +5,11 @@ Gas remaining: 1039984.961 units remaining { parameter (pair (set string) (set string)) ; storage bool ; code { CAR - /* [ @parameter pair (set string) (set string) ] */ ; + /* [ pair (set string) (set string) ] */ ; DUP - /* [ @parameter pair (set string) (set string) - : @parameter pair (set string) (set string) ] */ ; + /* [ pair (set string) (set string) : pair (set string) (set string) ] */ ; CDR - /* [ set string : @parameter pair (set string) (set string) ] */ ; + /* [ set string : pair (set string) (set string) ] */ ; DIP { CAR /* [ set string ] */ } /* [ set string : set string ] */ ; PUSH bool True @@ -30,7 +29,7 @@ Gas remaining: 1039984.961 units remaining DIP { CDR /* [ set string ] */ } /* [ bool : set string ] */ } /* [ set string : bool : set string ] */ } - /* [ @elt string : set string : bool : set string ] */ ; + /* [ string : set string : bool : set string ] */ ; MEM /* [ bool : bool : set string ] */ ; AND diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--tez_add_sub.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--tez_add_sub.tz].out index 9c4eb7ea12..e00f14c166 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--tez_add_sub.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--tez_add_sub.tz].out @@ -5,33 +5,32 @@ Gas remaining: 1039986.225 units remaining { parameter (pair mutez mutez) ; storage (option (pair mutez mutez)) ; code { CAR - /* [ @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez ] */ ; DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez : pair mutez mutez ] */ ; DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez - : @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez : pair mutez mutez : pair mutez mutez ] */ ; CAR - /* [ mutez : @parameter pair mutez mutez : @parameter pair mutez mutez ] */ ; - DIP { CDR /* [ mutez : @parameter pair mutez mutez ] */ } - /* [ mutez : mutez : @parameter pair mutez mutez ] */ ; + /* [ mutez : pair mutez mutez : pair mutez mutez ] */ ; + DIP { CDR /* [ mutez : pair mutez mutez ] */ } + /* [ mutez : mutez : pair mutez mutez ] */ ; ADD - /* [ mutez : @parameter pair mutez mutez ] */ ; + /* [ mutez : pair mutez mutez ] */ ; DIP { DUP - /* [ @parameter pair mutez mutez : @parameter pair mutez mutez ] */ ; + /* [ pair mutez mutez : pair mutez mutez ] */ ; CAR - /* [ mutez : @parameter pair mutez mutez ] */ ; + /* [ mutez : pair mutez mutez ] */ ; DIP { CDR /* [ mutez ] */ } /* [ mutez : mutez ] */ ; SUB_MUTEZ /* [ option mutez ] */ ; ASSERT_SOME } - /* [ mutez : @some mutez ] */ ; + /* [ mutez : mutez ] */ ; PAIR - /* [ pair mutez (mutez @some) ] */ ; + /* [ pair mutez mutez ] */ ; SOME - /* [ option (pair mutez (mutez @some)) ] */ ; + /* [ option (pair mutez mutez) ] */ ; NIL operation - /* [ list operation : option (pair mutez (mutez @some)) ] */ ; + /* [ list operation : option (pair mutez mutez) ] */ ; PAIR - /* [ pair (list operation) (option (pair mutez (mutez @some))) ] */ } } + /* [ pair (list operation) (option (pair mutez mutez)) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_bad.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_bad.tz].out index 9688ae1d5f..dfadec2cbd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_bad.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_bad.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039996.963 units remaining { parameter unit ; storage (ticket nat) ; code { CDR - /* [ @storage ticket nat ] */ ; + /* [ ticket nat ] */ ; NIL operation - /* [ list operation : @storage ticket nat ] */ ; + /* [ list operation : ticket nat ] */ ; PAIR - /* [ pair (list operation) (ticket @storage nat) ] */ } } + /* [ pair (list operation) (ticket nat) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_big_store.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_big_store.tz].out index 555a5cfec7..95a2d194da 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_big_store.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_big_store.tz].out @@ -5,20 +5,20 @@ Gas remaining: 1039992.430 units remaining { parameter nat ; storage (big_map unit (ticket nat)) ; code { UNPAIR - /* [ @parameter nat : @storage big_map unit (ticket nat) ] */ ; + /* [ nat : big_map unit (ticket nat) ] */ ; PUSH nat 1 - /* [ nat : @parameter nat : @storage big_map unit (ticket nat) ] */ ; + /* [ nat : nat : big_map unit (ticket nat) ] */ ; SWAP - /* [ @parameter nat : nat : @storage big_map unit (ticket nat) ] */ ; + /* [ nat : nat : big_map unit (ticket nat) ] */ ; TICKET - /* [ ticket nat : @storage big_map unit (ticket nat) ] */ ; + /* [ ticket nat : big_map unit (ticket nat) ] */ ; SOME - /* [ option (ticket nat) : @storage big_map unit (ticket nat) ] */ ; + /* [ option (ticket nat) : big_map unit (ticket nat) ] */ ; UNIT - /* [ unit : option (ticket nat) : @storage big_map unit (ticket nat) ] */ ; + /* [ unit : option (ticket nat) : big_map unit (ticket nat) ] */ ; UPDATE - /* [ @storage big_map unit (ticket nat) ] */ ; + /* [ big_map unit (ticket nat) ] */ ; NIL operation - /* [ list operation : @storage big_map unit (ticket nat) ] */ ; + /* [ list operation : big_map unit (ticket nat) ] */ ; PAIR - /* [ pair (list operation) (big_map @storage unit (ticket nat)) ] */ } } + /* [ pair (list operation) (big_map unit (ticket nat)) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_join.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_join.tz].out index e2c08374c7..83c9b6aaad 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_join.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_join.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039990.843 units remaining { parameter (ticket nat) ; storage (option (ticket nat)) ; code { UNPAIR - /* [ @parameter ticket nat : @storage option (ticket nat) ] */ ; + /* [ ticket nat : option (ticket nat) ] */ ; SWAP - /* [ @storage option (ticket nat) : @parameter ticket nat ] */ ; + /* [ option (ticket nat) : ticket nat ] */ ; IF_NONE - { /* [ @parameter ticket nat ] */ } + { /* [ ticket nat ] */ } { PAIR - /* [ pair (ticket @storage.some nat) (ticket @parameter nat) ] */ ; + /* [ pair (ticket nat) (ticket nat) ] */ ; JOIN_TICKETS /* [ option (ticket nat) ] */ ; ASSERT_SOME } ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_read.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_read.tz].out index 1eec23d268..9b518b2320 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_read.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_read.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039984.150 units remaining { parameter (ticket nat) ; storage address ; code { CAR - /* [ @parameter ticket nat ] */ ; + /* [ ticket nat ] */ ; READ_TICKET - /* [ pair address nat nat : @parameter ticket nat ] */ ; + /* [ pair address nat nat : ticket nat ] */ ; DIP { DROP /* [] */ } /* [ pair address nat nat ] */ ; UNPAIR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_split.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_split.tz].out index 345768898c..c5b65922c7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_split.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_split.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039978.358 units remaining { parameter (ticket nat) ; storage unit ; code { CAR - /* [ @parameter ticket nat ] */ ; + /* [ ticket nat ] */ ; PUSH (pair nat nat) (Pair 1 2) - /* [ pair nat nat : @parameter ticket nat ] */ ; + /* [ pair nat nat : ticket nat ] */ ; SWAP - /* [ @parameter ticket nat : pair nat nat ] */ ; + /* [ ticket nat : pair nat nat ] */ ; SPLIT_TICKET /* [ option (pair (ticket nat) (ticket nat)) ] */ ; ASSERT_SOME ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_store-2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_store-2.tz].out index 61e625230d..f9409f9c08 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_store-2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_store-2.tz].out @@ -5,8 +5,8 @@ Gas remaining: 1039996.494 units remaining { parameter (option (ticket nat)) ; storage (option (ticket nat)) ; code { CAR - /* [ @parameter option (ticket nat) ] */ ; + /* [ option (ticket nat) ] */ ; NIL operation - /* [ list operation : @parameter option (ticket nat) ] */ ; + /* [ list operation : option (ticket nat) ] */ ; PAIR - /* [ pair (list operation) (option @parameter (ticket nat)) ] */ } } + /* [ pair (list operation) (option (ticket nat)) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_store.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_store.tz].out index 81153b033c..2d268f8eee 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_store.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticket_store.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039996.114 units remaining { parameter (ticket nat) ; storage (option (ticket nat)) ; code { CAR - /* [ @parameter ticket nat ] */ ; + /* [ ticket nat ] */ ; SOME /* [ option (ticket nat) ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticketer-2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticketer-2.tz].out index f053bec748..37bdafc1c8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticketer-2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticketer-2.tz].out @@ -5,20 +5,20 @@ Gas remaining: 1039987.194 units remaining { parameter (pair (pair address nat) nat) ; storage unit ; code { CAR - /* [ @parameter pair (pair address nat) nat ] */ ; + /* [ pair (pair address nat) nat ] */ ; UNPAIR /* [ pair address nat : nat ] */ ; UNPAIR /* [ address : nat : nat ] */ ; CONTRACT (ticket nat) - /* [ @contract option (contract (ticket nat)) : nat : nat ] */ ; + /* [ option (contract (ticket nat)) : nat : nat ] */ ; ASSERT_SOME ; DIP { TICKET /* [ ticket nat ] */ } - /* [ @contract.some contract (ticket nat) : ticket nat ] */ ; + /* [ contract (ticket nat) : ticket nat ] */ ; SWAP - /* [ ticket nat : @contract.some contract (ticket nat) ] */ ; - DIP { PUSH mutez 0 /* [ mutez : @contract.some contract (ticket nat) ] */ } - /* [ ticket nat : mutez : @contract.some contract (ticket nat) ] */ ; + /* [ ticket nat : contract (ticket nat) ] */ ; + DIP { PUSH mutez 0 /* [ mutez : contract (ticket nat) ] */ } + /* [ ticket nat : mutez : contract (ticket nat) ] */ ; TRANSFER_TOKENS /* [ operation ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticketer.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticketer.tz].out index 95d2978631..3e14e5a603 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticketer.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--ticketer.tz].out @@ -5,33 +5,30 @@ Gas remaining: 1039987.710 units remaining { parameter address ; storage nat ; code { UNPAIR - /* [ @parameter address : @storage nat ] */ ; - DIP { DUP /* [ @storage nat : @storage nat ] */ } - /* [ @parameter address : @storage nat : @storage nat ] */ ; + /* [ address : nat ] */ ; + DIP { DUP /* [ nat : nat ] */ } + /* [ address : nat : nat ] */ ; SWAP - /* [ @storage nat : @parameter address : @storage nat ] */ ; + /* [ nat : address : nat ] */ ; PUSH nat 1 - /* [ nat : @storage nat : @parameter address : @storage nat ] */ ; + /* [ nat : nat : address : nat ] */ ; SWAP - /* [ @storage nat : nat : @parameter address : @storage nat ] */ ; + /* [ nat : nat : address : nat ] */ ; TICKET - /* [ ticket nat : @parameter address : @storage nat ] */ ; - DIP { CONTRACT - (ticket nat) - /* [ @parameter.contract option (contract (ticket nat)) : @storage nat ] */ ; + /* [ ticket nat : address : nat ] */ ; + DIP { CONTRACT (ticket nat) + /* [ option (contract (ticket nat)) : nat ] */ ; ASSERT_SOME ; - PUSH mutez - 0 - /* [ mutez : @parameter.contract.some contract (ticket nat) : @storage nat ] */ } - /* [ ticket nat : mutez : @parameter.contract.some contract (ticket nat) - : @storage nat ] */ ; + PUSH mutez 0 + /* [ mutez : contract (ticket nat) : nat ] */ } + /* [ ticket nat : mutez : contract (ticket nat) : nat ] */ ; TRANSFER_TOKENS - /* [ operation : @storage nat ] */ ; + /* [ operation : nat ] */ ; NIL operation - /* [ list operation : operation : @storage nat ] */ ; + /* [ list operation : operation : nat ] */ ; SWAP - /* [ operation : list operation : @storage nat ] */ ; + /* [ operation : list operation : nat ] */ ; CONS - /* [ list operation : @storage nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @storage) ] */ } } + /* [ pair (list operation) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--transfer_amount.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--transfer_amount.tz].out index 9514fc033c..bb136dfd59 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--transfer_amount.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--transfer_amount.tz].out @@ -7,8 +7,8 @@ Gas remaining: 1039996.803 units remaining code { DROP /* [] */ ; AMOUNT - /* [ @amount mutez ] */ ; + /* [ mutez ] */ ; NIL operation - /* [ list operation : @amount mutez ] */ ; + /* [ list operation : mutez ] */ ; PAIR - /* [ pair (list operation) (mutez @amount) ] */ } } + /* [ pair (list operation) mutez ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--transfer_tokens.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--transfer_tokens.tz].out index 4b68475393..9d58fef3a5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--transfer_tokens.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--transfer_tokens.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039993.170 units remaining { parameter (contract unit) ; storage unit ; code { CAR - /* [ @parameter contract unit ] */ ; + /* [ contract unit ] */ ; DIP { UNIT /* [ unit ] */ } - /* [ @parameter contract unit : unit ] */ ; + /* [ contract unit : unit ] */ ; PUSH mutez 100000000 - /* [ mutez : @parameter contract unit : unit ] */ ; + /* [ mutez : contract unit : unit ] */ ; UNIT - /* [ unit : mutez : @parameter contract unit : unit ] */ ; + /* [ unit : mutez : contract unit : unit ] */ ; TRANSFER_TOKENS /* [ operation : unit ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--uncomb.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--uncomb.tz].out index 6310ddbbee..a2184775c1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--uncomb.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--uncomb.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039992.541 units remaining { parameter (pair nat nat nat) ; storage nat ; code { CAR - /* [ @parameter pair nat nat nat ] */ ; + /* [ pair nat nat nat ] */ ; UNPAIR 3 /* [ nat : nat : nat ] */ ; PUSH nat 100 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--update_big_map.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--update_big_map.tz].out index 29499a9bce..bfbac44cce 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--update_big_map.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--update_big_map.tz].out @@ -6,7 +6,7 @@ Gas remaining: 1039991.231 units remaining parameter (map string (option string)) ; code { UNPAPAIR ; ITER { UNPAIR - /* [ @key string : @elt option string : big_map string string : unit ] */ ; + /* [ string : option string : big_map string string : unit ] */ ; UPDATE /* [ big_map string string : unit ] */ } /* [ big_map string string : unit ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--utxo_read.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--utxo_read.tz].out index 3e997b1771..9637727163 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--utxo_read.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--utxo_read.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039984.190 units remaining { parameter (pair (ticket nat) nat) ; storage address ; code { CAR - /* [ @parameter pair (ticket nat) nat ] */ ; + /* [ pair (ticket nat) nat ] */ ; UNPAIR /* [ ticket nat : nat ] */ ; READ_TICKET diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--utxor.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--utxor.tz].out index 0155a98ca5..3675169d67 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--utxor.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--utxor.tz].out @@ -5,105 +5,88 @@ Gas remaining: 1039966.683 units remaining { parameter (pair address address) ; storage nat ; code { UNPAIR - /* [ @parameter pair address address : @storage nat ] */ ; - DIP { DUP /* [ @storage nat : @storage nat ] */ } - /* [ @parameter pair address address : @storage nat : @storage nat ] */ ; + /* [ pair address address : nat ] */ ; + DIP { DUP /* [ nat : nat ] */ } + /* [ pair address address : nat : nat ] */ ; SWAP - /* [ @storage nat : @parameter pair address address : @storage nat ] */ ; - PUSH nat - 5 - /* [ nat : @storage nat : @parameter pair address address : @storage nat ] */ ; + /* [ nat : pair address address : nat ] */ ; + PUSH nat 5 + /* [ nat : nat : pair address address : nat ] */ ; SWAP - /* [ @storage nat : nat : @parameter pair address address : @storage nat ] */ ; + /* [ nat : nat : pair address address : nat ] */ ; TICKET - /* [ ticket nat : @parameter pair address address : @storage nat ] */ ; - PUSH nat - 2 - /* [ nat : ticket nat : @parameter pair address address : @storage nat ] */ ; - PUSH nat - 3 - /* [ nat : nat : ticket nat : @parameter pair address address : @storage nat ] */ ; + /* [ ticket nat : pair address address : nat ] */ ; + PUSH nat 2 + /* [ nat : ticket nat : pair address address : nat ] */ ; + PUSH nat 3 + /* [ nat : nat : ticket nat : pair address address : nat ] */ ; PAIR - /* [ pair nat nat : ticket nat : @parameter pair address address - : @storage nat ] */ ; + /* [ pair nat nat : ticket nat : pair address address : nat ] */ ; SWAP - /* [ ticket nat : pair nat nat : @parameter pair address address - : @storage nat ] */ ; + /* [ ticket nat : pair nat nat : pair address address : nat ] */ ; SPLIT_TICKET - /* [ option (pair (ticket nat) (ticket nat)) : @parameter pair address address - : @storage nat ] */ ; + /* [ option (pair (ticket nat) (ticket nat)) : pair address address : nat ] */ ; ASSERT_SOME ; UNPAIR - /* [ ticket nat : ticket nat : @parameter pair address address : @storage nat ] */ ; + /* [ ticket nat : ticket nat : pair address address : nat ] */ ; DIP { DIP { DUP - /* [ @parameter pair address address : @parameter pair address address - : @storage nat ] */ ; + /* [ pair address address : pair address address : nat ] */ ; CAR - /* [ address : @parameter pair address address : @storage nat ] */ ; + /* [ address : pair address address : nat ] */ ; CONTRACT (pair (ticket nat) nat) - /* [ @contract option (contract (pair (ticket nat) nat)) - : @parameter pair address address : @storage nat ] */ ; + /* [ option (contract (pair (ticket nat) nat)) : pair address address : nat ] */ ; ASSERT_SOME ; PUSH mutez 0 - /* [ mutez : @contract.some contract (pair (ticket nat) nat) - : @parameter pair address address : @storage nat ] */ } - /* [ ticket nat : mutez : @contract.some contract (pair (ticket nat) nat) - : @parameter pair address address : @storage nat ] */ ; + /* [ mutez : contract (pair (ticket nat) nat) : pair address address : nat ] */ } + /* [ ticket nat : mutez : contract (pair (ticket nat) nat) + : pair address address : nat ] */ ; PUSH nat 2 - /* [ nat : ticket nat : mutez : @contract.some contract (pair (ticket nat) nat) - : @parameter pair address address : @storage nat ] */ ; + /* [ nat : ticket nat : mutez : contract (pair (ticket nat) nat) + : pair address address : nat ] */ ; SWAP - /* [ ticket nat : nat : mutez : @contract.some contract (pair (ticket nat) nat) - : @parameter pair address address : @storage nat ] */ ; + /* [ ticket nat : nat : mutez : contract (pair (ticket nat) nat) + : pair address address : nat ] */ ; PAIR - /* [ pair (ticket nat) nat : mutez - : @contract.some contract (pair (ticket nat) nat) - : @parameter pair address address : @storage nat ] */ } + /* [ pair (ticket nat) nat : mutez : contract (pair (ticket nat) nat) + : pair address address : nat ] */ } /* [ ticket nat : pair (ticket nat) nat : mutez - : @contract.some contract (pair (ticket nat) nat) - : @parameter pair address address : @storage nat ] */ ; - DIP { TRANSFER_TOKENS - /* [ operation : @parameter pair address address : @storage nat ] */ } - /* [ ticket nat : operation : @parameter pair address address : @storage nat ] */ ; + : contract (pair (ticket nat) nat) : pair address address : nat ] */ ; + DIP { TRANSFER_TOKENS /* [ operation : pair address address : nat ] */ } + /* [ ticket nat : operation : pair address address : nat ] */ ; SWAP - /* [ operation : ticket nat : @parameter pair address address : @storage nat ] */ ; + /* [ operation : ticket nat : pair address address : nat ] */ ; DIP { DIP { CDR - /* [ address : @storage nat ] */ ; + /* [ address : nat ] */ ; CONTRACT (pair (ticket nat) nat) - /* [ @contract option (contract (pair (ticket nat) nat)) : @storage nat ] */ ; + /* [ option (contract (pair (ticket nat) nat)) : nat ] */ ; ASSERT_SOME ; - PUSH mutez - 0 - /* [ mutez : @contract.some contract (pair (ticket nat) nat) : @storage nat ] */ } - /* [ ticket nat : mutez : @contract.some contract (pair (ticket nat) nat) - : @storage nat ] */ ; + PUSH mutez 0 + /* [ mutez : contract (pair (ticket nat) nat) : nat ] */ } + /* [ ticket nat : mutez : contract (pair (ticket nat) nat) : nat ] */ ; PUSH nat 3 - /* [ nat : ticket nat : mutez : @contract.some contract (pair (ticket nat) nat) - : @storage nat ] */ ; + /* [ nat : ticket nat : mutez : contract (pair (ticket nat) nat) : nat ] */ ; SWAP - /* [ ticket nat : nat : mutez : @contract.some contract (pair (ticket nat) nat) - : @storage nat ] */ ; + /* [ ticket nat : nat : mutez : contract (pair (ticket nat) nat) : nat ] */ ; PAIR - /* [ pair (ticket nat) nat : mutez - : @contract.some contract (pair (ticket nat) nat) : @storage nat ] */ } + /* [ pair (ticket nat) nat : mutez : contract (pair (ticket nat) nat) : nat ] */ } /* [ operation : pair (ticket nat) nat : mutez - : @contract.some contract (pair (ticket nat) nat) : @storage nat ] */ ; - DIP { TRANSFER_TOKENS /* [ operation : @storage nat ] */ } - /* [ operation : operation : @storage nat ] */ ; + : contract (pair (ticket nat) nat) : nat ] */ ; + DIP { TRANSFER_TOKENS /* [ operation : nat ] */ } + /* [ operation : operation : nat ] */ ; NIL operation - /* [ list operation : operation : operation : @storage nat ] */ ; + /* [ list operation : operation : operation : nat ] */ ; SWAP - /* [ operation : list operation : operation : @storage nat ] */ ; + /* [ operation : list operation : operation : nat ] */ ; CONS - /* [ list operation : operation : @storage nat ] */ ; + /* [ list operation : operation : nat ] */ ; SWAP - /* [ operation : list operation : @storage nat ] */ ; + /* [ operation : list operation : nat ] */ ; CONS - /* [ list operation : @storage nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @storage) ] */ } } + /* [ pair (list operation) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_fib.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_fib.tz].out index 5d1080722e..590912e0ae 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_fib.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_fib.tz].out @@ -5,14 +5,14 @@ Gas remaining: 1039993.990 units remaining { parameter (pair nat address) ; storage nat ; code { CAR - /* [ @parameter pair nat address ] */ ; + /* [ pair nat address ] */ ; UNPAIR /* [ nat : address ] */ ; VIEW "fib" nat - /* [ @contract option nat ] */ ; + /* [ option nat ] */ ; IF_SOME { NIL operation - /* [ list operation : @contract.some nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @contract.some) ] */ } + /* [ pair (list operation) nat ] */ } { FAIL } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_mutual_recursion.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_mutual_recursion.tz].out index d315063063..f41d7a56e5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_mutual_recursion.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_mutual_recursion.tz].out @@ -5,18 +5,18 @@ Gas remaining: 1039992.695 units remaining { parameter (pair nat address) ; storage nat ; code { CAR - /* [ @parameter pair nat address ] */ ; + /* [ pair nat address ] */ ; DUP - /* [ @parameter pair nat address : @parameter pair nat address ] */ ; + /* [ pair nat address : pair nat address ] */ ; CDR - /* [ address : @parameter pair nat address ] */ ; + /* [ address : pair nat address ] */ ; SWAP - /* [ @parameter pair nat address : address ] */ ; + /* [ pair nat address : address ] */ ; VIEW "is_twenty" nat - /* [ @contract option nat ] */ ; + /* [ option nat ] */ ; IF_SOME { NIL operation - /* [ list operation : @contract.some nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @contract.some) ] */ } + /* [ pair (list operation) nat ] */ } { FAIL } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_add.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_add.tz].out index 11e1ddacc7..bf4ddbc5db 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_add.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_add.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039993.770 units remaining { parameter (pair nat address) ; storage nat ; code { CAR - /* [ @parameter pair nat address ] */ ; + /* [ pair nat address ] */ ; UNPAIR /* [ nat : address ] */ ; VIEW "add" nat - /* [ @contract option nat ] */ ; - IF_SOME { /* [ @contract.some nat ] */ } { FAIL } ; + /* [ option nat ] */ ; + IF_SOME { /* [ nat ] */ } { FAIL } ; NIL operation - /* [ list operation : @contract.some nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @contract.some) ] */ } } + /* [ pair (list operation) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_constant.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_constant.tz].out index 7d99627248..50989bad3c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_constant.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_constant.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039993.750 units remaining { parameter (pair nat address) ; storage nat ; code { CAR - /* [ @parameter pair nat address ] */ ; + /* [ pair nat address ] */ ; UNPAIR /* [ nat : address ] */ ; VIEW "const" nat - /* [ @contract option nat ] */ ; - IF_SOME { /* [ @contract.some nat ] */ } { FAIL } ; + /* [ option nat ] */ ; + IF_SOME { /* [ nat ] */ } { FAIL } ; NIL operation - /* [ list operation : @contract.some nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @contract.some) ] */ } } + /* [ pair (list operation) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_id.tz].out index bb1d7a6f55..f63595e875 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_id.tz].out @@ -5,13 +5,13 @@ Gas remaining: 1039992.989 units remaining { parameter (pair nat address) ; storage (pair nat nat) ; code { CAR - /* [ @parameter pair nat address ] */ ; + /* [ pair nat address ] */ ; UNPAIR /* [ nat : address ] */ ; VIEW "id" (pair nat nat) - /* [ @contract option (pair nat nat) ] */ ; - IF_SOME { /* [ @contract.some pair nat nat ] */ } { FAIL } ; + /* [ option (pair nat nat) ] */ ; + IF_SOME { /* [ pair nat nat ] */ } { FAIL } ; NIL operation - /* [ list operation : @contract.some pair nat nat ] */ ; + /* [ list operation : pair nat nat ] */ ; PAIR - /* [ pair (list operation) (pair @contract.some nat nat) ] */ } } + /* [ pair (list operation) nat nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_nonexistent_addr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_nonexistent_addr.tz].out index 81ba4d8e08..644d5603f5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_nonexistent_addr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_nonexistent_addr.tz].out @@ -11,7 +11,7 @@ Gas remaining: 1039342.059 units remaining PUSH nat 0 /* [ nat : address ] */ ; VIEW "test" bool - /* [ @contract option bool ] */ ; + /* [ option bool ] */ ; IF_SOME { DROP /* [] */ ; PUSH bool True /* [ bool ] */ } { PUSH bool False /* [ bool ] */ } ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_nonexistent_func.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_nonexistent_func.tz].out index b04fd5a68b..dabad0ace4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_nonexistent_func.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_nonexistent_func.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039993.059 units remaining { parameter (pair nat address) ; storage bool ; code { CAR - /* [ @parameter pair nat address ] */ ; + /* [ pair nat address ] */ ; UNPAIR /* [ nat : address ] */ ; VIEW "not_exist" bool - /* [ @contract option bool ] */ ; + /* [ option bool ] */ ; IF_SOME { DROP /* [] */ ; PUSH bool True /* [ bool ] */ } { PUSH bool False /* [ bool ] */ } ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_test_step_contants.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_test_step_contants.tz].out index 01516f516b..49344d4359 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_test_step_contants.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_test_step_contants.tz].out @@ -5,15 +5,14 @@ Gas remaining: 1039992.390 units remaining { parameter address ; storage (option (pair (pair mutez mutez) (pair (pair address address) address))) ; code { CAR - /* [ @parameter address ] */ ; + /* [ address ] */ ; UNIT - /* [ unit : @parameter address ] */ ; + /* [ unit : address ] */ ; VIEW "step_constants" (pair (pair mutez mutez) (pair (pair address address) address)) - /* [ @parameter.contract option (pair (pair mutez mutez) (pair address address) address) ] */ ; + /* [ option (pair (pair mutez mutez) (pair address address) address) ] */ ; NIL operation /* [ list operation - : @parameter.contract option (pair (pair mutez mutez) (pair address address) address) ] */ ; + : option (pair (pair mutez mutez) (pair address address) address) ] */ ; PAIR - /* [ pair (list operation) - (option @parameter.contract (pair (pair mutez mutez) (pair address address) address)) ] */ } } + /* [ pair (list operation) (option (pair (pair mutez mutez) (pair address address) address)) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_toplevel_inconsistent_input_type.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_toplevel_inconsistent_input_type.tz].out index 54ee05b9ea..b15e69394e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_toplevel_inconsistent_input_type.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_toplevel_inconsistent_input_type.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039993.119 units remaining { parameter (pair int address) ; storage nat ; code { CAR - /* [ @parameter pair int address ] */ ; + /* [ pair int address ] */ ; UNPAIR /* [ int : address ] */ ; VIEW "add" nat - /* [ @contract option nat ] */ ; + /* [ option nat ] */ ; IF_SOME { DROP /* [] */ ; PUSH nat 1 /* [ nat ] */ } { PUSH nat 0 /* [ nat ] */ } ; NIL operation /* [ list operation : nat ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_toplevel_inconsistent_output_type.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_toplevel_inconsistent_output_type.tz].out index 2446efd852..9ca270c4dd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_toplevel_inconsistent_output_type.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_op_toplevel_inconsistent_output_type.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039993.119 units remaining { parameter (pair nat address) ; storage bool ; code { CAR - /* [ @parameter pair nat address ] */ ; + /* [ pair nat address ] */ ; UNPAIR /* [ nat : address ] */ ; VIEW "add" bool - /* [ @contract option bool ] */ ; + /* [ option bool ] */ ; IF_SOME { DROP /* [] */ ; PUSH bool True /* [ bool ] */ } { PUSH bool False /* [ bool ] */ } ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_rec.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_rec.tz].out index 885059ebcb..6a7c9ff621 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_rec.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_rec.tz].out @@ -12,22 +12,22 @@ Gas remaining: 1039987.709 units remaining DUP /* [ address : address ] */ ; VIEW "loop" never - /* [ @contract option never ] */ ; + /* [ option never ] */ ; ASSERT_SOME } ; code { CDR - /* [ @storage unit ] */ ; + /* [ unit ] */ ; SELF - /* [ @self contract unit : @storage unit ] */ ; + /* [ contract unit : unit ] */ ; ADDRESS - /* [ @self.address address : @storage unit ] */ ; + /* [ address : unit ] */ ; DUP - /* [ @self.address address : @self.address address : @storage unit ] */ ; + /* [ address : address : unit ] */ ; VIEW "loop" never - /* [ @self.address.contract option never : @storage unit ] */ ; + /* [ option never : unit ] */ ; ASSERT_SOME ; DROP - /* [ @storage unit ] */ ; + /* [ unit ] */ ; NIL operation - /* [ list operation : @storage unit ] */ ; + /* [ list operation : unit ] */ ; PAIR - /* [ pair (list operation) (unit @storage) ] */ } } + /* [ pair (list operation) unit ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_toplevel_lib.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_toplevel_lib.tz].out index e752489650..8b451841aa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_toplevel_lib.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--view_toplevel_lib.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039942.437 units remaining { parameter nat ; storage nat ; code { CAR - /* [ @parameter nat ] */ ; + /* [ nat ] */ ; NIL operation - /* [ list operation : @parameter nat ] */ ; + /* [ list operation : nat ] */ ; PAIR - /* [ pair (list operation) (nat @parameter) ] */ } ; + /* [ pair (list operation) nat ] */ } ; view "add" nat nat { UNPAIR /* [ nat : nat ] */ ; ADD /* [ nat ] */ } ; view "id" nat (pair nat nat) { /* [ pair nat nat ] */ } ; view "test_failwith" nat (pair nat nat) { FAILWITH /* [] */ } ; @@ -19,28 +19,23 @@ Gas remaining: 1039942.437 units remaining { DROP /* [] */ ; SOURCE - /* [ @source address ] */ ; + /* [ address ] */ ; SENDER - /* [ @sender address : @source address ] */ ; + /* [ address : address ] */ ; SELF_ADDRESS - /* [ @self address : @sender address : @source address ] */ ; + /* [ address : address : address ] */ ; PAIR - /* [ pair (address @self) (address @sender) : @source address ] */ ; + /* [ pair address address : address ] */ ; PAIR - /* [ pair (pair (address @self) (address @sender)) (address @source) ] */ ; + /* [ pair (pair address address) address ] */ ; BALANCE - /* [ @balance mutez - : pair (pair (address @self) (address @sender)) (address @source) ] */ ; + /* [ mutez : pair (pair address address) address ] */ ; AMOUNT - /* [ @amount mutez : @balance mutez - : pair (pair (address @self) (address @sender)) (address @source) ] */ ; + /* [ mutez : mutez : pair (pair address address) address ] */ ; PAIR - /* [ pair (mutez @amount) (mutez @balance) - : pair (pair (address @self) (address @sender)) (address @source) ] */ ; + /* [ pair mutez mutez : pair (pair address address) address ] */ ; PAIR - /* [ pair (pair (mutez @amount) (mutez @balance)) - (pair (address @self) (address @sender)) - (address @source) ] */ } ; + /* [ pair (pair mutez mutez) (pair address address) address ] */ } ; view "succ" (pair nat address) nat @@ -61,7 +56,7 @@ Gas remaining: 1039942.437 units remaining SWAP /* [ pair nat address : address ] */ ; VIEW "is_twenty" nat - /* [ @contract option nat ] */ ; + /* [ option nat ] */ ; ASSERT_SOME } ; view "is_twenty" (pair nat address) @@ -86,7 +81,7 @@ Gas remaining: 1039942.437 units remaining SWAP /* [ pair nat address : address ] */ ; VIEW "succ" nat - /* [ @contract option nat ] */ ; + /* [ option nat ] */ ; ASSERT_SOME } } ; view "fib" nat @@ -122,27 +117,27 @@ Gas remaining: 1039942.437 units remaining ABS /* [ nat : nat ] */ ; SELF_ADDRESS - /* [ @self address : nat : nat ] */ ; + /* [ address : nat : nat ] */ ; SWAP - /* [ nat : @self address : nat ] */ ; + /* [ nat : address : nat ] */ ; VIEW "fib" nat - /* [ @self.contract option nat : nat ] */ ; + /* [ option nat : nat ] */ ; IF_SOME { SWAP - /* [ nat : @self.contract.some nat ] */ ; + /* [ nat : nat ] */ ; PUSH nat 2 - /* [ nat : nat : @self.contract.some nat ] */ ; + /* [ nat : nat : nat ] */ ; SWAP - /* [ nat : nat : @self.contract.some nat ] */ ; + /* [ nat : nat : nat ] */ ; SUB - /* [ int : @self.contract.some nat ] */ ; + /* [ int : nat ] */ ; ABS - /* [ nat : @self.contract.some nat ] */ ; + /* [ nat : nat ] */ ; SELF_ADDRESS - /* [ @self address : nat : @self.contract.some nat ] */ ; + /* [ address : nat : nat ] */ ; SWAP - /* [ nat : @self address : @self.contract.some nat ] */ ; + /* [ nat : address : nat ] */ ; VIEW "fib" nat - /* [ @self.contract option nat : @self.contract.some nat ] */ ; + /* [ option nat : nat ] */ ; IF_SOME { ADD /* [ nat ] */ } { FAIL } } { FAIL } } } } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--voting_power.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--voting_power.tz].out index 4c08c883b3..ec0b0777e8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--voting_power.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--voting_power.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039994.233 units remaining { parameter key ; storage (pair nat nat) ; code { CAR - /* [ @parameter key ] */ ; + /* [ key ] */ ; HASH_KEY /* [ key_hash ] */ ; VOTING_POWER diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--xor.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--xor.tz].out index c2b140d9e1..f70dba64c6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--xor.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--xor.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039990.984 units remaining { parameter (or (pair bool bool) (pair nat nat)) ; storage (option (or bool nat)) ; code { CAR - /* [ @parameter or (pair bool bool) (pair nat nat) ] */ ; + /* [ or (pair bool bool) (pair nat nat) ] */ ; IF_LEFT { UNPAIR /* [ bool : bool ] */ ; XOR /* [ bool ] */ ; LEFT nat /* [ or bool nat ] */ } { UNPAIR /* [ nat : nat ] */ ; XOR /* [ nat ] */ ; RIGHT bool /* [ or bool nat ] */ } ; diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" index aae20b94b8..d7d62b06ef 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" @@ -11,15 +11,15 @@ trace - location: 13 (remaining gas: 1039989.246 units remaining) [ (Pair "hello" (Some 4) {}) ] - location: 13 (remaining gas: 1039989.236 units remaining) - [ "hello" @parameter - (Pair (Some 4) {}) @storage ] + [ "hello" + (Pair (Some 4) {}) ] - location: 14 (remaining gas: 1039989.221 units remaining) - [ (Pair (Some 4) {}) @storage ] + [ (Pair (Some 4) {}) ] - location: 16 (remaining gas: 1039989.211 units remaining) [ (Some 4) {} ] - location: 14 (remaining gas: 1039989.181 units remaining) - [ "hello" @parameter + [ "hello" (Some 4) {} ] - location: 17 (remaining gas: 1039988.109 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0427752f13.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0427752f13.out" index 0afc0ef64a..72939f4a08 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0427752f13.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0427752f13.out" @@ -11,15 +11,15 @@ trace - location: 13 (remaining gas: 1039987.916 units remaining) [ (Pair "hello" (Some 5) { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039987.906 units remaining) - [ "hello" @parameter - (Pair (Some 5) { Elt "hello" 4 }) @storage ] + [ "hello" + (Pair (Some 5) { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039987.891 units remaining) - [ (Pair (Some 5) { Elt "hello" 4 }) @storage ] + [ (Pair (Some 5) { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039987.881 units remaining) [ (Some 5) { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039987.851 units remaining) - [ "hello" @parameter + [ "hello" (Some 5) { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039986.774 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0793dc66d5.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0793dc66d5.out" index 5303b7731a..4e5bcf4372 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0793dc66d5.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0793dc66d5.out" @@ -12,15 +12,15 @@ trace - location: 13 (remaining gas: 1039987.946 units remaining) [ (Pair "hi" (Some 5) { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039987.936 units remaining) - [ "hi" @parameter - (Pair (Some 5) { Elt "hello" 4 }) @storage ] + [ "hi" + (Pair (Some 5) { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039987.921 units remaining) - [ (Pair (Some 5) { Elt "hello" 4 }) @storage ] + [ (Pair (Some 5) { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039987.911 units remaining) [ (Some 5) { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039987.881 units remaining) - [ "hi" @parameter + [ "hi" (Some 5) { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039986.906 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .df114499b8.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .df114499b8.out" index 8cfde8f84d..e2c009ca36 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .df114499b8.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .df114499b8.out" @@ -12,15 +12,15 @@ trace - location: 13 (remaining gas: 1039987.042 units remaining) [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 13 (remaining gas: 1039987.032 units remaining) - [ "1" @parameter - (Pair None { Elt "1" 1 ; Elt "2" 2 }) @storage ] + [ "1" + (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 14 (remaining gas: 1039987.017 units remaining) - [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) @storage ] + [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 16 (remaining gas: 1039987.007 units remaining) [ None { Elt "1" 1 ; Elt "2" 2 } ] - location: 14 (remaining gas: 1039986.977 units remaining) - [ "1" @parameter + [ "1" None { Elt "1" 1 ; Elt "2" 2 } ] - location: 17 (remaining gas: 1039986.033 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .f9bea98de9.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .f9bea98de9.out" index 5aabcf80d1..74d56b8f1e 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .f9bea98de9.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .f9bea98de9.out" @@ -12,15 +12,15 @@ trace - location: 13 (remaining gas: 1039987.042 units remaining) [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 13 (remaining gas: 1039987.032 units remaining) - [ "1" @parameter - (Pair None { Elt "1" 1 ; Elt "2" 2 }) @storage ] + [ "1" + (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 14 (remaining gas: 1039987.017 units remaining) - [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) @storage ] + [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 16 (remaining gas: 1039987.007 units remaining) [ None { Elt "1" 1 ; Elt "2" 2 } ] - location: 14 (remaining gas: 1039986.977 units remaining) - [ "1" @parameter + [ "1" None { Elt "1" 1 ; Elt "2" 2 } ] - location: 17 (remaining gas: 1039986.033 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"hello\" 4 })-.1db12cd837.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"hello\" 4 })-.1db12cd837.out" index ee13385e8f..c0ab6d6214 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"hello\" 4 })-.1db12cd837.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"hello\" 4 })-.1db12cd837.out" @@ -11,15 +11,15 @@ trace - location: 13 (remaining gas: 1039988.016 units remaining) [ (Pair "hello" None { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039988.006 units remaining) - [ "hello" @parameter - (Pair None { Elt "hello" 4 }) @storage ] + [ "hello" + (Pair None { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039987.991 units remaining) - [ (Pair None { Elt "hello" 4 }) @storage ] + [ (Pair None { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039987.981 units remaining) [ None { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039987.951 units remaining) - [ "hello" @parameter + [ "hello" None { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039986.874 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None {})-\"hello\"-(Pair N.6fc7d0acf2.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None {})-\"hello\"-(Pair N.6fc7d0acf2.out" index fd8748b10e..5259001789 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None {})-\"hello\"-(Pair N.6fc7d0acf2.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None {})-\"hello\"-(Pair N.6fc7d0acf2.out" @@ -11,15 +11,15 @@ trace - location: 13 (remaining gas: 1039989.346 units remaining) [ (Pair "hello" None {}) ] - location: 13 (remaining gas: 1039989.336 units remaining) - [ "hello" @parameter - (Pair None {}) @storage ] + [ "hello" + (Pair None {}) ] - location: 14 (remaining gas: 1039989.321 units remaining) - [ (Pair None {}) @storage ] + [ (Pair None {}) ] - location: 16 (remaining gas: 1039989.311 units remaining) [ None {} ] - location: 14 (remaining gas: 1039989.281 units remaining) - [ "hello" @parameter + [ "hello" None {} ] - location: 17 (remaining gas: 1039988.209 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"tw.524c5459f8.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"tw.524c5459f8.out" index 9ff919b10b..4550d805fc 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"tw.524c5459f8.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"tw.524c5459f8.out" @@ -15,19 +15,19 @@ trace [ (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 13 (remaining gas: 1039983.933 units remaining) - [ "1" @parameter + [ "1" (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 14 (remaining gas: 1039983.918 units remaining) [ (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 17 (remaining gas: 1039983.908 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } None) @storage ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 18 (remaining gas: 1039983.898 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } ] - location: 19 (remaining gas: 1039983.888 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } { Elt "1" "one" ; Elt "2" "two" } ] - location: 14 (remaining gas: 1039983.858 units remaining) - [ "1" @parameter + [ "1" { Elt "1" "one" ; Elt "2" "two" } { Elt "1" "one" ; Elt "2" "two" } ] - location: 20 (remaining gas: 1039982.948 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"\".33eba403e7.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"\".33eba403e7.out" index f341609a78..50c6e12614 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"\".33eba403e7.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"\".33eba403e7.out" @@ -14,19 +14,19 @@ trace [ (Pair "" { Elt "hello" "hi" } None) (Pair "" { Elt "hello" "hi" } None) ] - location: 13 (remaining gas: 1039985.011 units remaining) - [ "" @parameter + [ "" (Pair "" { Elt "hello" "hi" } None) ] - location: 14 (remaining gas: 1039984.996 units remaining) [ (Pair "" { Elt "hello" "hi" } None) ] - location: 17 (remaining gas: 1039984.986 units remaining) - [ (Pair { Elt "hello" "hi" } None) @storage ] + [ (Pair { Elt "hello" "hi" } None) ] - location: 18 (remaining gas: 1039984.976 units remaining) [ { Elt "hello" "hi" } ] - location: 19 (remaining gas: 1039984.966 units remaining) [ { Elt "hello" "hi" } { Elt "hello" "hi" } ] - location: 14 (remaining gas: 1039984.936 units remaining) - [ "" @parameter + [ "" { Elt "hello" "hi" } { Elt "hello" "hi" } ] - location: 20 (remaining gas: 1039984.061 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"h.a5cd1005c9.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"h.a5cd1005c9.out" index 6911269870..f59faa698d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"h.a5cd1005c9.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"h.a5cd1005c9.out" @@ -14,19 +14,19 @@ trace [ (Pair "hello" { Elt "hello" "hi" } None) (Pair "hello" { Elt "hello" "hi" } None) ] - location: 13 (remaining gas: 1039984.961 units remaining) - [ "hello" @parameter + [ "hello" (Pair "hello" { Elt "hello" "hi" } None) ] - location: 14 (remaining gas: 1039984.946 units remaining) [ (Pair "hello" { Elt "hello" "hi" } None) ] - location: 17 (remaining gas: 1039984.936 units remaining) - [ (Pair { Elt "hello" "hi" } None) @storage ] + [ (Pair { Elt "hello" "hi" } None) ] - location: 18 (remaining gas: 1039984.926 units remaining) [ { Elt "hello" "hi" } ] - location: 19 (remaining gas: 1039984.916 units remaining) [ { Elt "hello" "hi" } { Elt "hello" "hi" } ] - location: 14 (remaining gas: 1039984.886 units remaining) - [ "hello" @parameter + [ "hello" { Elt "hello" "hi" } { Elt "hello" "hi" } ] - location: 20 (remaining gas: 1039983.840 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .6f3d35b151.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .6f3d35b151.out" index 7ee5ee693d..7d4e9dd6f5 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .6f3d35b151.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .6f3d35b151.out" @@ -12,15 +12,15 @@ trace - location: 15 (remaining gas: 1039984.639 units remaining) [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.629 units remaining) - [ {} @parameter - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ {} + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.614 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.604 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 16 (remaining gas: 1039984.574 units remaining) - [ {} @parameter + [ {} { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 19 (remaining gas: 1039984.574 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .76aeaa0706.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .76aeaa0706.out" index 2867c663f0..edf538c685 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .76aeaa0706.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .76aeaa0706.out" @@ -12,15 +12,15 @@ trace - location: 15 (remaining gas: 1039984.121 units remaining) [ (Pair { Elt "1" (Some "two") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.111 units remaining) - [ { Elt "1" (Some "two") } @parameter - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ { Elt "1" (Some "two") } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.096 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.086 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 16 (remaining gas: 1039984.056 units remaining) - [ { Elt "1" (Some "two") } @parameter + [ { Elt "1" (Some "two") } { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 19 (remaining gas: 1039984.056 units remaining) @@ -28,8 +28,8 @@ trace { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 21 (remaining gas: 1039984.046 units remaining) - [ "1" @key - (Some "two") @elt + [ "1" + (Some "two") { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 22 (remaining gas: 1039983.111 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7e7197f248.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7e7197f248.out" index 52c3139694..5a01c495a2 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7e7197f248.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7e7197f248.out" @@ -12,15 +12,15 @@ trace - location: 15 (remaining gas: 1039984.121 units remaining) [ (Pair { Elt "1" (Some "two") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.111 units remaining) - [ { Elt "1" (Some "two") } @parameter - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ { Elt "1" (Some "two") } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.096 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.086 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 16 (remaining gas: 1039984.056 units remaining) - [ { Elt "1" (Some "two") } @parameter + [ { Elt "1" (Some "two") } { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 19 (remaining gas: 1039984.056 units remaining) @@ -28,8 +28,8 @@ trace { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 21 (remaining gas: 1039984.046 units remaining) - [ "1" @key - (Some "two") @elt + [ "1" + (Some "two") { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 22 (remaining gas: 1039983.111 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" index fe7c9dddd3..07ca29e9bf 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" @@ -13,15 +13,15 @@ trace - location: 15 (remaining gas: 1039984.101 units remaining) [ (Pair { Elt "3" (Some "three") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.091 units remaining) - [ { Elt "3" (Some "three") } @parameter - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ { Elt "3" (Some "three") } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.076 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.066 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 16 (remaining gas: 1039984.036 units remaining) - [ { Elt "3" (Some "three") } @parameter + [ { Elt "3" (Some "three") } { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 19 (remaining gas: 1039984.036 units remaining) @@ -29,8 +29,8 @@ trace { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 21 (remaining gas: 1039984.026 units remaining) - [ "3" @key - (Some "three") @elt + [ "3" + (Some "three") { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 22 (remaining gas: 1039983.091 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .b688cc94a7.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .b688cc94a7.out" index 091b7c8e8c..5d841a4f18 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .b688cc94a7.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .b688cc94a7.out" @@ -13,15 +13,15 @@ trace - location: 15 (remaining gas: 1039984.265 units remaining) [ (Pair { Elt "3" None } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.255 units remaining) - [ { Elt "3" None } @parameter - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ { Elt "3" None } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.240 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.230 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 16 (remaining gas: 1039984.200 units remaining) - [ { Elt "3" None } @parameter + [ { Elt "3" None } { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 19 (remaining gas: 1039984.200 units remaining) @@ -29,8 +29,8 @@ trace { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 21 (remaining gas: 1039984.190 units remaining) - [ "3" @key - None @elt + [ "3" + None { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 22 (remaining gas: 1039983.255 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .c68db221ed.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .c68db221ed.out" index 70da675f53..960d8f38b5 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .c68db221ed.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .c68db221ed.out" @@ -12,15 +12,15 @@ trace - location: 15 (remaining gas: 1039984.265 units remaining) [ (Pair { Elt "2" None } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.255 units remaining) - [ { Elt "2" None } @parameter - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ { Elt "2" None } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.240 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) @storage ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.230 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 16 (remaining gas: 1039984.200 units remaining) - [ { Elt "2" None } @parameter + [ { Elt "2" None } { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 19 (remaining gas: 1039984.200 units remaining) @@ -28,8 +28,8 @@ trace { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 21 (remaining gas: 1039984.190 units remaining) - [ "2" @key - None @elt + [ "2" + None { Elt "1" "one" ; Elt "2" "two" } Unit ] - location: 22 (remaining gas: 1039983.255 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out index 6d009a603e..1086ac40e9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 500000 @balance ] + [ 500000 ] - location: 9 (remaining gas: 1039774.907 units remaining) [ {} - 500000 @balance ] + 500000 ] - location: 11 (remaining gas: 1039774.892 units remaining) [ (Pair {} 500000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out index ccb352f572..37b7098d60 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 0 @balance ] + [ 0 ] - location: 9 (remaining gas: 1039774.907 units remaining) [ {} - 0 @balance ] + 0 ] - location: 11 (remaining gas: 1039774.892 units remaining) [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out index ada3367dbe..026c5b66fe 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 1000000000 @balance ] + [ 1000000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) [ {} - 1000000000 @balance ] + 1000000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) [ (Pair {} 1000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out index ef9ddc0a9f..181e955e12 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 1000000 @balance ] + [ 1000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) [ {} - 1000000 @balance ] + 1000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) [ (Pair {} 1000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out index 110df02401..af71c77770 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 1 @balance ] + [ 1 ] - location: 9 (remaining gas: 1039774.907 units remaining) [ {} - 1 @balance ] + 1 ] - location: 11 (remaining gas: 1039774.892 units remaining) [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out index ffba2cea49..1da47dccfa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 5000000 @balance ] + [ 5000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) [ {} - 5000000 @balance ] + 5000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) [ (Pair {} 5000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out index baaa6592db..e668b6c003 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 8000000000000000000 @balance ] + [ 8000000000000000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) [ {} - 8000000000000000000 @balance ] + 8000000000000000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) [ (Pair {} 8000000000000000000) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }) )-(Right (Righ.7492e8cdea.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }) )-(Right (Righ.7492e8cdea.out" index cae82ac9e9..d1176a9ba9 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }) )-(Right (Righ.7492e8cdea.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }) )-(Right (Righ.7492e8cdea.out" @@ -15,35 +15,35 @@ trace [ (Pair (Right (Right (Right (Left { Pair "3" "three" })))) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039916.583 units remaining) - [ (Right (Right (Right (Left { Pair "3" "three" })))) @parameter - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right (Right (Right (Left { Pair "3" "three" })))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039916.573 units remaining) - [ (Right (Right (Left { Pair "3" "three" }))) @parameter.right - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right (Right (Left { Pair "3" "three" }))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039916.563 units remaining) - [ (Right (Left { Pair "3" "three" })) @parameter.right.right - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right (Left { Pair "3" "three" })) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 65 (remaining gas: 1039916.553 units remaining) - [ (Left { Pair "3" "three" }) @parameter.right.right.right - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Left { Pair "3" "three" }) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 108 (remaining gas: 1039916.543 units remaining) - [ { Pair "3" "three" } @parameter.right.right.right.add - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ { Pair "3" "three" } + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 110 (remaining gas: 1039916.528 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 113 (remaining gas: 1039916.518 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) @storage.left ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 113 (remaining gas: 1039916.503 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) @storage.left ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 119 (remaining gas: 1039916.493 units remaining) [ { Elt "1" "one" } { Elt "2" "two" } ] - location: 110 (remaining gas: 1039916.463 units remaining) - [ { Pair "3" "three" } @parameter.right.right.right.add + [ { Pair "3" "three" } { Elt "1" "one" } { Elt "2" "two" } ] - location: 120 (remaining gas: 1039916.463 units remaining) - [ (Pair "3" "three") @parameter.right.right.right.add.elt + [ (Pair "3" "three") { Elt "1" "one" } { Elt "2" "two" } ] - location: 122 (remaining gas: 1039916.453 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Left Unit)-(.21b30dd90f.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Left Unit)-(.21b30dd90f.out" index 418259d81e..d545e5435b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Left Unit)-(.21b30dd90f.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Left Unit)-(.21b30dd90f.out" @@ -13,17 +13,17 @@ trace - location: 43 (remaining gas: 1039917.501 units remaining) [ (Pair (Left Unit) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039917.491 units remaining) - [ (Left Unit) @parameter - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Left Unit) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039917.481 units remaining) - [ Unit @parameter.swap - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ Unit + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 46 (remaining gas: 1039917.471 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 48 (remaining gas: 1039917.461 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) @storage.left ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 48 (remaining gas: 1039917.446 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) @storage.left ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 54 (remaining gas: 1039917.436 units remaining) [ { Elt "1" "one" } { Elt "2" "two" } ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .2873ef610c.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .2873ef610c.out" index 752265f827..6506a10c74 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .2873ef610c.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .2873ef610c.out" @@ -14,17 +14,17 @@ trace [ (Pair (Right (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" })))) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039913.787 units remaining) - [ (Right (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" })))) @parameter - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" })))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039913.777 units remaining) - [ (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" }))) @parameter.right - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" }))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039913.767 units remaining) - [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) @parameter.right.reset - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 62 (remaining gas: 1039913.757 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage - (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) @parameter.right.reset ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) + (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] - location: 63 (remaining gas: 1039913.747 units remaining) [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] - location: 60 (remaining gas: 1039913.732 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .8a6f480005.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .8a6f480005.out" index 8f8cec507e..4918b5e8fe 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .8a6f480005.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .8a6f480005.out" @@ -10,17 +10,17 @@ trace - location: 43 (remaining gas: 1039916.861 units remaining) [ (Pair (Right (Left (Right Unit))) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039916.851 units remaining) - [ (Right (Left (Right Unit))) @parameter - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right (Left (Right Unit))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039916.841 units remaining) - [ (Left (Right Unit)) @parameter.right - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Left (Right Unit)) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039916.831 units remaining) - [ (Right Unit) @parameter.right.reset - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right Unit) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 62 (remaining gas: 1039916.821 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage - (Right Unit) @parameter.right.reset ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) + (Right Unit) ] - location: 63 (remaining gas: 1039916.811 units remaining) [ (Right Unit) ] - location: 60 (remaining gas: 1039916.796 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Right.d336ca1903.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Right.d336ca1903.out" index 4c2b092cfc..8489cdc827 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Right.d336ca1903.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Right.d336ca1903.out" @@ -14,35 +14,35 @@ trace [ (Pair (Right (Right (Right (Right { "1" })))) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039916.847 units remaining) - [ (Right (Right (Right (Right { "1" })))) @parameter - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right (Right (Right (Right { "1" })))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039916.837 units remaining) - [ (Right (Right (Right { "1" }))) @parameter.right - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right (Right (Right { "1" }))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039916.827 units remaining) - [ (Right (Right { "1" })) @parameter.right.right - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right (Right { "1" })) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 65 (remaining gas: 1039916.817 units remaining) - [ (Right { "1" }) @parameter.right.right.right - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Right { "1" }) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 108 (remaining gas: 1039916.807 units remaining) - [ { "1" } @parameter.right.right.right.rem - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ { "1" } + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 131 (remaining gas: 1039916.792 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) @storage ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 134 (remaining gas: 1039916.782 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) @storage.left ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 134 (remaining gas: 1039916.767 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) @storage.left ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 140 (remaining gas: 1039916.757 units remaining) [ { Elt "1" "one" } { Elt "2" "two" } ] - location: 131 (remaining gas: 1039916.727 units remaining) - [ { "1" } @parameter.right.right.right.rem + [ { "1" } { Elt "1" "one" } { Elt "2" "two" } ] - location: 141 (remaining gas: 1039916.727 units remaining) - [ "1" @parameter.right.right.right.rem.elt + [ "1" { Elt "1" "one" } { Elt "2" "two" } ] - location: 143 (remaining gas: 1039916.712 units remaining) @@ -53,7 +53,7 @@ trace { Elt "1" "one" } { Elt "2" "two" } ] - location: 143 (remaining gas: 1039916.667 units remaining) - [ "1" @parameter.right.right.right.rem.elt + [ "1" None { Elt "1" "one" } { Elt "2" "two" } ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Right Unit)-(Right (Right (Left (Pair { Pair \"foo\" \"bar\" } { P.7f2ee47600.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Right Unit)-(Right (Right (Left (Pair { Pair \"foo\" \"bar\" } { P.7f2ee47600.out" index 98075dafe6..5bd8c2bf43 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Right Unit)-(Right (Right (Left (Pair { Pair \"foo\" \"bar\" } { P.7f2ee47600.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Right Unit)-(Right (Right (Left (Pair { Pair \"foo\" \"bar\" } { P.7f2ee47600.out" @@ -13,27 +13,27 @@ trace - location: 43 (remaining gas: 1039919.139 units remaining) [ (Pair (Right (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })))) (Right Unit)) ] - location: 43 (remaining gas: 1039919.129 units remaining) - [ (Right (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })))) @parameter - (Right Unit) @storage ] + [ (Right (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })))) + (Right Unit) ] - location: 44 (remaining gas: 1039919.119 units remaining) - [ (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }))) @parameter.right - (Right Unit) @storage ] + [ (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }))) + (Right Unit) ] - location: 60 (remaining gas: 1039919.109 units remaining) - [ (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })) @parameter.right.right - (Right Unit) @storage ] + [ (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })) + (Right Unit) ] - location: 65 (remaining gas: 1039919.099 units remaining) - [ (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }) @parameter.right.right.import - (Right Unit) @storage ] + [ (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }) + (Right Unit) ] - location: 67 (remaining gas: 1039919.084 units remaining) - [ (Right Unit) @storage ] + [ (Right Unit) ] - location: 70 (remaining gas: 1039919.074 units remaining) - [ Unit @storage.right ] + [ Unit ] - location: 70 (remaining gas: 1039919.059 units remaining) - [ Unit @storage.right ] + [ Unit ] - location: 76 (remaining gas: 1039919.049 units remaining) [ ] - location: 67 (remaining gas: 1039919.019 units remaining) - [ (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }) @parameter.right.right.import ] + [ (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }) ] - location: 77 (remaining gas: 1039919.009 units remaining) [ { Pair "foo" "bar" } { Pair "gaz" "baz" } ] @@ -47,7 +47,7 @@ trace {} { Pair "gaz" "baz" } ] - location: 83 (remaining gas: 1039918.949 units remaining) - [ (Pair "foo" "bar") @elt + [ (Pair "foo" "bar") {} { Pair "gaz" "baz" } ] - location: 85 (remaining gas: 1039918.939 units remaining) @@ -87,7 +87,7 @@ trace {} { Elt "foo" "bar" } ] - location: 96 (remaining gas: 1039917.796 units remaining) - [ (Pair "gaz" "baz") @elt + [ (Pair "gaz" "baz") {} { Elt "foo" "bar" } ] - location: 98 (remaining gas: 1039917.786 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_check_signature.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_check_signature.out index f4a1ff783a..f6a3132a50 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_check_signature.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_check_signature.out @@ -38,28 +38,28 @@ trace "hello") ] - location: 13 (remaining gas: 1039651.580 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") @storage + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] - location: 14 (remaining gas: 1039651.570 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") @storage + "hello") (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") @storage + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] - location: 15 (remaining gas: 1039651.560 units remaining) [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") @storage + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] - location: 16 (remaining gas: 1039651.545 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") @storage + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] @@ -69,13 +69,13 @@ trace "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] - location: 19 (remaining gas: 1039651.044 units remaining) - [ 0x05010000000568656c6c6f @packed + [ 0x05010000000568656c6c6f (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] - location: 16 (remaining gas: 1039651.014 units remaining) [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000568656c6c6f @packed + 0x05010000000568656c6c6f (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] @@ -84,14 +84,14 @@ trace "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000568656c6c6f @packed + 0x05010000000568656c6c6f (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] - location: 20 (remaining gas: 1039650.974 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @parameter + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000568656c6c6f @packed + 0x05010000000568656c6c6f (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "hello") ] @@ -110,11 +110,11 @@ trace "hello") ] - location: 28 (remaining gas: 1039585.127 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") @storage ] + "hello") ] - location: 29 (remaining gas: 1039585.112 units remaining) [ {} (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") @storage ] + "hello") ] - location: 31 (remaining gas: 1039585.097 units remaining) [ (Pair {} "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" @@ -166,28 +166,28 @@ trace "abcd") ] - location: 13 (remaining gas: 1039651.590 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") @storage + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] - location: 14 (remaining gas: 1039651.580 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") @storage + "abcd") (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") @storage + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] - location: 15 (remaining gas: 1039651.570 units remaining) [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") @storage + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] - location: 16 (remaining gas: 1039651.555 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") @storage + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] @@ -197,13 +197,13 @@ trace "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] - location: 19 (remaining gas: 1039651.087 units remaining) - [ 0x05010000000461626364 @packed + [ 0x05010000000461626364 (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] - location: 16 (remaining gas: 1039651.057 units remaining) [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000461626364 @packed + 0x05010000000461626364 (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] @@ -212,14 +212,14 @@ trace "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000461626364 @packed + 0x05010000000461626364 (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] - location: 20 (remaining gas: 1039651.017 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @parameter + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000461626364 @packed + 0x05010000000461626364 (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" "abcd") ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-0-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-0-Unit].out index ede7027720..e2bb06cdf5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-0-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-0-Unit].out @@ -10,16 +10,16 @@ trace - location: 7 (remaining gas: 1039988.319 units remaining) [ (Pair 0 Unit) ] - location: 7 (remaining gas: 1039988.309 units remaining) - [ 0 @parameter ] + [ 0 ] - location: 8 (remaining gas: 1039988.299 units remaining) - [ 0 @parameter - 0 @parameter ] + [ 0 + 0 ] - location: 9 (remaining gas: 1039988.259 units remaining) [ 0 - 0 @parameter ] + 0 ] - location: 10 (remaining gas: 1039988.234 units remaining) [ 0 - 0 @parameter ] + 0 ] - location: 11 (remaining gas: 1039988.199 units remaining) [ 0 ] - location: 13 (remaining gas: 1039988.184 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-12039123919239192312931-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-12039123919239192312931-Unit].out index 937df447fd..e0c421e748 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-12039123919239192312931-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-12039123919239192312931-Unit].out @@ -10,16 +10,16 @@ trace - location: 7 (remaining gas: 1039988.319 units remaining) [ (Pair 12039123919239192312931 Unit) ] - location: 7 (remaining gas: 1039988.309 units remaining) - [ 12039123919239192312931 @parameter ] + [ 12039123919239192312931 ] - location: 8 (remaining gas: 1039988.299 units remaining) - [ 12039123919239192312931 @parameter - 12039123919239192312931 @parameter ] + [ 12039123919239192312931 + 12039123919239192312931 ] - location: 9 (remaining gas: 1039988.259 units remaining) [ -12039123919239192312931 - 12039123919239192312931 @parameter ] + 12039123919239192312931 ] - location: 10 (remaining gas: 1039988.234 units remaining) [ 12039123919239192312931 - 12039123919239192312931 @parameter ] + 12039123919239192312931 ] - location: 11 (remaining gas: 1039988.199 units remaining) [ 0 ] - location: 13 (remaining gas: 1039988.184 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-948-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-948-Unit].out index f7188878da..fff9d94664 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-948-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-948-Unit].out @@ -10,16 +10,16 @@ trace - location: 7 (remaining gas: 1039988.319 units remaining) [ (Pair 948 Unit) ] - location: 7 (remaining gas: 1039988.309 units remaining) - [ 948 @parameter ] + [ 948 ] - location: 8 (remaining gas: 1039988.299 units remaining) - [ 948 @parameter - 948 @parameter ] + [ 948 + 948 ] - location: 9 (remaining gas: 1039988.259 units remaining) [ -948 - 948 @parameter ] + 948 ] - location: 10 (remaining gas: 1039988.234 units remaining) [ 948 - 948 @parameter ] + 948 ] - location: 11 (remaining gas: 1039988.199 units remaining) [ 0 ] - location: 13 (remaining gas: 1039988.184 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add.tz-Unit-Unit-Unit].out index d090d1d013..81c0677e14 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add.tz-Unit-Unit-Unit].out @@ -10,202 +10,202 @@ trace - location: 7 (remaining gas: 1039925.003 units remaining) [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039924.993 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 8 (remaining gas: 1039924.983 units remaining) [ 2 - Unit @parameter ] + Unit ] - location: 11 (remaining gas: 1039924.973 units remaining) [ 2 2 - Unit @parameter ] + Unit ] - location: 14 (remaining gas: 1039924.918 units remaining) [ 4 - Unit @parameter ] + Unit ] - location: 15 (remaining gas: 1039924.908 units remaining) [ 4 4 - Unit @parameter ] + Unit ] - location: 20 (remaining gas: 1039924.873 units remaining) [ 0 - Unit @parameter ] + Unit ] - location: 21 (remaining gas: 1039924.858 units remaining) [ True - Unit @parameter ] + Unit ] - location: 22 (remaining gas: 1039924.848 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 22 (remaining gas: 1039924.833 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 28 (remaining gas: 1039924.823 units remaining) [ 2 - Unit @parameter ] + Unit ] - location: 31 (remaining gas: 1039924.813 units remaining) [ 2 2 - Unit @parameter ] + Unit ] - location: 34 (remaining gas: 1039924.758 units remaining) [ 4 - Unit @parameter ] + Unit ] - location: 35 (remaining gas: 1039924.748 units remaining) [ 4 4 - Unit @parameter ] + Unit ] - location: 40 (remaining gas: 1039924.713 units remaining) [ 0 - Unit @parameter ] + Unit ] - location: 41 (remaining gas: 1039924.698 units remaining) [ True - Unit @parameter ] + Unit ] - location: 42 (remaining gas: 1039924.688 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 42 (remaining gas: 1039924.673 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 48 (remaining gas: 1039924.663 units remaining) [ 2 - Unit @parameter ] + Unit ] - location: 51 (remaining gas: 1039924.653 units remaining) [ 2 2 - Unit @parameter ] + Unit ] - location: 54 (remaining gas: 1039924.598 units remaining) [ 4 - Unit @parameter ] + Unit ] - location: 55 (remaining gas: 1039924.588 units remaining) [ 4 4 - Unit @parameter ] + Unit ] - location: 60 (remaining gas: 1039924.553 units remaining) [ 0 - Unit @parameter ] + Unit ] - location: 61 (remaining gas: 1039924.538 units remaining) [ True - Unit @parameter ] + Unit ] - location: 62 (remaining gas: 1039924.528 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 62 (remaining gas: 1039924.513 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 68 (remaining gas: 1039924.503 units remaining) [ 2 - Unit @parameter ] + Unit ] - location: 71 (remaining gas: 1039924.493 units remaining) [ 2 2 - Unit @parameter ] + Unit ] - location: 74 (remaining gas: 1039924.438 units remaining) [ 4 - Unit @parameter ] + Unit ] - location: 75 (remaining gas: 1039924.428 units remaining) [ 4 4 - Unit @parameter ] + Unit ] - location: 80 (remaining gas: 1039924.393 units remaining) [ 0 - Unit @parameter ] + Unit ] - location: 81 (remaining gas: 1039924.378 units remaining) [ True - Unit @parameter ] + Unit ] - location: 82 (remaining gas: 1039924.368 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 82 (remaining gas: 1039924.353 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 88 (remaining gas: 1039924.343 units remaining) [ 2 - Unit @parameter ] + Unit ] - location: 91 (remaining gas: 1039924.333 units remaining) [ 2 2 - Unit @parameter ] + Unit ] - location: 94 (remaining gas: 1039924.278 units remaining) [ 4 - Unit @parameter ] + Unit ] - location: 95 (remaining gas: 1039924.268 units remaining) [ 4 4 - Unit @parameter ] + Unit ] - location: 100 (remaining gas: 1039924.233 units remaining) [ 0 - Unit @parameter ] + Unit ] - location: 101 (remaining gas: 1039924.218 units remaining) [ True - Unit @parameter ] + Unit ] - location: 102 (remaining gas: 1039924.208 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 102 (remaining gas: 1039924.193 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 108 (remaining gas: 1039924.183 units remaining) [ 60 - Unit @parameter ] + Unit ] - location: 111 (remaining gas: 1039924.173 units remaining) [ "2019-09-09T12:08:37Z" 60 - Unit @parameter ] + Unit ] - location: 114 (remaining gas: 1039924.118 units remaining) [ "2019-09-09T12:09:37Z" - Unit @parameter ] + Unit ] - location: 115 (remaining gas: 1039924.108 units remaining) [ "2019-09-09T12:09:37Z" "2019-09-09T12:09:37Z" - Unit @parameter ] + Unit ] - location: 120 (remaining gas: 1039924.073 units remaining) [ 0 - Unit @parameter ] + Unit ] - location: 121 (remaining gas: 1039924.058 units remaining) [ True - Unit @parameter ] + Unit ] - location: 122 (remaining gas: 1039924.048 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 122 (remaining gas: 1039924.033 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 128 (remaining gas: 1039924.023 units remaining) [ "2019-09-09T12:08:37Z" - Unit @parameter ] + Unit ] - location: 131 (remaining gas: 1039924.013 units remaining) [ 60 "2019-09-09T12:08:37Z" - Unit @parameter ] + Unit ] - location: 134 (remaining gas: 1039923.958 units remaining) [ "2019-09-09T12:09:37Z" - Unit @parameter ] + Unit ] - location: 135 (remaining gas: 1039923.948 units remaining) [ "2019-09-09T12:09:37Z" "2019-09-09T12:09:37Z" - Unit @parameter ] + Unit ] - location: 140 (remaining gas: 1039923.913 units remaining) [ 0 - Unit @parameter ] + Unit ] - location: 141 (remaining gas: 1039923.898 units remaining) [ True - Unit @parameter ] + Unit ] - location: 142 (remaining gas: 1039923.888 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 142 (remaining gas: 1039923.873 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 148 (remaining gas: 1039923.863 units remaining) [ 1000 - Unit @parameter ] + Unit ] - location: 151 (remaining gas: 1039923.853 units remaining) [ 1000 1000 - Unit @parameter ] + Unit ] - location: 154 (remaining gas: 1039923.833 units remaining) [ 2000 - Unit @parameter ] + Unit ] - location: 155 (remaining gas: 1039923.823 units remaining) [ 2000 2000 - Unit @parameter ] + Unit ] - location: 160 (remaining gas: 1039923.788 units remaining) [ 0 - Unit @parameter ] + Unit ] - location: 161 (remaining gas: 1039923.773 units remaining) [ True - Unit @parameter ] + Unit ] - location: 162 (remaining gas: 1039923.763 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 162 (remaining gas: 1039923.748 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 168 (remaining gas: 1039923.733 units remaining) [ {} - Unit @parameter ] + Unit ] - location: 170 (remaining gas: 1039923.718 units remaining) [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x00 0x00-(Some 0x0000000.3c2de60480.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x00 0x00-(Some 0x0000000.3c2de60480.out index cf792ab085..e8078892e3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x00 0x00-(Some 0x0000000.3c2de60480.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x00 0x00-(Some 0x0000000.3c2de60480.out @@ -13,7 +13,7 @@ trace None) ] - location: 10 (remaining gas: 1039992.514 units remaining) [ (Pair 0x0000000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000) @parameter ] + 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 11 (remaining gas: 1039992.504 units remaining) [ 0x0000000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000000000000000000000000000 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x01 0x00-(Some 0x0100000.12b2c1172b.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x01 0x00-(Some 0x0100000.12b2c1172b.out index 8fe15117d3..23fbcb9c5a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x01 0x00-(Some 0x0100000.12b2c1172b.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x01 0x00-(Some 0x0100000.12b2c1172b.out @@ -13,7 +13,7 @@ trace None) ] - location: 10 (remaining gas: 1039992.514 units remaining) [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000) @parameter ] + 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 11 (remaining gas: 1039992.504 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000000000000000000000000000 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x00-(Some 0x010.0e44fc6f40.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x00-(Some 0x010.0e44fc6f40.out index 52c3ec343b..b637f3a2ef 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x00-(Some 0x010.0e44fc6f40.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x00-(Some 0x010.0e44fc6f40.out @@ -13,7 +13,7 @@ trace None) ] - location: 10 (remaining gas: 1039992.514 units remaining) [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000) @parameter ] + 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 11 (remaining gas: 1039992.504 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000000000000000000000000000 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x010000-(Some 0.7e0ed229a3.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x010000-(Some 0.7e0ed229a3.out index 7f09aa50ad..790d95b9c3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x010000-(Some 0.7e0ed229a3.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x010000-(Some 0.7e0ed229a3.out @@ -13,7 +13,7 @@ trace None) ] - location: 10 (remaining gas: 1039992.514 units remaining) [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0100000000000000000000000000000000000000000000000000000000000000) @parameter ] + 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 11 (remaining gas: 1039992.504 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 0x0100000000000000000000000000000000000000000000000000000000000000 ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair -100 100)-(Some \"1970.7c1b1e4e5b.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair -100 100)-(Some \"1970.7c1b1e4e5b.out" index 13f8f38f73..7ad05509fa 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair -100 100)-(Some \"1970.7c1b1e4e5b.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair -100 100)-(Some \"1970.7c1b1e4e5b.out" @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.553 units remaining) [ (Pair (Pair -100 "1970-01-01T00:01:40Z") None) ] - location: 10 (remaining gas: 1039990.543 units remaining) - [ (Pair -100 "1970-01-01T00:01:40Z") @parameter ] + [ (Pair -100 "1970-01-01T00:01:40Z") ] - location: 11 (remaining gas: 1039990.533 units remaining) - [ (Pair -100 "1970-01-01T00:01:40Z") @parameter - (Pair -100 "1970-01-01T00:01:40Z") @parameter ] + [ (Pair -100 "1970-01-01T00:01:40Z") + (Pair -100 "1970-01-01T00:01:40Z") ] - location: 12 (remaining gas: 1039990.523 units remaining) [ -100 - (Pair -100 "1970-01-01T00:01:40Z") @parameter ] + (Pair -100 "1970-01-01T00:01:40Z") ] - location: 13 (remaining gas: 1039990.508 units remaining) - [ (Pair -100 "1970-01-01T00:01:40Z") @parameter ] + [ (Pair -100 "1970-01-01T00:01:40Z") ] - location: 15 (remaining gas: 1039990.498 units remaining) [ "1970-01-01T00:01:40Z" ] - location: 13 (remaining gas: 1039990.468 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 0 \"1970-01-01T00:00:0.528ed42c01.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 0 \"1970-01-01T00:00:0.528ed42c01.out" index fd4c17e186..2f84092b1d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 0 \"1970-01-01T00:00:0.528ed42c01.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 0 \"1970-01-01T00:00:0.528ed42c01.out" @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.453 units remaining) [ (Pair (Pair 0 "1970-01-01T00:00:00Z") None) ] - location: 10 (remaining gas: 1039990.443 units remaining) - [ (Pair 0 "1970-01-01T00:00:00Z") @parameter ] + [ (Pair 0 "1970-01-01T00:00:00Z") ] - location: 11 (remaining gas: 1039990.433 units remaining) - [ (Pair 0 "1970-01-01T00:00:00Z") @parameter - (Pair 0 "1970-01-01T00:00:00Z") @parameter ] + [ (Pair 0 "1970-01-01T00:00:00Z") + (Pair 0 "1970-01-01T00:00:00Z") ] - location: 12 (remaining gas: 1039990.423 units remaining) [ 0 - (Pair 0 "1970-01-01T00:00:00Z") @parameter ] + (Pair 0 "1970-01-01T00:00:00Z") ] - location: 13 (remaining gas: 1039990.408 units remaining) - [ (Pair 0 "1970-01-01T00:00:00Z") @parameter ] + [ (Pair 0 "1970-01-01T00:00:00Z") ] - location: 15 (remaining gas: 1039990.398 units remaining) [ "1970-01-01T00:00:00Z" ] - location: 13 (remaining gas: 1039990.368 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 100 100)-(Some \"1970-.6566111ad2.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 100 100)-(Some \"1970-.6566111ad2.out" index 079c5d2474..cd54c3c542 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 100 100)-(Some \"1970-.6566111ad2.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 100 100)-(Some \"1970-.6566111ad2.out" @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.553 units remaining) [ (Pair (Pair 100 "1970-01-01T00:01:40Z") None) ] - location: 10 (remaining gas: 1039990.543 units remaining) - [ (Pair 100 "1970-01-01T00:01:40Z") @parameter ] + [ (Pair 100 "1970-01-01T00:01:40Z") ] - location: 11 (remaining gas: 1039990.533 units remaining) - [ (Pair 100 "1970-01-01T00:01:40Z") @parameter - (Pair 100 "1970-01-01T00:01:40Z") @parameter ] + [ (Pair 100 "1970-01-01T00:01:40Z") + (Pair 100 "1970-01-01T00:01:40Z") ] - location: 12 (remaining gas: 1039990.523 units remaining) [ 100 - (Pair 100 "1970-01-01T00:01:40Z") @parameter ] + (Pair 100 "1970-01-01T00:01:40Z") ] - location: 13 (remaining gas: 1039990.508 units remaining) - [ (Pair 100 "1970-01-01T00:01:40Z") @parameter ] + [ (Pair 100 "1970-01-01T00:01:40Z") ] - location: 15 (remaining gas: 1039990.498 units remaining) [ "1970-01-01T00:01:40Z" ] - location: 13 (remaining gas: 1039990.468 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair \"1970-01-01T00:00:00Z.72c424f3da.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair \"1970-01-01T00:00:00Z.72c424f3da.out" index 920b936e4c..2ecbae14a5 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair \"1970-01-01T00:00:00Z.72c424f3da.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair \"1970-01-01T00:00:00Z.72c424f3da.out" @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.453 units remaining) [ (Pair (Pair "1970-01-01T00:00:00Z" 0) None) ] - location: 10 (remaining gas: 1039990.443 units remaining) - [ (Pair "1970-01-01T00:00:00Z" 0) @parameter ] + [ (Pair "1970-01-01T00:00:00Z" 0) ] - location: 11 (remaining gas: 1039990.433 units remaining) - [ (Pair "1970-01-01T00:00:00Z" 0) @parameter - (Pair "1970-01-01T00:00:00Z" 0) @parameter ] + [ (Pair "1970-01-01T00:00:00Z" 0) + (Pair "1970-01-01T00:00:00Z" 0) ] - location: 12 (remaining gas: 1039990.423 units remaining) [ "1970-01-01T00:00:00Z" - (Pair "1970-01-01T00:00:00Z" 0) @parameter ] + (Pair "1970-01-01T00:00:00Z" 0) ] - location: 13 (remaining gas: 1039990.408 units remaining) - [ (Pair "1970-01-01T00:00:00Z" 0) @parameter ] + [ (Pair "1970-01-01T00:00:00Z" 0) ] - location: 15 (remaining gas: 1039990.398 units remaining) [ 0 ] - location: 13 (remaining gas: 1039990.368 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 -100)-(Some \"1970.7c4b12e9aa.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 -100)-(Some \"1970.7c4b12e9aa.out" index e7e2be2f1a..951cae1f28 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 -100)-(Some \"1970.7c4b12e9aa.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 -100)-(Some \"1970.7c4b12e9aa.out" @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.553 units remaining) [ (Pair (Pair "1970-01-01T00:01:40Z" -100) None) ] - location: 10 (remaining gas: 1039990.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" -100) ] - location: 11 (remaining gas: 1039990.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) @parameter - (Pair "1970-01-01T00:01:40Z" -100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" -100) + (Pair "1970-01-01T00:01:40Z" -100) ] - location: 12 (remaining gas: 1039990.523 units remaining) [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" -100) @parameter ] + (Pair "1970-01-01T00:01:40Z" -100) ] - location: 13 (remaining gas: 1039990.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" -100) ] - location: 15 (remaining gas: 1039990.498 units remaining) [ -100 ] - location: 13 (remaining gas: 1039990.468 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 100)-(Some \"1970-.af32743640.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 100)-(Some \"1970-.af32743640.out" index 672cee5275..ccd1b962d0 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 100)-(Some \"1970-.af32743640.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 100)-(Some \"1970-.af32743640.out" @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.553 units remaining) [ (Pair (Pair "1970-01-01T00:01:40Z" 100) None) ] - location: 10 (remaining gas: 1039990.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 100) ] - location: 11 (remaining gas: 1039990.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) @parameter - (Pair "1970-01-01T00:01:40Z" 100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 100) + (Pair "1970-01-01T00:01:40Z" 100) ] - location: 12 (remaining gas: 1039990.523 units remaining) [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" 100) @parameter ] + (Pair "1970-01-01T00:01:40Z" 100) ] - location: 13 (remaining gas: 1039990.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 100) ] - location: 15 (remaining gas: 1039990.498 units remaining) [ 100 ] - location: 13 (remaining gas: 1039990.468 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[address.tz-None-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[address.tz-None-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" index 7fc26b1c3b..e280de38f1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[address.tz-None-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[address.tz-None-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" @@ -10,9 +10,9 @@ trace - location: 9 (remaining gas: 1039343.609 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" None) ] - location: 9 (remaining gas: 1039343.599 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @parameter ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 10 (remaining gas: 1039343.589 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @parameter.address ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 11 (remaining gas: 1039343.574 units remaining) [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 12 (remaining gas: 1039343.559 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False False)-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False False)-(Some False)].out index 657578e19a..bee19dea56 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False False)-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False False)-(Some False)].out @@ -10,22 +10,22 @@ trace - location: 10 (remaining gas: 1039991.303 units remaining) [ (Pair (Pair False False) None) ] - location: 10 (remaining gas: 1039991.293 units remaining) - [ (Pair False False) @param ] + [ (Pair False False) ] - location: 11 (remaining gas: 1039991.283 units remaining) [ False False ] - location: 12 (remaining gas: 1039991.263 units remaining) - [ False @and ] + [ False ] - location: 13 (remaining gas: 1039991.248 units remaining) - [ (Some False) @res ] + [ (Some False) ] - location: 14 (remaining gas: 1039991.233 units remaining) - [ {} @noop - (Some False) @res ] + [ {} + (Some False) ] - location: 16 (remaining gas: 1039991.218 units remaining) [ (Pair {} (Some False)) ] - location: 17 (remaining gas: 1039991.208 units remaining) - [ {} @x - (Some False) @y ] + [ {} + (Some False) ] - location: 18 (remaining gas: 1039991.193 units remaining) [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False True)-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False True)-(Some False)].out index d6711f5611..0cca8c86d4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False True)-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False True)-(Some False)].out @@ -10,22 +10,22 @@ trace - location: 10 (remaining gas: 1039991.303 units remaining) [ (Pair (Pair False True) None) ] - location: 10 (remaining gas: 1039991.293 units remaining) - [ (Pair False True) @param ] + [ (Pair False True) ] - location: 11 (remaining gas: 1039991.283 units remaining) [ False True ] - location: 12 (remaining gas: 1039991.263 units remaining) - [ False @and ] + [ False ] - location: 13 (remaining gas: 1039991.248 units remaining) - [ (Some False) @res ] + [ (Some False) ] - location: 14 (remaining gas: 1039991.233 units remaining) - [ {} @noop - (Some False) @res ] + [ {} + (Some False) ] - location: 16 (remaining gas: 1039991.218 units remaining) [ (Pair {} (Some False)) ] - location: 17 (remaining gas: 1039991.208 units remaining) - [ {} @x - (Some False) @y ] + [ {} + (Some False) ] - location: 18 (remaining gas: 1039991.193 units remaining) [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True False)-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True False)-(Some False)].out index 5a0108993b..274ee1e111 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True False)-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True False)-(Some False)].out @@ -10,22 +10,22 @@ trace - location: 10 (remaining gas: 1039991.303 units remaining) [ (Pair (Pair True False) None) ] - location: 10 (remaining gas: 1039991.293 units remaining) - [ (Pair True False) @param ] + [ (Pair True False) ] - location: 11 (remaining gas: 1039991.283 units remaining) [ True False ] - location: 12 (remaining gas: 1039991.263 units remaining) - [ False @and ] + [ False ] - location: 13 (remaining gas: 1039991.248 units remaining) - [ (Some False) @res ] + [ (Some False) ] - location: 14 (remaining gas: 1039991.233 units remaining) - [ {} @noop - (Some False) @res ] + [ {} + (Some False) ] - location: 16 (remaining gas: 1039991.218 units remaining) [ (Pair {} (Some False)) ] - location: 17 (remaining gas: 1039991.208 units remaining) - [ {} @x - (Some False) @y ] + [ {} + (Some False) ] - location: 18 (remaining gas: 1039991.193 units remaining) [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True True)-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True True)-(Some True)].out index cda077a921..9aacb64a52 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True True)-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True True)-(Some True)].out @@ -10,22 +10,22 @@ trace - location: 10 (remaining gas: 1039991.303 units remaining) [ (Pair (Pair True True) None) ] - location: 10 (remaining gas: 1039991.293 units remaining) - [ (Pair True True) @param ] + [ (Pair True True) ] - location: 11 (remaining gas: 1039991.283 units remaining) [ True True ] - location: 12 (remaining gas: 1039991.263 units remaining) - [ True @and ] + [ True ] - location: 13 (remaining gas: 1039991.248 units remaining) - [ (Some True) @res ] + [ (Some True) ] - location: 14 (remaining gas: 1039991.233 units remaining) - [ {} @noop - (Some True) @res ] + [ {} + (Some True) ] - location: 16 (remaining gas: 1039991.218 units remaining) [ (Pair {} (Some True)) ] - location: 17 (remaining gas: 1039991.208 units remaining) - [ {} @x - (Some True) @y ] + [ {} + (Some True) ] - location: 18 (remaining gas: 1039991.193 units remaining) [ (Pair {} (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_binary.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_binary.tz-Unit-Unit-Unit].out index 1732abd8d7..cfe6aa0f79 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_binary.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_binary.tz-Unit-Unit-Unit].out @@ -86,7 +86,7 @@ trace - location: 88 (remaining gas: 1039959.811 units remaining) [ Unit ] - location: 89 (remaining gas: 1039959.796 units remaining) - [ {} @noop + [ {} Unit ] - location: 91 (remaining gas: 1039959.781 units remaining) [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False False)-False].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False False)-False].out index 0a222bbbf7..4c5abc8387 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False False)-False].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False False)-False].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039993.804 units remaining) [ (Pair (Pair False False) False) ] - location: 9 (remaining gas: 1039993.794 units remaining) - [ (Pair False False) @parameter ] + [ (Pair False False) ] - location: 10 (remaining gas: 1039993.784 units remaining) [ False False ] - location: 11 (remaining gas: 1039993.764 units remaining) - [ False @and ] + [ False ] - location: 12 (remaining gas: 1039993.749 units remaining) - [ {} @noop - False @and ] + [ {} + False ] - location: 14 (remaining gas: 1039993.734 units remaining) [ (Pair {} False) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False True)-False].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False True)-False].out index fe52321b0e..ef555e8253 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False True)-False].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False True)-False].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039993.804 units remaining) [ (Pair (Pair False True) False) ] - location: 9 (remaining gas: 1039993.794 units remaining) - [ (Pair False True) @parameter ] + [ (Pair False True) ] - location: 10 (remaining gas: 1039993.784 units remaining) [ False True ] - location: 11 (remaining gas: 1039993.764 units remaining) - [ False @and ] + [ False ] - location: 12 (remaining gas: 1039993.749 units remaining) - [ {} @noop - False @and ] + [ {} + False ] - location: 14 (remaining gas: 1039993.734 units remaining) [ (Pair {} False) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True False)-False].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True False)-False].out index 027b3ae2df..b654eef473 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True False)-False].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True False)-False].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039993.804 units remaining) [ (Pair (Pair True False) False) ] - location: 9 (remaining gas: 1039993.794 units remaining) - [ (Pair True False) @parameter ] + [ (Pair True False) ] - location: 10 (remaining gas: 1039993.784 units remaining) [ True False ] - location: 11 (remaining gas: 1039993.764 units remaining) - [ False @and ] + [ False ] - location: 12 (remaining gas: 1039993.749 units remaining) - [ {} @noop - False @and ] + [ {} + False ] - location: 14 (remaining gas: 1039993.734 units remaining) [ (Pair {} False) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True True)-True].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True True)-True].out index cae30faf65..63ef601a19 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True True)-True].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True True)-True].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039993.804 units remaining) [ (Pair (Pair True True) False) ] - location: 9 (remaining gas: 1039993.794 units remaining) - [ (Pair True True) @parameter ] + [ (Pair True True) ] - location: 10 (remaining gas: 1039993.784 units remaining) [ True True ] - location: 11 (remaining gas: 1039993.764 units remaining) - [ True @and ] + [ True ] - location: 12 (remaining gas: 1039993.749 units remaining) - [ {} @noop - True @and ] + [ {} + True ] - location: 14 (remaining gas: 1039993.734 units remaining) [ (Pair {} True) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out index 4ec4409a78..1a20af3830 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 4000000000000 @balance ] + [ 4000000000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) [ {} - 4000000000000 @balance ] + 4000000000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) [ (Pair {} 4000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out index 05fea4c7de..8dd7f60a8a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out @@ -11,17 +11,17 @@ trace - location: 12 (remaining gas: 1039987.011 units remaining) [ (Pair 1 { Elt 0 1 } None) ] - location: 12 (remaining gas: 1039987.001 units remaining) - [ 1 @parameter - (Pair { Elt 0 1 } None) @storage ] + [ 1 + (Pair { Elt 0 1 } None) ] - location: 13 (remaining gas: 1039986.986 units remaining) - [ (Pair { Elt 0 1 } None) @storage ] + [ (Pair { Elt 0 1 } None) ] - location: 15 (remaining gas: 1039986.976 units remaining) [ { Elt 0 1 } ] - location: 16 (remaining gas: 1039986.966 units remaining) [ { Elt 0 1 } { Elt 0 1 } ] - location: 13 (remaining gas: 1039986.936 units remaining) - [ 1 @parameter + [ 1 { Elt 0 1 } { Elt 0 1 } ] - location: 17 (remaining gas: 1039986.163 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out index c0ff888fe3..2ace6b8de4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out @@ -11,17 +11,17 @@ trace - location: 12 (remaining gas: 1039987.011 units remaining) [ (Pair 1 { Elt 0 1 } None) ] - location: 12 (remaining gas: 1039987.001 units remaining) - [ 1 @parameter - (Pair { Elt 0 1 } None) @storage ] + [ 1 + (Pair { Elt 0 1 } None) ] - location: 13 (remaining gas: 1039986.986 units remaining) - [ (Pair { Elt 0 1 } None) @storage ] + [ (Pair { Elt 0 1 } None) ] - location: 15 (remaining gas: 1039986.976 units remaining) [ { Elt 0 1 } ] - location: 16 (remaining gas: 1039986.966 units remaining) [ { Elt 0 1 } { Elt 0 1 } ] - location: 13 (remaining gas: 1039986.936 units remaining) - [ 1 @parameter + [ 1 { Elt 0 1 } { Elt 0 1 } ] - location: 17 (remaining gas: 1039986.163 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out index 296cbadc1e..e9cc9b9806 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out @@ -11,17 +11,17 @@ trace - location: 12 (remaining gas: 1039987.011 units remaining) [ (Pair 1 { Elt 1 0 } None) ] - location: 12 (remaining gas: 1039987.001 units remaining) - [ 1 @parameter - (Pair { Elt 1 0 } None) @storage ] + [ 1 + (Pair { Elt 1 0 } None) ] - location: 13 (remaining gas: 1039986.986 units remaining) - [ (Pair { Elt 1 0 } None) @storage ] + [ (Pair { Elt 1 0 } None) ] - location: 15 (remaining gas: 1039986.976 units remaining) [ { Elt 1 0 } ] - location: 16 (remaining gas: 1039986.966 units remaining) [ { Elt 1 0 } { Elt 1 0 } ] - location: 13 (remaining gas: 1039986.936 units remaining) - [ 1 @parameter + [ 1 { Elt 1 0 } { Elt 1 0 } ] - location: 17 (remaining gas: 1039986.163 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.73700321f8.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.73700321f8.out index 9f838d7906..21fdc5a447 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.73700321f8.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.73700321f8.out @@ -11,17 +11,17 @@ trace - location: 12 (remaining gas: 1039987.011 units remaining) [ (Pair 1 { Elt 1 0 } None) ] - location: 12 (remaining gas: 1039987.001 units remaining) - [ 1 @parameter - (Pair { Elt 1 0 } None) @storage ] + [ 1 + (Pair { Elt 1 0 } None) ] - location: 13 (remaining gas: 1039986.986 units remaining) - [ (Pair { Elt 1 0 } None) @storage ] + [ (Pair { Elt 1 0 } None) ] - location: 15 (remaining gas: 1039986.976 units remaining) [ { Elt 1 0 } ] - location: 16 (remaining gas: 1039986.966 units remaining) [ { Elt 1 0 } { Elt 1 0 } ] - location: 13 (remaining gas: 1039986.936 units remaining) - [ 1 @parameter + [ 1 { Elt 1 0 } { Elt 1 0 } ] - location: 17 (remaining gas: 1039986.163 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.1182eca937.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.1182eca937.out index 5385ec20c9..a2facc759a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.1182eca937.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.1182eca937.out @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.980 units remaining) [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 1 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 1 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 1 @parameter + [ 1 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out index be28e05f4c..772b053b45 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.980 units remaining) [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 1 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 1 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 1 @parameter + [ 1 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.1eead33885.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.1eead33885.out index 4130208d2d..4e0e0c3669 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.1eead33885.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.1eead33885.out @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.980 units remaining) [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 2 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 2 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 2 @parameter + [ 2 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out index 5217cf8659..3eb04b7638 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.980 units remaining) [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 2 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 2 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 2 @parameter + [ 2 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out index 75598f66bd..70dfe5d4de 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.980 units remaining) [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 3 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 3 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 3 @parameter + [ 3 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out index c37338e474..953b10d7c0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.980 units remaining) [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 3 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 3 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 3 @parameter + [ 3 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))0].out index c85bba5b1f..e6139cb929 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))0].out @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039988.004 units remaining) [ (Pair 1 {} None) ] - location: 12 (remaining gas: 1039987.994 units remaining) - [ 1 @parameter - (Pair {} None) @storage ] + [ 1 + (Pair {} None) ] - location: 13 (remaining gas: 1039987.979 units remaining) - [ (Pair {} None) @storage ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039987.969 units remaining) [ {} ] - location: 16 (remaining gas: 1039987.959 units remaining) [ {} {} ] - location: 13 (remaining gas: 1039987.929 units remaining) - [ 1 @parameter + [ 1 {} {} ] - location: 17 (remaining gas: 1039987.158 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))1].out index f23ff9f87e..d0348a66ef 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))1].out @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039988.004 units remaining) [ (Pair 1 {} None) ] - location: 12 (remaining gas: 1039987.994 units remaining) - [ 1 @parameter - (Pair {} None) @storage ] + [ 1 + (Pair {} None) ] - location: 13 (remaining gas: 1039987.979 units remaining) - [ (Pair {} None) @storage ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039987.969 units remaining) [ {} ] - location: 16 (remaining gas: 1039987.959 units remaining) [ {} {} ] - location: 13 (remaining gas: 1039987.929 units remaining) - [ 1 @parameter + [ 1 {} {} ] - location: 17 (remaining gas: 1039987.158 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" index 3d964a04f8..65b757d5b6 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.438 units remaining) [ (Pair "baz" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039985.428 units remaining) - [ "baz" @parameter - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ "baz" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039985.413 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039985.403 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039985.393 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039985.363 units remaining) - [ "baz" @parameter + [ "baz" { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039984.384 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" index 527bc1e843..a1cfb1a035 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.438 units remaining) [ (Pair "foo" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039985.428 units remaining) - [ "foo" @parameter - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ "foo" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039985.413 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039985.403 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039985.393 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039985.363 units remaining) - [ "foo" @parameter + [ "foo" { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039984.384 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" index 0b0d9cb61d..47519a4889 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" @@ -12,17 +12,17 @@ trace - location: 12 (remaining gas: 1039985.438 units remaining) [ (Pair "bar" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039985.428 units remaining) - [ "bar" @parameter - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ "bar" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039985.413 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039985.403 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039985.393 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039985.363 units remaining) - [ "bar" @parameter + [ "bar" { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039984.384 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\".968709d39d.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\".968709d39d.out" index dde1086432..86a1d85a15 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\".968709d39d.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\".968709d39d.out" @@ -11,17 +11,17 @@ trace - location: 12 (remaining gas: 1039986.718 units remaining) [ (Pair "foo" { Elt "foo" 0 } None) ] - location: 12 (remaining gas: 1039986.708 units remaining) - [ "foo" @parameter - (Pair { Elt "foo" 0 } None) @storage ] + [ "foo" + (Pair { Elt "foo" 0 } None) ] - location: 13 (remaining gas: 1039986.693 units remaining) - [ (Pair { Elt "foo" 0 } None) @storage ] + [ (Pair { Elt "foo" 0 } None) ] - location: 15 (remaining gas: 1039986.683 units remaining) [ { Elt "foo" 0 } ] - location: 16 (remaining gas: 1039986.673 units remaining) [ { Elt "foo" 0 } { Elt "foo" 0 } ] - location: 13 (remaining gas: 1039986.643 units remaining) - [ "foo" @parameter + [ "foo" { Elt "foo" 0 } { Elt "foo" 0 } ] - location: 17 (remaining gas: 1039985.665 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" index a40f92e3e0..189205480a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" @@ -11,17 +11,17 @@ trace - location: 12 (remaining gas: 1039986.718 units remaining) [ (Pair "bar" { Elt "foo" 1 } None) ] - location: 12 (remaining gas: 1039986.708 units remaining) - [ "bar" @parameter - (Pair { Elt "foo" 1 } None) @storage ] + [ "bar" + (Pair { Elt "foo" 1 } None) ] - location: 13 (remaining gas: 1039986.693 units remaining) - [ (Pair { Elt "foo" 1 } None) @storage ] + [ (Pair { Elt "foo" 1 } None) ] - location: 15 (remaining gas: 1039986.683 units remaining) [ { Elt "foo" 1 } ] - location: 16 (remaining gas: 1039986.673 units remaining) [ { Elt "foo" 1 } { Elt "foo" 1 } ] - location: 13 (remaining gas: 1039986.643 units remaining) - [ "bar" @parameter + [ "bar" { Elt "foo" 1 } { Elt "foo" 1 } ] - location: 17 (remaining gas: 1039985.665 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair 4 (Some False))].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair 4 (Some False))].out" index e9a3241414..5e3d574dfc 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair 4 (Some False))].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair 4 (Some False))].out" @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039987.960 units remaining) [ (Pair "bar" {} None) ] - location: 12 (remaining gas: 1039987.950 units remaining) - [ "bar" @parameter - (Pair {} None) @storage ] + [ "bar" + (Pair {} None) ] - location: 13 (remaining gas: 1039987.935 units remaining) - [ (Pair {} None) @storage ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039987.925 units remaining) [ {} ] - location: 16 (remaining gas: 1039987.915 units remaining) [ {} {} ] - location: 13 (remaining gas: 1039987.885 units remaining) - [ "bar" @parameter + [ "bar" {} {} ] - location: 17 (remaining gas: 1039986.909 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x00-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x00-0].out index eb868df5d6..f3e30eb455 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x00-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x00-0].out @@ -10,7 +10,7 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 0x0000000000000000000000000000000000000000000000000000000000000000 0) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 @parameter ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.663 units remaining) [ 0 ] - location: 9 (remaining gas: 1039994.648 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x01-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x01-1].out index ad241f67a9..c63e99c05e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x01-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x01-1].out @@ -10,7 +10,7 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 0) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.663 units remaining) [ 1 ] - location: 9 (remaining gas: 1039994.648 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x28db8e57af88d9576acd181b89f2.7a85c336ff.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x28db8e57af88d9576acd181b89f2.7a85c336ff.out index cf089b22cd..bb0afa1cf6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x28db8e57af88d9576acd181b89f2.7a85c336ff.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x28db8e57af88d9576acd181b89f2.7a85c336ff.out @@ -10,7 +10,7 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 0x28db8e57af88d9576acd181b89f24e50a89a6423f939026ed91349fc9af16c27 0) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0x28db8e57af88d9576acd181b89f24e50a89a6423f939026ed91349fc9af16c27 @parameter ] + [ 0x28db8e57af88d9576acd181b89f24e50a89a6423f939026ed91349fc9af16c27 ] - location: 8 (remaining gas: 1039994.663 units remaining) [ 17832688077013577776524784494464728518213913213412866604053735695200962927400 ] - location: 9 (remaining gas: 1039994.648 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0xb9e8abf8dc324a010007addde986.b821eb26b3.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0xb9e8abf8dc324a010007addde986.b821eb26b3.out index d54048b19a..915b57fa5d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0xb9e8abf8dc324a010007addde986.b821eb26b3.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0xb9e8abf8dc324a010007addde986.b821eb26b3.out @@ -10,7 +10,7 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 0xb9e8abf8dc324a010007addde986fe0f7c81fab16d26819d0534b7691c0b0719 0) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0xb9e8abf8dc324a010007addde986fe0f7c81fab16d26819d0534b7691c0b0719 @parameter ] + [ 0xb9e8abf8dc324a010007addde986fe0f7c81fab16d26819d0534b7691c0b0719 ] - location: 8 (remaining gas: 1039994.663 units remaining) [ 11320265829256585830781521966149529460476767408210445238902869222031333517497 ] - location: 9 (remaining gas: 1039994.648 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_mutez.tz-0-0x10-16].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_mutez.tz-0-0x10-16].out index d4f5346ae6..5be3e74fdf 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_mutez.tz-0-0x10-16].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_mutez.tz-0-0x10-16].out @@ -10,18 +10,18 @@ trace - location: 7 (remaining gas: 1039989.509 units remaining) [ (Pair 0x1000000000000000000000000000000000000000000000000000000000000000 0) ] - location: 7 (remaining gas: 1039989.499 units remaining) - [ 0x1000000000000000000000000000000000000000000000000000000000000000 @parameter ] + [ 0x1000000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039989.374 units remaining) [ 16 ] - location: 9 (remaining gas: 1039989.359 units remaining) [ (Some 16) ] - location: 11 (remaining gas: 1039989.349 units remaining) - [ 16 @some ] + [ 16 ] - location: 11 (remaining gas: 1039989.334 units remaining) - [ 16 @some ] + [ 16 ] - location: 17 (remaining gas: 1039989.324 units remaining) [ 1 - 16 @some ] + 16 ] - location: 20 (remaining gas: 1039989.324 units remaining) [ 16 ] - location: 21 (remaining gas: 1039989.309 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0accef5bef.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0accef5bef.out index 7e39bddf1f..387a4f7064 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0accef5bef.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0accef5bef.out @@ -10,8 +10,8 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair -42 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ -42 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ -42 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) [ 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 9 (remaining gas: 1039994.442 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0ecc537252.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0ecc537252.out index 6cd0e9d2d0..738d40e31b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0ecc537252.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0ecc537252.out @@ -10,8 +10,8 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 2 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 2 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.442 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2229b767cd.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2229b767cd.out index 59a132eda3..24d8968a89 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2229b767cd.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2229b767cd.out @@ -10,8 +10,8 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair -1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ -1 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ -1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) [ 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 9 (remaining gas: 1039994.442 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2ff549b46b.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2ff549b46b.out index cb81e9f548..65f8e7bc47 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2ff549b46b.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2ff549b46b.out @@ -10,8 +10,8 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 0 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.458 units remaining) [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.443 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.bf8a711be6.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.bf8a711be6.out index b4d66dadff..15438080a4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.bf8a711be6.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.bf8a711be6.out @@ -11,8 +11,8 @@ trace [ (Pair 52435875175126190479447740508185965837690552500527637822603658699938581184514 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.d41cbb044b.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.d41cbb044b.out index 220a889511..adb62b5a42 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.d41cbb044b.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.d41cbb044b.out @@ -10,8 +10,8 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 1 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.442 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.a50412e458.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.a50412e458.out index b330f905f1..df94be6244 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.a50412e458.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.a50412e458.out @@ -11,8 +11,8 @@ trace [ (Pair 22620284817922784902564672469917992996328211127984472897491698543785655336309 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 @parameter - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f @storage ] + [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.f3a349c4a7.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.f3a349c4a7.out index 2a3f54919b..aa1e80460d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.f3a349c4a7.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.f3a349c4a7.out @@ -11,8 +11,8 @@ trace [ (Pair 33644916630334844239120348434626468649534186770809802792596996408934105684394 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 @parameter - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f @storage ] + [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.1b9676e4c2.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.1b9676e4c2.out index 13726b58b4..f15cd6ebd6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.1b9676e4c2.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.1b9676e4c2.out @@ -11,8 +11,8 @@ trace [ (Pair 69615968247920749285624776342583898043608129789011377475114141186797415307882 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 @parameter - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage ] + [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.e966dc6de5.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.e966dc6de5.out index 5797ed6ed9..769c1e5856 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.e966dc6de5.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.e966dc6de5.out @@ -11,8 +11,8 @@ trace [ (Pair 17180093072794558806177035834397932205917577288483739652510482486858834123369 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 @parameter - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage ] + [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.964835cc43.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.964835cc43.out index cfae225275..6c429511be 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.964835cc43.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.964835cc43.out @@ -10,8 +10,8 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 1 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.442 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.b25ea709fb.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.b25ea709fb.out index 580a6d0c8d..db9d2d8051 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.b25ea709fb.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.b25ea709fb.out @@ -10,8 +10,8 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 0 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.458 units remaining) [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.443 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.eae36753ea.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.eae36753ea.out index 085a1a13a8..b2f90efdfd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.eae36753ea.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.eae36753ea.out @@ -11,8 +11,8 @@ trace [ (Pair 52435875175126190479447740508185965837690552500527637822603658699938581184514 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.ee57dac8f7.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.ee57dac8f7.out index 91cc919617..9c166a387d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.ee57dac8f7.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.ee57dac8f7.out @@ -10,8 +10,8 @@ trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 2 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 2 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.442 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out index a2ea730756..ef105dd0e4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out @@ -11,8 +11,8 @@ trace [ (Pair 22620284817922784902564672469917992996328211127984472897491698543785655336309 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 @parameter - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f @storage ] + [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.bd5800f6b8.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.bd5800f6b8.out index 726fad68f9..4903c56a5a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.bd5800f6b8.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.bd5800f6b8.out @@ -11,8 +11,8 @@ trace [ (Pair 33644916630334844239120348434626468649534186770809802792596996408934105684394 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 @parameter - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f @storage ] + [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.00e897789a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.00e897789a.out index 5a4da9147c..68ccd215ec 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.00e897789a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.00e897789a.out @@ -11,8 +11,8 @@ trace [ (Pair 17180093072794558806177035834397932205917577288483739652510482486858834123369 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 @parameter - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage ] + [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.a4697eaa13.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.a4697eaa13.out index 77c801c86e..592484dd8c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.a4697eaa13.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.a4697eaa13.out @@ -11,8 +11,8 @@ trace [ (Pair 69615968247920749285624776342583898043608129789011377475114141186797415307882 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 @parameter - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage ] + [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.424 units remaining) [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 9 (remaining gas: 1039994.409 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.0177355bbf.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.0177355bbf.out index 3d6a10fbbe..212e1a80fa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.0177355bbf.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.0177355bbf.out @@ -10,11 +10,11 @@ trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 2 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 2 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - 2 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 2 ] - location: 9 (remaining gas: 1039993.849 units remaining) [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.834 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.744166c609.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.744166c609.out index 7a8e188b2f..cb44a73d59 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.744166c609.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.744166c609.out @@ -10,11 +10,11 @@ trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair -1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ -1 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ -1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - -1 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + -1 ] - location: 9 (remaining gas: 1039993.849 units remaining) [ 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 10 (remaining gas: 1039993.834 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.9f3c5cdc6a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.9f3c5cdc6a.out index de05182802..0bda3c16a0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.9f3c5cdc6a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.9f3c5cdc6a.out @@ -10,11 +10,11 @@ trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 0 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 0 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - 0 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 0 ] - location: 9 (remaining gas: 1039993.850 units remaining) [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.835 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.a54cb341ba.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.a54cb341ba.out index 2d0ae2aebb..d539b95b0f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.a54cb341ba.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.a54cb341ba.out @@ -10,11 +10,11 @@ trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair -42 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ -42 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ -42 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - -42 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + -42 ] - location: 9 (remaining gas: 1039993.849 units remaining) [ 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 10 (remaining gas: 1039993.834 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.b0dc584c94.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.b0dc584c94.out index a88942ce3e..6c42a7331d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.b0dc584c94.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.b0dc584c94.out @@ -10,11 +10,11 @@ trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 1 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - 1 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 1 ] - location: 9 (remaining gas: 1039993.849 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.834 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.bddcad090c.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.bddcad090c.out index 463c1a47ac..2c173ef748 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.bddcad090c.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.bddcad090c.out @@ -11,11 +11,11 @@ trace [ (Pair 52435875175126190479447740508185965837690552500527637822603658699938581184514 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - 52435875175126190479447740508185965837690552500527637822603658699938581184514 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 52435875175126190479447740508185965837690552500527637822603658699938581184514 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.92c153eb47.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.92c153eb47.out index 9e19fbbf8f..7afaf42c9a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.92c153eb47.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.92c153eb47.out @@ -11,11 +11,11 @@ trace [ (Pair 22620284817922784902564672469917992996328211127984472897491698543785655336309 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 @parameter - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f @storage ] + [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f @storage - 22620284817922784902564672469917992996328211127984472897491698543785655336309 @parameter ] + [ 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f + 22620284817922784902564672469917992996328211127984472897491698543785655336309 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.290ab49d11.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.290ab49d11.out index 25993e0cda..603b3ec223 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.290ab49d11.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.290ab49d11.out @@ -11,11 +11,11 @@ trace [ (Pair 33644916630334844239120348434626468649534186770809802792596996408934105684394 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 @parameter - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f @storage ] + [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f @storage - 33644916630334844239120348434626468649534186770809802792596996408934105684394 @parameter ] + [ 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f + 33644916630334844239120348434626468649534186770809802792596996408934105684394 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.69f3589a06.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.69f3589a06.out index 77fa93ead2..9888f5e5fd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.69f3589a06.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.69f3589a06.out @@ -11,11 +11,11 @@ trace [ (Pair 17180093072794558806177035834397932205917577288483739652510482486858834123369 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 @parameter - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage ] + [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage - 17180093072794558806177035834397932205917577288483739652510482486858834123369 @parameter ] + [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d + 17180093072794558806177035834397932205917577288483739652510482486858834123369 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.fee3c5cf43.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.fee3c5cf43.out index 3765ae739d..3756e52b0e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.fee3c5cf43.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.fee3c5cf43.out @@ -11,11 +11,11 @@ trace [ (Pair 69615968247920749285624776342583898043608129789011377475114141186797415307882 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 @parameter - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage ] + [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage - 69615968247920749285624776342583898043608129789011377475114141186797415307882 @parameter ] + [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d + 69615968247920749285624776342583898043608129789011377475114141186797415307882 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.1bccc033e8.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.1bccc033e8.out index da6ebc0446..08d0622e6c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.1bccc033e8.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.1bccc033e8.out @@ -11,11 +11,11 @@ trace [ (Pair 52435875175126190479447740508185965837690552500527637822603658699938581184514 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - 52435875175126190479447740508185965837690552500527637822603658699938581184514 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 52435875175126190479447740508185965837690552500527637822603658699938581184514 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.40958700fe.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.40958700fe.out index c5a7bed0e0..017a16d6a6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.40958700fe.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.40958700fe.out @@ -10,11 +10,11 @@ trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 0 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 0 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - 0 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 0 ] - location: 9 (remaining gas: 1039993.850 units remaining) [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.835 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.6c62b03d78.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.6c62b03d78.out index 6e51b8330a..609b05c2a8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.6c62b03d78.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.6c62b03d78.out @@ -10,11 +10,11 @@ trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 1 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - 1 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 1 ] - location: 9 (remaining gas: 1039993.849 units remaining) [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.834 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.d23f269341.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.d23f269341.out index 1b91d6f4ef..d537cd5a04 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.d23f269341.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.d23f269341.out @@ -10,11 +10,11 @@ trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 2 @parameter - 0x0100000000000000000000000000000000000000000000000000000000000000 @storage ] + [ 2 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 @storage - 2 @parameter ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 2 ] - location: 9 (remaining gas: 1039993.849 units remaining) [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.834 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.927f808504.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.927f808504.out index af9a44e6db..0b364f1398 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.927f808504.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.927f808504.out @@ -11,11 +11,11 @@ trace [ (Pair 22620284817922784902564672469917992996328211127984472897491698543785655336309 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 @parameter - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f @storage ] + [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f @storage - 22620284817922784902564672469917992996328211127984472897491698543785655336309 @parameter ] + [ 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f + 22620284817922784902564672469917992996328211127984472897491698543785655336309 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.0c114c956a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.0c114c956a.out index ad4bf80dea..df944c3ab6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.0c114c956a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.0c114c956a.out @@ -11,11 +11,11 @@ trace [ (Pair 33644916630334844239120348434626468649534186770809802792596996408934105684394 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 @parameter - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f @storage ] + [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f @storage - 33644916630334844239120348434626468649534186770809802792596996408934105684394 @parameter ] + [ 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f + 33644916630334844239120348434626468649534186770809802792596996408934105684394 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.03c4f38e68.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.03c4f38e68.out index 685ac407c5..8fd31556a2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.03c4f38e68.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.03c4f38e68.out @@ -11,11 +11,11 @@ trace [ (Pair 69615968247920749285624776342583898043608129789011377475114141186797415307882 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 @parameter - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage ] + [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage - 69615968247920749285624776342583898043608129789011377475114141186797415307882 @parameter ] + [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d + 69615968247920749285624776342583898043608129789011377475114141186797415307882 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.8ed19cfdd9.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.8ed19cfdd9.out index 0b4c408cde..ba2c2fce32 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.8ed19cfdd9.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.8ed19cfdd9.out @@ -11,11 +11,11 @@ trace [ (Pair 17180093072794558806177035834397932205917577288483739652510482486858834123369 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 @parameter - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage ] + [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d @storage - 17180093072794558806177035834397932205917577288483739652510482486858834123369 @parameter ] + [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d + 17180093072794558806177035834397932205917577288483739652510482486858834123369 ] - location: 9 (remaining gas: 1039993.816 units remaining) [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 10 (remaining gas: 1039993.801 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[car.tz-0-(Pair 34 17)-34].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[car.tz-0-(Pair 34 17)-34].out index 6bc908aef7..58ffce6709 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[car.tz-0-(Pair 34 17)-34].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[car.tz-0-(Pair 34 17)-34].out @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039994.492 units remaining) [ (Pair (Pair 34 17) 0) ] - location: 9 (remaining gas: 1039994.482 units remaining) - [ (Pair 34 17) @parameter ] + [ (Pair 34 17) ] - location: 10 (remaining gas: 1039994.472 units remaining) [ 34 ] - location: 11 (remaining gas: 1039994.457 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cdr.tz-0-(Pair 34 17)-17].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cdr.tz-0-(Pair 34 17)-17].out index e46d2cd3d3..14ffec7128 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cdr.tz-0-(Pair 34 17)-17].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cdr.tz-0-(Pair 34 17)-17].out @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039994.492 units remaining) [ (Pair (Pair 34 17) 0) ] - location: 9 (remaining gas: 1039994.482 units remaining) - [ (Pair 34 17) @parameter ] + [ (Pair 34 17) ] - location: 10 (remaining gas: 1039994.472 units remaining) [ 17 ] - location: 11 (remaining gas: 1039994.457 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out index 47490e6e44..58fa69c425 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out @@ -10,107 +10,107 @@ trace - location: 11 (remaining gas: 1039950.642 units remaining) [ (Pair (Pair 1 4 2 Unit) Unit) ] - location: 11 (remaining gas: 1039950.632 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 12 (remaining gas: 1039950.622 units remaining) - [ (Pair 1 4 2 Unit) @parameter - (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 13 (remaining gas: 1039950.612 units remaining) [ 1 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 14 (remaining gas: 1039950.602 units remaining) [ 1 1 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 19 (remaining gas: 1039950.567 units remaining) [ 0 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 20 (remaining gas: 1039950.552 units remaining) [ True - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 21 (remaining gas: 1039950.542 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 21 (remaining gas: 1039950.527 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 27 (remaining gas: 1039950.517 units remaining) - [ (Pair 1 4 2 Unit) @parameter - (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 28 (remaining gas: 1039950.487 units remaining) [ 1 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 30 (remaining gas: 1039950.477 units remaining) [ 1 1 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 35 (remaining gas: 1039950.442 units remaining) [ 0 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 36 (remaining gas: 1039950.427 units remaining) [ True - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 37 (remaining gas: 1039950.417 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 37 (remaining gas: 1039950.402 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 43 (remaining gas: 1039950.392 units remaining) - [ (Pair 1 4 2 Unit) @parameter - (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 44 (remaining gas: 1039950.361 units remaining) [ 4 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 46 (remaining gas: 1039950.351 units remaining) [ 4 4 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 51 (remaining gas: 1039950.316 units remaining) [ 0 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 52 (remaining gas: 1039950.301 units remaining) [ True - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 53 (remaining gas: 1039950.291 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 53 (remaining gas: 1039950.276 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 59 (remaining gas: 1039950.266 units remaining) - [ (Pair 1 4 2 Unit) @parameter - (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 60 (remaining gas: 1039950.234 units remaining) [ 2 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 62 (remaining gas: 1039950.224 units remaining) [ 2 2 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 67 (remaining gas: 1039950.189 units remaining) [ 0 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 68 (remaining gas: 1039950.174 units remaining) [ True - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 69 (remaining gas: 1039950.164 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 69 (remaining gas: 1039950.149 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 75 (remaining gas: 1039950.139 units remaining) - [ (Pair 1 4 2 Unit) @parameter - (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 76 (remaining gas: 1039950.106 units remaining) [ Unit - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 78 (remaining gas: 1039950.096 units remaining) [ Unit Unit - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 81 (remaining gas: 1039950.086 units remaining) [ 0 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 82 (remaining gas: 1039950.071 units remaining) [ True - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 83 (remaining gas: 1039950.061 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 83 (remaining gas: 1039950.046 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 89 (remaining gas: 1039950.036 units remaining) [ ] - location: 90 (remaining gas: 1039950.026 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set-2.tz-None-(Pair 1 4 2 Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set-2.tz-None-(Pair 1 4 2 Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" index 54cb24962b..76af827bac 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set-2.tz-None-(Pair 1 4 2 Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set-2.tz-None-(Pair 1 4 2 Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" @@ -10,10 +10,10 @@ trace - location: 16 (remaining gas: 1039985.116 units remaining) [ (Pair (Pair 1 4 2 Unit) None) ] - location: 16 (remaining gas: 1039985.106 units remaining) - [ (Pair 1 4 2 Unit) @parameter ] + [ (Pair 1 4 2 Unit) ] - location: 17 (remaining gas: 1039985.096 units remaining) [ 2 - (Pair 1 4 2 Unit) @parameter ] + (Pair 1 4 2 Unit) ] - location: 20 (remaining gas: 1039985.055 units remaining) [ (Pair 2 4 2 Unit) ] - location: 22 (remaining gas: 1039985.045 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set.tz-(Pair 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set.tz-(Pair 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out index adac3cc91a..4d57d85ea6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set.tz-(Pair 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set.tz-(Pair 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out @@ -10,10 +10,10 @@ trace - location: 11 (remaining gas: 1039985.453 units remaining) [ (Pair Unit 1 4 2 Unit) ] - location: 11 (remaining gas: 1039985.443 units remaining) - [ (Pair 1 4 2 Unit) @storage ] + [ (Pair 1 4 2 Unit) ] - location: 12 (remaining gas: 1039985.433 units remaining) [ 2 - (Pair 1 4 2 Unit) @storage ] + (Pair 1 4 2 Unit) ] - location: 15 (remaining gas: 1039985.392 units remaining) [ (Pair 2 4 2 Unit) ] - location: 17 (remaining gas: 1039985.382 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comparisons.tz-{}-{ -9999999; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comparisons.tz-{}-{ -9999999; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out index d16cff47c8..ec75cfebb8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comparisons.tz-{}-{ -9999999; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comparisons.tz-{}-{ -9999999; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out @@ -15,297 +15,297 @@ trace - location: 10 (remaining gas: 1039962.637 units remaining) [ (Pair { -9999999 ; -1 ; 0 ; 1 ; 9999999 } {}) ] - location: 10 (remaining gas: 1039962.627 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 11 (remaining gas: 1039962.612 units remaining) [ {} - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 14 (remaining gas: 1039962.597 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 16 (remaining gas: 1039962.587 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.587 units remaining) - [ -9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.572 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.557 units remaining) - [ -1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.542 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.527 units remaining) - [ 0 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.512 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.497 units remaining) - [ 1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.482 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.467 units remaining) - [ 9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.452 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.437 units remaining) [ { False ; False ; True ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 14 (remaining gas: 1039962.407 units remaining) [ {} { False ; False ; True ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 20 (remaining gas: 1039962.397 units remaining) [ { False ; False ; True ; False ; False } {} - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 21 (remaining gas: 1039962.382 units remaining) [ { { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 22 (remaining gas: 1039962.367 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 24 (remaining gas: 1039962.357 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.357 units remaining) - [ -9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.342 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.327 units remaining) - [ -1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.312 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.297 units remaining) - [ 0 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.282 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.267 units remaining) - [ 1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.252 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.237 units remaining) - [ 9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.222 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.207 units remaining) [ { True ; True ; False ; True ; True } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 22 (remaining gas: 1039962.177 units remaining) [ { { False ; False ; True ; False ; False } } { True ; True ; False ; True ; True } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 28 (remaining gas: 1039962.167 units remaining) [ { True ; True ; False ; True ; True } { { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 29 (remaining gas: 1039962.152 units remaining) [ { { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 30 (remaining gas: 1039962.137 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 32 (remaining gas: 1039962.127 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.127 units remaining) - [ -9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039962.112 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.097 units remaining) - [ -1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039962.082 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.067 units remaining) - [ 0 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039962.052 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.037 units remaining) - [ 1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039962.022 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.007 units remaining) - [ 9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039961.992 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039961.977 units remaining) [ { True ; True ; True ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 30 (remaining gas: 1039961.947 units remaining) [ { { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } { True ; True ; True ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 36 (remaining gas: 1039961.937 units remaining) [ { True ; True ; True ; False ; False } { { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 37 (remaining gas: 1039961.922 units remaining) [ { { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 38 (remaining gas: 1039961.907 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 40 (remaining gas: 1039961.897 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.897 units remaining) - [ -9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.882 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.867 units remaining) - [ -1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.852 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.837 units remaining) - [ 0 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.822 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.807 units remaining) - [ 1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.792 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.777 units remaining) - [ 9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.762 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.747 units remaining) [ { True ; True ; False ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 38 (remaining gas: 1039961.717 units remaining) [ { { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } { True ; True ; False ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 44 (remaining gas: 1039961.707 units remaining) [ { True ; True ; False ; False ; False } { { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 45 (remaining gas: 1039961.692 units remaining) [ { { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 46 (remaining gas: 1039961.677 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 48 (remaining gas: 1039961.667 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.667 units remaining) - [ -9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.652 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.637 units remaining) - [ -1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.622 units remaining) [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.607 units remaining) - [ 0 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.592 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.577 units remaining) - [ 1 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.562 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.547 units remaining) - [ 9999999 @parameter.elt - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.532 units remaining) [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.517 units remaining) [ { False ; False ; True ; True ; True } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 46 (remaining gas: 1039961.487 units remaining) [ { { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } { False ; False ; True ; True ; True } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 52 (remaining gas: 1039961.477 units remaining) [ { False ; False ; True ; True ; True } { { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 53 (remaining gas: 1039961.462 units remaining) [ { { False ; False ; True ; True ; True } ; { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 54 (remaining gas: 1039961.447 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } @parameter ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 56 (remaining gas: 1039961.447 units remaining) - [ -9999999 @parameter.elt ] + [ -9999999 ] - location: 58 (remaining gas: 1039961.432 units remaining) [ False ] - location: 56 (remaining gas: 1039961.417 units remaining) - [ -1 @parameter.elt ] + [ -1 ] - location: 58 (remaining gas: 1039961.402 units remaining) [ False ] - location: 56 (remaining gas: 1039961.387 units remaining) - [ 0 @parameter.elt ] + [ 0 ] - location: 58 (remaining gas: 1039961.372 units remaining) [ False ] - location: 56 (remaining gas: 1039961.357 units remaining) - [ 1 @parameter.elt ] + [ 1 ] - location: 58 (remaining gas: 1039961.342 units remaining) [ True ] - location: 56 (remaining gas: 1039961.327 units remaining) - [ 9999999 @parameter.elt ] + [ 9999999 ] - location: 58 (remaining gas: 1039961.312 units remaining) [ True ] - location: 56 (remaining gas: 1039961.297 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"World!\" }-{ \"Hello World!\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"World!\" }-{ \"Hello World!\" }].out" index d5c4945e75..28986a4e8a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"World!\" }-{ \"Hello World!\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"World!\" }-{ \"Hello World!\" }].out" @@ -10,12 +10,12 @@ trace - location: 9 (remaining gas: 1039992.305 units remaining) [ (Pair { "World!" } {}) ] - location: 9 (remaining gas: 1039992.295 units remaining) - [ { "World!" } @parameter ] + [ { "World!" } ] - location: 10 (remaining gas: 1039992.295 units remaining) - [ "World!" @parameter.elt ] + [ "World!" ] - location: 12 (remaining gas: 1039992.285 units remaining) - [ "Hello " @hello - "World!" @parameter.elt ] + [ "Hello " + "World!" ] - location: 15 (remaining gas: 1039992.220 units remaining) [ "Hello World!" ] - location: 10 (remaining gas: 1039992.205 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"test1\" ; \"test2\" }-{ \"Hello test1.c27e8c3ee6.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"test1\" ; \"test2\" }-{ \"Hello test1.c27e8c3ee6.out" index 164cc56b67..92d059004c 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"test1\" ; \"test2\" }-{ \"Hello test1.c27e8c3ee6.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"test1\" ; \"test2\" }-{ \"Hello test1.c27e8c3ee6.out" @@ -10,19 +10,19 @@ trace - location: 9 (remaining gas: 1039992.151 units remaining) [ (Pair { "test1" ; "test2" } {}) ] - location: 9 (remaining gas: 1039992.141 units remaining) - [ { "test1" ; "test2" } @parameter ] + [ { "test1" ; "test2" } ] - location: 10 (remaining gas: 1039992.141 units remaining) - [ "test1" @parameter.elt ] + [ "test1" ] - location: 12 (remaining gas: 1039992.131 units remaining) - [ "Hello " @hello - "test1" @parameter.elt ] + [ "Hello " + "test1" ] - location: 15 (remaining gas: 1039992.066 units remaining) [ "Hello test1" ] - location: 10 (remaining gas: 1039992.051 units remaining) - [ "test2" @parameter.elt ] + [ "test2" ] - location: 12 (remaining gas: 1039992.041 units remaining) - [ "Hello " @hello - "test2" @parameter.elt ] + [ "Hello " + "test2" ] - location: 15 (remaining gas: 1039991.976 units remaining) [ "Hello test2" ] - location: 10 (remaining gas: 1039991.961 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{}-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{}-{}].out index 03c995e400..f43586da20 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{}-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{}-{}].out @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039992.479 units remaining) [ (Pair {} {}) ] - location: 9 (remaining gas: 1039992.469 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039992.469 units remaining) [ {} ] - location: 16 (remaining gas: 1039992.454 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out index ade5bca297..d24d76a16e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out @@ -10,19 +10,19 @@ trace - location: 9 (remaining gas: 1039992.398 units remaining) [ (Pair { 0xab ; 0xcd } {}) ] - location: 9 (remaining gas: 1039992.388 units remaining) - [ { 0xab ; 0xcd } @parameter ] + [ { 0xab ; 0xcd } ] - location: 10 (remaining gas: 1039992.388 units remaining) - [ 0xab @parameter.elt ] + [ 0xab ] - location: 12 (remaining gas: 1039992.378 units remaining) [ 0xff - 0xab @parameter.elt ] + 0xab ] - location: 15 (remaining gas: 1039992.313 units remaining) [ 0xffab ] - location: 10 (remaining gas: 1039992.298 units remaining) - [ 0xcd @parameter.elt ] + [ 0xcd ] - location: 12 (remaining gas: 1039992.288 units remaining) [ 0xff - 0xcd @parameter.elt ] + 0xcd ] - location: 15 (remaining gas: 1039992.223 units remaining) [ 0xffcd ] - location: 10 (remaining gas: 1039992.208 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out index 0f51e46efd..df03ec93fa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out @@ -10,12 +10,12 @@ trace - location: 9 (remaining gas: 1039992.498 units remaining) [ (Pair { 0xcd } {}) ] - location: 9 (remaining gas: 1039992.488 units remaining) - [ { 0xcd } @parameter ] + [ { 0xcd } ] - location: 10 (remaining gas: 1039992.488 units remaining) - [ 0xcd @parameter.elt ] + [ 0xcd ] - location: 12 (remaining gas: 1039992.478 units remaining) [ 0xff - 0xcd @parameter.elt ] + 0xcd ] - location: 15 (remaining gas: 1039992.413 units remaining) [ 0xffcd ] - location: 10 (remaining gas: 1039992.398 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{}-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{}-{}].out index 95028609f0..0612eb4df5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{}-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{}-{}].out @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039992.598 units remaining) [ (Pair {} {}) ] - location: 9 (remaining gas: 1039992.588 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039992.588 units remaining) [ {} ] - location: 16 (remaining gas: 1039992.573 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"Hello\" ; \" \" ; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"Hello\" ; \" \" ; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" index 7cbbb9b85a..bd2733d92a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"Hello\" ; \" \" ; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"Hello\" ; \" \" ; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" @@ -10,26 +10,26 @@ trace - location: 8 (remaining gas: 1039987.037 units remaining) [ (Pair { "Hello" ; " " ; "World" ; "!" } "") ] - location: 8 (remaining gas: 1039987.027 units remaining) - [ { "Hello" ; " " ; "World" ; "!" } @parameter ] + [ { "Hello" ; " " ; "World" ; "!" } ] - location: 9 (remaining gas: 1039987.017 units remaining) [ "" - { "Hello" ; " " ; "World" ; "!" } @parameter ] + { "Hello" ; " " ; "World" ; "!" } ] - location: 12 (remaining gas: 1039987.007 units remaining) - [ { "Hello" ; " " ; "World" ; "!" } @parameter + [ { "Hello" ; " " ; "World" ; "!" } "" ] - location: 13 (remaining gas: 1039987.007 units remaining) - [ "Hello" @parameter.elt + [ "Hello" "" ] - location: 15 (remaining gas: 1039986.997 units remaining) [ "" - "Hello" @parameter.elt ] + "Hello" ] - location: 16 (remaining gas: 1039986.982 units remaining) - [ "Hello" @parameter.elt ] + [ "Hello" ] - location: 18 (remaining gas: 1039986.967 units remaining) [ {} - "Hello" @parameter.elt ] + "Hello" ] - location: 20 (remaining gas: 1039986.957 units remaining) - [ "Hello" @parameter.elt + [ "Hello" {} ] - location: 21 (remaining gas: 1039986.942 units remaining) [ { "Hello" } ] @@ -41,18 +41,18 @@ trace - location: 23 (remaining gas: 1039986.777 units remaining) [ "Hello" ] - location: 13 (remaining gas: 1039986.762 units remaining) - [ " " @parameter.elt + [ " " "Hello" ] - location: 15 (remaining gas: 1039986.752 units remaining) [ "Hello" - " " @parameter.elt ] + " " ] - location: 16 (remaining gas: 1039986.737 units remaining) - [ " " @parameter.elt ] + [ " " ] - location: 18 (remaining gas: 1039986.722 units remaining) [ {} - " " @parameter.elt ] + " " ] - location: 20 (remaining gas: 1039986.712 units remaining) - [ " " @parameter.elt + [ " " {} ] - location: 21 (remaining gas: 1039986.697 units remaining) [ { " " } ] @@ -64,18 +64,18 @@ trace - location: 23 (remaining gas: 1039986.532 units remaining) [ "Hello " ] - location: 13 (remaining gas: 1039986.517 units remaining) - [ "World" @parameter.elt + [ "World" "Hello " ] - location: 15 (remaining gas: 1039986.507 units remaining) [ "Hello " - "World" @parameter.elt ] + "World" ] - location: 16 (remaining gas: 1039986.492 units remaining) - [ "World" @parameter.elt ] + [ "World" ] - location: 18 (remaining gas: 1039986.477 units remaining) [ {} - "World" @parameter.elt ] + "World" ] - location: 20 (remaining gas: 1039986.467 units remaining) - [ "World" @parameter.elt + [ "World" {} ] - location: 21 (remaining gas: 1039986.452 units remaining) [ { "World" } ] @@ -87,18 +87,18 @@ trace - location: 23 (remaining gas: 1039986.286 units remaining) [ "Hello World" ] - location: 13 (remaining gas: 1039986.271 units remaining) - [ "!" @parameter.elt + [ "!" "Hello World" ] - location: 15 (remaining gas: 1039986.261 units remaining) [ "Hello World" - "!" @parameter.elt ] + "!" ] - location: 16 (remaining gas: 1039986.246 units remaining) - [ "!" @parameter.elt ] + [ "!" ] - location: 18 (remaining gas: 1039986.231 units remaining) [ {} - "!" @parameter.elt ] + "!" ] - location: 20 (remaining gas: 1039986.221 units remaining) - [ "!" @parameter.elt + [ "!" {} ] - location: 21 (remaining gas: 1039986.206 units remaining) [ { "!" } ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" index 697e1e362f..ac946b1f45 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" @@ -10,26 +10,26 @@ trace - location: 8 (remaining gas: 1039987.241 units remaining) [ (Pair { "a" ; "b" ; "c" } "") ] - location: 8 (remaining gas: 1039987.231 units remaining) - [ { "a" ; "b" ; "c" } @parameter ] + [ { "a" ; "b" ; "c" } ] - location: 9 (remaining gas: 1039987.221 units remaining) [ "" - { "a" ; "b" ; "c" } @parameter ] + { "a" ; "b" ; "c" } ] - location: 12 (remaining gas: 1039987.211 units remaining) - [ { "a" ; "b" ; "c" } @parameter + [ { "a" ; "b" ; "c" } "" ] - location: 13 (remaining gas: 1039987.211 units remaining) - [ "a" @parameter.elt + [ "a" "" ] - location: 15 (remaining gas: 1039987.201 units remaining) [ "" - "a" @parameter.elt ] + "a" ] - location: 16 (remaining gas: 1039987.186 units remaining) - [ "a" @parameter.elt ] + [ "a" ] - location: 18 (remaining gas: 1039987.171 units remaining) [ {} - "a" @parameter.elt ] + "a" ] - location: 20 (remaining gas: 1039987.161 units remaining) - [ "a" @parameter.elt + [ "a" {} ] - location: 21 (remaining gas: 1039987.146 units remaining) [ { "a" } ] @@ -41,18 +41,18 @@ trace - location: 23 (remaining gas: 1039986.981 units remaining) [ "a" ] - location: 13 (remaining gas: 1039986.966 units remaining) - [ "b" @parameter.elt + [ "b" "a" ] - location: 15 (remaining gas: 1039986.956 units remaining) [ "a" - "b" @parameter.elt ] + "b" ] - location: 16 (remaining gas: 1039986.941 units remaining) - [ "b" @parameter.elt ] + [ "b" ] - location: 18 (remaining gas: 1039986.926 units remaining) [ {} - "b" @parameter.elt ] + "b" ] - location: 20 (remaining gas: 1039986.916 units remaining) - [ "b" @parameter.elt + [ "b" {} ] - location: 21 (remaining gas: 1039986.901 units remaining) [ { "b" } ] @@ -64,18 +64,18 @@ trace - location: 23 (remaining gas: 1039986.736 units remaining) [ "ab" ] - location: 13 (remaining gas: 1039986.721 units remaining) - [ "c" @parameter.elt + [ "c" "ab" ] - location: 15 (remaining gas: 1039986.711 units remaining) [ "ab" - "c" @parameter.elt ] + "c" ] - location: 16 (remaining gas: 1039986.696 units remaining) - [ "c" @parameter.elt ] + [ "c" ] - location: 18 (remaining gas: 1039986.681 units remaining) [ {} - "c" @parameter.elt ] + "c" ] - location: 20 (remaining gas: 1039986.671 units remaining) - [ "c" @parameter.elt + [ "c" {} ] - location: 21 (remaining gas: 1039986.656 units remaining) [ { "c" } ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{}-\"\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{}-\"\"].out" index a288f9c22b..486f5213dd 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{}-\"\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{}-\"\"].out" @@ -10,12 +10,12 @@ trace - location: 8 (remaining gas: 1039987.613 units remaining) [ (Pair {} "") ] - location: 8 (remaining gas: 1039987.603 units remaining) - [ {} @parameter ] + [ {} ] - location: 9 (remaining gas: 1039987.593 units remaining) [ "" - {} @parameter ] + {} ] - location: 12 (remaining gas: 1039987.583 units remaining) - [ {} @parameter + [ {} "" ] - location: 13 (remaining gas: 1039987.583 units remaining) [ "" ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out index f7408d14e7..94dc28981e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out @@ -10,8 +10,8 @@ trace - location: 8 (remaining gas: 1039994.045 units remaining) [ (Pair 99 { -5 ; 10 }) ] - location: 8 (remaining gas: 1039994.035 units remaining) - [ 99 @parameter - { -5 ; 10 } @storage ] + [ 99 + { -5 ; 10 } ] - location: 9 (remaining gas: 1039994.020 units remaining) [ { 99 ; -5 ; 10 } ] - location: 10 (remaining gas: 1039994.005 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out index a042c0520f..b7d44136d7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out @@ -10,8 +10,8 @@ trace - location: 8 (remaining gas: 1039994.145 units remaining) [ (Pair -5 { 10 }) ] - location: 8 (remaining gas: 1039994.135 units remaining) - [ -5 @parameter - { 10 } @storage ] + [ -5 + { 10 } ] - location: 9 (remaining gas: 1039994.120 units remaining) [ { -5 ; 10 } ] - location: 10 (remaining gas: 1039994.105 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{}-10-{ 10 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{}-10-{ 10 }].out index 4c24eb1233..2a7e61e518 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{}-10-{ 10 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{}-10-{ 10 }].out @@ -10,8 +10,8 @@ trace - location: 8 (remaining gas: 1039994.245 units remaining) [ (Pair 10 {}) ] - location: 8 (remaining gas: 1039994.235 units remaining) - [ 10 @parameter - {} @storage ] + [ 10 + {} ] - location: 9 (remaining gas: 1039994.220 units remaining) [ { 10 } ] - location: 10 (remaining gas: 1039994.205 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"A\" } { \"B\" })-(Some False)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"A\" } { \"B\" })-(Some False)].out" index 1507eccd06..8b9eba75d3 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"A\" } { \"B\" })-(Some False)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"A\" } { \"B\" })-(Some False)].out" @@ -10,15 +10,15 @@ trace - location: 12 (remaining gas: 1039963.179 units remaining) [ (Pair (Pair { "A" } { "B" }) None) ] - location: 12 (remaining gas: 1039963.169 units remaining) - [ (Pair { "A" } { "B" }) @parameter ] + [ (Pair { "A" } { "B" }) ] - location: 13 (remaining gas: 1039963.159 units remaining) - [ (Pair { "A" } { "B" }) @parameter - (Pair { "A" } { "B" }) @parameter ] + [ (Pair { "A" } { "B" }) + (Pair { "A" } { "B" }) ] - location: 14 (remaining gas: 1039963.149 units remaining) [ { "A" } - (Pair { "A" } { "B" }) @parameter ] + (Pair { "A" } { "B" }) ] - location: 15 (remaining gas: 1039963.134 units remaining) - [ (Pair { "A" } { "B" }) @parameter ] + [ (Pair { "A" } { "B" }) ] - location: 17 (remaining gas: 1039963.124 units remaining) [ { "B" } ] - location: 15 (remaining gas: 1039963.094 units remaining) @@ -33,7 +33,7 @@ trace {} { "B" } ] - location: 21 (remaining gas: 1039962.864 units remaining) - [ "A" @elt + [ "A" {} { "B" } ] - location: 23 (remaining gas: 1039962.849 units remaining) @@ -44,7 +44,7 @@ trace (Pair "A" {}) { "B" } ] - location: 25 (remaining gas: 1039962.829 units remaining) - [ "A" @elt + [ "A" (Pair "A" {}) { "B" } ] - location: 26 (remaining gas: 1039962.814 units remaining) @@ -54,16 +54,16 @@ trace [ {} { "B" } ] - location: 26 (remaining gas: 1039962.774 units remaining) - [ "A" @elt + [ "A" {} { "B" } ] - location: 29 (remaining gas: 1039962.764 units remaining) [ True - "A" @elt + "A" {} { "B" } ] - location: 32 (remaining gas: 1039962.754 units remaining) - [ "A" @elt + [ "A" True {} { "B" } ] @@ -88,7 +88,7 @@ trace [ { "B" } (Pair { "A" } True) ] - location: 40 (remaining gas: 1039962.494 units remaining) - [ "B" @elt + [ "B" (Pair { "A" } True) ] - location: 42 (remaining gas: 1039962.479 units remaining) [ (Pair "B" { "A" } True) ] @@ -100,7 +100,7 @@ trace (Pair "B" { "A" } True) (Pair "B" { "A" } True) ] - location: 45 (remaining gas: 1039962.449 units remaining) - [ "B" @elt + [ "B" (Pair "B" { "A" } True) (Pair "B" { "A" } True) ] - location: 46 (remaining gas: 1039962.434 units remaining) @@ -126,7 +126,7 @@ trace { "A" } True ] - location: 46 (remaining gas: 1039962.309 units remaining) - [ "B" @elt + [ "B" { "A" } { "A" } True ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" index 03e5c1dab0..371c9aa80b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" @@ -10,15 +10,15 @@ trace - location: 12 (remaining gas: 1039962.499 units remaining) [ (Pair (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) None) ] - location: 12 (remaining gas: 1039962.489 units remaining) - [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) @parameter ] + [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] - location: 13 (remaining gas: 1039962.479 units remaining) - [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) @parameter - (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) @parameter ] + [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) + (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] - location: 14 (remaining gas: 1039962.469 units remaining) [ { "B" ; "B" ; "asdf" ; "C" } - (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) @parameter ] + (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] - location: 15 (remaining gas: 1039962.454 units remaining) - [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) @parameter ] + [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] - location: 17 (remaining gas: 1039962.444 units remaining) [ { "B" ; "C" ; "asdf" } ] - location: 15 (remaining gas: 1039962.414 units remaining) @@ -33,7 +33,7 @@ trace {} { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039962.184 units remaining) - [ "B" @elt + [ "B" {} { "B" ; "C" ; "asdf" } ] - location: 23 (remaining gas: 1039962.169 units remaining) @@ -44,7 +44,7 @@ trace (Pair "B" {}) { "B" ; "C" ; "asdf" } ] - location: 25 (remaining gas: 1039962.149 units remaining) - [ "B" @elt + [ "B" (Pair "B" {}) { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039962.134 units remaining) @@ -54,16 +54,16 @@ trace [ {} { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039962.094 units remaining) - [ "B" @elt + [ "B" {} { "B" ; "C" ; "asdf" } ] - location: 29 (remaining gas: 1039962.084 units remaining) [ True - "B" @elt + "B" {} { "B" ; "C" ; "asdf" } ] - location: 32 (remaining gas: 1039962.074 units remaining) - [ "B" @elt + [ "B" True {} { "B" ; "C" ; "asdf" } ] @@ -71,7 +71,7 @@ trace [ { "B" } { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039961.859 units remaining) - [ "B" @elt + [ "B" { "B" } { "B" ; "C" ; "asdf" } ] - location: 23 (remaining gas: 1039961.844 units remaining) @@ -82,7 +82,7 @@ trace (Pair "B" { "B" }) { "B" ; "C" ; "asdf" } ] - location: 25 (remaining gas: 1039961.824 units remaining) - [ "B" @elt + [ "B" (Pair "B" { "B" }) { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.809 units remaining) @@ -92,16 +92,16 @@ trace [ { "B" } { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.769 units remaining) - [ "B" @elt + [ "B" { "B" } { "B" ; "C" ; "asdf" } ] - location: 29 (remaining gas: 1039961.759 units remaining) [ True - "B" @elt + "B" { "B" } { "B" ; "C" ; "asdf" } ] - location: 32 (remaining gas: 1039961.749 units remaining) - [ "B" @elt + [ "B" True { "B" } { "B" ; "C" ; "asdf" } ] @@ -109,7 +109,7 @@ trace [ { "B" } { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039961.464 units remaining) - [ "asdf" @elt + [ "asdf" { "B" } { "B" ; "C" ; "asdf" } ] - location: 23 (remaining gas: 1039961.449 units remaining) @@ -120,7 +120,7 @@ trace (Pair "asdf" { "B" }) { "B" ; "C" ; "asdf" } ] - location: 25 (remaining gas: 1039961.429 units remaining) - [ "asdf" @elt + [ "asdf" (Pair "asdf" { "B" }) { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.414 units remaining) @@ -130,16 +130,16 @@ trace [ { "B" } { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.374 units remaining) - [ "asdf" @elt + [ "asdf" { "B" } { "B" ; "C" ; "asdf" } ] - location: 29 (remaining gas: 1039961.364 units remaining) [ True - "asdf" @elt + "asdf" { "B" } { "B" ; "C" ; "asdf" } ] - location: 32 (remaining gas: 1039961.354 units remaining) - [ "asdf" @elt + [ "asdf" True { "B" } { "B" ; "C" ; "asdf" } ] @@ -147,7 +147,7 @@ trace [ { "B" ; "asdf" } { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039961.069 units remaining) - [ "C" @elt + [ "C" { "B" ; "asdf" } { "B" ; "C" ; "asdf" } ] - location: 23 (remaining gas: 1039961.054 units remaining) @@ -158,7 +158,7 @@ trace (Pair "C" { "B" ; "asdf" }) { "B" ; "C" ; "asdf" } ] - location: 25 (remaining gas: 1039961.034 units remaining) - [ "C" @elt + [ "C" (Pair "C" { "B" ; "asdf" }) { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.019 units remaining) @@ -168,16 +168,16 @@ trace [ { "B" ; "asdf" } { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039960.979 units remaining) - [ "C" @elt + [ "C" { "B" ; "asdf" } { "B" ; "C" ; "asdf" } ] - location: 29 (remaining gas: 1039960.969 units remaining) [ True - "C" @elt + "C" { "B" ; "asdf" } { "B" ; "C" ; "asdf" } ] - location: 32 (remaining gas: 1039960.959 units remaining) - [ "C" @elt + [ "C" True { "B" ; "asdf" } { "B" ; "C" ; "asdf" } ] @@ -202,7 +202,7 @@ trace [ { "B" ; "C" ; "asdf" } (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039960.559 units remaining) - [ "B" @elt + [ "B" (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039960.544 units remaining) [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] @@ -214,7 +214,7 @@ trace (Pair "B" { "B" ; "C" ; "asdf" } True) (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039960.514 units remaining) - [ "B" @elt + [ "B" (Pair "B" { "B" ; "C" ; "asdf" } True) (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039960.499 units remaining) @@ -240,7 +240,7 @@ trace { "B" ; "C" ; "asdf" } True ] - location: 46 (remaining gas: 1039960.374 units remaining) - [ "B" @elt + [ "B" { "B" ; "C" ; "asdf" } { "B" ; "C" ; "asdf" } True ] @@ -267,7 +267,7 @@ trace - location: 63 (remaining gas: 1039960.054 units remaining) [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039960.039 units remaining) - [ "C" @elt + [ "C" (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039960.024 units remaining) [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] @@ -279,7 +279,7 @@ trace (Pair "C" { "B" ; "C" ; "asdf" } True) (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039959.994 units remaining) - [ "C" @elt + [ "C" (Pair "C" { "B" ; "C" ; "asdf" } True) (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039959.979 units remaining) @@ -305,7 +305,7 @@ trace { "B" ; "C" ; "asdf" } True ] - location: 46 (remaining gas: 1039959.854 units remaining) - [ "C" @elt + [ "C" { "B" ; "C" ; "asdf" } { "B" ; "C" ; "asdf" } True ] @@ -332,7 +332,7 @@ trace - location: 63 (remaining gas: 1039959.534 units remaining) [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039959.519 units remaining) - [ "asdf" @elt + [ "asdf" (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039959.504 units remaining) [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] @@ -344,7 +344,7 @@ trace (Pair "asdf" { "B" ; "C" ; "asdf" } True) (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039959.474 units remaining) - [ "asdf" @elt + [ "asdf" (Pair "asdf" { "B" ; "C" ; "asdf" } True) (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039959.459 units remaining) @@ -370,7 +370,7 @@ trace { "B" ; "C" ; "asdf" } True ] - location: 46 (remaining gas: 1039959.334 units remaining) - [ "asdf" @elt + [ "asdf" { "B" ; "C" ; "asdf" } { "B" ; "C" ; "asdf" } True ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" index 165553eab0..0e797d9d17 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" @@ -10,15 +10,15 @@ trace - location: 12 (remaining gas: 1039962.499 units remaining) [ (Pair (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) None) ] - location: 12 (remaining gas: 1039962.489 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) @parameter ] + [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] - location: 13 (remaining gas: 1039962.479 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) @parameter - (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) @parameter ] + [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) + (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] - location: 14 (remaining gas: 1039962.469 units remaining) [ { "B" ; "C" ; "asdf" } - (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) @parameter ] + (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] - location: 15 (remaining gas: 1039962.454 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) @parameter ] + [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] - location: 17 (remaining gas: 1039962.444 units remaining) [ { "B" ; "B" ; "asdf" ; "C" } ] - location: 15 (remaining gas: 1039962.414 units remaining) @@ -33,7 +33,7 @@ trace {} { "B" ; "B" ; "asdf" ; "C" } ] - location: 21 (remaining gas: 1039962.184 units remaining) - [ "B" @elt + [ "B" {} { "B" ; "B" ; "asdf" ; "C" } ] - location: 23 (remaining gas: 1039962.169 units remaining) @@ -44,7 +44,7 @@ trace (Pair "B" {}) { "B" ; "B" ; "asdf" ; "C" } ] - location: 25 (remaining gas: 1039962.149 units remaining) - [ "B" @elt + [ "B" (Pair "B" {}) { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039962.134 units remaining) @@ -54,16 +54,16 @@ trace [ {} { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039962.094 units remaining) - [ "B" @elt + [ "B" {} { "B" ; "B" ; "asdf" ; "C" } ] - location: 29 (remaining gas: 1039962.084 units remaining) [ True - "B" @elt + "B" {} { "B" ; "B" ; "asdf" ; "C" } ] - location: 32 (remaining gas: 1039962.074 units remaining) - [ "B" @elt + [ "B" True {} { "B" ; "B" ; "asdf" ; "C" } ] @@ -71,7 +71,7 @@ trace [ { "B" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 21 (remaining gas: 1039961.859 units remaining) - [ "C" @elt + [ "C" { "B" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 23 (remaining gas: 1039961.844 units remaining) @@ -82,7 +82,7 @@ trace (Pair "C" { "B" }) { "B" ; "B" ; "asdf" ; "C" } ] - location: 25 (remaining gas: 1039961.824 units remaining) - [ "C" @elt + [ "C" (Pair "C" { "B" }) { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039961.809 units remaining) @@ -92,16 +92,16 @@ trace [ { "B" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039961.769 units remaining) - [ "C" @elt + [ "C" { "B" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 29 (remaining gas: 1039961.759 units remaining) [ True - "C" @elt + "C" { "B" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 32 (remaining gas: 1039961.749 units remaining) - [ "C" @elt + [ "C" True { "B" } { "B" ; "B" ; "asdf" ; "C" } ] @@ -109,7 +109,7 @@ trace [ { "B" ; "C" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 21 (remaining gas: 1039961.464 units remaining) - [ "asdf" @elt + [ "asdf" { "B" ; "C" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 23 (remaining gas: 1039961.449 units remaining) @@ -120,7 +120,7 @@ trace (Pair "asdf" { "B" ; "C" }) { "B" ; "B" ; "asdf" ; "C" } ] - location: 25 (remaining gas: 1039961.429 units remaining) - [ "asdf" @elt + [ "asdf" (Pair "asdf" { "B" ; "C" }) { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039961.414 units remaining) @@ -130,16 +130,16 @@ trace [ { "B" ; "C" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039961.374 units remaining) - [ "asdf" @elt + [ "asdf" { "B" ; "C" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 29 (remaining gas: 1039961.364 units remaining) [ True - "asdf" @elt + "asdf" { "B" ; "C" } { "B" ; "B" ; "asdf" ; "C" } ] - location: 32 (remaining gas: 1039961.354 units remaining) - [ "asdf" @elt + [ "asdf" True { "B" ; "C" } { "B" ; "B" ; "asdf" ; "C" } ] @@ -164,7 +164,7 @@ trace [ { "B" ; "B" ; "asdf" ; "C" } (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039960.954 units remaining) - [ "B" @elt + [ "B" (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039960.939 units remaining) [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] @@ -176,7 +176,7 @@ trace (Pair "B" { "B" ; "C" ; "asdf" } True) (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039960.909 units remaining) - [ "B" @elt + [ "B" (Pair "B" { "B" ; "C" ; "asdf" } True) (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039960.894 units remaining) @@ -202,7 +202,7 @@ trace { "B" ; "C" ; "asdf" } True ] - location: 46 (remaining gas: 1039960.769 units remaining) - [ "B" @elt + [ "B" { "B" ; "C" ; "asdf" } { "B" ; "C" ; "asdf" } True ] @@ -229,7 +229,7 @@ trace - location: 63 (remaining gas: 1039960.449 units remaining) [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039960.434 units remaining) - [ "B" @elt + [ "B" (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039960.419 units remaining) [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] @@ -241,7 +241,7 @@ trace (Pair "B" { "B" ; "C" ; "asdf" } True) (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039960.389 units remaining) - [ "B" @elt + [ "B" (Pair "B" { "B" ; "C" ; "asdf" } True) (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039960.374 units remaining) @@ -267,7 +267,7 @@ trace { "B" ; "C" ; "asdf" } True ] - location: 46 (remaining gas: 1039960.249 units remaining) - [ "B" @elt + [ "B" { "B" ; "C" ; "asdf" } { "B" ; "C" ; "asdf" } True ] @@ -294,7 +294,7 @@ trace - location: 63 (remaining gas: 1039959.929 units remaining) [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039959.914 units remaining) - [ "asdf" @elt + [ "asdf" (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039959.899 units remaining) [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] @@ -306,7 +306,7 @@ trace (Pair "asdf" { "B" ; "C" ; "asdf" } True) (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039959.869 units remaining) - [ "asdf" @elt + [ "asdf" (Pair "asdf" { "B" ; "C" ; "asdf" } True) (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039959.854 units remaining) @@ -332,7 +332,7 @@ trace { "B" ; "C" ; "asdf" } True ] - location: 46 (remaining gas: 1039959.729 units remaining) - [ "asdf" @elt + [ "asdf" { "B" ; "C" ; "asdf" } { "B" ; "C" ; "asdf" } True ] @@ -359,7 +359,7 @@ trace - location: 63 (remaining gas: 1039959.409 units remaining) [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039959.394 units remaining) - [ "C" @elt + [ "C" (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039959.379 units remaining) [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] @@ -371,7 +371,7 @@ trace (Pair "C" { "B" ; "C" ; "asdf" } True) (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039959.349 units remaining) - [ "C" @elt + [ "C" (Pair "C" { "B" ; "C" ; "asdf" } True) (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039959.334 units remaining) @@ -397,7 +397,7 @@ trace { "B" ; "C" ; "asdf" } True ] - location: 46 (remaining gas: 1039959.209 units remaining) - [ "C" @elt + [ "C" { "B" ; "C" ; "asdf" } { "B" ; "C" ; "asdf" } True ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" } { \"B\" })-(Some True)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" } { \"B\" })-(Some True)].out" index 619995e7ce..4dc4eb6a68 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" } { \"B\" })-(Some True)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" } { \"B\" })-(Some True)].out" @@ -10,15 +10,15 @@ trace - location: 12 (remaining gas: 1039963.179 units remaining) [ (Pair (Pair { "B" } { "B" }) None) ] - location: 12 (remaining gas: 1039963.169 units remaining) - [ (Pair { "B" } { "B" }) @parameter ] + [ (Pair { "B" } { "B" }) ] - location: 13 (remaining gas: 1039963.159 units remaining) - [ (Pair { "B" } { "B" }) @parameter - (Pair { "B" } { "B" }) @parameter ] + [ (Pair { "B" } { "B" }) + (Pair { "B" } { "B" }) ] - location: 14 (remaining gas: 1039963.149 units remaining) [ { "B" } - (Pair { "B" } { "B" }) @parameter ] + (Pair { "B" } { "B" }) ] - location: 15 (remaining gas: 1039963.134 units remaining) - [ (Pair { "B" } { "B" }) @parameter ] + [ (Pair { "B" } { "B" }) ] - location: 17 (remaining gas: 1039963.124 units remaining) [ { "B" } ] - location: 15 (remaining gas: 1039963.094 units remaining) @@ -33,7 +33,7 @@ trace {} { "B" } ] - location: 21 (remaining gas: 1039962.864 units remaining) - [ "B" @elt + [ "B" {} { "B" } ] - location: 23 (remaining gas: 1039962.849 units remaining) @@ -44,7 +44,7 @@ trace (Pair "B" {}) { "B" } ] - location: 25 (remaining gas: 1039962.829 units remaining) - [ "B" @elt + [ "B" (Pair "B" {}) { "B" } ] - location: 26 (remaining gas: 1039962.814 units remaining) @@ -54,16 +54,16 @@ trace [ {} { "B" } ] - location: 26 (remaining gas: 1039962.774 units remaining) - [ "B" @elt + [ "B" {} { "B" } ] - location: 29 (remaining gas: 1039962.764 units remaining) [ True - "B" @elt + "B" {} { "B" } ] - location: 32 (remaining gas: 1039962.754 units remaining) - [ "B" @elt + [ "B" True {} { "B" } ] @@ -88,7 +88,7 @@ trace [ { "B" } (Pair { "B" } True) ] - location: 40 (remaining gas: 1039962.494 units remaining) - [ "B" @elt + [ "B" (Pair { "B" } True) ] - location: 42 (remaining gas: 1039962.479 units remaining) [ (Pair "B" { "B" } True) ] @@ -100,7 +100,7 @@ trace (Pair "B" { "B" } True) (Pair "B" { "B" } True) ] - location: 45 (remaining gas: 1039962.449 units remaining) - [ "B" @elt + [ "B" (Pair "B" { "B" } True) (Pair "B" { "B" } True) ] - location: 46 (remaining gas: 1039962.434 units remaining) @@ -126,7 +126,7 @@ trace { "B" } True ] - location: 46 (remaining gas: 1039962.309 units remaining) - [ "B" @elt + [ "B" { "B" } { "B" } True ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"c\" } { \"B\" })-(Some False)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"c\" } { \"B\" })-(Some False)].out" index 9bd7f859c1..e02f80d28c 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"c\" } { \"B\" })-(Some False)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"c\" } { \"B\" })-(Some False)].out" @@ -10,15 +10,15 @@ trace - location: 12 (remaining gas: 1039963.179 units remaining) [ (Pair (Pair { "c" } { "B" }) None) ] - location: 12 (remaining gas: 1039963.169 units remaining) - [ (Pair { "c" } { "B" }) @parameter ] + [ (Pair { "c" } { "B" }) ] - location: 13 (remaining gas: 1039963.159 units remaining) - [ (Pair { "c" } { "B" }) @parameter - (Pair { "c" } { "B" }) @parameter ] + [ (Pair { "c" } { "B" }) + (Pair { "c" } { "B" }) ] - location: 14 (remaining gas: 1039963.149 units remaining) [ { "c" } - (Pair { "c" } { "B" }) @parameter ] + (Pair { "c" } { "B" }) ] - location: 15 (remaining gas: 1039963.134 units remaining) - [ (Pair { "c" } { "B" }) @parameter ] + [ (Pair { "c" } { "B" }) ] - location: 17 (remaining gas: 1039963.124 units remaining) [ { "B" } ] - location: 15 (remaining gas: 1039963.094 units remaining) @@ -33,7 +33,7 @@ trace {} { "B" } ] - location: 21 (remaining gas: 1039962.864 units remaining) - [ "c" @elt + [ "c" {} { "B" } ] - location: 23 (remaining gas: 1039962.849 units remaining) @@ -44,7 +44,7 @@ trace (Pair "c" {}) { "B" } ] - location: 25 (remaining gas: 1039962.829 units remaining) - [ "c" @elt + [ "c" (Pair "c" {}) { "B" } ] - location: 26 (remaining gas: 1039962.814 units remaining) @@ -54,16 +54,16 @@ trace [ {} { "B" } ] - location: 26 (remaining gas: 1039962.774 units remaining) - [ "c" @elt + [ "c" {} { "B" } ] - location: 29 (remaining gas: 1039962.764 units remaining) [ True - "c" @elt + "c" {} { "B" } ] - location: 32 (remaining gas: 1039962.754 units remaining) - [ "c" @elt + [ "c" True {} { "B" } ] @@ -88,7 +88,7 @@ trace [ { "B" } (Pair { "c" } True) ] - location: 40 (remaining gas: 1039962.494 units remaining) - [ "B" @elt + [ "B" (Pair { "c" } True) ] - location: 42 (remaining gas: 1039962.479 units remaining) [ (Pair "B" { "c" } True) ] @@ -100,7 +100,7 @@ trace (Pair "B" { "c" } True) (Pair "B" { "c" } True) ] - location: 45 (remaining gas: 1039962.449 units remaining) - [ "B" @elt + [ "B" (Pair "B" { "c" } True) (Pair "B" { "c" } True) ] - location: 46 (remaining gas: 1039962.434 units remaining) @@ -126,7 +126,7 @@ trace { "c" } True ] - location: 46 (remaining gas: 1039962.309 units remaining) - [ "B" @elt + [ "B" { "c" } { "c" } True ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair {} {})-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair {} {})-(Some True)].out index 72f0411975..aaaa1e9142 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair {} {})-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair {} {})-(Some True)].out @@ -10,15 +10,15 @@ trace - location: 12 (remaining gas: 1039963.427 units remaining) [ (Pair (Pair {} {}) None) ] - location: 12 (remaining gas: 1039963.417 units remaining) - [ (Pair {} {}) @parameter ] + [ (Pair {} {}) ] - location: 13 (remaining gas: 1039963.407 units remaining) - [ (Pair {} {}) @parameter - (Pair {} {}) @parameter ] + [ (Pair {} {}) + (Pair {} {}) ] - location: 14 (remaining gas: 1039963.397 units remaining) [ {} - (Pair {} {}) @parameter ] + (Pair {} {}) ] - location: 15 (remaining gas: 1039963.382 units remaining) - [ (Pair {} {}) @parameter ] + [ (Pair {} {}) ] - location: 17 (remaining gas: 1039963.372 units remaining) [ {} ] - location: 15 (remaining gas: 1039963.342 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contract.tz-Unit-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contract.tz-Unit-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" index 0b17bfce66..fa78a318c1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contract.tz-Unit-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contract.tz-Unit-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" @@ -10,13 +10,13 @@ trace - location: 7 (remaining gas: 1039340.345 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" Unit) ] - location: 7 (remaining gas: 1039340.335 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @parameter ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 8 (remaining gas: 1039340.085 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter.contract ] + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 11 (remaining gas: 1039340.075 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @parameter.contract.some ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 11 (remaining gas: 1039340.060 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @parameter.contract.some ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 17 (remaining gas: 1039340.050 units remaining) [ ] - location: 18 (remaining gas: 1039340.040 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[create_contract.tz-None-Unit-(Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[create_contract.tz-None-Unit-(Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" index 972ac54980..d19c0feb31 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[create_contract.tz-None-Unit-(Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[create_contract.tz-None-Unit-(Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" @@ -20,11 +20,11 @@ emitted operations - location: 9 (remaining gas: 1039984.174 units remaining) [ Unit ] - location: 10 (remaining gas: 1039984.159 units remaining) - [ 50000 @amount + [ 50000 Unit ] - location: 11 (remaining gas: 1039984.144 units remaining) [ None - 50000 @amount + 50000 Unit ] - location: 13 (remaining gas: 1039983.538 units remaining) [ 0x011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600000002d08603000000001c02000000170500036c0501036c050202000000080317053d036d034200000002030b diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair \"1970-01-01T00:03:20Z\" \"19.90e9215d17.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair \"1970-01-01T00:03:20Z\" \"19.90e9215d17.out" index 5478dabbcc..66ca6f53cf 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair \"1970-01-01T00:03:20Z\" \"19.90e9215d17.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair \"1970-01-01T00:03:20Z\" \"19.90e9215d17.out" @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039991.353 units remaining) [ (Pair (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") 111) ] - location: 9 (remaining gas: 1039991.343 units remaining) - [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] - location: 10 (remaining gas: 1039991.333 units remaining) - [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") @parameter - (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") + (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] - location: 11 (remaining gas: 1039991.323 units remaining) [ "1970-01-01T00:03:20Z" - (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") @parameter ] + (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] - location: 12 (remaining gas: 1039991.308 units remaining) - [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] - location: 14 (remaining gas: 1039991.298 units remaining) [ "1970-01-01T00:00:00Z" ] - location: 12 (remaining gas: 1039991.268 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 0)-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 0)-0].out index a772e0dfe5..a433c1e26d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 0)-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 0)-0].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039991.553 units remaining) [ (Pair (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") 111) ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") @parameter - (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") + (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] - location: 11 (remaining gas: 1039991.523 units remaining) [ "1970-01-01T00:00:00Z" - (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") @parameter ] + (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] - location: 14 (remaining gas: 1039991.498 units remaining) [ "1970-01-01T00:00:00Z" ] - location: 12 (remaining gas: 1039991.468 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 1)--1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 1)--1].out index 3d5e098350..0c2965f5dd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 1)--1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 1)--1].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039991.553 units remaining) [ (Pair (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") 111) ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") @parameter ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") @parameter - (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") @parameter ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") + (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] - location: 11 (remaining gas: 1039991.523 units remaining) [ "1970-01-01T00:00:00Z" - (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") @parameter ] + (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") @parameter ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] - location: 14 (remaining gas: 1039991.498 units remaining) [ "1970-01-01T00:00:01Z" ] - location: 12 (remaining gas: 1039991.468 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 1 0)-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 1 0)-1].out index 117d98909c..0c31e3da2c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 1 0)-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 1 0)-1].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039991.553 units remaining) [ (Pair (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") 111) ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") @parameter - (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") + (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] - location: 11 (remaining gas: 1039991.523 units remaining) [ "1970-01-01T00:00:01Z" - (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") @parameter ] + (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") @parameter ] + [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] - location: 14 (remaining gas: 1039991.498 units remaining) [ "1970-01-01T00:00:00Z" ] - location: 12 (remaining gas: 1039991.468 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 17 (Pair 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 17 (Pair 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out index c025a73031..bc3fd2b091 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 17 (Pair 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 17 (Pair 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out @@ -10,107 +10,107 @@ trace - location: 24 (remaining gas: 1039868.707 units remaining) [ (Pair (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) Unit) ] - location: 24 (remaining gas: 1039868.697 units remaining) - [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 25 (remaining gas: 1039868.687 units remaining) - [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 27 (remaining gas: 1039868.677 units remaining) [ 17 (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 28 (remaining gas: 1039868.662 units remaining) [ (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 30 (remaining gas: 1039868.652 units remaining) [ 16 (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 28 (remaining gas: 1039868.622 units remaining) [ 17 16 (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 31 (remaining gas: 1039868.574 units remaining) [ (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 34 (remaining gas: 1039868.564 units remaining) [ 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 31 (remaining gas: 1039868.539 units remaining) [ 16 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 31 (remaining gas: 1039868.529 units remaining) [ 17 16 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 31 (remaining gas: 1039868.529 units remaining) [ 17 16 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.480 units remaining) [ (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 38 (remaining gas: 1039868.470 units remaining) [ 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.445 units remaining) [ 15 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.435 units remaining) [ 16 15 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.425 units remaining) [ 17 16 15 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.425 units remaining) [ 17 16 15 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.374 units remaining) [ (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 42 (remaining gas: 1039868.364 units remaining) [ 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.339 units remaining) [ 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.329 units remaining) [ 15 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.319 units remaining) [ 16 15 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.309 units remaining) [ 17 16 @@ -118,7 +118,7 @@ trace 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.309 units remaining) [ 17 16 @@ -126,32 +126,32 @@ trace 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.257 units remaining) [ (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 46 (remaining gas: 1039868.247 units remaining) [ 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.222 units remaining) [ 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.212 units remaining) [ 14 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.202 units remaining) [ 15 14 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.192 units remaining) [ 16 15 @@ -159,7 +159,7 @@ trace 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.182 units remaining) [ 17 16 @@ -168,7 +168,7 @@ trace 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.182 units remaining) [ 17 16 @@ -177,32 +177,32 @@ trace 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.128 units remaining) [ (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 50 (remaining gas: 1039868.118 units remaining) [ 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.093 units remaining) [ 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.083 units remaining) [ 13 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.073 units remaining) [ 14 13 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.063 units remaining) [ 15 14 @@ -210,7 +210,7 @@ trace 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.053 units remaining) [ 16 15 @@ -219,7 +219,7 @@ trace 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.043 units remaining) [ 17 16 @@ -229,7 +229,7 @@ trace 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.043 units remaining) [ 17 16 @@ -239,32 +239,32 @@ trace 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.988 units remaining) [ (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 54 (remaining gas: 1039867.978 units remaining) [ 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.953 units remaining) [ 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.943 units remaining) [ 12 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.933 units remaining) [ 13 12 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.923 units remaining) [ 14 13 @@ -272,7 +272,7 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.913 units remaining) [ 15 14 @@ -281,7 +281,7 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.903 units remaining) [ 16 15 @@ -291,7 +291,7 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.893 units remaining) [ 17 16 @@ -302,7 +302,7 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.893 units remaining) [ 17 16 @@ -313,32 +313,32 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.835 units remaining) [ (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 58 (remaining gas: 1039867.825 units remaining) [ 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.800 units remaining) [ 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.790 units remaining) [ 11 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.780 units remaining) [ 12 11 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.770 units remaining) [ 13 12 @@ -346,7 +346,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.760 units remaining) [ 14 13 @@ -355,7 +355,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.750 units remaining) [ 15 14 @@ -365,7 +365,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.740 units remaining) [ 16 15 @@ -376,7 +376,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.730 units remaining) [ 17 16 @@ -388,7 +388,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.730 units remaining) [ 17 16 @@ -400,32 +400,32 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.671 units remaining) [ (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 62 (remaining gas: 1039867.661 units remaining) [ 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.636 units remaining) [ 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.626 units remaining) [ 10 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.616 units remaining) [ 11 10 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.606 units remaining) [ 12 11 @@ -433,7 +433,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.596 units remaining) [ 13 12 @@ -442,7 +442,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.586 units remaining) [ 14 13 @@ -452,7 +452,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.576 units remaining) [ 15 14 @@ -463,7 +463,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.566 units remaining) [ 16 15 @@ -475,7 +475,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.556 units remaining) [ 17 16 @@ -488,7 +488,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.556 units remaining) [ 17 16 @@ -501,32 +501,32 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.495 units remaining) [ (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 66 (remaining gas: 1039867.485 units remaining) [ 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.460 units remaining) [ 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.450 units remaining) [ 9 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.440 units remaining) [ 10 9 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.430 units remaining) [ 11 10 @@ -534,7 +534,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.420 units remaining) [ 12 11 @@ -543,7 +543,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.410 units remaining) [ 13 12 @@ -553,7 +553,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.400 units remaining) [ 14 13 @@ -564,7 +564,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.390 units remaining) [ 15 14 @@ -576,7 +576,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.380 units remaining) [ 16 15 @@ -589,7 +589,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.370 units remaining) [ 17 16 @@ -603,7 +603,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.370 units remaining) [ 17 16 @@ -617,32 +617,32 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.308 units remaining) [ (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 70 (remaining gas: 1039867.298 units remaining) [ 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.273 units remaining) [ 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.263 units remaining) [ 8 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.253 units remaining) [ 9 8 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.243 units remaining) [ 10 9 @@ -650,7 +650,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.233 units remaining) [ 11 10 @@ -659,7 +659,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.223 units remaining) [ 12 11 @@ -669,7 +669,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.213 units remaining) [ 13 12 @@ -680,7 +680,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.203 units remaining) [ 14 13 @@ -692,7 +692,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.193 units remaining) [ 15 14 @@ -705,7 +705,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.183 units remaining) [ 16 15 @@ -719,7 +719,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.173 units remaining) [ 17 16 @@ -734,7 +734,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.173 units remaining) [ 17 16 @@ -749,32 +749,32 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.109 units remaining) [ (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 74 (remaining gas: 1039867.099 units remaining) [ 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.074 units remaining) [ 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.064 units remaining) [ 7 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.054 units remaining) [ 8 7 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.044 units remaining) [ 9 8 @@ -782,7 +782,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.034 units remaining) [ 10 9 @@ -791,7 +791,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.024 units remaining) [ 11 10 @@ -801,7 +801,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.014 units remaining) [ 12 11 @@ -812,7 +812,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.004 units remaining) [ 13 12 @@ -824,7 +824,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.994 units remaining) [ 14 13 @@ -837,7 +837,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.984 units remaining) [ 15 14 @@ -851,7 +851,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.974 units remaining) [ 16 15 @@ -866,7 +866,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.964 units remaining) [ 17 16 @@ -882,7 +882,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.964 units remaining) [ 17 16 @@ -898,32 +898,32 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.899 units remaining) [ (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 78 (remaining gas: 1039866.889 units remaining) [ 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.864 units remaining) [ 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.854 units remaining) [ 6 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.844 units remaining) [ 7 6 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.834 units remaining) [ 8 7 @@ -931,7 +931,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.824 units remaining) [ 9 8 @@ -940,7 +940,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.814 units remaining) [ 10 9 @@ -950,7 +950,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.804 units remaining) [ 11 10 @@ -961,7 +961,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.794 units remaining) [ 12 11 @@ -973,7 +973,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.784 units remaining) [ 13 12 @@ -986,7 +986,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.774 units remaining) [ 14 13 @@ -1000,7 +1000,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.764 units remaining) [ 15 14 @@ -1015,7 +1015,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.754 units remaining) [ 16 15 @@ -1031,7 +1031,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.744 units remaining) [ 17 16 @@ -1048,7 +1048,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.744 units remaining) [ 17 16 @@ -1065,32 +1065,32 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.677 units remaining) [ (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 82 (remaining gas: 1039866.667 units remaining) [ 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.642 units remaining) [ 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.632 units remaining) [ 5 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.622 units remaining) [ 6 5 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.612 units remaining) [ 7 6 @@ -1098,7 +1098,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.602 units remaining) [ 8 7 @@ -1107,7 +1107,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.592 units remaining) [ 9 8 @@ -1117,7 +1117,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.582 units remaining) [ 10 9 @@ -1128,7 +1128,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.572 units remaining) [ 11 10 @@ -1140,7 +1140,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.562 units remaining) [ 12 11 @@ -1153,7 +1153,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.552 units remaining) [ 13 12 @@ -1167,7 +1167,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.542 units remaining) [ 14 13 @@ -1182,7 +1182,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.532 units remaining) [ 15 14 @@ -1198,7 +1198,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.522 units remaining) [ 16 15 @@ -1215,7 +1215,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.512 units remaining) [ 17 16 @@ -1233,7 +1233,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.512 units remaining) [ 17 16 @@ -1251,32 +1251,32 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.444 units remaining) [ (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 86 (remaining gas: 1039866.434 units remaining) [ 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.409 units remaining) [ 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.399 units remaining) [ 4 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.389 units remaining) [ 5 4 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.379 units remaining) [ 6 5 @@ -1284,7 +1284,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.369 units remaining) [ 7 6 @@ -1293,7 +1293,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.359 units remaining) [ 8 7 @@ -1303,7 +1303,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.349 units remaining) [ 9 8 @@ -1314,7 +1314,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.339 units remaining) [ 10 9 @@ -1326,7 +1326,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.329 units remaining) [ 11 10 @@ -1339,7 +1339,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.319 units remaining) [ 12 11 @@ -1353,7 +1353,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.309 units remaining) [ 13 12 @@ -1368,7 +1368,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.299 units remaining) [ 14 13 @@ -1384,7 +1384,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.289 units remaining) [ 15 14 @@ -1401,7 +1401,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.279 units remaining) [ 16 15 @@ -1419,7 +1419,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.269 units remaining) [ 17 16 @@ -1438,7 +1438,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.269 units remaining) [ 17 16 @@ -1457,7 +1457,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 87 (remaining gas: 1039866.209 units remaining) [ 17 16 @@ -1476,7 +1476,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 89 (remaining gas: 1039866.143 units remaining) [ 16 17 @@ -1495,7 +1495,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 91 (remaining gas: 1039866.070 units remaining) [ 15 16 @@ -1514,7 +1514,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 93 (remaining gas: 1039865.991 units remaining) [ 14 15 @@ -1533,7 +1533,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 95 (remaining gas: 1039865.904 units remaining) [ 13 14 @@ -1552,7 +1552,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 97 (remaining gas: 1039865.811 units remaining) [ 12 13 @@ -1571,7 +1571,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 99 (remaining gas: 1039865.711 units remaining) [ 11 12 @@ -1590,7 +1590,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 101 (remaining gas: 1039865.605 units remaining) [ 10 11 @@ -1609,7 +1609,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 103 (remaining gas: 1039865.491 units remaining) [ 9 10 @@ -1628,7 +1628,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 105 (remaining gas: 1039865.371 units remaining) [ 8 9 @@ -1647,7 +1647,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 107 (remaining gas: 1039865.244 units remaining) [ 7 8 @@ -1666,7 +1666,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 109 (remaining gas: 1039865.111 units remaining) [ 6 7 @@ -1685,7 +1685,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 111 (remaining gas: 1039864.970 units remaining) [ 5 6 @@ -1704,7 +1704,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 113 (remaining gas: 1039864.823 units remaining) [ 4 5 @@ -1723,7 +1723,7 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 115 (remaining gas: 1039864.669 units remaining) [ 3 4 @@ -1742,7 +1742,7 @@ trace 17 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 117 (remaining gas: 1039864.509 units remaining) [ 2 3 @@ -1761,7 +1761,7 @@ trace 16 17 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 119 (remaining gas: 1039864.341 units remaining) [ 1 2 @@ -1780,7 +1780,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 121 (remaining gas: 1039864.281 units remaining) [ 1 2 @@ -1799,7 +1799,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 123 (remaining gas: 1039864.215 units remaining) [ 2 1 @@ -1818,7 +1818,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 125 (remaining gas: 1039864.142 units remaining) [ 3 2 @@ -1837,7 +1837,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 127 (remaining gas: 1039864.063 units remaining) [ 4 3 @@ -1856,7 +1856,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 129 (remaining gas: 1039863.976 units remaining) [ 5 4 @@ -1875,7 +1875,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 131 (remaining gas: 1039863.883 units remaining) [ 6 5 @@ -1894,7 +1894,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 133 (remaining gas: 1039863.783 units remaining) [ 7 6 @@ -1913,7 +1913,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 135 (remaining gas: 1039863.677 units remaining) [ 8 7 @@ -1932,7 +1932,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 137 (remaining gas: 1039863.563 units remaining) [ 9 8 @@ -1951,7 +1951,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 139 (remaining gas: 1039863.443 units remaining) [ 10 9 @@ -1970,7 +1970,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 141 (remaining gas: 1039863.316 units remaining) [ 11 10 @@ -1989,7 +1989,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 143 (remaining gas: 1039863.183 units remaining) [ 12 11 @@ -2008,7 +2008,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 145 (remaining gas: 1039863.042 units remaining) [ 13 12 @@ -2027,7 +2027,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 147 (remaining gas: 1039862.895 units remaining) [ 14 13 @@ -2046,7 +2046,7 @@ trace 15 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 149 (remaining gas: 1039862.741 units remaining) [ 15 14 @@ -2065,7 +2065,7 @@ trace 1 16 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 151 (remaining gas: 1039862.581 units remaining) [ 16 15 @@ -2084,7 +2084,7 @@ trace 2 1 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 153 (remaining gas: 1039862.413 units remaining) [ 17 16 @@ -2103,36 +2103,36 @@ trace 3 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.345 units remaining) [ 2 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 159 (remaining gas: 1039862.330 units remaining) [ (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.305 units remaining) [ 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.295 units remaining) [ 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.285 units remaining) [ 5 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.275 units remaining) [ 6 5 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.265 units remaining) [ 7 6 @@ -2140,7 +2140,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.255 units remaining) [ 8 7 @@ -2149,7 +2149,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.245 units remaining) [ 9 8 @@ -2159,7 +2159,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.235 units remaining) [ 10 9 @@ -2170,7 +2170,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.225 units remaining) [ 11 10 @@ -2182,7 +2182,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.215 units remaining) [ 12 11 @@ -2195,7 +2195,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.205 units remaining) [ 13 12 @@ -2209,7 +2209,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.195 units remaining) [ 14 13 @@ -2224,7 +2224,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.185 units remaining) [ 15 14 @@ -2240,7 +2240,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.175 units remaining) [ 16 15 @@ -2257,7 +2257,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.165 units remaining) [ 17 16 @@ -2275,7 +2275,7 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.165 units remaining) [ 17 16 @@ -2293,36 +2293,36 @@ trace 4 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.098 units remaining) [ 3 (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 163 (remaining gas: 1039862.083 units remaining) [ (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.058 units remaining) [ 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.048 units remaining) [ 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.038 units remaining) [ 6 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.028 units remaining) [ 7 6 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.018 units remaining) [ 8 7 @@ -2330,7 +2330,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.008 units remaining) [ 9 8 @@ -2339,7 +2339,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.998 units remaining) [ 10 9 @@ -2349,7 +2349,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.988 units remaining) [ 11 10 @@ -2360,7 +2360,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.978 units remaining) [ 12 11 @@ -2372,7 +2372,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.968 units remaining) [ 13 12 @@ -2385,7 +2385,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.958 units remaining) [ 14 13 @@ -2399,7 +2399,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.948 units remaining) [ 15 14 @@ -2414,7 +2414,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.938 units remaining) [ 16 15 @@ -2430,7 +2430,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.928 units remaining) [ 17 16 @@ -2447,7 +2447,7 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.928 units remaining) [ 17 16 @@ -2464,36 +2464,36 @@ trace 5 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.863 units remaining) [ 4 (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 167 (remaining gas: 1039861.848 units remaining) [ (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.823 units remaining) [ 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.813 units remaining) [ 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.803 units remaining) [ 7 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.793 units remaining) [ 8 7 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.783 units remaining) [ 9 8 @@ -2501,7 +2501,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.773 units remaining) [ 10 9 @@ -2510,7 +2510,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.763 units remaining) [ 11 10 @@ -2520,7 +2520,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.753 units remaining) [ 12 11 @@ -2531,7 +2531,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.743 units remaining) [ 13 12 @@ -2543,7 +2543,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.733 units remaining) [ 14 13 @@ -2556,7 +2556,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.723 units remaining) [ 15 14 @@ -2570,7 +2570,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.713 units remaining) [ 16 15 @@ -2585,7 +2585,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.703 units remaining) [ 17 16 @@ -2601,7 +2601,7 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.703 units remaining) [ 17 16 @@ -2617,36 +2617,36 @@ trace 6 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.639 units remaining) [ 5 (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 171 (remaining gas: 1039861.624 units remaining) [ (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.599 units remaining) [ 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.589 units remaining) [ 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.579 units remaining) [ 8 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.569 units remaining) [ 9 8 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.559 units remaining) [ 10 9 @@ -2654,7 +2654,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.549 units remaining) [ 11 10 @@ -2663,7 +2663,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.539 units remaining) [ 12 11 @@ -2673,7 +2673,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.529 units remaining) [ 13 12 @@ -2684,7 +2684,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.519 units remaining) [ 14 13 @@ -2696,7 +2696,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.509 units remaining) [ 15 14 @@ -2709,7 +2709,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.499 units remaining) [ 16 15 @@ -2723,7 +2723,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.489 units remaining) [ 17 16 @@ -2738,7 +2738,7 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.489 units remaining) [ 17 16 @@ -2753,36 +2753,36 @@ trace 7 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.427 units remaining) [ 6 (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 175 (remaining gas: 1039861.412 units remaining) [ (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.387 units remaining) [ 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.377 units remaining) [ 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.367 units remaining) [ 9 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.357 units remaining) [ 10 9 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.347 units remaining) [ 11 10 @@ -2790,7 +2790,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.337 units remaining) [ 12 11 @@ -2799,7 +2799,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.327 units remaining) [ 13 12 @@ -2809,7 +2809,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.317 units remaining) [ 14 13 @@ -2820,7 +2820,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.307 units remaining) [ 15 14 @@ -2832,7 +2832,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.297 units remaining) [ 16 15 @@ -2845,7 +2845,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.287 units remaining) [ 17 16 @@ -2859,7 +2859,7 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.287 units remaining) [ 17 16 @@ -2873,36 +2873,36 @@ trace 8 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.226 units remaining) [ 7 (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 179 (remaining gas: 1039861.211 units remaining) [ (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.186 units remaining) [ 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.176 units remaining) [ 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.166 units remaining) [ 10 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.156 units remaining) [ 11 10 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.146 units remaining) [ 12 11 @@ -2910,7 +2910,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.136 units remaining) [ 13 12 @@ -2919,7 +2919,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.126 units remaining) [ 14 13 @@ -2929,7 +2929,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.116 units remaining) [ 15 14 @@ -2940,7 +2940,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.106 units remaining) [ 16 15 @@ -2952,7 +2952,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.096 units remaining) [ 17 16 @@ -2965,7 +2965,7 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.096 units remaining) [ 17 16 @@ -2978,36 +2978,36 @@ trace 9 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039861.037 units remaining) [ 8 (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 183 (remaining gas: 1039861.022 units remaining) [ (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.997 units remaining) [ 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.987 units remaining) [ 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.977 units remaining) [ 11 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.967 units remaining) [ 12 11 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.957 units remaining) [ 13 12 @@ -3015,7 +3015,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.947 units remaining) [ 14 13 @@ -3024,7 +3024,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.937 units remaining) [ 15 14 @@ -3034,7 +3034,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.927 units remaining) [ 16 15 @@ -3045,7 +3045,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.917 units remaining) [ 17 16 @@ -3057,7 +3057,7 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.917 units remaining) [ 17 16 @@ -3069,36 +3069,36 @@ trace 10 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.859 units remaining) [ 9 (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 187 (remaining gas: 1039860.844 units remaining) [ (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.819 units remaining) [ 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.809 units remaining) [ 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.799 units remaining) [ 12 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.789 units remaining) [ 13 12 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.779 units remaining) [ 14 13 @@ -3106,7 +3106,7 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.769 units remaining) [ 15 14 @@ -3115,7 +3115,7 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.759 units remaining) [ 16 15 @@ -3125,7 +3125,7 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.749 units remaining) [ 17 16 @@ -3136,7 +3136,7 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.749 units remaining) [ 17 16 @@ -3147,36 +3147,36 @@ trace 11 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.694 units remaining) [ 10 (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 191 (remaining gas: 1039860.679 units remaining) [ (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.654 units remaining) [ 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.644 units remaining) [ 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.634 units remaining) [ 13 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.624 units remaining) [ 14 13 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.614 units remaining) [ 15 14 @@ -3184,7 +3184,7 @@ trace 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.604 units remaining) [ 16 15 @@ -3193,7 +3193,7 @@ trace 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.594 units remaining) [ 17 16 @@ -3203,7 +3203,7 @@ trace 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.594 units remaining) [ 17 16 @@ -3213,36 +3213,36 @@ trace 12 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.540 units remaining) [ 11 (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 195 (remaining gas: 1039860.525 units remaining) [ (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.500 units remaining) [ 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.490 units remaining) [ 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.480 units remaining) [ 14 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.470 units remaining) [ 15 14 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.460 units remaining) [ 16 15 @@ -3250,7 +3250,7 @@ trace 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.450 units remaining) [ 17 16 @@ -3259,7 +3259,7 @@ trace 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.450 units remaining) [ 17 16 @@ -3268,36 +3268,36 @@ trace 13 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.398 units remaining) [ 12 (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 199 (remaining gas: 1039860.383 units remaining) [ (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.358 units remaining) [ 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.348 units remaining) [ 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.338 units remaining) [ 15 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.328 units remaining) [ 16 15 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.318 units remaining) [ 17 16 @@ -3305,7 +3305,7 @@ trace 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.318 units remaining) [ 17 16 @@ -3313,106 +3313,106 @@ trace 14 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.267 units remaining) [ 13 (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 203 (remaining gas: 1039860.252 units remaining) [ (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.227 units remaining) [ 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.217 units remaining) [ 15 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.207 units remaining) [ 16 15 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.197 units remaining) [ 17 16 15 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.197 units remaining) [ 17 16 15 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.148 units remaining) [ 14 (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 207 (remaining gas: 1039860.133 units remaining) [ (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.108 units remaining) [ 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.098 units remaining) [ 16 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.088 units remaining) [ 17 16 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.088 units remaining) [ 17 16 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 208 (remaining gas: 1039860.040 units remaining) [ 15 (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 211 (remaining gas: 1039860.025 units remaining) [ (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 208 (remaining gas: 1039860 units remaining) [ 16 (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 208 (remaining gas: 1039859.990 units remaining) [ 17 16 (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 208 (remaining gas: 1039859.990 units remaining) [ 17 16 (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 212 (remaining gas: 1039859.975 units remaining) [ 16 (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 214 (remaining gas: 1039859.960 units remaining) [ (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 212 (remaining gas: 1039859.930 units remaining) [ 17 (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 215 (remaining gas: 1039859.915 units remaining) [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) @parameter ] + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 218 (remaining gas: 1039859.160 units remaining) [ 0 ] - location: 219 (remaining gas: 1039859.145 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 2 (Pair 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 2 (Pair 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out index 7626b5532b..67c801c086 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 2 (Pair 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 2 (Pair 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out @@ -10,107 +10,107 @@ trace - location: 24 (remaining gas: 1039868.707 units remaining) [ (Pair (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) Unit) ] - location: 24 (remaining gas: 1039868.697 units remaining) - [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 25 (remaining gas: 1039868.687 units remaining) - [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 27 (remaining gas: 1039868.677 units remaining) [ 2 (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 28 (remaining gas: 1039868.662 units remaining) [ (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 30 (remaining gas: 1039868.652 units remaining) [ 3 (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 28 (remaining gas: 1039868.622 units remaining) [ 2 3 (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 31 (remaining gas: 1039868.574 units remaining) [ (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 34 (remaining gas: 1039868.564 units remaining) [ 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 31 (remaining gas: 1039868.539 units remaining) [ 3 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 31 (remaining gas: 1039868.529 units remaining) [ 2 3 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 31 (remaining gas: 1039868.529 units remaining) [ 2 3 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.480 units remaining) [ (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 38 (remaining gas: 1039868.470 units remaining) [ 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.445 units remaining) [ 12 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.435 units remaining) [ 3 12 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.425 units remaining) [ 2 3 12 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.425 units remaining) [ 2 3 12 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.374 units remaining) [ (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 42 (remaining gas: 1039868.364 units remaining) [ 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.339 units remaining) [ 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.329 units remaining) [ 12 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.319 units remaining) [ 3 12 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.309 units remaining) [ 2 3 @@ -118,7 +118,7 @@ trace 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.309 units remaining) [ 2 3 @@ -126,32 +126,32 @@ trace 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.257 units remaining) [ (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 46 (remaining gas: 1039868.247 units remaining) [ 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.222 units remaining) [ 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.212 units remaining) [ 16 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.202 units remaining) [ 12 16 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.192 units remaining) [ 3 12 @@ -159,7 +159,7 @@ trace 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.182 units remaining) [ 2 3 @@ -168,7 +168,7 @@ trace 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.182 units remaining) [ 2 3 @@ -177,32 +177,32 @@ trace 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.128 units remaining) [ (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 50 (remaining gas: 1039868.118 units remaining) [ 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.093 units remaining) [ 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.083 units remaining) [ 10 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.073 units remaining) [ 16 10 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.063 units remaining) [ 12 16 @@ -210,7 +210,7 @@ trace 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.053 units remaining) [ 3 12 @@ -219,7 +219,7 @@ trace 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.043 units remaining) [ 2 3 @@ -229,7 +229,7 @@ trace 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.043 units remaining) [ 2 3 @@ -239,32 +239,32 @@ trace 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.988 units remaining) [ (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 54 (remaining gas: 1039867.978 units remaining) [ 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.953 units remaining) [ 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.943 units remaining) [ 14 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.933 units remaining) [ 10 14 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.923 units remaining) [ 16 10 @@ -272,7 +272,7 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.913 units remaining) [ 12 16 @@ -281,7 +281,7 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.903 units remaining) [ 3 12 @@ -291,7 +291,7 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.893 units remaining) [ 2 3 @@ -302,7 +302,7 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.893 units remaining) [ 2 3 @@ -313,32 +313,32 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.835 units remaining) [ (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 58 (remaining gas: 1039867.825 units remaining) [ 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.800 units remaining) [ 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.790 units remaining) [ 19 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.780 units remaining) [ 14 19 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.770 units remaining) [ 10 14 @@ -346,7 +346,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.760 units remaining) [ 16 10 @@ -355,7 +355,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.750 units remaining) [ 12 16 @@ -365,7 +365,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.740 units remaining) [ 3 12 @@ -376,7 +376,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.730 units remaining) [ 2 3 @@ -388,7 +388,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.730 units remaining) [ 2 3 @@ -400,32 +400,32 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.671 units remaining) [ (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 62 (remaining gas: 1039867.661 units remaining) [ 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.636 units remaining) [ 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.626 units remaining) [ 9 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.616 units remaining) [ 19 9 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.606 units remaining) [ 14 19 @@ -433,7 +433,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.596 units remaining) [ 10 14 @@ -442,7 +442,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.586 units remaining) [ 16 10 @@ -452,7 +452,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.576 units remaining) [ 12 16 @@ -463,7 +463,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.566 units remaining) [ 3 12 @@ -475,7 +475,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.556 units remaining) [ 2 3 @@ -488,7 +488,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.556 units remaining) [ 2 3 @@ -501,32 +501,32 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.495 units remaining) [ (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 66 (remaining gas: 1039867.485 units remaining) [ 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.460 units remaining) [ 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.450 units remaining) [ 18 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.440 units remaining) [ 9 18 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.430 units remaining) [ 19 9 @@ -534,7 +534,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.420 units remaining) [ 14 19 @@ -543,7 +543,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.410 units remaining) [ 10 14 @@ -553,7 +553,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.400 units remaining) [ 16 10 @@ -564,7 +564,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.390 units remaining) [ 12 16 @@ -576,7 +576,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.380 units remaining) [ 3 12 @@ -589,7 +589,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.370 units remaining) [ 2 3 @@ -603,7 +603,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.370 units remaining) [ 2 3 @@ -617,32 +617,32 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.308 units remaining) [ (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 70 (remaining gas: 1039867.298 units remaining) [ 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.273 units remaining) [ 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.263 units remaining) [ 6 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.253 units remaining) [ 18 6 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.243 units remaining) [ 9 18 @@ -650,7 +650,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.233 units remaining) [ 19 9 @@ -659,7 +659,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.223 units remaining) [ 14 19 @@ -669,7 +669,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.213 units remaining) [ 10 14 @@ -680,7 +680,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.203 units remaining) [ 16 10 @@ -692,7 +692,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.193 units remaining) [ 12 16 @@ -705,7 +705,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.183 units remaining) [ 3 12 @@ -719,7 +719,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.173 units remaining) [ 2 3 @@ -734,7 +734,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.173 units remaining) [ 2 3 @@ -749,32 +749,32 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.109 units remaining) [ (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 74 (remaining gas: 1039867.099 units remaining) [ 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.074 units remaining) [ 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.064 units remaining) [ 8 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.054 units remaining) [ 6 8 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.044 units remaining) [ 18 6 @@ -782,7 +782,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.034 units remaining) [ 9 18 @@ -791,7 +791,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.024 units remaining) [ 19 9 @@ -801,7 +801,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.014 units remaining) [ 14 19 @@ -812,7 +812,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.004 units remaining) [ 10 14 @@ -824,7 +824,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.994 units remaining) [ 16 10 @@ -837,7 +837,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.984 units remaining) [ 12 16 @@ -851,7 +851,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.974 units remaining) [ 3 12 @@ -866,7 +866,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.964 units remaining) [ 2 3 @@ -882,7 +882,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.964 units remaining) [ 2 3 @@ -898,32 +898,32 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.899 units remaining) [ (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 78 (remaining gas: 1039866.889 units remaining) [ 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.864 units remaining) [ 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.854 units remaining) [ 11 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.844 units remaining) [ 8 11 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.834 units remaining) [ 6 8 @@ -931,7 +931,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.824 units remaining) [ 18 6 @@ -940,7 +940,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.814 units remaining) [ 9 18 @@ -950,7 +950,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.804 units remaining) [ 19 9 @@ -961,7 +961,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.794 units remaining) [ 14 19 @@ -973,7 +973,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.784 units remaining) [ 10 14 @@ -986,7 +986,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.774 units remaining) [ 16 10 @@ -1000,7 +1000,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.764 units remaining) [ 12 16 @@ -1015,7 +1015,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.754 units remaining) [ 3 12 @@ -1031,7 +1031,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.744 units remaining) [ 2 3 @@ -1048,7 +1048,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.744 units remaining) [ 2 3 @@ -1065,32 +1065,32 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.677 units remaining) [ (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 82 (remaining gas: 1039866.667 units remaining) [ 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.642 units remaining) [ 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.632 units remaining) [ 4 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.622 units remaining) [ 11 4 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.612 units remaining) [ 8 11 @@ -1098,7 +1098,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.602 units remaining) [ 6 8 @@ -1107,7 +1107,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.592 units remaining) [ 18 6 @@ -1117,7 +1117,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.582 units remaining) [ 9 18 @@ -1128,7 +1128,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.572 units remaining) [ 19 9 @@ -1140,7 +1140,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.562 units remaining) [ 14 19 @@ -1153,7 +1153,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.552 units remaining) [ 10 14 @@ -1167,7 +1167,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.542 units remaining) [ 16 10 @@ -1182,7 +1182,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.532 units remaining) [ 12 16 @@ -1198,7 +1198,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.522 units remaining) [ 3 12 @@ -1215,7 +1215,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.512 units remaining) [ 2 3 @@ -1233,7 +1233,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.512 units remaining) [ 2 3 @@ -1251,32 +1251,32 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.444 units remaining) [ (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 86 (remaining gas: 1039866.434 units remaining) [ 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.409 units remaining) [ 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.399 units remaining) [ 13 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.389 units remaining) [ 4 13 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.379 units remaining) [ 11 4 @@ -1284,7 +1284,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.369 units remaining) [ 8 11 @@ -1293,7 +1293,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.359 units remaining) [ 6 8 @@ -1303,7 +1303,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.349 units remaining) [ 18 6 @@ -1314,7 +1314,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.339 units remaining) [ 9 18 @@ -1326,7 +1326,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.329 units remaining) [ 19 9 @@ -1339,7 +1339,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.319 units remaining) [ 14 19 @@ -1353,7 +1353,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.309 units remaining) [ 10 14 @@ -1368,7 +1368,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.299 units remaining) [ 16 10 @@ -1384,7 +1384,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.289 units remaining) [ 12 16 @@ -1401,7 +1401,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.279 units remaining) [ 3 12 @@ -1419,7 +1419,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.269 units remaining) [ 2 3 @@ -1438,7 +1438,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.269 units remaining) [ 2 3 @@ -1457,7 +1457,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 87 (remaining gas: 1039866.209 units remaining) [ 2 3 @@ -1476,7 +1476,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 89 (remaining gas: 1039866.143 units remaining) [ 3 2 @@ -1495,7 +1495,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 91 (remaining gas: 1039866.070 units remaining) [ 12 3 @@ -1514,7 +1514,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 93 (remaining gas: 1039865.991 units remaining) [ 16 12 @@ -1533,7 +1533,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 95 (remaining gas: 1039865.904 units remaining) [ 10 16 @@ -1552,7 +1552,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 97 (remaining gas: 1039865.811 units remaining) [ 14 10 @@ -1571,7 +1571,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 99 (remaining gas: 1039865.711 units remaining) [ 19 14 @@ -1590,7 +1590,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 101 (remaining gas: 1039865.605 units remaining) [ 9 19 @@ -1609,7 +1609,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 103 (remaining gas: 1039865.491 units remaining) [ 18 9 @@ -1628,7 +1628,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 105 (remaining gas: 1039865.371 units remaining) [ 6 18 @@ -1647,7 +1647,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 107 (remaining gas: 1039865.244 units remaining) [ 8 6 @@ -1666,7 +1666,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 109 (remaining gas: 1039865.111 units remaining) [ 11 8 @@ -1685,7 +1685,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 111 (remaining gas: 1039864.970 units remaining) [ 4 11 @@ -1704,7 +1704,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 113 (remaining gas: 1039864.823 units remaining) [ 13 4 @@ -1723,7 +1723,7 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 115 (remaining gas: 1039864.669 units remaining) [ 15 13 @@ -1742,7 +1742,7 @@ trace 2 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 117 (remaining gas: 1039864.509 units remaining) [ 5 15 @@ -1761,7 +1761,7 @@ trace 3 2 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 119 (remaining gas: 1039864.341 units remaining) [ 1 5 @@ -1780,7 +1780,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 121 (remaining gas: 1039864.281 units remaining) [ 1 5 @@ -1799,7 +1799,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 123 (remaining gas: 1039864.215 units remaining) [ 5 1 @@ -1818,7 +1818,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 125 (remaining gas: 1039864.142 units remaining) [ 15 5 @@ -1837,7 +1837,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 127 (remaining gas: 1039864.063 units remaining) [ 13 15 @@ -1856,7 +1856,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 129 (remaining gas: 1039863.976 units remaining) [ 4 13 @@ -1875,7 +1875,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 131 (remaining gas: 1039863.883 units remaining) [ 11 4 @@ -1894,7 +1894,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 133 (remaining gas: 1039863.783 units remaining) [ 8 11 @@ -1913,7 +1913,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 135 (remaining gas: 1039863.677 units remaining) [ 6 8 @@ -1932,7 +1932,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 137 (remaining gas: 1039863.563 units remaining) [ 18 6 @@ -1951,7 +1951,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 139 (remaining gas: 1039863.443 units remaining) [ 9 18 @@ -1970,7 +1970,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 141 (remaining gas: 1039863.316 units remaining) [ 19 9 @@ -1989,7 +1989,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 143 (remaining gas: 1039863.183 units remaining) [ 14 19 @@ -2008,7 +2008,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 145 (remaining gas: 1039863.042 units remaining) [ 10 14 @@ -2027,7 +2027,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 147 (remaining gas: 1039862.895 units remaining) [ 16 10 @@ -2046,7 +2046,7 @@ trace 12 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 149 (remaining gas: 1039862.741 units remaining) [ 12 16 @@ -2065,7 +2065,7 @@ trace 1 3 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 151 (remaining gas: 1039862.581 units remaining) [ 3 12 @@ -2084,7 +2084,7 @@ trace 5 1 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 153 (remaining gas: 1039862.413 units remaining) [ 2 3 @@ -2103,36 +2103,36 @@ trace 15 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.345 units remaining) [ 5 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 159 (remaining gas: 1039862.330 units remaining) [ (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.305 units remaining) [ 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.295 units remaining) [ 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.285 units remaining) [ 4 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.275 units remaining) [ 11 4 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.265 units remaining) [ 8 11 @@ -2140,7 +2140,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.255 units remaining) [ 6 8 @@ -2149,7 +2149,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.245 units remaining) [ 18 6 @@ -2159,7 +2159,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.235 units remaining) [ 9 18 @@ -2170,7 +2170,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.225 units remaining) [ 19 9 @@ -2182,7 +2182,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.215 units remaining) [ 14 19 @@ -2195,7 +2195,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.205 units remaining) [ 10 14 @@ -2209,7 +2209,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.195 units remaining) [ 16 10 @@ -2224,7 +2224,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.185 units remaining) [ 12 16 @@ -2240,7 +2240,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.175 units remaining) [ 3 12 @@ -2257,7 +2257,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.165 units remaining) [ 2 3 @@ -2275,7 +2275,7 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.165 units remaining) [ 2 3 @@ -2293,36 +2293,36 @@ trace 13 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.098 units remaining) [ 15 (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 163 (remaining gas: 1039862.083 units remaining) [ (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.058 units remaining) [ 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.048 units remaining) [ 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.038 units remaining) [ 11 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.028 units remaining) [ 8 11 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.018 units remaining) [ 6 8 @@ -2330,7 +2330,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.008 units remaining) [ 18 6 @@ -2339,7 +2339,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.998 units remaining) [ 9 18 @@ -2349,7 +2349,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.988 units remaining) [ 19 9 @@ -2360,7 +2360,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.978 units remaining) [ 14 19 @@ -2372,7 +2372,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.968 units remaining) [ 10 14 @@ -2385,7 +2385,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.958 units remaining) [ 16 10 @@ -2399,7 +2399,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.948 units remaining) [ 12 16 @@ -2414,7 +2414,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.938 units remaining) [ 3 12 @@ -2430,7 +2430,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.928 units remaining) [ 2 3 @@ -2447,7 +2447,7 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.928 units remaining) [ 2 3 @@ -2464,36 +2464,36 @@ trace 4 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.863 units remaining) [ 13 (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 167 (remaining gas: 1039861.848 units remaining) [ (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.823 units remaining) [ 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.813 units remaining) [ 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.803 units remaining) [ 8 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.793 units remaining) [ 6 8 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.783 units remaining) [ 18 6 @@ -2501,7 +2501,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.773 units remaining) [ 9 18 @@ -2510,7 +2510,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.763 units remaining) [ 19 9 @@ -2520,7 +2520,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.753 units remaining) [ 14 19 @@ -2531,7 +2531,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.743 units remaining) [ 10 14 @@ -2543,7 +2543,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.733 units remaining) [ 16 10 @@ -2556,7 +2556,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.723 units remaining) [ 12 16 @@ -2570,7 +2570,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.713 units remaining) [ 3 12 @@ -2585,7 +2585,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.703 units remaining) [ 2 3 @@ -2601,7 +2601,7 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.703 units remaining) [ 2 3 @@ -2617,36 +2617,36 @@ trace 11 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.639 units remaining) [ 4 (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 171 (remaining gas: 1039861.624 units remaining) [ (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.599 units remaining) [ 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.589 units remaining) [ 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.579 units remaining) [ 6 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.569 units remaining) [ 18 6 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.559 units remaining) [ 9 18 @@ -2654,7 +2654,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.549 units remaining) [ 19 9 @@ -2663,7 +2663,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.539 units remaining) [ 14 19 @@ -2673,7 +2673,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.529 units remaining) [ 10 14 @@ -2684,7 +2684,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.519 units remaining) [ 16 10 @@ -2696,7 +2696,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.509 units remaining) [ 12 16 @@ -2709,7 +2709,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.499 units remaining) [ 3 12 @@ -2723,7 +2723,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.489 units remaining) [ 2 3 @@ -2738,7 +2738,7 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.489 units remaining) [ 2 3 @@ -2753,36 +2753,36 @@ trace 8 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.427 units remaining) [ 11 (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 175 (remaining gas: 1039861.412 units remaining) [ (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.387 units remaining) [ 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.377 units remaining) [ 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.367 units remaining) [ 18 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.357 units remaining) [ 9 18 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.347 units remaining) [ 19 9 @@ -2790,7 +2790,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.337 units remaining) [ 14 19 @@ -2799,7 +2799,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.327 units remaining) [ 10 14 @@ -2809,7 +2809,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.317 units remaining) [ 16 10 @@ -2820,7 +2820,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.307 units remaining) [ 12 16 @@ -2832,7 +2832,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.297 units remaining) [ 3 12 @@ -2845,7 +2845,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.287 units remaining) [ 2 3 @@ -2859,7 +2859,7 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.287 units remaining) [ 2 3 @@ -2873,36 +2873,36 @@ trace 6 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.226 units remaining) [ 8 (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 179 (remaining gas: 1039861.211 units remaining) [ (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.186 units remaining) [ 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.176 units remaining) [ 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.166 units remaining) [ 9 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.156 units remaining) [ 19 9 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.146 units remaining) [ 14 19 @@ -2910,7 +2910,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.136 units remaining) [ 10 14 @@ -2919,7 +2919,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.126 units remaining) [ 16 10 @@ -2929,7 +2929,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.116 units remaining) [ 12 16 @@ -2940,7 +2940,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.106 units remaining) [ 3 12 @@ -2952,7 +2952,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.096 units remaining) [ 2 3 @@ -2965,7 +2965,7 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.096 units remaining) [ 2 3 @@ -2978,36 +2978,36 @@ trace 18 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039861.037 units remaining) [ 6 (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 183 (remaining gas: 1039861.022 units remaining) [ (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.997 units remaining) [ 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.987 units remaining) [ 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.977 units remaining) [ 19 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.967 units remaining) [ 14 19 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.957 units remaining) [ 10 14 @@ -3015,7 +3015,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.947 units remaining) [ 16 10 @@ -3024,7 +3024,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.937 units remaining) [ 12 16 @@ -3034,7 +3034,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.927 units remaining) [ 3 12 @@ -3045,7 +3045,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.917 units remaining) [ 2 3 @@ -3057,7 +3057,7 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.917 units remaining) [ 2 3 @@ -3069,36 +3069,36 @@ trace 9 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.859 units remaining) [ 18 (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 187 (remaining gas: 1039860.844 units remaining) [ (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.819 units remaining) [ 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.809 units remaining) [ 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.799 units remaining) [ 14 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.789 units remaining) [ 10 14 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.779 units remaining) [ 16 10 @@ -3106,7 +3106,7 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.769 units remaining) [ 12 16 @@ -3115,7 +3115,7 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.759 units remaining) [ 3 12 @@ -3125,7 +3125,7 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.749 units remaining) [ 2 3 @@ -3136,7 +3136,7 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.749 units remaining) [ 2 3 @@ -3147,36 +3147,36 @@ trace 19 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.694 units remaining) [ 9 (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 191 (remaining gas: 1039860.679 units remaining) [ (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.654 units remaining) [ 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.644 units remaining) [ 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.634 units remaining) [ 10 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.624 units remaining) [ 16 10 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.614 units remaining) [ 12 16 @@ -3184,7 +3184,7 @@ trace 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.604 units remaining) [ 3 12 @@ -3193,7 +3193,7 @@ trace 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.594 units remaining) [ 2 3 @@ -3203,7 +3203,7 @@ trace 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.594 units remaining) [ 2 3 @@ -3213,36 +3213,36 @@ trace 14 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.540 units remaining) [ 19 (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 195 (remaining gas: 1039860.525 units remaining) [ (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.500 units remaining) [ 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.490 units remaining) [ 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.480 units remaining) [ 16 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.470 units remaining) [ 12 16 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.460 units remaining) [ 3 12 @@ -3250,7 +3250,7 @@ trace 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.450 units remaining) [ 2 3 @@ -3259,7 +3259,7 @@ trace 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.450 units remaining) [ 2 3 @@ -3268,36 +3268,36 @@ trace 10 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.398 units remaining) [ 14 (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 199 (remaining gas: 1039860.383 units remaining) [ (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.358 units remaining) [ 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.348 units remaining) [ 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.338 units remaining) [ 12 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.328 units remaining) [ 3 12 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.318 units remaining) [ 2 3 @@ -3305,7 +3305,7 @@ trace 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.318 units remaining) [ 2 3 @@ -3313,106 +3313,106 @@ trace 16 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.267 units remaining) [ 10 (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 203 (remaining gas: 1039860.252 units remaining) [ (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.227 units remaining) [ 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.217 units remaining) [ 12 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.207 units remaining) [ 3 12 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.197 units remaining) [ 2 3 12 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.197 units remaining) [ 2 3 12 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.148 units remaining) [ 16 (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 207 (remaining gas: 1039860.133 units remaining) [ (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.108 units remaining) [ 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.098 units remaining) [ 3 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.088 units remaining) [ 2 3 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.088 units remaining) [ 2 3 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 208 (remaining gas: 1039860.040 units remaining) [ 12 (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 211 (remaining gas: 1039860.025 units remaining) [ (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 208 (remaining gas: 1039860 units remaining) [ 3 (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 208 (remaining gas: 1039859.990 units remaining) [ 2 3 (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 208 (remaining gas: 1039859.990 units remaining) [ 2 3 (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 212 (remaining gas: 1039859.975 units remaining) [ 3 (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 214 (remaining gas: 1039859.960 units remaining) [ (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 212 (remaining gas: 1039859.930 units remaining) [ 2 (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 215 (remaining gas: 1039859.915 units remaining) [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) @parameter ] + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 218 (remaining gas: 1039859.160 units remaining) [ 0 ] - location: 219 (remaining gas: 1039859.145 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dign.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dign.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out index 78489da734..e1d10184f3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dign.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dign.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out @@ -10,7 +10,7 @@ trace - location: 15 (remaining gas: 1039987.170 units remaining) [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] - location: 15 (remaining gas: 1039987.160 units remaining) - [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) @parameter ] + [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] - location: 16 (remaining gas: 1039987.150 units remaining) [ (Pair (Pair (Pair 1 2) 3) 4) 5 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out index 21760dc1b1..b98b2ee007 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out @@ -10,7 +10,7 @@ trace - location: 11 (remaining gas: 1039990.758 units remaining) [ (Pair (Pair 1 1) 0 0) ] - location: 11 (remaining gas: 1039990.748 units remaining) - [ (Pair 1 1) @parameter ] + [ (Pair 1 1) ] - location: 12 (remaining gas: 1039990.738 units remaining) [ 1 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out index adcc139b32..615354dba8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out @@ -10,7 +10,7 @@ trace - location: 11 (remaining gas: 1039990.758 units remaining) [ (Pair (Pair 15 9) 0 0) ] - location: 11 (remaining gas: 1039990.748 units remaining) - [ (Pair 15 9) @parameter ] + [ (Pair 15 9) ] - location: 12 (remaining gas: 1039990.738 units remaining) [ 15 9 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dipn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dipn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out index 007a996048..a4e1e7b566 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dipn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dipn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out @@ -10,7 +10,7 @@ trace - location: 15 (remaining gas: 1039986.010 units remaining) [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] - location: 15 (remaining gas: 1039986 units remaining) - [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) @parameter ] + [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] - location: 16 (remaining gas: 1039985.990 units remaining) [ (Pair (Pair (Pair 1 2) 3) 4) 5 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dropn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dropn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out index 9aea3cf105..991924cbeb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dropn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dropn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out @@ -10,7 +10,7 @@ trace - location: 15 (remaining gas: 1039990.347 units remaining) [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] - location: 15 (remaining gas: 1039990.337 units remaining) - [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) @parameter ] + [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] - location: 16 (remaining gas: 1039990.327 units remaining) [ (Pair (Pair (Pair 1 2) 3) 4) 5 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dugn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dugn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out index a5468a9f88..fd9a9d3586 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dugn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dugn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out @@ -10,7 +10,7 @@ trace - location: 15 (remaining gas: 1039987.936 units remaining) [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] - location: 15 (remaining gas: 1039987.926 units remaining) - [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) @parameter ] + [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] - location: 16 (remaining gas: 1039987.916 units remaining) [ (Pair (Pair (Pair 1 2) 3) 4) 5 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out index 9ce24ab139..c46413e02a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out @@ -10,90 +10,90 @@ trace - location: 25 (remaining gas: 1039969.963 units remaining) [ (Pair (Pair -8 2) None None None None) ] - location: 25 (remaining gas: 1039969.953 units remaining) - [ (Pair -8 2) @parameter ] + [ (Pair -8 2) ] - location: 26 (remaining gas: 1039969.943 units remaining) - [ (Pair -8 2) @parameter - (Pair -8 2) @parameter ] + [ (Pair -8 2) + (Pair -8 2) ] - location: 27 (remaining gas: 1039969.933 units remaining) [ -8 2 - (Pair -8 2) @parameter ] + (Pair -8 2) ] - location: 28 (remaining gas: 1039969.908 units remaining) [ 8 2 - (Pair -8 2) @parameter ] + (Pair -8 2) ] - location: 29 (remaining gas: 1039969.893 units remaining) [ 2 - (Pair -8 2) @parameter ] + (Pair -8 2) ] - location: 31 (remaining gas: 1039969.868 units remaining) [ 2 - (Pair -8 2) @parameter ] + (Pair -8 2) ] - location: 29 (remaining gas: 1039969.838 units remaining) [ 8 2 - (Pair -8 2) @parameter ] + (Pair -8 2) ] - location: 32 (remaining gas: 1039969.698 units remaining) [ (Some (Pair 4 0)) - (Pair -8 2) @parameter ] + (Pair -8 2) ] - location: 33 (remaining gas: 1039969.688 units remaining) - [ (Pair -8 2) @parameter + [ (Pair -8 2) (Some (Pair 4 0)) ] - location: 34 (remaining gas: 1039969.678 units remaining) - [ (Pair -8 2) @parameter - (Pair -8 2) @parameter + [ (Pair -8 2) + (Pair -8 2) (Some (Pair 4 0)) ] - location: 35 (remaining gas: 1039969.668 units remaining) [ -8 2 - (Pair -8 2) @parameter + (Pair -8 2) (Some (Pair 4 0)) ] - location: 36 (remaining gas: 1039969.643 units remaining) [ 8 2 - (Pair -8 2) @parameter + (Pair -8 2) (Some (Pair 4 0)) ] - location: 37 (remaining gas: 1039969.503 units remaining) [ (Some (Pair 4 0)) - (Pair -8 2) @parameter + (Pair -8 2) (Some (Pair 4 0)) ] - location: 38 (remaining gas: 1039969.493 units remaining) - [ (Pair -8 2) @parameter + [ (Pair -8 2) (Some (Pair 4 0)) (Some (Pair 4 0)) ] - location: 39 (remaining gas: 1039969.483 units remaining) - [ (Pair -8 2) @parameter - (Pair -8 2) @parameter + [ (Pair -8 2) + (Pair -8 2) (Some (Pair 4 0)) (Some (Pair 4 0)) ] - location: 40 (remaining gas: 1039969.473 units remaining) [ -8 2 - (Pair -8 2) @parameter + (Pair -8 2) (Some (Pair 4 0)) (Some (Pair 4 0)) ] - location: 41 (remaining gas: 1039969.458 units remaining) [ 2 - (Pair -8 2) @parameter + (Pair -8 2) (Some (Pair 4 0)) (Some (Pair 4 0)) ] - location: 43 (remaining gas: 1039969.433 units remaining) [ 2 - (Pair -8 2) @parameter + (Pair -8 2) (Some (Pair 4 0)) (Some (Pair 4 0)) ] - location: 41 (remaining gas: 1039969.403 units remaining) [ -8 2 - (Pair -8 2) @parameter + (Pair -8 2) (Some (Pair 4 0)) (Some (Pair 4 0)) ] - location: 44 (remaining gas: 1039969.263 units remaining) [ (Some (Pair -4 0)) - (Pair -8 2) @parameter + (Pair -8 2) (Some (Pair 4 0)) (Some (Pair 4 0)) ] - location: 45 (remaining gas: 1039969.253 units remaining) - [ (Pair -8 2) @parameter + [ (Pair -8 2) (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 -3)-(Pair (.3caea50555.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 -3)-(Pair (.3caea50555.out index 626382a6b9..295db124ac 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 -3)-(Pair (.3caea50555.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 -3)-(Pair (.3caea50555.out @@ -10,90 +10,90 @@ trace - location: 25 (remaining gas: 1039969.963 units remaining) [ (Pair (Pair 10 -3) None None None None) ] - location: 25 (remaining gas: 1039969.953 units remaining) - [ (Pair 10 -3) @parameter ] + [ (Pair 10 -3) ] - location: 26 (remaining gas: 1039969.943 units remaining) - [ (Pair 10 -3) @parameter - (Pair 10 -3) @parameter ] + [ (Pair 10 -3) + (Pair 10 -3) ] - location: 27 (remaining gas: 1039969.933 units remaining) [ 10 -3 - (Pair 10 -3) @parameter ] + (Pair 10 -3) ] - location: 28 (remaining gas: 1039969.908 units remaining) [ 10 -3 - (Pair 10 -3) @parameter ] + (Pair 10 -3) ] - location: 29 (remaining gas: 1039969.893 units remaining) [ -3 - (Pair 10 -3) @parameter ] + (Pair 10 -3) ] - location: 31 (remaining gas: 1039969.868 units remaining) [ 3 - (Pair 10 -3) @parameter ] + (Pair 10 -3) ] - location: 29 (remaining gas: 1039969.838 units remaining) [ 10 3 - (Pair 10 -3) @parameter ] + (Pair 10 -3) ] - location: 32 (remaining gas: 1039969.698 units remaining) [ (Some (Pair 3 1)) - (Pair 10 -3) @parameter ] + (Pair 10 -3) ] - location: 33 (remaining gas: 1039969.688 units remaining) - [ (Pair 10 -3) @parameter + [ (Pair 10 -3) (Some (Pair 3 1)) ] - location: 34 (remaining gas: 1039969.678 units remaining) - [ (Pair 10 -3) @parameter - (Pair 10 -3) @parameter + [ (Pair 10 -3) + (Pair 10 -3) (Some (Pair 3 1)) ] - location: 35 (remaining gas: 1039969.668 units remaining) [ 10 -3 - (Pair 10 -3) @parameter + (Pair 10 -3) (Some (Pair 3 1)) ] - location: 36 (remaining gas: 1039969.643 units remaining) [ 10 -3 - (Pair 10 -3) @parameter + (Pair 10 -3) (Some (Pair 3 1)) ] - location: 37 (remaining gas: 1039969.503 units remaining) [ (Some (Pair -3 1)) - (Pair 10 -3) @parameter + (Pair 10 -3) (Some (Pair 3 1)) ] - location: 38 (remaining gas: 1039969.493 units remaining) - [ (Pair 10 -3) @parameter + [ (Pair 10 -3) (Some (Pair -3 1)) (Some (Pair 3 1)) ] - location: 39 (remaining gas: 1039969.483 units remaining) - [ (Pair 10 -3) @parameter - (Pair 10 -3) @parameter + [ (Pair 10 -3) + (Pair 10 -3) (Some (Pair -3 1)) (Some (Pair 3 1)) ] - location: 40 (remaining gas: 1039969.473 units remaining) [ 10 -3 - (Pair 10 -3) @parameter + (Pair 10 -3) (Some (Pair -3 1)) (Some (Pair 3 1)) ] - location: 41 (remaining gas: 1039969.458 units remaining) [ -3 - (Pair 10 -3) @parameter + (Pair 10 -3) (Some (Pair -3 1)) (Some (Pair 3 1)) ] - location: 43 (remaining gas: 1039969.433 units remaining) [ 3 - (Pair 10 -3) @parameter + (Pair 10 -3) (Some (Pair -3 1)) (Some (Pair 3 1)) ] - location: 41 (remaining gas: 1039969.403 units remaining) [ 10 3 - (Pair 10 -3) @parameter + (Pair 10 -3) (Some (Pair -3 1)) (Some (Pair 3 1)) ] - location: 44 (remaining gas: 1039969.263 units remaining) [ (Some (Pair 3 1)) - (Pair 10 -3) @parameter + (Pair 10 -3) (Some (Pair -3 1)) (Some (Pair 3 1)) ] - location: 45 (remaining gas: 1039969.253 units remaining) - [ (Pair 10 -3) @parameter + [ (Pair 10 -3) (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 0)-(Pair No.f9448c04fb.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 0)-(Pair No.f9448c04fb.out index fb582e1366..0c9837dca3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 0)-(Pair No.f9448c04fb.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 0)-(Pair No.f9448c04fb.out @@ -10,90 +10,90 @@ trace - location: 25 (remaining gas: 1039969.963 units remaining) [ (Pair (Pair 10 0) None None None None) ] - location: 25 (remaining gas: 1039969.953 units remaining) - [ (Pair 10 0) @parameter ] + [ (Pair 10 0) ] - location: 26 (remaining gas: 1039969.943 units remaining) - [ (Pair 10 0) @parameter - (Pair 10 0) @parameter ] + [ (Pair 10 0) + (Pair 10 0) ] - location: 27 (remaining gas: 1039969.933 units remaining) [ 10 0 - (Pair 10 0) @parameter ] + (Pair 10 0) ] - location: 28 (remaining gas: 1039969.908 units remaining) [ 10 0 - (Pair 10 0) @parameter ] + (Pair 10 0) ] - location: 29 (remaining gas: 1039969.893 units remaining) [ 0 - (Pair 10 0) @parameter ] + (Pair 10 0) ] - location: 31 (remaining gas: 1039969.868 units remaining) [ 0 - (Pair 10 0) @parameter ] + (Pair 10 0) ] - location: 29 (remaining gas: 1039969.838 units remaining) [ 10 0 - (Pair 10 0) @parameter ] + (Pair 10 0) ] - location: 32 (remaining gas: 1039969.698 units remaining) [ None - (Pair 10 0) @parameter ] + (Pair 10 0) ] - location: 33 (remaining gas: 1039969.688 units remaining) - [ (Pair 10 0) @parameter + [ (Pair 10 0) None ] - location: 34 (remaining gas: 1039969.678 units remaining) - [ (Pair 10 0) @parameter - (Pair 10 0) @parameter + [ (Pair 10 0) + (Pair 10 0) None ] - location: 35 (remaining gas: 1039969.668 units remaining) [ 10 0 - (Pair 10 0) @parameter + (Pair 10 0) None ] - location: 36 (remaining gas: 1039969.643 units remaining) [ 10 0 - (Pair 10 0) @parameter + (Pair 10 0) None ] - location: 37 (remaining gas: 1039969.503 units remaining) [ None - (Pair 10 0) @parameter + (Pair 10 0) None ] - location: 38 (remaining gas: 1039969.493 units remaining) - [ (Pair 10 0) @parameter + [ (Pair 10 0) None None ] - location: 39 (remaining gas: 1039969.483 units remaining) - [ (Pair 10 0) @parameter - (Pair 10 0) @parameter + [ (Pair 10 0) + (Pair 10 0) None None ] - location: 40 (remaining gas: 1039969.473 units remaining) [ 10 0 - (Pair 10 0) @parameter + (Pair 10 0) None None ] - location: 41 (remaining gas: 1039969.458 units remaining) [ 0 - (Pair 10 0) @parameter + (Pair 10 0) None None ] - location: 43 (remaining gas: 1039969.433 units remaining) [ 0 - (Pair 10 0) @parameter + (Pair 10 0) None None ] - location: 41 (remaining gas: 1039969.403 units remaining) [ 10 0 - (Pair 10 0) @parameter + (Pair 10 0) None None ] - location: 44 (remaining gas: 1039969.263 units remaining) [ None - (Pair 10 0) @parameter + (Pair 10 0) None None ] - location: 45 (remaining gas: 1039969.253 units remaining) - [ (Pair 10 0) @parameter + [ (Pair 10 0) None None None ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 0))-(Left None)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 0))-(Left None)].out index d8a0048518..d03218b925 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 0))-(Left None)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 0))-(Left None)].out @@ -10,7 +10,7 @@ trace - location: 19 (remaining gas: 1039981.901 units remaining) [ (Pair (Pair 10 (Left 0)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Left 0)) @parameter ] + [ (Pair 10 (Left 0)) ] - location: 20 (remaining gas: 1039981.881 units remaining) [ 10 (Left 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 10))-(Left (So.f782cc1dec.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 10))-(Left (So.f782cc1dec.out index b9c1cac3b8..0b8dd05a2c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 10))-(Left (So.f782cc1dec.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 10))-(Left (So.f782cc1dec.out @@ -10,7 +10,7 @@ trace - location: 19 (remaining gas: 1039981.901 units remaining) [ (Pair (Pair 10 (Left 10)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Left 10)) @parameter ] + [ (Pair 10 (Left 10)) ] - location: 20 (remaining gas: 1039981.881 units remaining) [ 10 (Left 10) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 3))-(Left (Som.016b4db96c.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 3))-(Left (Som.016b4db96c.out index 8adc56d6e4..f656456cff 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 3))-(Left (Som.016b4db96c.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 3))-(Left (Som.016b4db96c.out @@ -10,7 +10,7 @@ trace - location: 19 (remaining gas: 1039981.901 units remaining) [ (Pair (Pair 10 (Left 3)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Left 3)) @parameter ] + [ (Pair 10 (Left 3)) ] - location: 20 (remaining gas: 1039981.881 units remaining) [ 10 (Left 3) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 0))-(Right None)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 0))-(Right None)].out index dcca0592d2..0891eabab0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 0))-(Right None)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 0))-(Right None)].out @@ -10,7 +10,7 @@ trace - location: 19 (remaining gas: 1039981.901 units remaining) [ (Pair (Pair 10 (Right 0)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Right 0)) @parameter ] + [ (Pair 10 (Right 0)) ] - location: 20 (remaining gas: 1039981.881 units remaining) [ 10 (Right 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 10))-(Right (.e705a30e07.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 10))-(Right (.e705a30e07.out index 1184780d0e..0ea0e02fe8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 10))-(Right (.e705a30e07.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 10))-(Right (.e705a30e07.out @@ -10,7 +10,7 @@ trace - location: 19 (remaining gas: 1039981.901 units remaining) [ (Pair (Pair 10 (Right 10)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Right 10)) @parameter ] + [ (Pair 10 (Right 10)) ] - location: 20 (remaining gas: 1039981.881 units remaining) [ 10 (Right 10) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 3))-(Right (S.44485eda6a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 3))-(Right (S.44485eda6a.out index 1d586277c1..6bc3b0df79 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 3))-(Right (S.44485eda6a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 3))-(Right (S.44485eda6a.out @@ -10,7 +10,7 @@ trace - location: 19 (remaining gas: 1039981.901 units remaining) [ (Pair (Pair 10 (Right 3)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Right 3)) @parameter ] + [ (Pair 10 (Right 3)) ] - location: 20 (remaining gas: 1039981.881 units remaining) [ 10 (Right 3) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 5 (Right 10))-(Right (S.8ab987af15.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 5 (Right 10))-(Right (S.8ab987af15.out index 40874a2737..63713ec9ab 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 5 (Right 10))-(Right (S.8ab987af15.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 5 (Right 10))-(Right (S.8ab987af15.out @@ -10,7 +10,7 @@ trace - location: 19 (remaining gas: 1039981.901 units remaining) [ (Pair (Pair 5 (Right 10)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 5 (Right 10)) @parameter ] + [ (Pair 5 (Right 10)) ] - location: 20 (remaining gas: 1039981.881 units remaining) [ 5 (Right 10) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" index 61b1f0576e..3c63fd948e 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" @@ -10,29 +10,29 @@ trace - location: 7 (remaining gas: 1039987.134 units remaining) [ (Pair "" "?") ] - location: 7 (remaining gas: 1039987.124 units remaining) - [ "" @parameter ] + [ "" ] - location: 8 (remaining gas: 1039987.114 units remaining) [ { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } - "" @parameter ] + "" ] - location: 22 (remaining gas: 1039987.104 units remaining) - [ "" @parameter + [ "" { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } ] - location: 12 (remaining gas: 1039987.094 units remaining) [ "_abc" - "" @arg ] + "" ] - location: 15 (remaining gas: 1039987.079 units remaining) [ {} "_abc" - "" @arg ] + "" ] - location: 17 (remaining gas: 1039987.069 units remaining) [ "_abc" {} - "" @arg ] + "" ] - location: 18 (remaining gas: 1039987.054 units remaining) [ { "_abc" } - "" @arg ] + "" ] - location: 19 (remaining gas: 1039987.044 units remaining) - [ "" @arg + [ "" { "_abc" } ] - location: 20 (remaining gas: 1039987.029 units remaining) [ { "" ; "_abc" } ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"test\"-\"test_abc\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"test\"-\"test_abc\"].out" index e6ba28d59b..809363aa4c 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"test\"-\"test_abc\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"test\"-\"test_abc\"].out" @@ -10,29 +10,29 @@ trace - location: 7 (remaining gas: 1039987.094 units remaining) [ (Pair "test" "?") ] - location: 7 (remaining gas: 1039987.084 units remaining) - [ "test" @parameter ] + [ "test" ] - location: 8 (remaining gas: 1039987.074 units remaining) [ { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } - "test" @parameter ] + "test" ] - location: 22 (remaining gas: 1039987.064 units remaining) - [ "test" @parameter + [ "test" { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } ] - location: 12 (remaining gas: 1039987.054 units remaining) [ "_abc" - "test" @arg ] + "test" ] - location: 15 (remaining gas: 1039987.039 units remaining) [ {} "_abc" - "test" @arg ] + "test" ] - location: 17 (remaining gas: 1039987.029 units remaining) [ "_abc" {} - "test" @arg ] + "test" ] - location: 18 (remaining gas: 1039987.014 units remaining) [ { "_abc" } - "test" @arg ] + "test" ] - location: 19 (remaining gas: 1039987.004 units remaining) - [ "test" @arg + [ "test" { "_abc" } ] - location: 20 (remaining gas: 1039986.989 units remaining) [ { "test" ; "_abc" } ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out index 6921491792..83f84401ca 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out @@ -10,21 +10,21 @@ trace - location: 8 (remaining gas: 1039991.033 units remaining) [ (Pair { 1 ; 2 ; 3 ; 4 } 111) ] - location: 8 (remaining gas: 1039991.023 units remaining) - [ { 1 ; 2 ; 3 ; 4 } @parameter ] + [ { 1 ; 2 ; 3 ; 4 } ] - location: 9 (remaining gas: 1039991.013 units remaining) - [ 1 @parameter.hd - { 2 ; 3 ; 4 } @parameter.tl ] + [ 1 + { 2 ; 3 ; 4 } ] - location: 11 (remaining gas: 1039990.998 units remaining) - [ { 2 ; 3 ; 4 } @parameter.tl ] + [ { 2 ; 3 ; 4 } ] - location: 13 (remaining gas: 1039990.988 units remaining) [ ] - location: 11 (remaining gas: 1039990.958 units remaining) - [ 1 @parameter.hd ] + [ 1 ] - location: 9 (remaining gas: 1039990.943 units remaining) - [ 1 @parameter.hd ] + [ 1 ] - location: 18 (remaining gas: 1039990.928 units remaining) [ {} - 1 @parameter.hd ] + 1 ] - location: 20 (remaining gas: 1039990.913 units remaining) [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 4 }-4].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 4 }-4].out index 63cb3e7a46..aee64d547d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 4 }-4].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 4 }-4].out @@ -10,21 +10,21 @@ trace - location: 8 (remaining gas: 1039991.333 units remaining) [ (Pair { 4 } 111) ] - location: 8 (remaining gas: 1039991.323 units remaining) - [ { 4 } @parameter ] + [ { 4 } ] - location: 9 (remaining gas: 1039991.313 units remaining) - [ 4 @parameter.hd - {} @parameter.tl ] + [ 4 + {} ] - location: 11 (remaining gas: 1039991.298 units remaining) - [ {} @parameter.tl ] + [ {} ] - location: 13 (remaining gas: 1039991.288 units remaining) [ ] - location: 11 (remaining gas: 1039991.258 units remaining) - [ 4 @parameter.hd ] + [ 4 ] - location: 9 (remaining gas: 1039991.243 units remaining) - [ 4 @parameter.hd ] + [ 4 ] - location: 18 (remaining gas: 1039991.228 units remaining) [ {} - 4 @parameter.hd ] + 4 ] - location: 20 (remaining gas: 1039991.213 units remaining) [ (Pair {} 4) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 4) {})-\"hello\"-(Pair .161d86cef6.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 4) {})-\"hello\"-(Pair .161d86cef6.out" index afafdcbd2b..80c5813fb3 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 4) {})-\"hello\"-(Pair .161d86cef6.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 4) {})-\"hello\"-(Pair .161d86cef6.out" @@ -10,15 +10,15 @@ trace - location: 13 (remaining gas: 1039989.746 units remaining) [ (Pair "hello" (Some 4) {}) ] - location: 13 (remaining gas: 1039989.736 units remaining) - [ "hello" @parameter - (Pair (Some 4) {}) @storage ] + [ "hello" + (Pair (Some 4) {}) ] - location: 14 (remaining gas: 1039989.721 units remaining) - [ (Pair (Some 4) {}) @storage ] + [ (Pair (Some 4) {}) ] - location: 16 (remaining gas: 1039989.711 units remaining) [ (Some 4) {} ] - location: 14 (remaining gas: 1039989.681 units remaining) - [ "hello" @parameter + [ "hello" (Some 4) {} ] - location: 17 (remaining gas: 1039989.496 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).684ab7e326.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).684ab7e326.out" index 22e749a743..38555de5e3 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).684ab7e326.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).684ab7e326.out" @@ -10,15 +10,15 @@ trace - location: 13 (remaining gas: 1039989.362 units remaining) [ (Pair "hi" (Some 5) { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039989.352 units remaining) - [ "hi" @parameter - (Pair (Some 5) { Elt "hello" 4 }) @storage ] + [ "hi" + (Pair (Some 5) { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039989.337 units remaining) - [ (Pair (Some 5) { Elt "hello" 4 }) @storage ] + [ (Pair (Some 5) { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039989.327 units remaining) [ (Some 5) { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039989.297 units remaining) - [ "hi" @parameter + [ "hi" (Some 5) { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039989.007 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).d49817fb83.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).d49817fb83.out" index 93e57596cd..0d59859b73 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).d49817fb83.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).d49817fb83.out" @@ -10,15 +10,15 @@ trace - location: 13 (remaining gas: 1039989.332 units remaining) [ (Pair "hello" (Some 5) { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039989.322 units remaining) - [ "hello" @parameter - (Pair (Some 5) { Elt "hello" 4 }) @storage ] + [ "hello" + (Pair (Some 5) { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039989.307 units remaining) - [ (Pair (Some 5) { Elt "hello" 4 }) @storage ] + [ (Pair (Some 5) { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039989.297 units remaining) [ (Some 5) { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039989.267 units remaining) - [ "hello" @parameter + [ "hello" (Some 5) { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039988.977 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .6900b1da14.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .6900b1da14.out" index 2c6fa2d4e2..0d516b3b87 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .6900b1da14.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .6900b1da14.out" @@ -10,15 +10,15 @@ trace - location: 13 (remaining gas: 1039989.033 units remaining) [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 13 (remaining gas: 1039989.023 units remaining) - [ "1" @parameter - (Pair None { Elt "1" 1 ; Elt "2" 2 }) @storage ] + [ "1" + (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 14 (remaining gas: 1039989.008 units remaining) - [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) @storage ] + [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 16 (remaining gas: 1039988.998 units remaining) [ None { Elt "1" 1 ; Elt "2" 2 } ] - location: 14 (remaining gas: 1039988.968 units remaining) - [ "1" @parameter + [ "1" None { Elt "1" 1 ; Elt "2" 2 } ] - location: 17 (remaining gas: 1039988.573 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .bca0ede8be.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .bca0ede8be.out" index d56a5c50c6..07bde688a1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .bca0ede8be.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .bca0ede8be.out" @@ -10,15 +10,15 @@ trace - location: 13 (remaining gas: 1039989.033 units remaining) [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 13 (remaining gas: 1039989.023 units remaining) - [ "1" @parameter - (Pair None { Elt "1" 1 ; Elt "2" 2 }) @storage ] + [ "1" + (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 14 (remaining gas: 1039989.008 units remaining) - [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) @storage ] + [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 16 (remaining gas: 1039988.998 units remaining) [ None { Elt "1" 1 ; Elt "2" 2 } ] - location: 14 (remaining gas: 1039988.968 units remaining) - [ "1" @parameter + [ "1" None { Elt "1" 1 ; Elt "2" 2 } ] - location: 17 (remaining gas: 1039988.573 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" index a82c82688e..55750ee46d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" @@ -10,15 +10,15 @@ trace - location: 13 (remaining gas: 1039989.432 units remaining) [ (Pair "hello" None { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039989.422 units remaining) - [ "hello" @parameter - (Pair None { Elt "hello" 4 }) @storage ] + [ "hello" + (Pair None { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039989.407 units remaining) - [ (Pair None { Elt "hello" 4 }) @storage ] + [ (Pair None { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039989.397 units remaining) [ None { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039989.367 units remaining) - [ "hello" @parameter + [ "hello" None { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039989.077 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None {})-\"hello\"-(Pair None {})].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None {})-\"hello\"-(Pair None {})].out" index 1065de7c27..0fe838d7a2 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None {})-\"hello\"-(Pair None {})].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None {})-\"hello\"-(Pair None {})].out" @@ -10,15 +10,15 @@ trace - location: 13 (remaining gas: 1039989.846 units remaining) [ (Pair "hello" None {}) ] - location: 13 (remaining gas: 1039989.836 units remaining) - [ "hello" @parameter - (Pair None {}) @storage ] + [ "hello" + (Pair None {}) ] - location: 14 (remaining gas: 1039989.821 units remaining) - [ (Pair None {}) @storage ] + [ (Pair None {}) ] - location: 16 (remaining gas: 1039989.811 units remaining) [ None {} ] - location: 14 (remaining gas: 1039989.781 units remaining) - [ "hello" @parameter + [ "hello" None {} ] - location: 17 (remaining gas: 1039989.596 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"1\" \"one\" ; .bc4127094e.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"1\" \"one\" ; .bc4127094e.out" index a3e8efcdde..0af169aa3a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"1\" \"one\" ; .bc4127094e.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"1\" \"one\" ; .bc4127094e.out" @@ -13,19 +13,19 @@ trace [ (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 13 (remaining gas: 1039986.527 units remaining) - [ "1" @parameter + [ "1" (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 14 (remaining gas: 1039986.512 units remaining) [ (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 17 (remaining gas: 1039986.502 units remaining) - [ (Pair None { Elt "1" "one" ; Elt "2" "two" }) @storage ] + [ (Pair None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 18 (remaining gas: 1039986.492 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } ] - location: 19 (remaining gas: 1039986.482 units remaining) [ { Elt "1" "one" ; Elt "2" "two" } { Elt "1" "one" ; Elt "2" "two" } ] - location: 14 (remaining gas: 1039986.452 units remaining) - [ "1" @parameter + [ "1" { Elt "1" "one" ; Elt "2" "two" } { Elt "1" "one" ; Elt "2" "two" } ] - location: 20 (remaining gas: 1039986.267 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"\"-(P.0c03056487.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"\"-(P.0c03056487.out" index 5e1729a8bf..23ea6d60b0 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"\"-(P.0c03056487.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"\"-(P.0c03056487.out" @@ -13,19 +13,19 @@ trace [ (Pair "" None { Elt "hello" "hi" }) (Pair "" None { Elt "hello" "hi" }) ] - location: 13 (remaining gas: 1039987.030 units remaining) - [ "" @parameter + [ "" (Pair "" None { Elt "hello" "hi" }) ] - location: 14 (remaining gas: 1039987.015 units remaining) [ (Pair "" None { Elt "hello" "hi" }) ] - location: 17 (remaining gas: 1039987.005 units remaining) - [ (Pair None { Elt "hello" "hi" }) @storage ] + [ (Pair None { Elt "hello" "hi" }) ] - location: 18 (remaining gas: 1039986.995 units remaining) [ { Elt "hello" "hi" } ] - location: 19 (remaining gas: 1039986.985 units remaining) [ { Elt "hello" "hi" } { Elt "hello" "hi" } ] - location: 14 (remaining gas: 1039986.955 units remaining) - [ "" @parameter + [ "" { Elt "hello" "hi" } { Elt "hello" "hi" } ] - location: 20 (remaining gas: 1039986.805 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"hell.cc45544c66.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"hell.cc45544c66.out" index 79981a6673..d15efb73b7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"hell.cc45544c66.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"hell.cc45544c66.out" @@ -13,19 +13,19 @@ trace [ (Pair "hello" None { Elt "hello" "hi" }) (Pair "hello" None { Elt "hello" "hi" }) ] - location: 13 (remaining gas: 1039986.980 units remaining) - [ "hello" @parameter + [ "hello" (Pair "hello" None { Elt "hello" "hi" }) ] - location: 14 (remaining gas: 1039986.965 units remaining) [ (Pair "hello" None { Elt "hello" "hi" }) ] - location: 17 (remaining gas: 1039986.955 units remaining) - [ (Pair None { Elt "hello" "hi" }) @storage ] + [ (Pair None { Elt "hello" "hi" }) ] - location: 18 (remaining gas: 1039986.945 units remaining) [ { Elt "hello" "hi" } ] - location: 19 (remaining gas: 1039986.935 units remaining) [ { Elt "hello" "hi" } { Elt "hello" "hi" } ] - location: 14 (remaining gas: 1039986.905 units remaining) - [ "hello" @parameter + [ "hello" { Elt "hello" "hi" } { Elt "hello" "hi" } ] - location: 20 (remaining gas: 1039986.755 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" index 5f22787f5f..f800fb08ec 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039668.957 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" None) ] - location: 8 (remaining gas: 1039668.947 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @parameter ] + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" ] - location: 9 (remaining gas: 1039668.292 units remaining) [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] - location: 10 (remaining gas: 1039668.277 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" index b1e4ce7ff6..a385023af5 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039668.957 units remaining) [ (Pair "edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTawUPqR8vZTAMcx61ES" None) ] - location: 8 (remaining gas: 1039668.947 units remaining) - [ "edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTawUPqR8vZTAMcx61ES" @parameter ] + [ "edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTawUPqR8vZTAMcx61ES" ] - location: 9 (remaining gas: 1039668.292 units remaining) [ "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k" ] - location: 10 (remaining gas: 1039668.277 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"12345\"-0xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"12345\"-0xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" index e392b2468b..ed0093d778 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"12345\"-0xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"12345\"-0xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" @@ -10,9 +10,9 @@ trace - location: 7 (remaining gas: 1039994.241 units remaining) [ (Pair "12345" 0x00) ] - location: 7 (remaining gas: 1039994.231 units remaining) - [ "12345" @parameter ] + [ "12345" ] - location: 8 (remaining gas: 1039993.740 units remaining) - [ 0x0501000000053132333435 @parameter.packed ] + [ 0x0501000000053132333435 ] - location: 9 (remaining gas: 1039993.298 units remaining) [ 0xb4c26c20de52a4eaf0d8a340db47ad8cb1e74049570859c9a9a3952b204c772f ] - location: 10 (remaining gas: 1039993.283 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"abcdefg\"-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"abcdefg\"-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" index 0b11155a86..3eeab4cf2a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"abcdefg\"-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"abcdefg\"-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" @@ -10,9 +10,9 @@ trace - location: 7 (remaining gas: 1039994.221 units remaining) [ (Pair "abcdefg" 0x00) ] - location: 7 (remaining gas: 1039994.211 units remaining) - [ "abcdefg" @parameter ] + [ "abcdefg" ] - location: 8 (remaining gas: 1039993.654 units remaining) - [ 0x05010000000761626364656667 @parameter.packed ] + [ 0x05010000000761626364656667 ] - location: 9 (remaining gas: 1039993.210 units remaining) [ 0x46fdbcb4ea4eadad5615cdaa17d67f783e01e21149ce2b27de497600b4cd8f4e ] - location: 10 (remaining gas: 1039993.195 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-False-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-False-(Some False)].out index 818551dc8b..65bc46d8f5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-False-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-False-(Some False)].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039991.305 units remaining) [ (Pair False None) ] - location: 8 (remaining gas: 1039991.295 units remaining) - [ False @parameter ] + [ False ] - location: 9 (remaining gas: 1039991.285 units remaining) [ ] - location: 15 (remaining gas: 1039991.275 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-True-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-True-(Some True)].out index 6b30d3dc95..ac0ecede9c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-True-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-True-(Some True)].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039991.305 units remaining) [ (Pair True None) ] - location: 8 (remaining gas: 1039991.295 units remaining) - [ True @parameter ] + [ True ] - location: 9 (remaining gas: 1039991.285 units remaining) [ ] - location: 11 (remaining gas: 1039991.275 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-(Some \"hello\")-\"hello\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-(Some \"hello\")-\"hello\"].out" index a1ace0e924..b8dfcab8f0 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-(Some \"hello\")-\"hello\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-(Some \"hello\")-\"hello\"].out" @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039992.411 units remaining) [ (Pair (Some "hello") "?") ] - location: 8 (remaining gas: 1039992.401 units remaining) - [ (Some "hello") @parameter ] + [ (Some "hello") ] - location: 10 (remaining gas: 1039992.391 units remaining) [ "hello" ] - location: 10 (remaining gas: 1039992.376 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-None-\"\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-None-\"\"].out" index 920b3103fe..c9aeb55c20 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-None-\"\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-None-\"\"].out" @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039992.575 units remaining) [ (Pair None "?") ] - location: 8 (remaining gas: 1039992.565 units remaining) - [ None @parameter ] + [ None ] - location: 10 (remaining gas: 1039992.555 units remaining) [ ] - location: 12 (remaining gas: 1039992.545 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-0-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-0-(Some 0)].out index 76e6f6aded..f7af5422bd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-0-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-0-(Some 0)].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039993.957 units remaining) [ (Pair 0 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 0 @parameter ] + [ 0 ] - location: 9 (remaining gas: 1039993.932 units remaining) [ 0 ] - location: 10 (remaining gas: 1039993.917 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-1-(Some 1)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-1-(Some 1)].out index dfb28bcb11..2daa1a980a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-1-(Some 1)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-1-(Some 1)].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039993.957 units remaining) [ (Pair 1 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 1 @parameter ] + [ 1 ] - location: 9 (remaining gas: 1039993.932 units remaining) [ 1 ] - location: 10 (remaining gas: 1039993.917 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-9999-(Some 9999)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-9999-(Some 9999)].out index 6cc138ec82..9e1c33548e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-9999-(Some 9999)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-9999-(Some 9999)].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039993.957 units remaining) [ (Pair 9999 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 9999 @parameter ] + [ 9999 ] - location: 9 (remaining gas: 1039993.932 units remaining) [ 9999 ] - location: 10 (remaining gas: 1039993.917 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[keccak.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xb6e.34c02678c9.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[keccak.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xb6e.34c02678c9.out index a33a5cc790..bcf4f56a90 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[keccak.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xb6e.34c02678c9.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[keccak.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xb6e.34c02678c9.out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039993.957 units remaining) [ (Pair 0x48656c6c6f2c20776f726c6421 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 0x48656c6c6f2c20776f726c6421 @parameter ] + [ 0x48656c6c6f2c20776f726c6421 ] - location: 9 (remaining gas: 1039992.490 units remaining) [ 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4 ] - location: 10 (remaining gas: 1039992.475 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Left True)-(Right True)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Left True)-(Right True)].out" index f652f79b32..b6314ede3c 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Left True)-(Right True)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Left True)-(Right True)].out" @@ -10,9 +10,9 @@ trace - location: 11 (remaining gas: 1039990.926 units remaining) [ (Pair (Left True) (Left "X")) ] - location: 11 (remaining gas: 1039990.916 units remaining) - [ (Left True) @parameter ] + [ (Left True) ] - location: 12 (remaining gas: 1039990.906 units remaining) - [ True @parameter.left ] + [ True ] - location: 14 (remaining gas: 1039990.891 units remaining) [ (Right True) ] - location: 12 (remaining gas: 1039990.876 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Right \"a\")-(Left \"a\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Right \"a\")-(Left \"a\")].out" index 94499ce64e..be4206f955 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Right \"a\")-(Left \"a\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Right \"a\")-(Left \"a\")].out" @@ -10,9 +10,9 @@ trace - location: 11 (remaining gas: 1039990.902 units remaining) [ (Pair (Right "a") (Left "X")) ] - location: 11 (remaining gas: 1039990.892 units remaining) - [ (Right "a") @parameter ] + [ (Right "a") ] - location: 12 (remaining gas: 1039990.882 units remaining) - [ "a" @parameter.right ] + [ "a" ] - location: 17 (remaining gas: 1039990.867 units remaining) [ (Left "a") ] - location: 12 (remaining gas: 1039990.852 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[level.tz-111-Unit-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[level.tz-111-Unit-1].out index 944c166a4c..ae0044aef7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[level.tz-111-Unit-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[level.tz-111-Unit-1].out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039994.923 units remaining) - [ 1 @level ] + [ 1 ] - location: 9 (remaining gas: 1039994.908 units remaining) [ {} - 1 @level ] + 1 ] - location: 11 (remaining gas: 1039994.893 units remaining) [ (Pair {} 1) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" index e3cf626ffd..71d9953451 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" @@ -10,11 +10,11 @@ trace - location: 8 (remaining gas: 1039992.898 units remaining) [ (Pair { "d" ; "e" ; "f" } "abc") ] - location: 8 (remaining gas: 1039992.888 units remaining) - [ { "d" ; "e" ; "f" } @parameter - "abc" @storage ] + [ { "d" ; "e" ; "f" } + "abc" ] - location: 9 (remaining gas: 1039992.878 units remaining) - [ "abc" @storage - { "d" ; "e" ; "f" } @parameter ] + [ "abc" + { "d" ; "e" ; "f" } ] - location: 10 (remaining gas: 1039992.863 units remaining) [ { "abc" ; "d" ; "e" ; "f" } ] - location: 11 (remaining gas: 1039992.723 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{}-\"abc\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{}-\"abc\"].out" index 468d01c112..bde91d38ba 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{}-\"abc\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{}-\"abc\"].out" @@ -10,11 +10,11 @@ trace - location: 8 (remaining gas: 1039993.270 units remaining) [ (Pair {} "abc") ] - location: 8 (remaining gas: 1039993.260 units remaining) - [ {} @parameter - "abc" @storage ] + [ {} + "abc" ] - location: 9 (remaining gas: 1039993.250 units remaining) - [ "abc" @storage - {} @parameter ] + [ "abc" + {} ] - location: 10 (remaining gas: 1039993.235 units remaining) [ { "abc" } ] - location: 11 (remaining gas: 1039993.125 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out index 0d192b844c..60eca6eb14 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out @@ -10,11 +10,11 @@ trace - location: 8 (remaining gas: 1039993.014 units remaining) [ (Pair { 0x00 ; 0x11 ; 0x00 } 0x) ] - location: 8 (remaining gas: 1039993.004 units remaining) - [ { 0x00 ; 0x11 ; 0x00 } @parameter - 0x @storage ] + [ { 0x00 ; 0x11 ; 0x00 } + 0x ] - location: 9 (remaining gas: 1039992.994 units remaining) - [ 0x @storage - { 0x00 ; 0x11 ; 0x00 } @parameter ] + [ 0x + { 0x00 ; 0x11 ; 0x00 } ] - location: 10 (remaining gas: 1039992.979 units remaining) [ { 0x ; 0x00 ; 0x11 ; 0x00 } ] - location: 11 (remaining gas: 1039992.839 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{}-0x].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{}-0x].out index e5d2303109..183bb53491 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{}-0x].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{}-0x].out @@ -10,11 +10,11 @@ trace - location: 8 (remaining gas: 1039993.314 units remaining) [ (Pair {} 0x) ] - location: 8 (remaining gas: 1039993.304 units remaining) - [ {} @parameter - 0x @storage ] + [ {} + 0x ] - location: 9 (remaining gas: 1039993.294 units remaining) - [ 0x @storage - {} @parameter ] + [ 0x + {} ] - location: 10 (remaining gas: 1039993.279 units remaining) [ { 0x } ] - location: 11 (remaining gas: 1039993.169 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x00ab-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x00ab-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out index bd9ff77008..30bfcfc39b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x00ab-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x00ab-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out @@ -10,11 +10,11 @@ trace - location: 8 (remaining gas: 1039993.014 units remaining) [ (Pair { 0xcd ; 0xef ; 0x00 } 0x00ab) ] - location: 8 (remaining gas: 1039993.004 units remaining) - [ { 0xcd ; 0xef ; 0x00 } @parameter - 0x00ab @storage ] + [ { 0xcd ; 0xef ; 0x00 } + 0x00ab ] - location: 9 (remaining gas: 1039992.994 units remaining) - [ 0x00ab @storage - { 0xcd ; 0xef ; 0x00 } @parameter ] + [ 0x00ab + { 0xcd ; 0xef ; 0x00 } ] - location: 10 (remaining gas: 1039992.979 units remaining) [ { 0x00ab ; 0xcd ; 0xef ; 0x00 } ] - location: 11 (remaining gas: 1039992.839 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0xabcd-{}-0xabcd].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0xabcd-{}-0xabcd].out index fb8a6d91a0..6ba8ad2d6c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0xabcd-{}-0xabcd].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0xabcd-{}-0xabcd].out @@ -10,11 +10,11 @@ trace - location: 8 (remaining gas: 1039993.314 units remaining) [ (Pair {} 0xabcd) ] - location: 8 (remaining gas: 1039993.304 units remaining) - [ {} @parameter - 0xabcd @storage ] + [ {} + 0xabcd ] - location: 9 (remaining gas: 1039993.294 units remaining) - [ 0xabcd @storage - {} @parameter ] + [ 0xabcd + {} ] - location: 10 (remaining gas: 1039993.279 units remaining) [ { 0xabcd } ] - location: 11 (remaining gas: 1039993.169 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" index 671280cc22..a0012cd4b7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" @@ -10,10 +10,10 @@ trace - location: 9 (remaining gas: 1039994.539 units remaining) [ (Pair { "1" ; "2" ; "3" } { "" }) ] - location: 9 (remaining gas: 1039994.529 units remaining) - [ { "1" ; "2" ; "3" } @parameter ] + [ { "1" ; "2" ; "3" } ] - location: 10 (remaining gas: 1039994.514 units remaining) [ {} - { "1" ; "2" ; "3" } @parameter ] + { "1" ; "2" ; "3" } ] - location: 12 (remaining gas: 1039994.499 units remaining) [ (Pair {} { "1" ; "2" ; "3" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index 7f52cf4037..fb905b75e4 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -10,10 +10,10 @@ trace - location: 9 (remaining gas: 1039994.539 units remaining) [ (Pair { "a" ; "b" ; "c" } { "" }) ] - location: 9 (remaining gas: 1039994.529 units remaining) - [ { "a" ; "b" ; "c" } @parameter ] + [ { "a" ; "b" ; "c" } ] - location: 10 (remaining gas: 1039994.514 units remaining) [ {} - { "a" ; "b" ; "c" } @parameter ] + { "a" ; "b" ; "c" } ] - location: 12 (remaining gas: 1039994.499 units remaining) [ (Pair {} { "a" ; "b" ; "c" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{}-{}].out" index 06aca68d24..1e996e5fa5 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{}-{}].out" @@ -10,10 +10,10 @@ trace - location: 9 (remaining gas: 1039994.911 units remaining) [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039994.901 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039994.886 units remaining) [ {} - {} @parameter ] + {} ] - location: 12 (remaining gas: 1039994.871 units remaining) [ (Pair {} {}) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" index bcd18ebca4..7cda833ccb 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039993.518 units remaining) [ (Pair { "1" ; "2" ; "3" } { "" }) ] - location: 9 (remaining gas: 1039993.508 units remaining) - [ { "1" ; "2" ; "3" } @parameter ] + [ { "1" ; "2" ; "3" } ] - location: 10 (remaining gas: 1039993.508 units remaining) [ "1" ] - location: 10 (remaining gas: 1039993.493 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index 09650132f0..8b5d6c57de 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039993.518 units remaining) [ (Pair { "a" ; "b" ; "c" } { "" }) ] - location: 9 (remaining gas: 1039993.508 units remaining) - [ { "a" ; "b" ; "c" } @parameter ] + [ { "a" ; "b" ; "c" } ] - location: 10 (remaining gas: 1039993.508 units remaining) [ "a" ] - location: 10 (remaining gas: 1039993.493 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{}-{}].out" index 1b1a49bc17..e8cef35019 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{}-{}].out" @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039993.890 units remaining) [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039993.880 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039993.880 units remaining) [ {} ] - location: 12 (remaining gas: 1039993.865 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out index b9bbc7467d..db1f2c635b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out @@ -10,25 +10,25 @@ trace - location: 8 (remaining gas: 1039991.873 units remaining) [ (Pair { 10 ; 2 ; 1 } 0) ] - location: 8 (remaining gas: 1039991.863 units remaining) - [ { 10 ; 2 ; 1 } @parameter ] + [ { 10 ; 2 ; 1 } ] - location: 9 (remaining gas: 1039991.853 units remaining) [ 1 - { 10 ; 2 ; 1 } @parameter ] + { 10 ; 2 ; 1 } ] - location: 12 (remaining gas: 1039991.843 units remaining) - [ { 10 ; 2 ; 1 } @parameter + [ { 10 ; 2 ; 1 } 1 ] - location: 13 (remaining gas: 1039991.843 units remaining) - [ 10 @parameter.elt + [ 10 1 ] - location: 15 (remaining gas: 1039991.739 units remaining) [ 10 ] - location: 13 (remaining gas: 1039991.724 units remaining) - [ 2 @parameter.elt + [ 2 10 ] - location: 15 (remaining gas: 1039991.620 units remaining) [ 20 ] - location: 13 (remaining gas: 1039991.605 units remaining) - [ 1 @parameter.elt + [ 1 20 ] - location: 15 (remaining gas: 1039991.501 units remaining) [ 20 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out index 0c21103244..367f7ba2a8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out @@ -10,25 +10,25 @@ trace - location: 8 (remaining gas: 1039991.873 units remaining) [ (Pair { 3 ; 6 ; 9 } 0) ] - location: 8 (remaining gas: 1039991.863 units remaining) - [ { 3 ; 6 ; 9 } @parameter ] + [ { 3 ; 6 ; 9 } ] - location: 9 (remaining gas: 1039991.853 units remaining) [ 1 - { 3 ; 6 ; 9 } @parameter ] + { 3 ; 6 ; 9 } ] - location: 12 (remaining gas: 1039991.843 units remaining) - [ { 3 ; 6 ; 9 } @parameter + [ { 3 ; 6 ; 9 } 1 ] - location: 13 (remaining gas: 1039991.843 units remaining) - [ 3 @parameter.elt + [ 3 1 ] - location: 15 (remaining gas: 1039991.739 units remaining) [ 3 ] - location: 13 (remaining gas: 1039991.724 units remaining) - [ 6 @parameter.elt + [ 6 3 ] - location: 15 (remaining gas: 1039991.620 units remaining) [ 18 ] - location: 13 (remaining gas: 1039991.605 units remaining) - [ 9 @parameter.elt + [ 9 18 ] - location: 15 (remaining gas: 1039991.501 units remaining) [ 162 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out index d58229d808..f975e57d50 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039985.969 units remaining) [ (Pair { 1 ; 1 ; 1 ; 1 } { 0 }) ] - location: 9 (remaining gas: 1039985.959 units remaining) - [ { 1 ; 1 ; 1 ; 1 } @parameter ] + [ { 1 ; 1 ; 1 ; 1 } ] - location: 10 (remaining gas: 1039985.949 units remaining) [ 0 - { 1 ; 1 ; 1 ; 1 } @parameter ] + { 1 ; 1 ; 1 ; 1 } ] - location: 13 (remaining gas: 1039985.939 units remaining) - [ { 1 ; 1 ; 1 ; 1 } @parameter + [ { 1 ; 1 ; 1 ; 1 } 0 ] - location: 14 (remaining gas: 1039985.939 units remaining) - [ 1 @parameter.elt + [ 1 0 ] - location: 16 (remaining gas: 1039985.924 units remaining) [ 0 ] @@ -26,7 +26,7 @@ trace [ 0 0 ] - location: 16 (remaining gas: 1039985.884 units remaining) - [ 1 @parameter.elt + [ 1 0 0 ] - location: 19 (remaining gas: 1039985.829 units remaining) @@ -43,7 +43,7 @@ trace [ 1 1 ] - location: 14 (remaining gas: 1039985.704 units remaining) - [ 1 @parameter.elt + [ 1 1 ] - location: 16 (remaining gas: 1039985.689 units remaining) [ 1 ] @@ -51,7 +51,7 @@ trace [ 1 1 ] - location: 16 (remaining gas: 1039985.649 units remaining) - [ 1 @parameter.elt + [ 1 1 1 ] - location: 19 (remaining gas: 1039985.594 units remaining) @@ -68,7 +68,7 @@ trace [ 2 2 ] - location: 14 (remaining gas: 1039985.469 units remaining) - [ 1 @parameter.elt + [ 1 2 ] - location: 16 (remaining gas: 1039985.454 units remaining) [ 2 ] @@ -76,7 +76,7 @@ trace [ 2 2 ] - location: 16 (remaining gas: 1039985.414 units remaining) - [ 1 @parameter.elt + [ 1 2 2 ] - location: 19 (remaining gas: 1039985.359 units remaining) @@ -93,7 +93,7 @@ trace [ 3 3 ] - location: 14 (remaining gas: 1039985.234 units remaining) - [ 1 @parameter.elt + [ 1 3 ] - location: 16 (remaining gas: 1039985.219 units remaining) [ 3 ] @@ -101,7 +101,7 @@ trace [ 3 3 ] - location: 16 (remaining gas: 1039985.179 units remaining) - [ 1 @parameter.elt + [ 1 3 3 ] - location: 19 (remaining gas: 1039985.124 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out index e8fa6f9e58..31e06d8b1e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039985.969 units remaining) [ (Pair { 1 ; 2 ; 3 ; 0 } { 0 }) ] - location: 9 (remaining gas: 1039985.959 units remaining) - [ { 1 ; 2 ; 3 ; 0 } @parameter ] + [ { 1 ; 2 ; 3 ; 0 } ] - location: 10 (remaining gas: 1039985.949 units remaining) [ 0 - { 1 ; 2 ; 3 ; 0 } @parameter ] + { 1 ; 2 ; 3 ; 0 } ] - location: 13 (remaining gas: 1039985.939 units remaining) - [ { 1 ; 2 ; 3 ; 0 } @parameter + [ { 1 ; 2 ; 3 ; 0 } 0 ] - location: 14 (remaining gas: 1039985.939 units remaining) - [ 1 @parameter.elt + [ 1 0 ] - location: 16 (remaining gas: 1039985.924 units remaining) [ 0 ] @@ -26,7 +26,7 @@ trace [ 0 0 ] - location: 16 (remaining gas: 1039985.884 units remaining) - [ 1 @parameter.elt + [ 1 0 0 ] - location: 19 (remaining gas: 1039985.829 units remaining) @@ -43,7 +43,7 @@ trace [ 1 1 ] - location: 14 (remaining gas: 1039985.704 units remaining) - [ 2 @parameter.elt + [ 2 1 ] - location: 16 (remaining gas: 1039985.689 units remaining) [ 1 ] @@ -51,7 +51,7 @@ trace [ 1 1 ] - location: 16 (remaining gas: 1039985.649 units remaining) - [ 2 @parameter.elt + [ 2 1 1 ] - location: 19 (remaining gas: 1039985.594 units remaining) @@ -68,7 +68,7 @@ trace [ 3 2 ] - location: 14 (remaining gas: 1039985.469 units remaining) - [ 3 @parameter.elt + [ 3 2 ] - location: 16 (remaining gas: 1039985.454 units remaining) [ 2 ] @@ -76,7 +76,7 @@ trace [ 2 2 ] - location: 16 (remaining gas: 1039985.414 units remaining) - [ 3 @parameter.elt + [ 3 2 2 ] - location: 19 (remaining gas: 1039985.359 units remaining) @@ -93,7 +93,7 @@ trace [ 5 3 ] - location: 14 (remaining gas: 1039985.234 units remaining) - [ 0 @parameter.elt + [ 0 3 ] - location: 16 (remaining gas: 1039985.219 units remaining) [ 3 ] @@ -101,7 +101,7 @@ trace [ 3 3 ] - location: 16 (remaining gas: 1039985.179 units remaining) - [ 0 @parameter.elt + [ 0 3 3 ] - location: 19 (remaining gas: 1039985.124 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{}-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{}-{}].out index 8126482fde..1b1de13823 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{}-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{}-{}].out @@ -10,12 +10,12 @@ trace - location: 9 (remaining gas: 1039986.369 units remaining) [ (Pair {} { 0 }) ] - location: 9 (remaining gas: 1039986.359 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039986.349 units remaining) [ 0 - {} @parameter ] + {} ] - location: 13 (remaining gas: 1039986.339 units remaining) - [ {} @parameter + [ {} 0 ] - location: 14 (remaining gas: 1039986.339 units remaining) [ {} diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out index 4bc54d048e..31cb3b9633 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039994.220 units remaining) [ (Pair { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } 111) ] - location: 8 (remaining gas: 1039994.210 units remaining) - [ { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } @parameter ] + [ { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } ] - location: 9 (remaining gas: 1039994.195 units remaining) [ 6 ] - location: 10 (remaining gas: 1039994.180 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out index 30c496cd63..ddbb611ef9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039994.520 units remaining) [ (Pair { 1 ; 2 ; 3 } 111) ] - location: 8 (remaining gas: 1039994.510 units remaining) - [ { 1 ; 2 ; 3 } @parameter ] + [ { 1 ; 2 ; 3 } ] - location: 9 (remaining gas: 1039994.495 units remaining) [ 3 ] - location: 10 (remaining gas: 1039994.480 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 }-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 }-1].out index 9ed0db624f..11e89dfc0a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 }-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 }-1].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039994.720 units remaining) [ (Pair { 1 } 111) ] - location: 8 (remaining gas: 1039994.710 units remaining) - [ { 1 } @parameter ] + [ { 1 } ] - location: 9 (remaining gas: 1039994.695 units remaining) [ 1 ] - location: 10 (remaining gas: 1039994.680 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{}-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{}-0].out index 2e1b7d6bae..b0075b0afd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{}-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{}-0].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039994.820 units remaining) [ (Pair {} 111) ] - location: 8 (remaining gas: 1039994.810 units remaining) - [ {} @parameter ] + [ {} ] - location: 9 (remaining gas: 1039994.795 units remaining) [ 0 ] - location: 10 (remaining gas: 1039994.780 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index 42aba5f99a..48cef89f59 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -10,12 +10,12 @@ trace - location: 9 (remaining gas: 1039977.710 units remaining) [ (Pair { "c" ; "b" ; "a" } { "" }) ] - location: 9 (remaining gas: 1039977.700 units remaining) - [ { "c" ; "b" ; "a" } @parameter ] + [ { "c" ; "b" ; "a" } ] - location: 10 (remaining gas: 1039977.685 units remaining) [ {} - { "c" ; "b" ; "a" } @parameter ] + { "c" ; "b" ; "a" } ] - location: 12 (remaining gas: 1039977.675 units remaining) - [ { "c" ; "b" ; "a" } @parameter + [ { "c" ; "b" ; "a" } {} ] - location: 13 (remaining gas: 1039977.660 units remaining) [ (Pair { "c" ; "b" ; "a" } {}) ] @@ -27,30 +27,30 @@ trace [ (Pair { "c" ; "b" ; "a" } {}) (Pair { "c" ; "b" ; "a" } {}) ] - location: 20 (remaining gas: 1039977.625 units remaining) - [ { "c" ; "b" ; "a" } @parameter + [ { "c" ; "b" ; "a" } (Pair { "c" ; "b" ; "a" } {}) ] - location: 21 (remaining gas: 1039977.610 units remaining) [ (Pair { "c" ; "b" ; "a" } {}) ] - location: 23 (remaining gas: 1039977.600 units remaining) [ {} ] - location: 21 (remaining gas: 1039977.570 units remaining) - [ { "c" ; "b" ; "a" } @parameter + [ { "c" ; "b" ; "a" } {} ] - location: 24 (remaining gas: 1039977.560 units remaining) - [ "c" @parameter.hd - { "b" ; "a" } @parameter.tl + [ "c" + { "b" ; "a" } {} ] - location: 26 (remaining gas: 1039977.550 units remaining) - [ { "b" ; "a" } @parameter.tl - "c" @parameter.hd + [ { "b" ; "a" } + "c" {} ] - location: 27 (remaining gas: 1039977.535 units remaining) - [ "c" @parameter.hd + [ "c" {} ] - location: 29 (remaining gas: 1039977.520 units remaining) [ { "c" } ] - location: 27 (remaining gas: 1039977.490 units remaining) - [ { "b" ; "a" } @parameter.tl + [ { "b" ; "a" } { "c" } ] - location: 30 (remaining gas: 1039977.475 units remaining) [ (Pair { "b" ; "a" } { "c" }) ] @@ -64,30 +64,30 @@ trace [ (Pair { "b" ; "a" } { "c" }) (Pair { "b" ; "a" } { "c" }) ] - location: 20 (remaining gas: 1039977.410 units remaining) - [ { "b" ; "a" } @parameter + [ { "b" ; "a" } (Pair { "b" ; "a" } { "c" }) ] - location: 21 (remaining gas: 1039977.395 units remaining) [ (Pair { "b" ; "a" } { "c" }) ] - location: 23 (remaining gas: 1039977.385 units remaining) [ { "c" } ] - location: 21 (remaining gas: 1039977.355 units remaining) - [ { "b" ; "a" } @parameter + [ { "b" ; "a" } { "c" } ] - location: 24 (remaining gas: 1039977.345 units remaining) - [ "b" @parameter.hd - { "a" } @parameter.tl + [ "b" + { "a" } { "c" } ] - location: 26 (remaining gas: 1039977.335 units remaining) - [ { "a" } @parameter.tl - "b" @parameter.hd + [ { "a" } + "b" { "c" } ] - location: 27 (remaining gas: 1039977.320 units remaining) - [ "b" @parameter.hd + [ "b" { "c" } ] - location: 29 (remaining gas: 1039977.305 units remaining) [ { "b" ; "c" } ] - location: 27 (remaining gas: 1039977.275 units remaining) - [ { "a" } @parameter.tl + [ { "a" } { "b" ; "c" } ] - location: 30 (remaining gas: 1039977.260 units remaining) [ (Pair { "a" } { "b" ; "c" }) ] @@ -101,30 +101,30 @@ trace [ (Pair { "a" } { "b" ; "c" }) (Pair { "a" } { "b" ; "c" }) ] - location: 20 (remaining gas: 1039977.195 units remaining) - [ { "a" } @parameter + [ { "a" } (Pair { "a" } { "b" ; "c" }) ] - location: 21 (remaining gas: 1039977.180 units remaining) [ (Pair { "a" } { "b" ; "c" }) ] - location: 23 (remaining gas: 1039977.170 units remaining) [ { "b" ; "c" } ] - location: 21 (remaining gas: 1039977.140 units remaining) - [ { "a" } @parameter + [ { "a" } { "b" ; "c" } ] - location: 24 (remaining gas: 1039977.130 units remaining) - [ "a" @parameter.hd - {} @parameter.tl + [ "a" + {} { "b" ; "c" } ] - location: 26 (remaining gas: 1039977.120 units remaining) - [ {} @parameter.tl - "a" @parameter.hd + [ {} + "a" { "b" ; "c" } ] - location: 27 (remaining gas: 1039977.105 units remaining) - [ "a" @parameter.hd + [ "a" { "b" ; "c" } ] - location: 29 (remaining gas: 1039977.090 units remaining) [ { "a" ; "b" ; "c" } ] - location: 27 (remaining gas: 1039977.060 units remaining) - [ {} @parameter.tl + [ {} { "a" ; "b" ; "c" } ] - location: 30 (remaining gas: 1039977.045 units remaining) [ (Pair {} { "a" ; "b" ; "c" }) ] @@ -138,14 +138,14 @@ trace [ (Pair {} { "a" ; "b" ; "c" }) (Pair {} { "a" ; "b" ; "c" }) ] - location: 20 (remaining gas: 1039976.980 units remaining) - [ {} @parameter + [ {} (Pair {} { "a" ; "b" ; "c" }) ] - location: 21 (remaining gas: 1039976.965 units remaining) [ (Pair {} { "a" ; "b" ; "c" }) ] - location: 23 (remaining gas: 1039976.955 units remaining) [ { "a" ; "b" ; "c" } ] - location: 21 (remaining gas: 1039976.925 units remaining) - [ {} @parameter + [ {} { "a" ; "b" ; "c" } ] - location: 24 (remaining gas: 1039976.915 units remaining) [ { "a" ; "b" ; "c" } ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{}-{}].out" index 0d9e5e62b3..a21e3c0f09 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{}-{}].out" @@ -10,12 +10,12 @@ trace - location: 9 (remaining gas: 1039978.082 units remaining) [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039978.072 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039978.057 units remaining) [ {} - {} @parameter ] + {} ] - location: 12 (remaining gas: 1039978.047 units remaining) - [ {} @parameter + [ {} {} ] - location: 13 (remaining gas: 1039978.032 units remaining) [ (Pair {} {}) ] @@ -27,14 +27,14 @@ trace [ (Pair {} {}) (Pair {} {}) ] - location: 20 (remaining gas: 1039977.997 units remaining) - [ {} @parameter + [ {} (Pair {} {}) ] - location: 21 (remaining gas: 1039977.982 units remaining) [ (Pair {} {}) ] - location: 23 (remaining gas: 1039977.972 units remaining) [ {} ] - location: 21 (remaining gas: 1039977.942 units remaining) - [ {} @parameter + [ {} {} ] - location: 24 (remaining gas: 1039977.932 units remaining) [ {} ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out index 1cc2043389..7ae28a043f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out @@ -10,10 +10,10 @@ trace - location: 11 (remaining gas: 1039993.699 units remaining) [ (Pair { Elt 0 0 ; Elt 3 4 } {}) ] - location: 11 (remaining gas: 1039993.689 units remaining) - [ { Elt 0 0 ; Elt 3 4 } @parameter ] + [ { Elt 0 0 ; Elt 3 4 } ] - location: 12 (remaining gas: 1039993.674 units remaining) [ {} - { Elt 0 0 ; Elt 3 4 } @parameter ] + { Elt 0 0 ; Elt 3 4 } ] - location: 14 (remaining gas: 1039993.659 units remaining) [ (Pair {} { Elt 0 0 ; Elt 3 4 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out index 5516cbb30f..f85745c829 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out @@ -10,10 +10,10 @@ trace - location: 11 (remaining gas: 1039994.154 units remaining) [ (Pair { Elt 0 0 } {}) ] - location: 11 (remaining gas: 1039994.144 units remaining) - [ { Elt 0 0 } @parameter ] + [ { Elt 0 0 } ] - location: 12 (remaining gas: 1039994.129 units remaining) [ {} - { Elt 0 0 } @parameter ] + { Elt 0 0 } ] - location: 14 (remaining gas: 1039994.114 units remaining) [ (Pair {} { Elt 0 0 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out index 758703e231..230c2e7ed1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out @@ -10,10 +10,10 @@ trace - location: 11 (remaining gas: 1039994.154 units remaining) [ (Pair { Elt 0 1 } {}) ] - location: 11 (remaining gas: 1039994.144 units remaining) - [ { Elt 0 1 } @parameter ] + [ { Elt 0 1 } ] - location: 12 (remaining gas: 1039994.129 units remaining) [ {} - { Elt 0 1 } @parameter ] + { Elt 0 1 } ] - location: 14 (remaining gas: 1039994.114 units remaining) [ (Pair {} { Elt 0 1 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out index 71c6fa4231..4cb25109ad 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out @@ -10,19 +10,19 @@ trace - location: 11 (remaining gas: 1039978.509 units remaining) [ (Pair { Elt 0 100 ; Elt 2 100 } 0 0) ] - location: 11 (remaining gas: 1039978.499 units remaining) - [ { Elt 0 100 ; Elt 2 100 } @parameter ] + [ { Elt 0 100 ; Elt 2 100 } ] - location: 12 (remaining gas: 1039978.489 units remaining) - [ 0 @acc_e - { Elt 0 100 ; Elt 2 100 } @parameter ] + [ 0 + { Elt 0 100 ; Elt 2 100 } ] - location: 15 (remaining gas: 1039978.479 units remaining) - [ 0 @acc_k - 0 @acc_e - { Elt 0 100 ; Elt 2 100 } @parameter ] + [ 0 + 0 + { Elt 0 100 ; Elt 2 100 } ] - location: 18 (remaining gas: 1039978.464 units remaining) [ (Pair 0 0) - { Elt 0 100 ; Elt 2 100 } @parameter ] + { Elt 0 100 ; Elt 2 100 } ] - location: 19 (remaining gas: 1039978.454 units remaining) - [ { Elt 0 100 ; Elt 2 100 } @parameter + [ { Elt 0 100 ; Elt 2 100 } (Pair 0 0) ] - location: 20 (remaining gas: 1039978.454 units remaining) [ (Pair 0 100) @@ -33,49 +33,49 @@ trace [ (Pair 0 0) (Pair 0 0) ] - location: 25 (remaining gas: 1039978.419 units remaining) - [ 0 @acc_k + [ 0 (Pair 0 0) ] - location: 26 (remaining gas: 1039978.404 units remaining) [ (Pair 0 0) ] - location: 28 (remaining gas: 1039978.394 units remaining) - [ 0 @acc_e ] + [ 0 ] - location: 26 (remaining gas: 1039978.364 units remaining) - [ 0 @acc_k - 0 @acc_e ] + [ 0 + 0 ] - location: 22 (remaining gas: 1039978.334 units remaining) [ (Pair 0 100) - 0 @acc_k - 0 @acc_e ] + 0 + 0 ] - location: 29 (remaining gas: 1039978.324 units remaining) [ (Pair 0 100) (Pair 0 100) - 0 @acc_k - 0 @acc_e ] + 0 + 0 ] - location: 30 (remaining gas: 1039978.309 units remaining) [ (Pair 0 100) - 0 @acc_k - 0 @acc_e ] + 0 + 0 ] - location: 32 (remaining gas: 1039978.299 units remaining) - [ 0 @key - 0 @acc_k - 0 @acc_e ] + [ 0 + 0 + 0 ] - location: 33 (remaining gas: 1039978.244 units remaining) [ 0 - 0 @acc_e ] + 0 ] - location: 30 (remaining gas: 1039978.214 units remaining) [ (Pair 0 100) 0 - 0 @acc_e ] + 0 ] - location: 34 (remaining gas: 1039978.204 units remaining) [ 0 (Pair 0 100) - 0 @acc_e ] + 0 ] - location: 35 (remaining gas: 1039978.189 units remaining) [ (Pair 0 100) - 0 @acc_e ] + 0 ] - location: 37 (remaining gas: 1039978.179 units remaining) - [ 100 @elt - 0 @acc_e ] + [ 100 + 0 ] - location: 38 (remaining gas: 1039978.124 units remaining) [ 100 ] - location: 35 (remaining gas: 1039978.094 units remaining) @@ -92,49 +92,49 @@ trace [ (Pair 0 100) (Pair 0 100) ] - location: 25 (remaining gas: 1039978.029 units remaining) - [ 0 @acc_k + [ 0 (Pair 0 100) ] - location: 26 (remaining gas: 1039978.014 units remaining) [ (Pair 0 100) ] - location: 28 (remaining gas: 1039978.004 units remaining) - [ 100 @acc_e ] + [ 100 ] - location: 26 (remaining gas: 1039977.974 units remaining) - [ 0 @acc_k - 100 @acc_e ] + [ 0 + 100 ] - location: 22 (remaining gas: 1039977.944 units remaining) [ (Pair 2 100) - 0 @acc_k - 100 @acc_e ] + 0 + 100 ] - location: 29 (remaining gas: 1039977.934 units remaining) [ (Pair 2 100) (Pair 2 100) - 0 @acc_k - 100 @acc_e ] + 0 + 100 ] - location: 30 (remaining gas: 1039977.919 units remaining) [ (Pair 2 100) - 0 @acc_k - 100 @acc_e ] + 0 + 100 ] - location: 32 (remaining gas: 1039977.909 units remaining) - [ 2 @key - 0 @acc_k - 100 @acc_e ] + [ 2 + 0 + 100 ] - location: 33 (remaining gas: 1039977.854 units remaining) [ 2 - 100 @acc_e ] + 100 ] - location: 30 (remaining gas: 1039977.824 units remaining) [ (Pair 2 100) 2 - 100 @acc_e ] + 100 ] - location: 34 (remaining gas: 1039977.814 units remaining) [ 2 (Pair 2 100) - 100 @acc_e ] + 100 ] - location: 35 (remaining gas: 1039977.799 units remaining) [ (Pair 2 100) - 100 @acc_e ] + 100 ] - location: 37 (remaining gas: 1039977.789 units remaining) - [ 100 @elt - 100 @acc_e ] + [ 100 + 100 ] - location: 38 (remaining gas: 1039977.734 units remaining) [ 200 ] - location: 35 (remaining gas: 1039977.704 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out index 5f3e5827a6..1150a5a6e6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out @@ -10,19 +10,19 @@ trace - location: 11 (remaining gas: 1039978.509 units remaining) [ (Pair { Elt 1 1 ; Elt 2 100 } 0 0) ] - location: 11 (remaining gas: 1039978.499 units remaining) - [ { Elt 1 1 ; Elt 2 100 } @parameter ] + [ { Elt 1 1 ; Elt 2 100 } ] - location: 12 (remaining gas: 1039978.489 units remaining) - [ 0 @acc_e - { Elt 1 1 ; Elt 2 100 } @parameter ] + [ 0 + { Elt 1 1 ; Elt 2 100 } ] - location: 15 (remaining gas: 1039978.479 units remaining) - [ 0 @acc_k - 0 @acc_e - { Elt 1 1 ; Elt 2 100 } @parameter ] + [ 0 + 0 + { Elt 1 1 ; Elt 2 100 } ] - location: 18 (remaining gas: 1039978.464 units remaining) [ (Pair 0 0) - { Elt 1 1 ; Elt 2 100 } @parameter ] + { Elt 1 1 ; Elt 2 100 } ] - location: 19 (remaining gas: 1039978.454 units remaining) - [ { Elt 1 1 ; Elt 2 100 } @parameter + [ { Elt 1 1 ; Elt 2 100 } (Pair 0 0) ] - location: 20 (remaining gas: 1039978.454 units remaining) [ (Pair 1 1) @@ -33,49 +33,49 @@ trace [ (Pair 0 0) (Pair 0 0) ] - location: 25 (remaining gas: 1039978.419 units remaining) - [ 0 @acc_k + [ 0 (Pair 0 0) ] - location: 26 (remaining gas: 1039978.404 units remaining) [ (Pair 0 0) ] - location: 28 (remaining gas: 1039978.394 units remaining) - [ 0 @acc_e ] + [ 0 ] - location: 26 (remaining gas: 1039978.364 units remaining) - [ 0 @acc_k - 0 @acc_e ] + [ 0 + 0 ] - location: 22 (remaining gas: 1039978.334 units remaining) [ (Pair 1 1) - 0 @acc_k - 0 @acc_e ] + 0 + 0 ] - location: 29 (remaining gas: 1039978.324 units remaining) [ (Pair 1 1) (Pair 1 1) - 0 @acc_k - 0 @acc_e ] + 0 + 0 ] - location: 30 (remaining gas: 1039978.309 units remaining) [ (Pair 1 1) - 0 @acc_k - 0 @acc_e ] + 0 + 0 ] - location: 32 (remaining gas: 1039978.299 units remaining) - [ 1 @key - 0 @acc_k - 0 @acc_e ] + [ 1 + 0 + 0 ] - location: 33 (remaining gas: 1039978.244 units remaining) [ 1 - 0 @acc_e ] + 0 ] - location: 30 (remaining gas: 1039978.214 units remaining) [ (Pair 1 1) 1 - 0 @acc_e ] + 0 ] - location: 34 (remaining gas: 1039978.204 units remaining) [ 1 (Pair 1 1) - 0 @acc_e ] + 0 ] - location: 35 (remaining gas: 1039978.189 units remaining) [ (Pair 1 1) - 0 @acc_e ] + 0 ] - location: 37 (remaining gas: 1039978.179 units remaining) - [ 1 @elt - 0 @acc_e ] + [ 1 + 0 ] - location: 38 (remaining gas: 1039978.124 units remaining) [ 1 ] - location: 35 (remaining gas: 1039978.094 units remaining) @@ -92,49 +92,49 @@ trace [ (Pair 1 1) (Pair 1 1) ] - location: 25 (remaining gas: 1039978.029 units remaining) - [ 1 @acc_k + [ 1 (Pair 1 1) ] - location: 26 (remaining gas: 1039978.014 units remaining) [ (Pair 1 1) ] - location: 28 (remaining gas: 1039978.004 units remaining) - [ 1 @acc_e ] + [ 1 ] - location: 26 (remaining gas: 1039977.974 units remaining) - [ 1 @acc_k - 1 @acc_e ] + [ 1 + 1 ] - location: 22 (remaining gas: 1039977.944 units remaining) [ (Pair 2 100) - 1 @acc_k - 1 @acc_e ] + 1 + 1 ] - location: 29 (remaining gas: 1039977.934 units remaining) [ (Pair 2 100) (Pair 2 100) - 1 @acc_k - 1 @acc_e ] + 1 + 1 ] - location: 30 (remaining gas: 1039977.919 units remaining) [ (Pair 2 100) - 1 @acc_k - 1 @acc_e ] + 1 + 1 ] - location: 32 (remaining gas: 1039977.909 units remaining) - [ 2 @key - 1 @acc_k - 1 @acc_e ] + [ 2 + 1 + 1 ] - location: 33 (remaining gas: 1039977.854 units remaining) [ 3 - 1 @acc_e ] + 1 ] - location: 30 (remaining gas: 1039977.824 units remaining) [ (Pair 2 100) 3 - 1 @acc_e ] + 1 ] - location: 34 (remaining gas: 1039977.814 units remaining) [ 3 (Pair 2 100) - 1 @acc_e ] + 1 ] - location: 35 (remaining gas: 1039977.799 units remaining) [ (Pair 2 100) - 1 @acc_e ] + 1 ] - location: 37 (remaining gas: 1039977.789 units remaining) - [ 100 @elt - 1 @acc_e ] + [ 100 + 1 ] - location: 38 (remaining gas: 1039977.734 units remaining) [ 101 ] - location: 35 (remaining gas: 1039977.704 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"bar\" 5 ; Elt \"foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"bar\" 5 ; Elt \"foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" index 45a0b08fe1..87857063f8 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"bar\" 5 ; Elt \"foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"bar\" 5 ; Elt \"foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" @@ -10,52 +10,52 @@ trace - location: 9 (remaining gas: 1039988.041 units remaining) [ (Pair 15 { Elt "bar" 5 ; Elt "foo" 1 }) ] - location: 9 (remaining gas: 1039988.031 units remaining) - [ 15 @parameter - { Elt "bar" 5 ; Elt "foo" 1 } @storage ] + [ 15 + { Elt "bar" 5 ; Elt "foo" 1 } ] - location: 10 (remaining gas: 1039988.021 units remaining) - [ { Elt "bar" 5 ; Elt "foo" 1 } @storage - 15 @parameter ] + [ { Elt "bar" 5 ; Elt "foo" 1 } + 15 ] - location: 11 (remaining gas: 1039988.021 units remaining) [ (Pair "bar" 5) - 15 @parameter ] + 15 ] - location: 13 (remaining gas: 1039988.011 units remaining) - [ 5 @elt - 15 @parameter ] + [ 5 + 15 ] - location: 14 (remaining gas: 1039987.996 units remaining) - [ 15 @parameter ] + [ 15 ] - location: 16 (remaining gas: 1039987.986 units remaining) - [ 15 @parameter - 15 @parameter ] + [ 15 + 15 ] - location: 14 (remaining gas: 1039987.956 units remaining) - [ 5 @elt - 15 @parameter - 15 @parameter ] + [ 5 + 15 + 15 ] - location: 17 (remaining gas: 1039987.901 units remaining) [ 20 - 15 @parameter ] + 15 ] - location: 11 (remaining gas: 1039987.886 units remaining) [ (Pair "foo" 1) - 15 @parameter ] + 15 ] - location: 13 (remaining gas: 1039987.876 units remaining) - [ 1 @elt - 15 @parameter ] + [ 1 + 15 ] - location: 14 (remaining gas: 1039987.861 units remaining) - [ 15 @parameter ] + [ 15 ] - location: 16 (remaining gas: 1039987.851 units remaining) - [ 15 @parameter - 15 @parameter ] + [ 15 + 15 ] - location: 14 (remaining gas: 1039987.821 units remaining) - [ 1 @elt - 15 @parameter - 15 @parameter ] + [ 1 + 15 + 15 ] - location: 17 (remaining gas: 1039987.766 units remaining) [ 16 - 15 @parameter ] + 15 ] - location: 11 (remaining gas: 1039987.751 units remaining) [ { Elt "bar" 20 ; Elt "foo" 16 } - 15 @parameter ] + 15 ] - location: 18 (remaining gas: 1039987.736 units remaining) - [ 15 @parameter ] + [ 15 ] - location: 20 (remaining gas: 1039987.726 units remaining) [ ] - location: 18 (remaining gas: 1039987.696 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" index cc2688e733..655c363584 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" @@ -10,34 +10,34 @@ trace - location: 9 (remaining gas: 1039988.540 units remaining) [ (Pair 10 { Elt "foo" 1 }) ] - location: 9 (remaining gas: 1039988.530 units remaining) - [ 10 @parameter - { Elt "foo" 1 } @storage ] + [ 10 + { Elt "foo" 1 } ] - location: 10 (remaining gas: 1039988.520 units remaining) - [ { Elt "foo" 1 } @storage - 10 @parameter ] + [ { Elt "foo" 1 } + 10 ] - location: 11 (remaining gas: 1039988.520 units remaining) [ (Pair "foo" 1) - 10 @parameter ] + 10 ] - location: 13 (remaining gas: 1039988.510 units remaining) - [ 1 @elt - 10 @parameter ] + [ 1 + 10 ] - location: 14 (remaining gas: 1039988.495 units remaining) - [ 10 @parameter ] + [ 10 ] - location: 16 (remaining gas: 1039988.485 units remaining) - [ 10 @parameter - 10 @parameter ] + [ 10 + 10 ] - location: 14 (remaining gas: 1039988.455 units remaining) - [ 1 @elt - 10 @parameter - 10 @parameter ] + [ 1 + 10 + 10 ] - location: 17 (remaining gas: 1039988.400 units remaining) [ 11 - 10 @parameter ] + 10 ] - location: 11 (remaining gas: 1039988.385 units remaining) [ { Elt "foo" 11 } - 10 @parameter ] + 10 ] - location: 18 (remaining gas: 1039988.370 units remaining) - [ 10 @parameter ] + [ 10 ] - location: 20 (remaining gas: 1039988.360 units remaining) [ ] - location: 18 (remaining gas: 1039988.330 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{}-10-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{}-10-{}].out index 004b2b813b..f5c60c85a4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{}-10-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{}-10-{}].out @@ -10,16 +10,16 @@ trace - location: 9 (remaining gas: 1039988.934 units remaining) [ (Pair 10 {}) ] - location: 9 (remaining gas: 1039988.924 units remaining) - [ 10 @parameter - {} @storage ] + [ 10 + {} ] - location: 10 (remaining gas: 1039988.914 units remaining) - [ {} @storage - 10 @parameter ] + [ {} + 10 ] - location: 11 (remaining gas: 1039988.914 units remaining) [ {} - 10 @parameter ] + 10 ] - location: 18 (remaining gas: 1039988.899 units remaining) - [ 10 @parameter ] + [ 10 ] - location: 20 (remaining gas: 1039988.889 units remaining) [ ] - location: 18 (remaining gas: 1039988.859 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair { Elt 0 .7396e5f090.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair { Elt 0 .7396e5f090.out index 71b56c541e..7c19df198c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair { Elt 0 .7396e5f090.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair { Elt 0 .7396e5f090.out @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039988.154 units remaining) [ (Pair 1 { Elt 0 1 } None) ] - location: 12 (remaining gas: 1039988.144 units remaining) - [ 1 @parameter - (Pair { Elt 0 1 } None) @storage ] + [ 1 + (Pair { Elt 0 1 } None) ] - location: 13 (remaining gas: 1039988.129 units remaining) - [ (Pair { Elt 0 1 } None) @storage ] + [ (Pair { Elt 0 1 } None) ] - location: 15 (remaining gas: 1039988.119 units remaining) [ { Elt 0 1 } ] - location: 16 (remaining gas: 1039988.109 units remaining) [ { Elt 0 1 } { Elt 0 1 } ] - location: 13 (remaining gas: 1039988.079 units remaining) - [ 1 @parameter + [ 1 { Elt 0 1 } { Elt 0 1 } ] - location: 17 (remaining gas: 1039987.929 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out index 33429cbd64..112cc66091 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039988.154 units remaining) [ (Pair 1 { Elt 1 0 } None) ] - location: 12 (remaining gas: 1039988.144 units remaining) - [ 1 @parameter - (Pair { Elt 1 0 } None) @storage ] + [ 1 + (Pair { Elt 1 0 } None) ] - location: 13 (remaining gas: 1039988.129 units remaining) - [ (Pair { Elt 1 0 } None) @storage ] + [ (Pair { Elt 1 0 } None) ] - location: 15 (remaining gas: 1039988.119 units remaining) [ { Elt 1 0 } ] - location: 16 (remaining gas: 1039988.109 units remaining) [ { Elt 1 0 } { Elt 1 0 } ] - location: 13 (remaining gas: 1039988.079 units remaining) - [ 1 @parameter + [ 1 { Elt 1 0 } { Elt 1 0 } ] - location: 17 (remaining gas: 1039987.929 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out index 19559535b5..d772844354 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039987.699 units remaining) [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039987.689 units remaining) - [ 1 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 1 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039987.674 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039987.664 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039987.654 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039987.624 units remaining) - [ 1 @parameter + [ 1 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039987.439 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out index c968674032..7be6a7ac23 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039987.699 units remaining) [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039987.689 units remaining) - [ 2 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 2 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039987.674 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039987.664 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039987.654 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039987.624 units remaining) - [ 2 @parameter + [ 2 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039987.439 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out index 616ef564fe..30c9112baa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039987.699 units remaining) [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039987.689 units remaining) - [ 3 @parameter - (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ 3 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039987.674 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) @storage ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039987.664 units remaining) [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039987.654 units remaining) [ { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039987.624 units remaining) - [ 3 @parameter + [ 3 { Elt 1 4 ; Elt 2 11 } { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039987.439 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair {} None)-1-(Pair {} (Some False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair {} None)-1-(Pair {} (Some False))].out index a64b4746bd..8e3894a348 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair {} None)-1-(Pair {} (Some False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair {} None)-1-(Pair {} (Some False))].out @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039988.504 units remaining) [ (Pair 1 {} None) ] - location: 12 (remaining gas: 1039988.494 units remaining) - [ 1 @parameter - (Pair {} None) @storage ] + [ 1 + (Pair {} None) ] - location: 13 (remaining gas: 1039988.479 units remaining) - [ (Pair {} None) @storage ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039988.469 units remaining) [ {} ] - location: 16 (remaining gas: 1039988.459 units remaining) [ {} {} ] - location: 13 (remaining gas: 1039988.429 units remaining) - [ 1 @parameter + [ 1 {} {} ] - location: 17 (remaining gas: 1039988.314 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" index 3d0a4784ea..c90067d0fb 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039987.567 units remaining) [ (Pair "bar" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039987.557 units remaining) - [ "bar" @parameter - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ "bar" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039987.542 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039987.532 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039987.522 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039987.492 units remaining) - [ "bar" @parameter + [ "bar" { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039987.307 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" index 2a05c52806..1711e929a0 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039987.567 units remaining) [ (Pair "foo" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039987.557 units remaining) - [ "foo" @parameter - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ "foo" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039987.542 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039987.532 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039987.522 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039987.492 units remaining) - [ "foo" @parameter + [ "foo" { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039987.307 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" index 0e0b584393..aa11b1f42f 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039987.567 units remaining) [ (Pair "baz" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039987.557 units remaining) - [ "baz" @parameter - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ "baz" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039987.542 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) @storage ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039987.532 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039987.522 units remaining) [ { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039987.492 units remaining) - [ "baz" @parameter + [ "baz" { Elt "bar" 4 ; Elt "foo" 11 } { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039987.307 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" index de2b939dbf..f027be34db 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039988.066 units remaining) [ (Pair "foo" { Elt "foo" 0 } None) ] - location: 12 (remaining gas: 1039988.056 units remaining) - [ "foo" @parameter - (Pair { Elt "foo" 0 } None) @storage ] + [ "foo" + (Pair { Elt "foo" 0 } None) ] - location: 13 (remaining gas: 1039988.041 units remaining) - [ (Pair { Elt "foo" 0 } None) @storage ] + [ (Pair { Elt "foo" 0 } None) ] - location: 15 (remaining gas: 1039988.031 units remaining) [ { Elt "foo" 0 } ] - location: 16 (remaining gas: 1039988.021 units remaining) [ { Elt "foo" 0 } { Elt "foo" 0 } ] - location: 13 (remaining gas: 1039987.991 units remaining) - [ "foo" @parameter + [ "foo" { Elt "foo" 0 } { Elt "foo" 0 } ] - location: 17 (remaining gas: 1039987.841 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" index e1b29a7d76..51ff7af992 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039988.066 units remaining) [ (Pair "bar" { Elt "foo" 1 } None) ] - location: 12 (remaining gas: 1039988.056 units remaining) - [ "bar" @parameter - (Pair { Elt "foo" 1 } None) @storage ] + [ "bar" + (Pair { Elt "foo" 1 } None) ] - location: 13 (remaining gas: 1039988.041 units remaining) - [ (Pair { Elt "foo" 1 } None) @storage ] + [ (Pair { Elt "foo" 1 } None) ] - location: 15 (remaining gas: 1039988.031 units remaining) [ { Elt "foo" 1 } ] - location: 16 (remaining gas: 1039988.021 units remaining) [ { Elt "foo" 1 } { Elt "foo" 1 } ] - location: 13 (remaining gas: 1039987.991 units remaining) - [ "bar" @parameter + [ "bar" { Elt "foo" 1 } { Elt "foo" 1 } ] - location: 17 (remaining gas: 1039987.841 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair {} (Some False))].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair {} (Some False))].out" index 0cdb9b5780..38000ca076 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair {} (Some False))].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair {} (Some False))].out" @@ -10,17 +10,17 @@ trace - location: 12 (remaining gas: 1039988.460 units remaining) [ (Pair "bar" {} None) ] - location: 12 (remaining gas: 1039988.450 units remaining) - [ "bar" @parameter - (Pair {} None) @storage ] + [ "bar" + (Pair {} None) ] - location: 13 (remaining gas: 1039988.435 units remaining) - [ (Pair {} None) @storage ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039988.425 units remaining) [ {} ] - location: 16 (remaining gas: 1039988.415 units remaining) [ {} {} ] - location: 13 (remaining gas: 1039988.385 units remaining) - [ "bar" @parameter + [ "bar" {} {} ] - location: 17 (remaining gas: 1039988.270 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" index 3211daaf0f..ba3ede7a54 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039991.503 units remaining) [ (Pair { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 ; Elt "d" 4 ; Elt "e" 5 ; Elt "f" 6 } 111) ] - location: 9 (remaining gas: 1039991.493 units remaining) - [ { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 ; Elt "d" 4 ; Elt "e" 5 ; Elt "f" 6 } @parameter ] + [ { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 ; Elt "d" 4 ; Elt "e" 5 ; Elt "f" 6 } ] - location: 10 (remaining gas: 1039991.478 units remaining) [ 6 ] - location: 11 (remaining gas: 1039991.463 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" index 73481c07ce..8310f15e26 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039993.290 units remaining) [ (Pair { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 } 111) ] - location: 9 (remaining gas: 1039993.280 units remaining) - [ { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 } @parameter ] + [ { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 } ] - location: 10 (remaining gas: 1039993.265 units remaining) [ 3 ] - location: 11 (remaining gas: 1039993.250 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 }-1].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 }-1].out" index 5d843fbb77..60c751d37f 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 }-1].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 }-1].out" @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039994.318 units remaining) [ (Pair { Elt "a" 1 } 111) ] - location: 9 (remaining gas: 1039994.308 units remaining) - [ { Elt "a" 1 } @parameter ] + [ { Elt "a" 1 } ] - location: 10 (remaining gas: 1039994.293 units remaining) [ 1 ] - location: 11 (remaining gas: 1039994.278 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{}-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{}-0].out index 4c7e53e3c3..1fcc8b627c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{}-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{}-0].out @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039994.692 units remaining) [ (Pair {} 111) ] - location: 9 (remaining gas: 1039994.682 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039994.667 units remaining) [ 0 ] - location: 11 (remaining gas: 1039994.652 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mul.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mul.tz-Unit-Unit-Unit].out index e4f24bbb88..5d345cdc2f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mul.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mul.tz-Unit-Unit-Unit].out @@ -10,7 +10,7 @@ trace - location: 7 (remaining gas: 1039944.576 units remaining) [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039944.566 units remaining) - [ Unit @parameter ] + [ Unit ] - location: 8 (remaining gas: 1039944.556 units remaining) [ ] - location: 9 (remaining gas: 1039944.546 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x00-257-0x0101000000000000000.be11332c7f.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x00-257-0x0101000000000000000.be11332c7f.out index 8e8ed7d9a5..b106914476 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x00-257-0x0101000000000000000.be11332c7f.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x00-257-0x0101000000000000000.be11332c7f.out @@ -10,19 +10,19 @@ trace - location: 7 (remaining gas: 1039987.713 units remaining) [ (Pair 257 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039987.703 units remaining) - [ 257 @parameter ] + [ 257 ] - location: 8 (remaining gas: 1039987.693 units remaining) [ 1 - 257 @parameter ] + 257 ] - location: 11 (remaining gas: 1039987.683 units remaining) - [ 257 @parameter + [ 257 1 ] - location: 12 (remaining gas: 1039987.543 units remaining) [ (Some (Pair 257 0)) ] - location: 14 (remaining gas: 1039987.533 units remaining) - [ (Pair 257 0) @some ] + [ (Pair 257 0) ] - location: 14 (remaining gas: 1039987.518 units remaining) - [ (Pair 257 0) @some ] + [ (Pair 257 0) ] - location: 20 (remaining gas: 1039987.508 units remaining) [ 257 ] - location: 21 (remaining gas: 1039987.498 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x02-16-0x10000000000000000000.8230fb4fac.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x02-16-0x10000000000000000000.8230fb4fac.out index 1a6d40470f..18773f0bd2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x02-16-0x10000000000000000000.8230fb4fac.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x02-16-0x10000000000000000000.8230fb4fac.out @@ -10,19 +10,19 @@ trace - location: 7 (remaining gas: 1039987.713 units remaining) [ (Pair 16 0x0200000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039987.703 units remaining) - [ 16 @parameter ] + [ 16 ] - location: 8 (remaining gas: 1039987.693 units remaining) [ 1 - 16 @parameter ] + 16 ] - location: 11 (remaining gas: 1039987.683 units remaining) - [ 16 @parameter + [ 16 1 ] - location: 12 (remaining gas: 1039987.543 units remaining) [ (Some (Pair 16 0)) ] - location: 14 (remaining gas: 1039987.533 units remaining) - [ (Pair 16 0) @some ] + [ (Pair 16 0) ] - location: 14 (remaining gas: 1039987.518 units remaining) - [ (Pair 16 0) @some ] + [ (Pair 16 0) ] - location: 20 (remaining gas: 1039987.508 units remaining) [ 16 ] - location: 21 (remaining gas: 1039987.498 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left -2)-2].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left -2)-2].out index 9e5bd340ad..8c176e5f2e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left -2)-2].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left -2)-2].out @@ -10,9 +10,9 @@ trace - location: 9 (remaining gas: 1039992.641 units remaining) [ (Pair (Left -2) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Left -2) @parameter ] + [ (Left -2) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ -2 @parameter.left ] + [ -2 ] - location: 12 (remaining gas: 1039992.581 units remaining) [ 2 ] - location: 10 (remaining gas: 1039992.566 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 0)-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 0)-0].out index 18af9bc672..6fa2b91327 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 0)-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 0)-0].out @@ -10,9 +10,9 @@ trace - location: 9 (remaining gas: 1039992.641 units remaining) [ (Pair (Left 0) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Left 0) @parameter ] + [ (Left 0) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ 0 @parameter.left ] + [ 0 ] - location: 12 (remaining gas: 1039992.581 units remaining) [ 0 ] - location: 10 (remaining gas: 1039992.566 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 2)--2].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 2)--2].out index 2aa2e14a7e..067fdeb439 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 2)--2].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 2)--2].out @@ -10,9 +10,9 @@ trace - location: 9 (remaining gas: 1039992.641 units remaining) [ (Pair (Left 2) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Left 2) @parameter ] + [ (Left 2) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ 2 @parameter.left ] + [ 2 ] - location: 12 (remaining gas: 1039992.581 units remaining) [ -2 ] - location: 10 (remaining gas: 1039992.566 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 0)-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 0)-0].out index 186989f5cd..046d77c810 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 0)-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 0)-0].out @@ -10,9 +10,9 @@ trace - location: 9 (remaining gas: 1039992.641 units remaining) [ (Pair (Right 0) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Right 0) @parameter ] + [ (Right 0) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ 0 @parameter.right ] + [ 0 ] - location: 14 (remaining gas: 1039992.581 units remaining) [ 0 ] - location: 10 (remaining gas: 1039992.566 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 2)--2].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 2)--2].out index e9f9426f49..131c8218a5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 2)--2].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 2)--2].out @@ -10,9 +10,9 @@ trace - location: 9 (remaining gas: 1039992.641 units remaining) [ (Pair (Right 2) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Right 2) @parameter ] + [ (Right 2) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ 2 @parameter.right ] + [ 2 ] - location: 14 (remaining gas: 1039992.581 units remaining) [ -2 ] - location: 10 (remaining gas: 1039992.566 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-False-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-False-(Some True)].out index 15fccbf839..705a78df93 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-False-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-False-(Some True)].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039993.957 units remaining) [ (Pair False None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ False @parameter ] + [ False ] - location: 9 (remaining gas: 1039993.937 units remaining) [ True ] - location: 10 (remaining gas: 1039993.922 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-True-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-True-(Some False)].out index ee4bde7b71..f1a2055b36 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-True-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-True-(Some False)].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039993.957 units remaining) [ (Pair True None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ True @parameter ] + [ True ] - location: 9 (remaining gas: 1039993.937 units remaining) [ False ] - location: 10 (remaining gas: 1039993.922 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -8)-(Some 7)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -8)-(Some 7)].out index 17c73e6d29..027bc9dd13 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -8)-(Some 7)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -8)-(Some 7)].out @@ -10,9 +10,9 @@ trace - location: 10 (remaining gas: 1039991.640 units remaining) [ (Pair (Left -8) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left -8) @parameter ] + [ (Left -8) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ -8 @parameter.left ] + [ -8 ] - location: 13 (remaining gas: 1039991.570 units remaining) [ 7 ] - location: 11 (remaining gas: 1039991.555 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -9)-(Some 8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -9)-(Some 8)].out index 05d3145bcd..5c977428a7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -9)-(Some 8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -9)-(Some 8)].out @@ -10,9 +10,9 @@ trace - location: 10 (remaining gas: 1039991.640 units remaining) [ (Pair (Left -9) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left -9) @parameter ] + [ (Left -9) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ -9 @parameter.left ] + [ -9 ] - location: 13 (remaining gas: 1039991.570 units remaining) [ 8 ] - location: 11 (remaining gas: 1039991.555 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 0)-(Some -1)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 0)-(Some -1)].out index d17d87a63f..e1063d1d8d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 0)-(Some -1)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 0)-(Some -1)].out @@ -10,9 +10,9 @@ trace - location: 10 (remaining gas: 1039991.640 units remaining) [ (Pair (Left 0) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left 0) @parameter ] + [ (Left 0) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 0 @parameter.left ] + [ 0 ] - location: 13 (remaining gas: 1039991.570 units remaining) [ -1 ] - location: 11 (remaining gas: 1039991.555 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 7)-(Some -8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 7)-(Some -8)].out index d680b61e82..fc0b8aaed2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 7)-(Some -8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 7)-(Some -8)].out @@ -10,9 +10,9 @@ trace - location: 10 (remaining gas: 1039991.640 units remaining) [ (Pair (Left 7) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left 7) @parameter ] + [ (Left 7) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 7 @parameter.left ] + [ 7 ] - location: 13 (remaining gas: 1039991.570 units remaining) [ -8 ] - location: 11 (remaining gas: 1039991.555 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 8)-(Some -9)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 8)-(Some -9)].out index b93b0bebf9..69b10e9314 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 8)-(Some -9)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 8)-(Some -9)].out @@ -10,9 +10,9 @@ trace - location: 10 (remaining gas: 1039991.640 units remaining) [ (Pair (Left 8) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left 8) @parameter ] + [ (Left 8) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 8 @parameter.left ] + [ 8 ] - location: 13 (remaining gas: 1039991.570 units remaining) [ -9 ] - location: 11 (remaining gas: 1039991.555 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 0)-(Some -1)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 0)-(Some -1)].out index 30efcc9510..46a79e7f2b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 0)-(Some -1)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 0)-(Some -1)].out @@ -10,9 +10,9 @@ trace - location: 10 (remaining gas: 1039991.640 units remaining) [ (Pair (Right 0) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Right 0) @parameter ] + [ (Right 0) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 0 @parameter.right ] + [ 0 ] - location: 15 (remaining gas: 1039991.570 units remaining) [ -1 ] - location: 11 (remaining gas: 1039991.555 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 7)-(Some -8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 7)-(Some -8)].out index be1ca7215a..b8df3be050 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 7)-(Some -8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 7)-(Some -8)].out @@ -10,9 +10,9 @@ trace - location: 10 (remaining gas: 1039991.640 units remaining) [ (Pair (Right 7) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Right 7) @parameter ] + [ (Right 7) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 7 @parameter.right ] + [ 7 ] - location: 15 (remaining gas: 1039991.570 units remaining) [ -8 ] - location: 11 (remaining gas: 1039991.555 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 8)-(Some -9)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 8)-(Some -9)].out index a6274cb349..22b4db9f10 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 8)-(Some -9)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 8)-(Some -9)].out @@ -10,9 +10,9 @@ trace - location: 10 (remaining gas: 1039991.640 units remaining) [ (Pair (Right 8) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Right 8) @parameter ] + [ (Right 8) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 8 @parameter.right ] + [ 8 ] - location: 15 (remaining gas: 1039991.570 units remaining) [ -9 ] - location: 11 (remaining gas: 1039991.555 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False False)-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False False)-(Some False)].out index 8548902e05..504a0a8378 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False False)-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False False)-(Some False)].out @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.715 units remaining) [ (Pair (Pair False False) None) ] - location: 10 (remaining gas: 1039990.705 units remaining) - [ (Pair False False) @parameter ] + [ (Pair False False) ] - location: 11 (remaining gas: 1039990.695 units remaining) - [ (Pair False False) @parameter - (Pair False False) @parameter ] + [ (Pair False False) + (Pair False False) ] - location: 12 (remaining gas: 1039990.685 units remaining) [ False - (Pair False False) @parameter ] + (Pair False False) ] - location: 13 (remaining gas: 1039990.675 units remaining) - [ (Pair False False) @parameter + [ (Pair False False) False ] - location: 14 (remaining gas: 1039990.665 units remaining) [ False diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False True)-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False True)-(Some True)].out index a7083dcdad..a697272947 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False True)-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False True)-(Some True)].out @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.715 units remaining) [ (Pair (Pair False True) None) ] - location: 10 (remaining gas: 1039990.705 units remaining) - [ (Pair False True) @parameter ] + [ (Pair False True) ] - location: 11 (remaining gas: 1039990.695 units remaining) - [ (Pair False True) @parameter - (Pair False True) @parameter ] + [ (Pair False True) + (Pair False True) ] - location: 12 (remaining gas: 1039990.685 units remaining) [ False - (Pair False True) @parameter ] + (Pair False True) ] - location: 13 (remaining gas: 1039990.675 units remaining) - [ (Pair False True) @parameter + [ (Pair False True) False ] - location: 14 (remaining gas: 1039990.665 units remaining) [ True diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True False)-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True False)-(Some True)].out index 1221a5791f..a648b43575 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True False)-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True False)-(Some True)].out @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.715 units remaining) [ (Pair (Pair True False) None) ] - location: 10 (remaining gas: 1039990.705 units remaining) - [ (Pair True False) @parameter ] + [ (Pair True False) ] - location: 11 (remaining gas: 1039990.695 units remaining) - [ (Pair True False) @parameter - (Pair True False) @parameter ] + [ (Pair True False) + (Pair True False) ] - location: 12 (remaining gas: 1039990.685 units remaining) [ True - (Pair True False) @parameter ] + (Pair True False) ] - location: 13 (remaining gas: 1039990.675 units remaining) - [ (Pair True False) @parameter + [ (Pair True False) True ] - location: 14 (remaining gas: 1039990.665 units remaining) [ False diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True True)-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True True)-(Some True)].out index 042aa9a6cb..7bc0539cae 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True True)-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True True)-(Some True)].out @@ -10,15 +10,15 @@ trace - location: 10 (remaining gas: 1039990.715 units remaining) [ (Pair (Pair True True) None) ] - location: 10 (remaining gas: 1039990.705 units remaining) - [ (Pair True True) @parameter ] + [ (Pair True True) ] - location: 11 (remaining gas: 1039990.695 units remaining) - [ (Pair True True) @parameter - (Pair True True) @parameter ] + [ (Pair True True) + (Pair True True) ] - location: 12 (remaining gas: 1039990.685 units remaining) [ True - (Pair True True) @parameter ] + (Pair True True) ] - location: 13 (remaining gas: 1039990.675 units remaining) - [ (Pair True True) @parameter + [ (Pair True True) True ] - location: 14 (remaining gas: 1039990.665 units remaining) [ True diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 0 8)-(Some 8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 0 8)-(Some 8)].out index 597d4bd394..ab5913c76c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 0 8)-(Some 8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 0 8)-(Some 8)].out @@ -10,7 +10,7 @@ trace - location: 10 (remaining gas: 1039992.824 units remaining) [ (Pair (Pair 0 8) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 0 8) @parameter ] + [ (Pair 0 8) ] - location: 11 (remaining gas: 1039992.804 units remaining) [ 0 8 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 14 1)-(Some 15)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 14 1)-(Some 15)].out index 65dc7444f7..6490633766 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 14 1)-(Some 15)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 14 1)-(Some 15)].out @@ -10,7 +10,7 @@ trace - location: 10 (remaining gas: 1039992.824 units remaining) [ (Pair (Pair 14 1) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 14 1) @parameter ] + [ (Pair 14 1) ] - location: 11 (remaining gas: 1039992.804 units remaining) [ 14 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 15 4)-(Some 15)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 15 4)-(Some 15)].out index 901552a8e7..49bf8f4783 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 15 4)-(Some 15)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 15 4)-(Some 15)].out @@ -10,7 +10,7 @@ trace - location: 10 (remaining gas: 1039992.824 units remaining) [ (Pair (Pair 15 4) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 15 4) @parameter ] + [ (Pair 15 4) ] - location: 11 (remaining gas: 1039992.804 units remaining) [ 15 4 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 4 8)-(Some 12)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 4 8)-(Some 12)].out index 46366fed5e..a0ad9e92ed 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 4 8)-(Some 12)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 4 8)-(Some 12)].out @@ -10,7 +10,7 @@ trace - location: 10 (remaining gas: 1039992.824 units remaining) [ (Pair (Pair 4 8) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 4 8) @parameter ] + [ (Pair 4 8) ] - location: 11 (remaining gas: 1039992.804 units remaining) [ 4 8 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 7 7)-(Some 7)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 7 7)-(Some 7)].out index 6fc5e9a591..4a6a990136 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 7 7)-(Some 7)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 7 7)-(Some 7)].out @@ -10,7 +10,7 @@ trace - location: 10 (remaining gas: 1039992.824 units remaining) [ (Pair (Pair 7 7) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 7 7) @parameter ] + [ (Pair 7 7) ] - location: 11 (remaining gas: 1039992.804 units remaining) [ 7 7 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 8 0)-(Some 8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 8 0)-(Some 8)].out index 7c6ca939cc..e8f565308a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 8 0)-(Some 8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 8 0)-(Some 8)].out @@ -10,7 +10,7 @@ trace - location: 10 (remaining gas: 1039992.824 units remaining) [ (Pair (Pair 8 0) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 8 0) @parameter ] + [ (Pair 8 0) ] - location: 11 (remaining gas: 1039992.804 units remaining) [ 8 0 ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".368bdfd73a.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".368bdfd73a.out" index a4e99908e2..0c1780cfa0 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".368bdfd73a.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".368bdfd73a.out" @@ -27,7 +27,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 17 (remaining gas: 1039185.285 units remaining) [ (Pair -1 1 @@ -37,7 +37,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair -1 1 "foobar" @@ -46,7 +46,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 18 (remaining gas: 1039185.275 units remaining) [ -1 (Pair -1 @@ -57,7 +57,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 19 (remaining gas: 1039185.260 units remaining) [ (Pair -1 1 @@ -67,7 +67,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 21 (remaining gas: 1039185.250 units remaining) [ -1 (Pair 1 @@ -90,7 +90,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 22 (remaining gas: 1039184.993 units remaining) - [ 0x050041 @packed + [ 0x050041 -1 (Pair 1 "foobar" @@ -101,7 +101,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 23 (remaining gas: 1039184.573 units remaining) - [ (Some -1) @packed.unpacked + [ (Some -1) -1 (Pair 1 "foobar" @@ -112,7 +112,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 26 (remaining gas: 1039184.563 units remaining) - [ -1 @packed.unpacked.some + [ -1 -1 (Pair 1 "foobar" @@ -123,7 +123,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 26 (remaining gas: 1039184.548 units remaining) - [ -1 @packed.unpacked.some + [ -1 -1 (Pair 1 "foobar" @@ -227,7 +227,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 47 (remaining gas: 1039184.171 units remaining) - [ 0x050001 @packed + [ 0x050001 1 (Pair "foobar" 0x00aabbcc @@ -237,7 +237,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 48 (remaining gas: 1039183.751 units remaining) - [ (Some 1) @packed.unpacked + [ (Some 1) 1 (Pair "foobar" 0x00aabbcc @@ -247,7 +247,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 51 (remaining gas: 1039183.741 units remaining) - [ 1 @packed.unpacked.some + [ 1 1 (Pair "foobar" 0x00aabbcc @@ -257,7 +257,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 51 (remaining gas: 1039183.726 units remaining) - [ 1 @packed.unpacked.some + [ 1 1 (Pair "foobar" 0x00aabbcc @@ -350,7 +350,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 72 (remaining gas: 1039183.052 units remaining) - [ 0x050100000006666f6f626172 @packed + [ 0x050100000006666f6f626172 "foobar" (Pair 0x00aabbcc 1000 @@ -359,7 +359,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 73 (remaining gas: 1039182.377 units remaining) - [ (Some "foobar") @packed.unpacked + [ (Some "foobar") "foobar" (Pair 0x00aabbcc 1000 @@ -368,7 +368,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 76 (remaining gas: 1039182.367 units remaining) - [ "foobar" @packed.unpacked.some + [ "foobar" "foobar" (Pair 0x00aabbcc 1000 @@ -377,7 +377,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 76 (remaining gas: 1039182.352 units remaining) - [ "foobar" @packed.unpacked.some + [ "foobar" "foobar" (Pair 0x00aabbcc 1000 @@ -459,7 +459,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 97 (remaining gas: 1039181.744 units remaining) - [ 0x050a0000000400aabbcc @packed + [ 0x050a0000000400aabbcc 0x00aabbcc (Pair 1000 False @@ -467,7 +467,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 98 (remaining gas: 1039181.183 units remaining) - [ (Some 0x00aabbcc) @packed.unpacked + [ (Some 0x00aabbcc) 0x00aabbcc (Pair 1000 False @@ -475,7 +475,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 101 (remaining gas: 1039181.173 units remaining) - [ 0x00aabbcc @packed.unpacked.some + [ 0x00aabbcc 0x00aabbcc (Pair 1000 False @@ -483,7 +483,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 101 (remaining gas: 1039181.158 units remaining) - [ 0x00aabbcc @packed.unpacked.some + [ 0x00aabbcc 0x00aabbcc (Pair 1000 False @@ -554,28 +554,28 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 122 (remaining gas: 1039180.748 units remaining) - [ 0x0500a80f @packed + [ 0x0500a80f 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 123 (remaining gas: 1039180.308 units remaining) - [ (Some 1000) @packed.unpacked + [ (Some 1000) 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 126 (remaining gas: 1039180.298 units remaining) - [ 1000 @packed.unpacked.some + [ 1000 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 126 (remaining gas: 1039180.283 units remaining) - [ 1000 @packed.unpacked.some + [ 1000 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @@ -635,25 +635,25 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 147 (remaining gas: 1039179.906 units remaining) - [ 0x050303 @packed + [ 0x050303 False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 148 (remaining gas: 1039179.486 units remaining) - [ (Some False) @packed.unpacked + [ (Some False) False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 151 (remaining gas: 1039179.476 units remaining) - [ False @packed.unpacked.some + [ False False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 151 (remaining gas: 1039179.461 units remaining) - [ False @packed.unpacked.some + [ False False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" @@ -700,19 +700,19 @@ trace "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 172 (remaining gas: 1039178.221 units remaining) - [ 0x050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed + [ 0x050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 173 (remaining gas: 1039177.268 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @packed.unpacked + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 176 (remaining gas: 1039177.258 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @packed.unpacked.some + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 176 (remaining gas: 1039177.243 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @packed.unpacked.some + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 184 (remaining gas: 1039177.207 units remaining) @@ -741,19 +741,19 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 197 (remaining gas: 1039176.733 units remaining) - [ 0x050095bbb0d70b @packed + [ 0x050095bbb0d70b "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 198 (remaining gas: 1039176.233 units remaining) - [ (Some "2019-09-09T08:35:33Z") @packed.unpacked + [ (Some "2019-09-09T08:35:33Z") "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 201 (remaining gas: 1039176.223 units remaining) - [ "2019-09-09T08:35:33Z" @packed.unpacked.some + [ "2019-09-09T08:35:33Z" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 201 (remaining gas: 1039176.208 units remaining) - [ "2019-09-09T08:35:33Z" @packed.unpacked.some + [ "2019-09-09T08:35:33Z" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 209 (remaining gas: 1039176.173 units remaining) @@ -770,16 +770,16 @@ trace [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 218 (remaining gas: 1039165.170 units remaining) - [ 0x050a000000160000bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed + [ 0x050a000000160000bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 219 (remaining gas: 1038514.247 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @packed.unpacked + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 222 (remaining gas: 1038514.237 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @packed.unpacked.some + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 222 (remaining gas: 1038514.222 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @packed.unpacked.some + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 230 (remaining gas: 1038514.186 units remaining) [ 0 ] @@ -792,21 +792,21 @@ trace - location: 238 (remaining gas: 1038514.136 units remaining) [ 0 ] - location: 241 (remaining gas: 1038513.909 units remaining) - [ 0x050000 @packed ] + [ 0x050000 ] - location: 242 (remaining gas: 1038513.489 units remaining) - [ (Some 0) @packed.unpacked ] + [ (Some 0) ] - location: 245 (remaining gas: 1038513.479 units remaining) - [ 0 @packed.unpacked.some ] + [ 0 ] - location: 245 (remaining gas: 1038513.464 units remaining) - [ 0 @packed.unpacked.some ] + [ 0 ] - location: 251 (remaining gas: 1038513.454 units remaining) [ ] - location: 252 (remaining gas: 1038513.444 units remaining) [ -1 ] - location: 255 (remaining gas: 1038513.217 units remaining) - [ 0x050041 @packed ] + [ 0x050041 ] - location: 256 (remaining gas: 1038416.897 units remaining) - [ None @packed.unpacked ] + [ None ] - location: 259 (remaining gas: 1038416.887 units remaining) [ ] - location: 259 (remaining gas: 1038416.872 units remaining) @@ -814,7 +814,7 @@ trace - location: 265 (remaining gas: 1038416.862 units remaining) [ 0x ] - location: 268 (remaining gas: 1038416.602 units remaining) - [ None @unpacked ] + [ None ] - location: 271 (remaining gas: 1038416.592 units remaining) [ ] - location: 271 (remaining gas: 1038416.577 units remaining) @@ -822,7 +822,7 @@ trace - location: 277 (remaining gas: 1038416.567 units remaining) [ 0x04 ] - location: 280 (remaining gas: 1038416.287 units remaining) - [ None @unpacked ] + [ None ] - location: 283 (remaining gas: 1038416.277 units remaining) [ ] - location: 283 (remaining gas: 1038416.262 units remaining) @@ -830,7 +830,7 @@ trace - location: 289 (remaining gas: 1038416.252 units remaining) [ 0x05 ] - location: 292 (remaining gas: 1038415.972 units remaining) - [ None @unpacked ] + [ None ] - location: 295 (remaining gas: 1038415.962 units remaining) [ ] - location: 295 (remaining gas: 1038415.947 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".735d9ae802.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".735d9ae802.out" index b4a03f3df0..eb4ffcb762 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".735d9ae802.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".735d9ae802.out" @@ -27,7 +27,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 17 (remaining gas: 1039185.285 units remaining) [ (Pair -1 1 @@ -37,7 +37,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair -1 1 "foobar" @@ -46,7 +46,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 18 (remaining gas: 1039185.275 units remaining) [ -1 (Pair -1 @@ -57,7 +57,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 19 (remaining gas: 1039185.260 units remaining) [ (Pair -1 1 @@ -67,7 +67,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @parameter ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 21 (remaining gas: 1039185.250 units remaining) [ -1 (Pair 1 @@ -90,7 +90,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 22 (remaining gas: 1039184.993 units remaining) - [ 0x050041 @packed + [ 0x050041 -1 (Pair 1 "foobar" @@ -101,7 +101,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 23 (remaining gas: 1039184.573 units remaining) - [ (Some -1) @packed.unpacked + [ (Some -1) -1 (Pair 1 "foobar" @@ -112,7 +112,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 26 (remaining gas: 1039184.563 units remaining) - [ -1 @packed.unpacked.some + [ -1 -1 (Pair 1 "foobar" @@ -123,7 +123,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 26 (remaining gas: 1039184.548 units remaining) - [ -1 @packed.unpacked.some + [ -1 -1 (Pair 1 "foobar" @@ -227,7 +227,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 47 (remaining gas: 1039184.171 units remaining) - [ 0x050001 @packed + [ 0x050001 1 (Pair "foobar" 0x00aabbcc @@ -237,7 +237,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 48 (remaining gas: 1039183.751 units remaining) - [ (Some 1) @packed.unpacked + [ (Some 1) 1 (Pair "foobar" 0x00aabbcc @@ -247,7 +247,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 51 (remaining gas: 1039183.741 units remaining) - [ 1 @packed.unpacked.some + [ 1 1 (Pair "foobar" 0x00aabbcc @@ -257,7 +257,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 51 (remaining gas: 1039183.726 units remaining) - [ 1 @packed.unpacked.some + [ 1 1 (Pair "foobar" 0x00aabbcc @@ -350,7 +350,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 72 (remaining gas: 1039183.052 units remaining) - [ 0x050100000006666f6f626172 @packed + [ 0x050100000006666f6f626172 "foobar" (Pair 0x00aabbcc 1000 @@ -359,7 +359,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 73 (remaining gas: 1039182.377 units remaining) - [ (Some "foobar") @packed.unpacked + [ (Some "foobar") "foobar" (Pair 0x00aabbcc 1000 @@ -368,7 +368,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 76 (remaining gas: 1039182.367 units remaining) - [ "foobar" @packed.unpacked.some + [ "foobar" "foobar" (Pair 0x00aabbcc 1000 @@ -377,7 +377,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 76 (remaining gas: 1039182.352 units remaining) - [ "foobar" @packed.unpacked.some + [ "foobar" "foobar" (Pair 0x00aabbcc 1000 @@ -459,7 +459,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 97 (remaining gas: 1039181.744 units remaining) - [ 0x050a0000000400aabbcc @packed + [ 0x050a0000000400aabbcc 0x00aabbcc (Pair 1000 False @@ -467,7 +467,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 98 (remaining gas: 1039181.183 units remaining) - [ (Some 0x00aabbcc) @packed.unpacked + [ (Some 0x00aabbcc) 0x00aabbcc (Pair 1000 False @@ -475,7 +475,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 101 (remaining gas: 1039181.173 units remaining) - [ 0x00aabbcc @packed.unpacked.some + [ 0x00aabbcc 0x00aabbcc (Pair 1000 False @@ -483,7 +483,7 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 101 (remaining gas: 1039181.158 units remaining) - [ 0x00aabbcc @packed.unpacked.some + [ 0x00aabbcc 0x00aabbcc (Pair 1000 False @@ -554,28 +554,28 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 122 (remaining gas: 1039180.748 units remaining) - [ 0x0500a80f @packed + [ 0x0500a80f 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 123 (remaining gas: 1039180.308 units remaining) - [ (Some 1000) @packed.unpacked + [ (Some 1000) 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 126 (remaining gas: 1039180.298 units remaining) - [ 1000 @packed.unpacked.some + [ 1000 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 126 (remaining gas: 1039180.283 units remaining) - [ 1000 @packed.unpacked.some + [ 1000 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @@ -635,25 +635,25 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 147 (remaining gas: 1039179.906 units remaining) - [ 0x050303 @packed + [ 0x050303 False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 148 (remaining gas: 1039179.486 units remaining) - [ (Some False) @packed.unpacked + [ (Some False) False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 151 (remaining gas: 1039179.476 units remaining) - [ False @packed.unpacked.some + [ False False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 151 (remaining gas: 1039179.461 units remaining) - [ False @packed.unpacked.some + [ False False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" @@ -700,19 +700,19 @@ trace "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 172 (remaining gas: 1039178.221 units remaining) - [ 0x050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed + [ 0x050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 173 (remaining gas: 1039177.268 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @packed.unpacked + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 176 (remaining gas: 1039177.258 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @packed.unpacked.some + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 176 (remaining gas: 1039177.243 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @packed.unpacked.some + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 184 (remaining gas: 1039177.207 units remaining) @@ -741,19 +741,19 @@ trace "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 197 (remaining gas: 1039176.733 units remaining) - [ 0x050095bbb0d70b @packed + [ 0x050095bbb0d70b "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 198 (remaining gas: 1039176.233 units remaining) - [ (Some "2019-09-09T08:35:33Z") @packed.unpacked + [ (Some "2019-09-09T08:35:33Z") "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 201 (remaining gas: 1039176.223 units remaining) - [ "2019-09-09T08:35:33Z" @packed.unpacked.some + [ "2019-09-09T08:35:33Z" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 201 (remaining gas: 1039176.208 units remaining) - [ "2019-09-09T08:35:33Z" @packed.unpacked.some + [ "2019-09-09T08:35:33Z" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 209 (remaining gas: 1039176.173 units remaining) @@ -770,16 +770,16 @@ trace [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 218 (remaining gas: 1039165.170 units remaining) - [ 0x050a000000160000bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed + [ 0x050a000000160000bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 219 (remaining gas: 1038514.247 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @packed.unpacked + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 222 (remaining gas: 1038514.237 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @packed.unpacked.some + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 222 (remaining gas: 1038514.222 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" @packed.unpacked.some + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 230 (remaining gas: 1038514.186 units remaining) [ 0 ] @@ -792,21 +792,21 @@ trace - location: 238 (remaining gas: 1038514.136 units remaining) [ 0 ] - location: 241 (remaining gas: 1038513.909 units remaining) - [ 0x050000 @packed ] + [ 0x050000 ] - location: 242 (remaining gas: 1038513.489 units remaining) - [ (Some 0) @packed.unpacked ] + [ (Some 0) ] - location: 245 (remaining gas: 1038513.479 units remaining) - [ 0 @packed.unpacked.some ] + [ 0 ] - location: 245 (remaining gas: 1038513.464 units remaining) - [ 0 @packed.unpacked.some ] + [ 0 ] - location: 251 (remaining gas: 1038513.454 units remaining) [ ] - location: 252 (remaining gas: 1038513.444 units remaining) [ -1 ] - location: 255 (remaining gas: 1038513.217 units remaining) - [ 0x050041 @packed ] + [ 0x050041 ] - location: 256 (remaining gas: 1038416.897 units remaining) - [ None @packed.unpacked ] + [ None ] - location: 259 (remaining gas: 1038416.887 units remaining) [ ] - location: 259 (remaining gas: 1038416.872 units remaining) @@ -814,7 +814,7 @@ trace - location: 265 (remaining gas: 1038416.862 units remaining) [ 0x ] - location: 268 (remaining gas: 1038416.602 units remaining) - [ None @unpacked ] + [ None ] - location: 271 (remaining gas: 1038416.592 units remaining) [ ] - location: 271 (remaining gas: 1038416.577 units remaining) @@ -822,7 +822,7 @@ trace - location: 277 (remaining gas: 1038416.567 units remaining) [ 0x04 ] - location: 280 (remaining gas: 1038416.287 units remaining) - [ None @unpacked ] + [ None ] - location: 283 (remaining gas: 1038416.277 units remaining) [ ] - location: 283 (remaining gas: 1038416.262 units remaining) @@ -830,7 +830,7 @@ trace - location: 289 (remaining gas: 1038416.252 units remaining) [ 0x05 ] - location: 292 (remaining gas: 1038415.972 units remaining) - [ None @unpacked ] + [ None ] - location: 295 (remaining gas: 1038415.962 units remaining) [ ] - location: 295 (remaining gas: 1038415.947 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" index 0446e0d7b9..cc3d90a14b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" @@ -29,7 +29,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) @parameter ] + { PACK }) ] - location: 29 (remaining gas: 1039468 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -40,7 +40,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) @parameter + { PACK }) (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -50,7 +50,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) @parameter ] + { PACK }) ] - location: 30 (remaining gas: 1039467.990 units remaining) [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @@ -62,7 +62,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) @parameter ] + { PACK }) ] - location: 31 (remaining gas: 1039467.975 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -73,7 +73,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) @parameter ] + { PACK }) ] - location: 33 (remaining gas: 1039467.965 units remaining) [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit @@ -98,7 +98,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 34 (remaining gas: 1039466.063 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -121,7 +121,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 37 (remaining gas: 1039464.176 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -132,7 +132,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 38 (remaining gas: 1039143.032 units remaining) - [ (Some "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav") @packed.unpacked + [ (Some "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav") (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -143,7 +143,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 41 (remaining gas: 1039143.022 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @packed.unpacked.some + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -154,7 +154,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 41 (remaining gas: 1039143.007 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @packed.unpacked.some + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -165,7 +165,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 47 (remaining gas: 1039141.135 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed.unpacked.some.packed + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -176,8 +176,8 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 35 (remaining gas: 1039141.105 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed - 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed.unpacked.some.packed + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -291,7 +291,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 63 (remaining gas: 1039140.728 units remaining) - [ 0x05030b @packed + [ 0x05030b Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -312,7 +312,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 66 (remaining gas: 1039140.486 units remaining) - [ 0x05030b @packed + [ 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -322,7 +322,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 67 (remaining gas: 1039140.066 units remaining) - [ (Some Unit) @packed.unpacked + [ (Some Unit) (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -332,7 +332,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 70 (remaining gas: 1039140.056 units remaining) - [ Unit @packed.unpacked.some + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -342,7 +342,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 70 (remaining gas: 1039140.041 units remaining) - [ Unit @packed.unpacked.some + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -352,7 +352,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 76 (remaining gas: 1039139.814 units remaining) - [ 0x05030b @packed.unpacked.some.packed + [ 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -362,8 +362,8 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 64 (remaining gas: 1039139.784 units remaining) - [ 0x05030b @packed - 0x05030b @packed.unpacked.some.packed + [ 0x05030b + 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -466,7 +466,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 92 (remaining gas: 1039137.147 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -485,7 +485,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 95 (remaining gas: 1039134.645 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } @@ -494,7 +494,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 96 (remaining gas: 1039132.842 units remaining) - [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") @packed.unpacked + [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } @@ -503,7 +503,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 99 (remaining gas: 1039132.832 units remaining) - [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" @packed.unpacked.some + [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } @@ -512,7 +512,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 99 (remaining gas: 1039132.817 units remaining) - [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" @packed.unpacked.some + [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } @@ -521,7 +521,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 105 (remaining gas: 1039130.330 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed.unpacked.some.packed + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } @@ -530,8 +530,8 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 93 (remaining gas: 1039130.300 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed - 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed.unpacked.some.packed + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } @@ -623,7 +623,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 121 (remaining gas: 1039127.500 units remaining) - [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed + [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") (Pair { Unit } { True } @@ -640,7 +640,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 124 (remaining gas: 1039124.836 units remaining) - [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed + [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair { Unit } { True } (Pair 19 10) @@ -648,7 +648,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 125 (remaining gas: 1039122.892 units remaining) - [ (Some (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe")) @packed.unpacked + [ (Some (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe")) (Pair { Unit } { True } (Pair 19 10) @@ -656,7 +656,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 129 (remaining gas: 1039122.882 units remaining) - [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") @packed.unpacked.some + [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") (Pair { Unit } { True } (Pair 19 10) @@ -664,7 +664,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 129 (remaining gas: 1039122.867 units remaining) - [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") @packed.unpacked.some + [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") (Pair { Unit } { True } (Pair 19 10) @@ -672,7 +672,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 135 (remaining gas: 1039120.218 units remaining) - [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed.unpacked.some.packed + [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair { Unit } { True } (Pair 19 10) @@ -680,8 +680,8 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 122 (remaining gas: 1039120.188 units remaining) - [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed - 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed.unpacked.some.packed + [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair { Unit } { True } (Pair 19 10) @@ -762,7 +762,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 151 (remaining gas: 1039119.549 units remaining) - [ 0x050200000002030b @packed + [ 0x050200000002030b { Unit } (Pair { True } (Pair 19 10) @@ -777,43 +777,43 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 154 (remaining gas: 1039119.046 units remaining) - [ 0x050200000002030b @packed + [ 0x050200000002030b (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 155 (remaining gas: 1039118.425 units remaining) - [ (Some { Unit }) @packed.unpacked + [ (Some { Unit }) (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 159 (remaining gas: 1039118.415 units remaining) - [ { Unit } @packed.unpacked.some + [ { Unit } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 159 (remaining gas: 1039118.400 units remaining) - [ { Unit } @packed.unpacked.some + [ { Unit } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 165 (remaining gas: 1039117.912 units remaining) - [ 0x050200000002030b @packed.unpacked.some.packed + [ 0x050200000002030b (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 152 (remaining gas: 1039117.882 units remaining) - [ 0x050200000002030b @packed - 0x050200000002030b @packed.unpacked.some.packed + [ 0x050200000002030b + 0x050200000002030b (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @@ -883,7 +883,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 181 (remaining gas: 1039117.244 units remaining) - [ 0x050200000002030a @packed + [ 0x050200000002030a { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @@ -896,38 +896,38 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 184 (remaining gas: 1039116.741 units remaining) - [ 0x050200000002030a @packed + [ 0x050200000002030a (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 185 (remaining gas: 1039115.920 units remaining) - [ (Some { True }) @packed.unpacked + [ (Some { True }) (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 189 (remaining gas: 1039115.910 units remaining) - [ { True } @packed.unpacked.some + [ { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 189 (remaining gas: 1039115.895 units remaining) - [ { True } @packed.unpacked.some + [ { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 195 (remaining gas: 1039115.407 units remaining) - [ 0x050200000002030a @packed.unpacked.some.packed + [ 0x050200000002030a (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 182 (remaining gas: 1039115.377 units remaining) - [ 0x050200000002030a @packed - 0x050200000002030a @packed.unpacked.some.packed + [ 0x050200000002030a + 0x050200000002030a (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } @@ -986,7 +986,7 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 211 (remaining gas: 1039114.676 units remaining) - [ 0x0507070013000a @packed + [ 0x0507070013000a (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } @@ -997,33 +997,33 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 214 (remaining gas: 1039114.110 units remaining) - [ 0x0507070013000a @packed + [ 0x0507070013000a (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 215 (remaining gas: 1039113.410 units remaining) - [ (Some (Pair 19 10)) @packed.unpacked + [ (Some (Pair 19 10)) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 220 (remaining gas: 1039113.400 units remaining) - [ (Pair 19 10) @packed.unpacked.some + [ (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 220 (remaining gas: 1039113.385 units remaining) - [ (Pair 19 10) @packed.unpacked.some + [ (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 226 (remaining gas: 1039112.834 units remaining) - [ 0x0507070013000a @packed.unpacked.some.packed + [ 0x0507070013000a (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 212 (remaining gas: 1039112.804 units remaining) - [ 0x0507070013000a @packed - 0x0507070013000a @packed.unpacked.some.packed + [ 0x0507070013000a + 0x0507070013000a (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] @@ -1069,30 +1069,30 @@ trace (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 242 (remaining gas: 1039111.402 units remaining) - [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed + [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 243 (remaining gas: 1039111.387 units remaining) [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 245 (remaining gas: 1039110.135 units remaining) - [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed + [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 246 (remaining gas: 1039109.042 units remaining) - [ (Some (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5")) @packed.unpacked + [ (Some (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5")) (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 251 (remaining gas: 1039109.032 units remaining) - [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @packed.unpacked.some + [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 251 (remaining gas: 1039109.017 units remaining) - [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") @packed.unpacked.some + [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 257 (remaining gas: 1039107.765 units remaining) - [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed.unpacked.some.packed + [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 243 (remaining gas: 1039107.735 units remaining) - [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed - 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a @packed.unpacked.some.packed + [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 260 (remaining gas: 1039107.700 units remaining) [ 0 @@ -1120,30 +1120,30 @@ trace { Elt 0 "foo" ; Elt 1 "bar" } { PACK } ] - location: 273 (remaining gas: 1039105.980 units remaining) - [ 0x050200000018070400000100000003666f6f070400010100000003626172 @packed + [ 0x050200000018070400000100000003666f6f070400010100000003626172 { Elt 0 "foo" ; Elt 1 "bar" } { PACK } ] - location: 274 (remaining gas: 1039105.965 units remaining) [ { Elt 0 "foo" ; Elt 1 "bar" } { PACK } ] - location: 276 (remaining gas: 1039104.360 units remaining) - [ 0x050200000018070400000100000003666f6f070400010100000003626172 @packed + [ 0x050200000018070400000100000003666f6f070400010100000003626172 { PACK } ] - location: 277 (remaining gas: 1039102.504 units remaining) - [ (Some { Elt 0 "foo" ; Elt 1 "bar" }) @packed.unpacked + [ (Some { Elt 0 "foo" ; Elt 1 "bar" }) { PACK } ] - location: 282 (remaining gas: 1039102.494 units remaining) - [ { Elt 0 "foo" ; Elt 1 "bar" } @packed.unpacked.some + [ { Elt 0 "foo" ; Elt 1 "bar" } { PACK } ] - location: 282 (remaining gas: 1039102.479 units remaining) - [ { Elt 0 "foo" ; Elt 1 "bar" } @packed.unpacked.some + [ { Elt 0 "foo" ; Elt 1 "bar" } { PACK } ] - location: 288 (remaining gas: 1039100.874 units remaining) - [ 0x050200000018070400000100000003666f6f070400010100000003626172 @packed.unpacked.some.packed + [ 0x050200000018070400000100000003666f6f070400010100000003626172 { PACK } ] - location: 274 (remaining gas: 1039100.844 units remaining) - [ 0x050200000018070400000100000003666f6f070400010100000003626172 @packed - 0x050200000018070400000100000003666f6f070400010100000003626172 @packed.unpacked.some.packed + [ 0x050200000018070400000100000003666f6f070400010100000003626172 + 0x050200000018070400000100000003666f6f070400010100000003626172 { PACK } ] - location: 291 (remaining gas: 1039100.809 units remaining) [ 0 @@ -1159,23 +1159,23 @@ trace [ { PACK } { PACK } ] - location: 300 (remaining gas: 1039100.086 units remaining) - [ 0x050200000002030c @packed + [ 0x050200000002030c { PACK } ] - location: 301 (remaining gas: 1039100.071 units remaining) [ { PACK } ] - location: 303 (remaining gas: 1039099.398 units remaining) - [ 0x050200000002030c @packed ] + [ 0x050200000002030c ] - location: 304 (remaining gas: 1039098.217 units remaining) - [ (Some { PACK }) @packed.unpacked ] + [ (Some { PACK }) ] - location: 309 (remaining gas: 1039098.207 units remaining) - [ { PACK } @packed.unpacked.some ] + [ { PACK } ] - location: 309 (remaining gas: 1039098.192 units remaining) - [ { PACK } @packed.unpacked.some ] + [ { PACK } ] - location: 315 (remaining gas: 1039097.519 units remaining) - [ 0x050200000002030c @packed.unpacked.some.packed ] + [ 0x050200000002030c ] - location: 301 (remaining gas: 1039097.489 units remaining) - [ 0x050200000002030c @packed - 0x050200000002030c @packed.unpacked.some.packed ] + [ 0x050200000002030c + 0x050200000002030c ] - location: 318 (remaining gas: 1039097.454 units remaining) [ 0 ] - location: 319 (remaining gas: 1039097.439 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.4e20b52378.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.4e20b52378.out" index fd02da8950..8370889dd7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.4e20b52378.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.4e20b52378.out" @@ -29,7 +29,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) @parameter ] + { DUP ; DROP ; PACK }) ] - location: 29 (remaining gas: 1039478.013 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -40,7 +40,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) @parameter + { DUP ; DROP ; PACK }) (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -50,7 +50,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) @parameter ] + { DUP ; DROP ; PACK }) ] - location: 30 (remaining gas: 1039478.003 units remaining) [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @@ -62,7 +62,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) @parameter ] + { DUP ; DROP ; PACK }) ] - location: 31 (remaining gas: 1039477.988 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -73,7 +73,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) @parameter ] + { DUP ; DROP ; PACK }) ] - location: 33 (remaining gas: 1039477.978 units remaining) [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit @@ -98,7 +98,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 34 (remaining gas: 1039476.076 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -121,7 +121,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 37 (remaining gas: 1039474.189 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -132,7 +132,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 38 (remaining gas: 1039153.045 units remaining) - [ (Some "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav") @packed.unpacked + [ (Some "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav") (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -143,7 +143,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 41 (remaining gas: 1039153.035 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @packed.unpacked.some + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -154,7 +154,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 41 (remaining gas: 1039153.020 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @packed.unpacked.some + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -165,7 +165,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 47 (remaining gas: 1039151.148 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed.unpacked.some.packed + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -176,8 +176,8 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 35 (remaining gas: 1039151.118 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed - 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f @packed.unpacked.some.packed + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -291,7 +291,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 63 (remaining gas: 1039150.741 units remaining) - [ 0x05030b @packed + [ 0x05030b Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -312,7 +312,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 66 (remaining gas: 1039150.499 units remaining) - [ 0x05030b @packed + [ 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -322,7 +322,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 67 (remaining gas: 1039150.079 units remaining) - [ (Some Unit) @packed.unpacked + [ (Some Unit) (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -332,7 +332,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 70 (remaining gas: 1039150.069 units remaining) - [ Unit @packed.unpacked.some + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -342,7 +342,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 70 (remaining gas: 1039150.054 units remaining) - [ Unit @packed.unpacked.some + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -352,7 +352,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 76 (remaining gas: 1039149.827 units remaining) - [ 0x05030b @packed.unpacked.some.packed + [ 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -362,8 +362,8 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 64 (remaining gas: 1039149.797 units remaining) - [ 0x05030b @packed - 0x05030b @packed.unpacked.some.packed + [ 0x05030b + 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -466,7 +466,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 92 (remaining gas: 1039147.160 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair None {} @@ -485,7 +485,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 95 (remaining gas: 1039144.658 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair None {} {} @@ -494,7 +494,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 96 (remaining gas: 1039142.855 units remaining) - [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") @packed.unpacked + [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") (Pair None {} {} @@ -503,7 +503,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 99 (remaining gas: 1039142.845 units remaining) - [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" @packed.unpacked.some + [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" (Pair None {} {} @@ -512,7 +512,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 99 (remaining gas: 1039142.830 units remaining) - [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" @packed.unpacked.some + [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" (Pair None {} {} @@ -521,7 +521,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 105 (remaining gas: 1039140.343 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed.unpacked.some.packed + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair None {} {} @@ -530,8 +530,8 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 93 (remaining gas: 1039140.313 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed - 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 @packed.unpacked.some.packed + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair None {} {} @@ -623,7 +623,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 121 (remaining gas: 1039139.935 units remaining) - [ 0x050306 @packed + [ 0x050306 None (Pair {} {} @@ -640,7 +640,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 124 (remaining gas: 1039139.693 units remaining) - [ 0x050306 @packed + [ 0x050306 (Pair {} {} (Pair 40 -10) @@ -648,7 +648,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 125 (remaining gas: 1039139.273 units remaining) - [ (Some None) @packed.unpacked + [ (Some None) (Pair {} {} (Pair 40 -10) @@ -656,7 +656,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 129 (remaining gas: 1039139.263 units remaining) - [ None @packed.unpacked.some + [ None (Pair {} {} (Pair 40 -10) @@ -664,7 +664,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 129 (remaining gas: 1039139.248 units remaining) - [ None @packed.unpacked.some + [ None (Pair {} {} (Pair 40 -10) @@ -672,7 +672,7 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 135 (remaining gas: 1039139.021 units remaining) - [ 0x050306 @packed.unpacked.some.packed + [ 0x050306 (Pair {} {} (Pair 40 -10) @@ -680,8 +680,8 @@ trace {} { DUP ; DROP ; PACK }) ] - location: 122 (remaining gas: 1039138.991 units remaining) - [ 0x050306 @packed - 0x050306 @packed.unpacked.some.packed + [ 0x050306 + 0x050306 (Pair {} {} (Pair 40 -10) @@ -754,30 +754,30 @@ trace {} (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 151 (remaining gas: 1039138.515 units remaining) - [ 0x050200000000 @packed + [ 0x050200000000 {} (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 152 (remaining gas: 1039138.500 units remaining) [ {} (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 154 (remaining gas: 1039138.174 units remaining) - [ 0x050200000000 @packed + [ 0x050200000000 (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 155 (remaining gas: 1039137.694 units remaining) - [ (Some {}) @packed.unpacked + [ (Some {}) (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 159 (remaining gas: 1039137.684 units remaining) - [ {} @packed.unpacked.some + [ {} (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 159 (remaining gas: 1039137.669 units remaining) - [ {} @packed.unpacked.some + [ {} (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 165 (remaining gas: 1039137.343 units remaining) - [ 0x050200000000 @packed.unpacked.some.packed + [ 0x050200000000 (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 152 (remaining gas: 1039137.313 units remaining) - [ 0x050200000000 @packed - 0x050200000000 @packed.unpacked.some.packed + [ 0x050200000000 + 0x050200000000 (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 168 (remaining gas: 1039137.278 units remaining) [ 0 @@ -805,30 +805,30 @@ trace {} (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 181 (remaining gas: 1039136.837 units remaining) - [ 0x050200000000 @packed + [ 0x050200000000 {} (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 182 (remaining gas: 1039136.822 units remaining) [ {} (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 184 (remaining gas: 1039136.496 units remaining) - [ 0x050200000000 @packed + [ 0x050200000000 (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 185 (remaining gas: 1039136.016 units remaining) - [ (Some {}) @packed.unpacked + [ (Some {}) (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 189 (remaining gas: 1039136.006 units remaining) - [ {} @packed.unpacked.some + [ {} (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 189 (remaining gas: 1039135.991 units remaining) - [ {} @packed.unpacked.some + [ {} (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 195 (remaining gas: 1039135.665 units remaining) - [ 0x050200000000 @packed.unpacked.some.packed + [ 0x050200000000 (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 182 (remaining gas: 1039135.635 units remaining) - [ 0x050200000000 @packed - 0x050200000000 @packed.unpacked.some.packed + [ 0x050200000000 + 0x050200000000 (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 198 (remaining gas: 1039135.600 units remaining) [ 0 @@ -856,30 +856,30 @@ trace (Pair 40 -10) (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 211 (remaining gas: 1039134.934 units remaining) - [ 0x0507070028004a @packed + [ 0x0507070028004a (Pair 40 -10) (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 212 (remaining gas: 1039134.919 units remaining) [ (Pair 40 -10) (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 214 (remaining gas: 1039134.368 units remaining) - [ 0x0507070028004a @packed + [ 0x0507070028004a (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 215 (remaining gas: 1039133.668 units remaining) - [ (Some (Pair 40 -10)) @packed.unpacked + [ (Some (Pair 40 -10)) (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 220 (remaining gas: 1039133.658 units remaining) - [ (Pair 40 -10) @packed.unpacked.some + [ (Pair 40 -10) (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 220 (remaining gas: 1039133.643 units remaining) - [ (Pair 40 -10) @packed.unpacked.some + [ (Pair 40 -10) (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 226 (remaining gas: 1039133.092 units remaining) - [ 0x0507070028004a @packed.unpacked.some.packed + [ 0x0507070028004a (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 212 (remaining gas: 1039133.062 units remaining) - [ 0x0507070028004a @packed - 0x0507070028004a @packed.unpacked.some.packed + [ 0x0507070028004a + 0x0507070028004a (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 229 (remaining gas: 1039133.027 units remaining) [ 0 @@ -907,30 +907,30 @@ trace (Right "2019-09-09T08:35:33Z") (Pair {} { DUP ; DROP ; PACK }) ] - location: 242 (remaining gas: 1039132.391 units remaining) - [ 0x0505080095bbb0d70b @packed + [ 0x0505080095bbb0d70b (Right "2019-09-09T08:35:33Z") (Pair {} { DUP ; DROP ; PACK }) ] - location: 243 (remaining gas: 1039132.376 units remaining) [ (Right "2019-09-09T08:35:33Z") (Pair {} { DUP ; DROP ; PACK }) ] - location: 245 (remaining gas: 1039131.855 units remaining) - [ 0x0505080095bbb0d70b @packed + [ 0x0505080095bbb0d70b (Pair {} { DUP ; DROP ; PACK }) ] - location: 246 (remaining gas: 1039131.214 units remaining) - [ (Some (Right "2019-09-09T08:35:33Z")) @packed.unpacked + [ (Some (Right "2019-09-09T08:35:33Z")) (Pair {} { DUP ; DROP ; PACK }) ] - location: 251 (remaining gas: 1039131.204 units remaining) - [ (Right "2019-09-09T08:35:33Z") @packed.unpacked.some + [ (Right "2019-09-09T08:35:33Z") (Pair {} { DUP ; DROP ; PACK }) ] - location: 251 (remaining gas: 1039131.189 units remaining) - [ (Right "2019-09-09T08:35:33Z") @packed.unpacked.some + [ (Right "2019-09-09T08:35:33Z") (Pair {} { DUP ; DROP ; PACK }) ] - location: 257 (remaining gas: 1039130.668 units remaining) - [ 0x0505080095bbb0d70b @packed.unpacked.some.packed + [ 0x0505080095bbb0d70b (Pair {} { DUP ; DROP ; PACK }) ] - location: 243 (remaining gas: 1039130.638 units remaining) - [ 0x0505080095bbb0d70b @packed - 0x0505080095bbb0d70b @packed.unpacked.some.packed + [ 0x0505080095bbb0d70b + 0x0505080095bbb0d70b (Pair {} { DUP ; DROP ; PACK }) ] - location: 260 (remaining gas: 1039130.603 units remaining) [ 0 @@ -958,30 +958,30 @@ trace {} { DUP ; DROP ; PACK } ] - location: 273 (remaining gas: 1039130.162 units remaining) - [ 0x050200000000 @packed + [ 0x050200000000 {} { DUP ; DROP ; PACK } ] - location: 274 (remaining gas: 1039130.147 units remaining) [ {} { DUP ; DROP ; PACK } ] - location: 276 (remaining gas: 1039129.821 units remaining) - [ 0x050200000000 @packed + [ 0x050200000000 { DUP ; DROP ; PACK } ] - location: 277 (remaining gas: 1039129.341 units remaining) - [ (Some {}) @packed.unpacked + [ (Some {}) { DUP ; DROP ; PACK } ] - location: 282 (remaining gas: 1039129.331 units remaining) - [ {} @packed.unpacked.some + [ {} { DUP ; DROP ; PACK } ] - location: 282 (remaining gas: 1039129.316 units remaining) - [ {} @packed.unpacked.some + [ {} { DUP ; DROP ; PACK } ] - location: 288 (remaining gas: 1039128.990 units remaining) - [ 0x050200000000 @packed.unpacked.some.packed + [ 0x050200000000 { DUP ; DROP ; PACK } ] - location: 274 (remaining gas: 1039128.960 units remaining) - [ 0x050200000000 @packed - 0x050200000000 @packed.unpacked.some.packed + [ 0x050200000000 + 0x050200000000 { DUP ; DROP ; PACK } ] - location: 291 (remaining gas: 1039128.925 units remaining) [ 0 @@ -997,23 +997,23 @@ trace [ { DUP ; DROP ; PACK } { DUP ; DROP ; PACK } ] - location: 300 (remaining gas: 1039127.738 units remaining) - [ 0x05020000000603210320030c @packed + [ 0x05020000000603210320030c { DUP ; DROP ; PACK } ] - location: 301 (remaining gas: 1039127.723 units remaining) [ { DUP ; DROP ; PACK } ] - location: 303 (remaining gas: 1039126.586 units remaining) - [ 0x05020000000603210320030c @packed ] + [ 0x05020000000603210320030c ] - location: 304 (remaining gas: 1039124.345 units remaining) - [ (Some { DUP ; DROP ; PACK }) @packed.unpacked ] + [ (Some { DUP ; DROP ; PACK }) ] - location: 309 (remaining gas: 1039124.335 units remaining) - [ { DUP ; DROP ; PACK } @packed.unpacked.some ] + [ { DUP ; DROP ; PACK } ] - location: 309 (remaining gas: 1039124.320 units remaining) - [ { DUP ; DROP ; PACK } @packed.unpacked.some ] + [ { DUP ; DROP ; PACK } ] - location: 315 (remaining gas: 1039123.183 units remaining) - [ 0x05020000000603210320030c @packed.unpacked.some.packed ] + [ 0x05020000000603210320030c ] - location: 301 (remaining gas: 1039123.153 units remaining) - [ 0x05020000000603210320030c @packed - 0x05020000000603210320030c @packed.unpacked.some.packed ] + [ 0x05020000000603210320030c + 0x05020000000603210320030c ] - location: 318 (remaining gas: 1039123.118 units remaining) [ 0 ] - location: 319 (remaining gas: 1039123.103 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False False)-(Some (Pair False False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False False)-(Some (Pair False False))].out index c6213ec843..e3f3b1fd9c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False False)-(Some (Pair False False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False False)-(Some (Pair False False))].out @@ -10,7 +10,7 @@ trace - location: 12 (remaining gas: 1039993.234 units remaining) [ (Pair (Pair False False) None) ] - location: 12 (remaining gas: 1039993.224 units remaining) - [ (Pair False False) @parameter ] + [ (Pair False False) ] - location: 13 (remaining gas: 1039993.209 units remaining) [ (Some (Pair False False)) ] - location: 14 (remaining gas: 1039993.194 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False True)-(Some (Pair False True))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False True)-(Some (Pair False True))].out index 1d2929f83a..dfdc30f1db 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False True)-(Some (Pair False True))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False True)-(Some (Pair False True))].out @@ -10,7 +10,7 @@ trace - location: 12 (remaining gas: 1039993.234 units remaining) [ (Pair (Pair False True) None) ] - location: 12 (remaining gas: 1039993.224 units remaining) - [ (Pair False True) @parameter ] + [ (Pair False True) ] - location: 13 (remaining gas: 1039993.209 units remaining) [ (Some (Pair False True)) ] - location: 14 (remaining gas: 1039993.194 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True False)-(Some (Pair True False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True False)-(Some (Pair True False))].out index 1a48fb35e4..643b65d499 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True False)-(Some (Pair True False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True False)-(Some (Pair True False))].out @@ -10,7 +10,7 @@ trace - location: 12 (remaining gas: 1039993.234 units remaining) [ (Pair (Pair True False) None) ] - location: 12 (remaining gas: 1039993.224 units remaining) - [ (Pair True False) @parameter ] + [ (Pair True False) ] - location: 13 (remaining gas: 1039993.209 units remaining) [ (Some (Pair True False)) ] - location: 14 (remaining gas: 1039993.194 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True True)-(Some (Pair True True))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True True)-(Some (Pair True True))].out index b264ba1e05..44f9f436f6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True True)-(Some (Pair True True))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True True)-(Some (Pair True True))].out @@ -10,7 +10,7 @@ trace - location: 12 (remaining gas: 1039993.234 units remaining) [ (Pair (Pair True True) None) ] - location: 12 (remaining gas: 1039993.224 units remaining) - [ (Pair True True) @parameter ] + [ (Pair True True) ] - location: 13 (remaining gas: 1039993.209 units remaining) [ (Some (Pair True True)) ] - location: 14 (remaining gas: 1039993.194 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec.tz-14-38-52].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec.tz-14-38-52].out index e4063d9962..9141ea4d86 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec.tz-14-38-52].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec.tz-14-38-52].out @@ -16,22 +16,22 @@ trace [ (Pair 38 14) { UNPAIR ; ADD } ] - location: 16 (remaining gas: 1039989.279 units remaining) - [ 38 @parameter - 14 @storage + [ 38 + 14 { UNPAIR ; ADD } ] - location: 17 (remaining gas: 1039989.264 units remaining) - [ 14 @storage + [ 14 { UNPAIR ; ADD } ] - location: 19 (remaining gas: 1039989.039 units remaining) [ { PUSH nat 14 ; PAIR ; { UNPAIR ; ADD } } ] - location: 17 (remaining gas: 1039989.009 units remaining) - [ 38 @parameter + [ 38 { PUSH nat 14 ; PAIR ; { UNPAIR ; ADD } } ] - location: 12 (remaining gas: 1039988.999 units remaining) [ 14 38 ] - location: 12 (remaining gas: 1039988.984 units remaining) - [ (Pair 14 38) @arg ] + [ (Pair 14 38) ] - location: 13 (remaining gas: 1039988.974 units remaining) [ 14 38 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec_2.tz-{ 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec_2.tz-{ 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out index 1c397dd83b..b497c3c52f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec_2.tz-{ 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec_2.tz-{ 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out @@ -10,35 +10,35 @@ trace - location: 8 (remaining gas: 1039979.891 units remaining) [ (Pair 4 { 0 ; 1 ; 2 ; 3 }) ] - location: 8 (remaining gas: 1039979.881 units remaining) - [ 4 @p - { 0 ; 1 ; 2 ; 3 } @s ] + [ 4 + { 0 ; 1 ; 2 ; 3 } ] - location: 9 (remaining gas: 1039979.871 units remaining) [ { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } - 4 @p - { 0 ; 1 ; 2 ; 3 } @s ] + 4 + { 0 ; 1 ; 2 ; 3 } ] - location: 23 (remaining gas: 1039979.861 units remaining) - [ 4 @p + [ 4 { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } - { 0 ; 1 ; 2 ; 3 } @s ] + { 0 ; 1 ; 2 ; 3 } ] - location: 24 (remaining gas: 1039979.636 units remaining) [ { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } - { 0 ; 1 ; 2 ; 3 } @s ] + { 0 ; 1 ; 2 ; 3 } ] - location: 25 (remaining gas: 1039979.626 units remaining) [ 3 { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } - { 0 ; 1 ; 2 ; 3 } @s ] + { 0 ; 1 ; 2 ; 3 } ] - location: 28 (remaining gas: 1039979.401 units remaining) [ { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } - { 0 ; 1 ; 2 ; 3 } @s ] + { 0 ; 1 ; 2 ; 3 } ] - location: 29 (remaining gas: 1039979.391 units remaining) - [ { 0 ; 1 ; 2 ; 3 } @s + [ { 0 ; 1 ; 2 ; 3 } { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039979.391 units remaining) - [ 0 @s.elt + [ 0 { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] @@ -54,7 +54,7 @@ trace PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039979.336 units remaining) - [ 0 @s.elt + [ 0 { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } @@ -70,7 +70,7 @@ trace [ 4 (Pair 3 0) ] - location: 16 (remaining gas: 1039979.286 units remaining) - [ (Pair 4 3 0) @arg ] + [ (Pair 4 3 0) ] - location: 17 (remaining gas: 1039979.276 units remaining) [ 4 (Pair 3 0) ] @@ -94,7 +94,7 @@ trace PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039979.020 units remaining) - [ 1 @s.elt + [ 1 { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] @@ -110,7 +110,7 @@ trace PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039978.965 units remaining) - [ 1 @s.elt + [ 1 { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } @@ -126,7 +126,7 @@ trace [ 4 (Pair 3 1) ] - location: 16 (remaining gas: 1039978.915 units remaining) - [ (Pair 4 3 1) @arg ] + [ (Pair 4 3 1) ] - location: 17 (remaining gas: 1039978.905 units remaining) [ 4 (Pair 3 1) ] @@ -150,7 +150,7 @@ trace PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039978.646 units remaining) - [ 2 @s.elt + [ 2 { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] @@ -166,7 +166,7 @@ trace PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039978.591 units remaining) - [ 2 @s.elt + [ 2 { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } @@ -182,7 +182,7 @@ trace [ 4 (Pair 3 2) ] - location: 16 (remaining gas: 1039978.541 units remaining) - [ (Pair 4 3 2) @arg ] + [ (Pair 4 3 2) ] - location: 17 (remaining gas: 1039978.531 units remaining) [ 4 (Pair 3 2) ] @@ -206,7 +206,7 @@ trace PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039978.272 units remaining) - [ 3 @s.elt + [ 3 { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] @@ -222,7 +222,7 @@ trace PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039978.217 units remaining) - [ 3 @s.elt + [ 3 { PUSH int 3 ; PAIR ; { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } @@ -238,7 +238,7 @@ trace [ 4 (Pair 3 3) ] - location: 16 (remaining gas: 1039978.167 units remaining) - [ (Pair 4 3 3) @arg ] + [ (Pair 4 3 3) ] - location: 17 (remaining gas: 1039978.157 units remaining) [ 4 (Pair 3 3) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index a94acd9e84..9230c50f08 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -10,25 +10,25 @@ trace - location: 9 (remaining gas: 1039990.977 units remaining) [ (Pair { "c" ; "b" ; "a" } { "" }) ] - location: 9 (remaining gas: 1039990.967 units remaining) - [ { "c" ; "b" ; "a" } @parameter ] + [ { "c" ; "b" ; "a" } ] - location: 10 (remaining gas: 1039990.952 units remaining) [ {} - { "c" ; "b" ; "a" } @parameter ] + { "c" ; "b" ; "a" } ] - location: 12 (remaining gas: 1039990.942 units remaining) - [ { "c" ; "b" ; "a" } @parameter + [ { "c" ; "b" ; "a" } {} ] - location: 13 (remaining gas: 1039990.942 units remaining) - [ "c" @parameter.elt + [ "c" {} ] - location: 15 (remaining gas: 1039990.927 units remaining) [ { "c" } ] - location: 13 (remaining gas: 1039990.912 units remaining) - [ "b" @parameter.elt + [ "b" { "c" } ] - location: 15 (remaining gas: 1039990.897 units remaining) [ { "b" ; "c" } ] - location: 13 (remaining gas: 1039990.882 units remaining) - [ "a" @parameter.elt + [ "a" { "b" ; "c" } ] - location: 15 (remaining gas: 1039990.867 units remaining) [ { "a" ; "b" ; "c" } ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{}-{}].out" index e9a4268f4b..30c8cbb40f 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{}-{}].out" @@ -10,12 +10,12 @@ trace - location: 9 (remaining gas: 1039991.349 units remaining) [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039991.339 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039991.324 units remaining) [ {} - {} @parameter ] + {} ] - location: 12 (remaining gas: 1039991.314 units remaining) - [ {} @parameter + [ {} {} ] - location: 13 (remaining gas: 1039991.314 units remaining) [ {} ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index e0eecd77fc..ea2ad6533d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -10,100 +10,100 @@ trace - location: 9 (remaining gas: 1039982.192 units remaining) [ (Pair { "c" ; "b" ; "a" } { "" }) ] - location: 9 (remaining gas: 1039982.182 units remaining) - [ { "c" ; "b" ; "a" } @parameter ] + [ { "c" ; "b" ; "a" } ] - location: 10 (remaining gas: 1039982.167 units remaining) [ {} - { "c" ; "b" ; "a" } @parameter ] + { "c" ; "b" ; "a" } ] - location: 12 (remaining gas: 1039982.157 units remaining) - [ { "c" ; "b" ; "a" } @parameter + [ { "c" ; "b" ; "a" } {} ] - location: 13 (remaining gas: 1039982.147 units remaining) [ True - { "c" ; "b" ; "a" } @parameter + { "c" ; "b" ; "a" } {} ] - location: 16 (remaining gas: 1039982.147 units remaining) - [ { "c" ; "b" ; "a" } @parameter + [ { "c" ; "b" ; "a" } {} ] - location: 18 (remaining gas: 1039982.137 units remaining) - [ "c" @parameter.hd - { "b" ; "a" } @parameter.tl + [ "c" + { "b" ; "a" } {} ] - location: 20 (remaining gas: 1039982.127 units remaining) - [ { "b" ; "a" } @parameter.tl - "c" @parameter.hd + [ { "b" ; "a" } + "c" {} ] - location: 21 (remaining gas: 1039982.112 units remaining) - [ "c" @parameter.hd + [ "c" {} ] - location: 23 (remaining gas: 1039982.097 units remaining) [ { "c" } ] - location: 21 (remaining gas: 1039982.067 units remaining) - [ { "b" ; "a" } @parameter.tl + [ { "b" ; "a" } { "c" } ] - location: 24 (remaining gas: 1039982.057 units remaining) [ True - { "b" ; "a" } @parameter + { "b" ; "a" } { "c" } ] - location: 18 (remaining gas: 1039982.042 units remaining) [ True - { "b" ; "a" } @parameter + { "b" ; "a" } { "c" } ] - location: 16 (remaining gas: 1039982.027 units remaining) - [ { "b" ; "a" } @parameter + [ { "b" ; "a" } { "c" } ] - location: 18 (remaining gas: 1039982.017 units remaining) - [ "b" @parameter.hd - { "a" } @parameter.tl + [ "b" + { "a" } { "c" } ] - location: 20 (remaining gas: 1039982.007 units remaining) - [ { "a" } @parameter.tl - "b" @parameter.hd + [ { "a" } + "b" { "c" } ] - location: 21 (remaining gas: 1039981.992 units remaining) - [ "b" @parameter.hd + [ "b" { "c" } ] - location: 23 (remaining gas: 1039981.977 units remaining) [ { "b" ; "c" } ] - location: 21 (remaining gas: 1039981.947 units remaining) - [ { "a" } @parameter.tl + [ { "a" } { "b" ; "c" } ] - location: 24 (remaining gas: 1039981.937 units remaining) [ True - { "a" } @parameter + { "a" } { "b" ; "c" } ] - location: 18 (remaining gas: 1039981.922 units remaining) [ True - { "a" } @parameter + { "a" } { "b" ; "c" } ] - location: 16 (remaining gas: 1039981.907 units remaining) - [ { "a" } @parameter + [ { "a" } { "b" ; "c" } ] - location: 18 (remaining gas: 1039981.897 units remaining) - [ "a" @parameter.hd - {} @parameter.tl + [ "a" + {} { "b" ; "c" } ] - location: 20 (remaining gas: 1039981.887 units remaining) - [ {} @parameter.tl - "a" @parameter.hd + [ {} + "a" { "b" ; "c" } ] - location: 21 (remaining gas: 1039981.872 units remaining) - [ "a" @parameter.hd + [ "a" { "b" ; "c" } ] - location: 23 (remaining gas: 1039981.857 units remaining) [ { "a" ; "b" ; "c" } ] - location: 21 (remaining gas: 1039981.827 units remaining) - [ {} @parameter.tl + [ {} { "a" ; "b" ; "c" } ] - location: 24 (remaining gas: 1039981.817 units remaining) [ True - {} @parameter + {} { "a" ; "b" ; "c" } ] - location: 18 (remaining gas: 1039981.802 units remaining) [ True - {} @parameter + {} { "a" ; "b" ; "c" } ] - location: 16 (remaining gas: 1039981.787 units remaining) - [ {} @parameter + [ {} { "a" ; "b" ; "c" } ] - location: 18 (remaining gas: 1039981.777 units remaining) [ { "a" ; "b" ; "c" } ] @@ -112,14 +112,14 @@ trace { "a" ; "b" ; "c" } ] - location: 30 (remaining gas: 1039981.752 units remaining) [ False - {} @parameter + {} { "a" ; "b" ; "c" } ] - location: 18 (remaining gas: 1039981.737 units remaining) [ False - {} @parameter + {} { "a" ; "b" ; "c" } ] - location: 16 (remaining gas: 1039981.722 units remaining) - [ {} @parameter + [ {} { "a" ; "b" ; "c" } ] - location: 33 (remaining gas: 1039981.712 units remaining) [ { "a" ; "b" ; "c" } ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{}-{}].out" index 739a710e2d..9837759860 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{}-{}].out" @@ -10,19 +10,19 @@ trace - location: 9 (remaining gas: 1039982.564 units remaining) [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039982.554 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039982.539 units remaining) [ {} - {} @parameter ] + {} ] - location: 12 (remaining gas: 1039982.529 units remaining) - [ {} @parameter + [ {} {} ] - location: 13 (remaining gas: 1039982.519 units remaining) [ True - {} @parameter + {} {} ] - location: 16 (remaining gas: 1039982.519 units remaining) - [ {} @parameter + [ {} {} ] - location: 18 (remaining gas: 1039982.509 units remaining) [ {} ] @@ -31,14 +31,14 @@ trace {} ] - location: 30 (remaining gas: 1039982.484 units remaining) [ False - {} @parameter + {} {} ] - location: 18 (remaining gas: 1039982.469 units remaining) [ False - {} @parameter + {} {} ] - location: 16 (remaining gas: 1039982.454 units remaining) - [ {} @parameter + [ {} {} ] - location: 33 (remaining gas: 1039982.444 units remaining) [ {} ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sapling_empty_state.tz-{}-Unit-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sapling_empty_state.tz-{}-Unit-0].out index b01cd3be69..dbe6de2ddb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sapling_empty_state.tz-{}-Unit-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sapling_empty_state.tz-{}-Unit-0].out @@ -12,10 +12,10 @@ trace - location: 8 (remaining gas: 1039994.847 units remaining) [ ] - location: 9 (remaining gas: 1039994.832 units remaining) - [ {} @sapling ] + [ {} ] - location: 11 (remaining gas: 1039994.817 units remaining) [ {} - {} @sapling ] + {} ] - location: 13 (remaining gas: 1039994.802 units remaining) [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_address.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_address.tz-Unit-Unit-Unit].out index 16c4f2ca05..aace306d54 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_address.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_address.tz-Unit-Unit-Unit].out @@ -19,14 +19,14 @@ trace - location: 12 (remaining gas: 1039984.299 units remaining) [ ] - location: 13 (remaining gas: 1039984.284 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 15 (remaining gas: 1039984.254 units remaining) [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 16 (remaining gas: 1039984.239 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 17 (remaining gas: 1039984.229 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self.address + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 20 (remaining gas: 1039984.193 units remaining) [ 0 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_default_entrypoint.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_default_entrypoint.tz-Unit-Unit-Unit].out index 415697707f..8ad3c234e0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_default_entrypoint.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_default_entrypoint.tz-Unit-Unit-Unit].out @@ -12,23 +12,23 @@ trace - location: 13 (remaining gas: 1039983.490 units remaining) [ ] - location: 14 (remaining gas: 1039983.475 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 15 (remaining gas: 1039983.465 units remaining) [ ] - location: 16 (remaining gas: 1039983.450 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] - location: 17 (remaining gas: 1039983.440 units remaining) [ ] - location: 18 (remaining gas: 1039983.425 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 19 (remaining gas: 1039972.472 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @self.packed ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 20 (remaining gas: 1039972.457 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @self.packed ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 21 (remaining gas: 1039961.504 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @self.packed - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @self.packed ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 24 (remaining gas: 1039961.469 units remaining) [ 0 ] - location: 25 (remaining gas: 1039961.454 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_entrypoint.tz-Unit-Left (Left 0)-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_entrypoint.tz-Unit-Left (Left 0)-Unit].out index 296856b6e8..82d4d0d938 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_entrypoint.tz-Unit-Left (Left 0)-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_entrypoint.tz-Unit-Left (Left 0)-Unit].out @@ -12,45 +12,45 @@ trace - location: 13 (remaining gas: 1039954.621 units remaining) [ ] - location: 14 (remaining gas: 1039954.606 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] - location: 15 (remaining gas: 1039943.620 units remaining) - [ 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 @Apacked ] + [ 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 16 (remaining gas: 1039943.605 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 @Apacked ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 17 (remaining gas: 1039932.652 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 @Apacked ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 18 (remaining gas: 1039932.642 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 @Apacked ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 19 (remaining gas: 1039932.627 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 @Apacked ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 21 (remaining gas: 1039932.617 units remaining) - [ 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 @Apacked - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked ] + [ 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 19 (remaining gas: 1039932.587 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 @Apacked - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 24 (remaining gas: 1039932.552 units remaining) [ -1 - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked ] + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 25 (remaining gas: 1039932.537 units remaining) [ True - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked ] + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 26 (remaining gas: 1039932.527 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 26 (remaining gas: 1039932.512 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 32 (remaining gas: 1039932.497 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 33 (remaining gas: 1039921.544 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @selfpacked - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 @defpacked ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 36 (remaining gas: 1039921.509 units remaining) [ 0 ] - location: 37 (remaining gas: 1039921.494 units remaining) @@ -60,27 +60,27 @@ trace - location: 38 (remaining gas: 1039921.469 units remaining) [ ] - location: 44 (remaining gas: 1039921.454 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] - location: 48 (remaining gas: 1039921.444 units remaining) [ ] - location: 49 (remaining gas: 1039921.429 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%B" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%B" ] - location: 53 (remaining gas: 1039921.419 units remaining) [ ] - location: 54 (remaining gas: 1039921.404 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%maybe_C" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%maybe_C" ] - location: 60 (remaining gas: 1039921.394 units remaining) [ ] - location: 61 (remaining gas: 1039921.379 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%Z" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%Z" ] - location: 65 (remaining gas: 1039921.369 units remaining) [ ] - location: 66 (remaining gas: 1039921.354 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 76 (remaining gas: 1039921.344 units remaining) [ ] - location: 77 (remaining gas: 1039921.329 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" @self ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 87 (remaining gas: 1039921.319 units remaining) [ ] - location: 88 (remaining gas: 1039921.309 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index 5b5459ccbc..88751834ec 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -10,10 +10,10 @@ trace - location: 9 (remaining gas: 1039993.773 units remaining) [ (Pair { "a" ; "b" ; "c" } {}) ] - location: 9 (remaining gas: 1039993.763 units remaining) - [ { "a" ; "b" ; "c" } @parameter ] + [ { "a" ; "b" ; "c" } ] - location: 10 (remaining gas: 1039993.748 units remaining) [ {} - { "a" ; "b" ; "c" } @parameter ] + { "a" ; "b" ; "c" } ] - location: 12 (remaining gas: 1039993.733 units remaining) [ (Pair {} { "a" ; "b" ; "c" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"asdf\" ; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"asdf\" ; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" index b361ac4c9b..3cdd999dbc 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"asdf\" ; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"asdf\" ; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" @@ -10,10 +10,10 @@ trace - location: 9 (remaining gas: 1039994.212 units remaining) [ (Pair { "asdf" ; "bcde" } {}) ] - location: 9 (remaining gas: 1039994.202 units remaining) - [ { "asdf" ; "bcde" } @parameter ] + [ { "asdf" ; "bcde" } ] - location: 10 (remaining gas: 1039994.187 units remaining) [ {} - { "asdf" ; "bcde" } @parameter ] + { "asdf" ; "bcde" } ] - location: 12 (remaining gas: 1039994.172 units remaining) [ (Pair {} { "asdf" ; "bcde" }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{}-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{}-{}].out index 81c379c5ec..5ccce502fc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{}-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{}-{}].out @@ -10,10 +10,10 @@ trace - location: 9 (remaining gas: 1039995.025 units remaining) [ (Pair {} {}) ] - location: 9 (remaining gas: 1039995.015 units remaining) - [ {} @parameter ] + [ {} ] - location: 10 (remaining gas: 1039995 units remaining) [ {} - {} @parameter ] + {} ] - location: 12 (remaining gas: 1039994.985 units remaining) [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out index e8f225b803..4ccecfc9f6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out @@ -10,30 +10,30 @@ trace - location: 8 (remaining gas: 1039990.518 units remaining) [ (Pair { -100 ; 1 ; 2 ; 3 } 111) ] - location: 8 (remaining gas: 1039990.508 units remaining) - [ { -100 ; 1 ; 2 ; 3 } @parameter ] + [ { -100 ; 1 ; 2 ; 3 } ] - location: 9 (remaining gas: 1039990.498 units remaining) [ 0 - { -100 ; 1 ; 2 ; 3 } @parameter ] + { -100 ; 1 ; 2 ; 3 } ] - location: 12 (remaining gas: 1039990.488 units remaining) - [ { -100 ; 1 ; 2 ; 3 } @parameter + [ { -100 ; 1 ; 2 ; 3 } 0 ] - location: 13 (remaining gas: 1039990.488 units remaining) - [ -100 @parameter.elt + [ -100 0 ] - location: 15 (remaining gas: 1039990.433 units remaining) [ -100 ] - location: 13 (remaining gas: 1039990.418 units remaining) - [ 1 @parameter.elt + [ 1 -100 ] - location: 15 (remaining gas: 1039990.363 units remaining) [ -99 ] - location: 13 (remaining gas: 1039990.348 units remaining) - [ 2 @parameter.elt + [ 2 -99 ] - location: 15 (remaining gas: 1039990.293 units remaining) [ -97 ] - location: 13 (remaining gas: 1039990.278 units remaining) - [ 3 @parameter.elt + [ 3 -97 ] - location: 15 (remaining gas: 1039990.223 units remaining) [ -94 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ 1 }-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ 1 }-1].out index 3483abfab8..15ac0c0590 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ 1 }-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ 1 }-1].out @@ -10,15 +10,15 @@ trace - location: 8 (remaining gas: 1039991.873 units remaining) [ (Pair { 1 } 111) ] - location: 8 (remaining gas: 1039991.863 units remaining) - [ { 1 } @parameter ] + [ { 1 } ] - location: 9 (remaining gas: 1039991.853 units remaining) [ 0 - { 1 } @parameter ] + { 1 } ] - location: 12 (remaining gas: 1039991.843 units remaining) - [ { 1 } @parameter + [ { 1 } 0 ] - location: 13 (remaining gas: 1039991.843 units remaining) - [ 1 @parameter.elt + [ 1 0 ] - location: 15 (remaining gas: 1039991.788 units remaining) [ 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{}-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{}-0].out index ae6f207580..7ed8ceee7b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{}-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{}-0].out @@ -10,12 +10,12 @@ trace - location: 8 (remaining gas: 1039992.173 units remaining) [ (Pair {} 111) ] - location: 8 (remaining gas: 1039992.163 units remaining) - [ {} @parameter ] + [ {} ] - location: 9 (remaining gas: 1039992.153 units remaining) [ 0 - {} @parameter ] + {} ] - location: 12 (remaining gas: 1039992.143 units remaining) - [ {} @parameter + [ {} 0 ] - location: 13 (remaining gas: 1039992.143 units remaining) [ 0 ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hello\" ; \"World\" } None)-\"\"-(Pai.3d2044726e.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hello\" ; \"World\" } None)-\"\"-(Pai.3d2044726e.out" index 0a4604732e..6cf013df5c 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hello\" ; \"World\" } None)-\"\"-(Pai.3d2044726e.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hello\" ; \"World\" } None)-\"\"-(Pai.3d2044726e.out" @@ -17,20 +17,20 @@ trace (Pair "" { "Hello" ; "World" } None) (Pair "" { "Hello" ; "World" } None) ] - location: 13 (remaining gas: 1039983.263 units remaining) - [ "" @parameter + [ "" (Pair "" { "Hello" ; "World" } None) (Pair "" { "Hello" ; "World" } None) ] - location: 14 (remaining gas: 1039983.248 units remaining) [ (Pair "" { "Hello" ; "World" } None) (Pair "" { "Hello" ; "World" } None) ] - location: 17 (remaining gas: 1039983.238 units remaining) - [ (Pair { "Hello" ; "World" } None) @storage + [ (Pair { "Hello" ; "World" } None) (Pair "" { "Hello" ; "World" } None) ] - location: 18 (remaining gas: 1039983.228 units remaining) [ { "Hello" ; "World" } (Pair "" { "Hello" ; "World" } None) ] - location: 14 (remaining gas: 1039983.198 units remaining) - [ "" @parameter + [ "" { "Hello" ; "World" } (Pair "" { "Hello" ; "World" } None) ] - location: 19 (remaining gas: 1039982.978 units remaining) @@ -42,7 +42,7 @@ trace - location: 21 (remaining gas: 1039982.948 units remaining) [ (Pair "" { "Hello" ; "World" } None) ] - location: 24 (remaining gas: 1039982.938 units remaining) - [ (Pair { "Hello" ; "World" } None) @storage ] + [ (Pair { "Hello" ; "World" } None) ] - location: 25 (remaining gas: 1039982.928 units remaining) [ { "Hello" ; "World" } ] - location: 21 (remaining gas: 1039982.898 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hi\" } None)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hi\" } None)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" index ff31ca9f3e..b61a373ba9 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hi\" } None)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hi\" } None)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" @@ -17,20 +17,20 @@ trace (Pair "Hi" { "Hi" } None) (Pair "Hi" { "Hi" } None) ] - location: 13 (remaining gas: 1039983.742 units remaining) - [ "Hi" @parameter + [ "Hi" (Pair "Hi" { "Hi" } None) (Pair "Hi" { "Hi" } None) ] - location: 14 (remaining gas: 1039983.727 units remaining) [ (Pair "Hi" { "Hi" } None) (Pair "Hi" { "Hi" } None) ] - location: 17 (remaining gas: 1039983.717 units remaining) - [ (Pair { "Hi" } None) @storage + [ (Pair { "Hi" } None) (Pair "Hi" { "Hi" } None) ] - location: 18 (remaining gas: 1039983.707 units remaining) [ { "Hi" } (Pair "Hi" { "Hi" } None) ] - location: 14 (remaining gas: 1039983.677 units remaining) - [ "Hi" @parameter + [ "Hi" { "Hi" } (Pair "Hi" { "Hi" } None) ] - location: 19 (remaining gas: 1039983.492 units remaining) @@ -42,7 +42,7 @@ trace - location: 21 (remaining gas: 1039983.462 units remaining) [ (Pair "Hi" { "Hi" } None) ] - location: 24 (remaining gas: 1039983.452 units remaining) - [ (Pair { "Hi" } None) @storage ] + [ (Pair { "Hi" } None) ] - location: 25 (remaining gas: 1039983.442 units remaining) [ { "Hi" } ] - location: 21 (remaining gas: 1039983.412 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair {} None)-\"Hi\"-(Pair {} (Some False))].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair {} None)-\"Hi\"-(Pair {} (Some False))].out" index 2902c485b1..d0742d488a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair {} None)-\"Hi\"-(Pair {} (Some False))].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair {} None)-\"Hi\"-(Pair {} (Some False))].out" @@ -17,20 +17,20 @@ trace (Pair "Hi" {} None) (Pair "Hi" {} None) ] - location: 13 (remaining gas: 1039984.076 units remaining) - [ "Hi" @parameter + [ "Hi" (Pair "Hi" {} None) (Pair "Hi" {} None) ] - location: 14 (remaining gas: 1039984.061 units remaining) [ (Pair "Hi" {} None) (Pair "Hi" {} None) ] - location: 17 (remaining gas: 1039984.051 units remaining) - [ (Pair {} None) @storage + [ (Pair {} None) (Pair "Hi" {} None) ] - location: 18 (remaining gas: 1039984.041 units remaining) [ {} (Pair "Hi" {} None) ] - location: 14 (remaining gas: 1039984.011 units remaining) - [ "Hi" @parameter + [ "Hi" {} (Pair "Hi" {} None) ] - location: 19 (remaining gas: 1039983.861 units remaining) @@ -42,7 +42,7 @@ trace - location: 21 (remaining gas: 1039983.831 units remaining) [ (Pair "Hi" {} None) ] - location: 24 (remaining gas: 1039983.821 units remaining) - [ (Pair {} None) @storage ] + [ (Pair {} None) ] - location: 25 (remaining gas: 1039983.811 units remaining) [ {} ] - location: 21 (remaining gas: 1039983.781 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out index 207c845663..cbcda72546 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039992.075 units remaining) [ (Pair { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } 111) ] - location: 8 (remaining gas: 1039992.065 units remaining) - [ { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } @parameter ] + [ { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } ] - location: 9 (remaining gas: 1039992.050 units remaining) [ 6 ] - location: 10 (remaining gas: 1039992.035 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out index e31ef31062..a4102e7a4f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039993.640 units remaining) [ (Pair { 1 ; 2 ; 3 } 111) ] - location: 8 (remaining gas: 1039993.630 units remaining) - [ { 1 ; 2 ; 3 } @parameter ] + [ { 1 ; 2 ; 3 } ] - location: 9 (remaining gas: 1039993.615 units remaining) [ 3 ] - location: 10 (remaining gas: 1039993.600 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 }-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 }-1].out index cf787542f7..3966466cf8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 }-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 }-1].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039994.520 units remaining) [ (Pair { 1 } 111) ] - location: 8 (remaining gas: 1039994.510 units remaining) - [ { 1 } @parameter ] + [ { 1 } ] - location: 9 (remaining gas: 1039994.495 units remaining) [ 1 ] - location: 10 (remaining gas: 1039994.480 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{}-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{}-0].out index 5b347cf809..2bfd8860ad 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{}-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{}-0].out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039994.820 units remaining) [ (Pair {} 111) ] - location: 8 (remaining gas: 1039994.810 units remaining) - [ {} @parameter ] + [ {} ] - location: 9 (remaining gas: 1039994.795 units remaining) [ 0 ] - location: 10 (remaining gas: 1039994.780 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sha3.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xf345a.a07ae9dddf.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sha3.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xf345a.a07ae9dddf.out index 46d13add95..59dc58fbf7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sha3.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xf345a.a07ae9dddf.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sha3.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xf345a.a07ae9dddf.out @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039993.957 units remaining) [ (Pair 0x48656c6c6f2c20776f726c6421 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 0x48656c6c6f2c20776f726c6421 @parameter ] + [ 0x48656c6c6f2c20776f726c6421 ] - location: 9 (remaining gas: 1039992.490 units remaining) [ 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722 ] - location: 10 (remaining gas: 1039992.475 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 0))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 0))-(Some 0)].out index 5a78795dbb..ac7b2ab5a3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 0))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 0))-(Some 0)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Left (Pair 0 0)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 0 0)) @parameter ] + [ (Left (Pair 0 0)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 0 0) @parameter.left ] + [ (Pair 0 0) ] - location: 17 (remaining gas: 1039989.674 units remaining) [ 0 0 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 1))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 1))-(Some 0)].out index 6a317f9253..3f89a04fee 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 1))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 1))-(Some 0)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Left (Pair 0 1)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 0 1)) @parameter ] + [ (Left (Pair 0 1)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 0 1) @parameter.left ] + [ (Pair 0 1) ] - location: 17 (remaining gas: 1039989.674 units remaining) [ 0 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 1 2))-(Some 4)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 1 2))-(Some 4)].out index 271f2ffaee..277265f138 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 1 2))-(Some 4)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 1 2))-(Some 4)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Left (Pair 1 2)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 1 2)) @parameter ] + [ (Left (Pair 1 2)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 1 2) @parameter.left ] + [ (Pair 1 2) ] - location: 17 (remaining gas: 1039989.674 units remaining) [ 1 2 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 15 2))-(Some 60)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 15 2))-(Some 60)].out index 4999ca7cf2..9aa9f0d3ac 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 15 2))-(Some 60)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 15 2))-(Some 60)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Left (Pair 15 2)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 15 2)) @parameter ] + [ (Left (Pair 15 2)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 15 2) @parameter.left ] + [ (Pair 15 2) ] - location: 17 (remaining gas: 1039989.674 units remaining) [ 15 2 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 8 1))-(Some 16)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 8 1))-(Some 16)].out index 166d22f11a..b380876cac 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 8 1))-(Some 16)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 8 1))-(Some 16)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Left (Pair 8 1)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 8 1)) @parameter ] + [ (Left (Pair 8 1)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 8 1) @parameter.left ] + [ (Pair 8 1) ] - location: 17 (remaining gas: 1039989.674 units remaining) [ 8 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 0))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 0))-(Some 0)].out index 647668fef3..688dedb22e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 0))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 0))-(Some 0)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Right (Pair 0 0)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 0 0)) @parameter ] + [ (Right (Pair 0 0)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 0 0) @parameter.right ] + [ (Pair 0 0) ] - location: 20 (remaining gas: 1039989.674 units remaining) [ 0 0 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 1))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 1))-(Some 0)].out index ff9ff5385b..28b5aecf01 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 1))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 1))-(Some 0)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Right (Pair 0 1)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 0 1)) @parameter ] + [ (Right (Pair 0 1)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 0 1) @parameter.right ] + [ (Pair 0 1) ] - location: 20 (remaining gas: 1039989.674 units remaining) [ 0 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 1 2))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 1 2))-(Some 0)].out index f1119c6347..337efc9a92 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 1 2))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 1 2))-(Some 0)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Right (Pair 1 2)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 1 2)) @parameter ] + [ (Right (Pair 1 2)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 1 2) @parameter.right ] + [ (Pair 1 2) ] - location: 20 (remaining gas: 1039989.674 units remaining) [ 1 2 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 15 2))-(Some 3)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 15 2))-(Some 3)].out index 62d47cfdde..0474a65ff6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 15 2))-(Some 3)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 15 2))-(Some 3)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Right (Pair 15 2)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 15 2)) @parameter ] + [ (Right (Pair 15 2)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 15 2) @parameter.right ] + [ (Pair 15 2) ] - location: 20 (remaining gas: 1039989.674 units remaining) [ 15 2 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 8 1))-(Some 4)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 8 1))-(Some 4)].out index fa875222fd..58178a7a49 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 8 1))-(Some 4)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 8 1))-(Some 4)].out @@ -10,9 +10,9 @@ trace - location: 14 (remaining gas: 1039989.704 units remaining) [ (Pair (Right (Pair 8 1)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 8 1)) @parameter ] + [ (Right (Pair 8 1)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 8 1) @parameter.right ] + [ (Pair 8 1) ] - location: 20 (remaining gas: 1039989.674 units remaining) [ 8 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-None-Pair 0 0-None].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-None-Pair 0 0-None].out index b8a7fbd579..d1ce3c5a2b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-None-Pair 0 0-None].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-None-Pair 0 0-None].out @@ -10,13 +10,13 @@ trace - location: 10 (remaining gas: 1039989.042 units remaining) [ (Pair (Pair 0 0) None) ] - location: 10 (remaining gas: 1039989.032 units remaining) - [ (Pair 0 0) @parameter - None @storage ] + [ (Pair 0 0) + None ] - location: 11 (remaining gas: 1039989.022 units remaining) - [ None @storage - (Pair 0 0) @parameter ] + [ None + (Pair 0 0) ] - location: 13 (remaining gas: 1039989.012 units remaining) - [ (Pair 0 0) @parameter ] + [ (Pair 0 0) ] - location: 15 (remaining gas: 1039989.002 units remaining) [ ] - location: 16 (remaining gas: 1039988.987 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" index 7cddff0861..e560b460da 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.898 units remaining) [ (Pair (Pair 0 0) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 0 0) @parameter - (Some "Foo") @storage ] + [ (Pair 0 0) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") @storage - (Pair 0 0) @parameter ] + [ (Some "Foo") + (Pair 0 0) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" @storage.some - (Pair 0 0) @parameter ] + [ "Foo" + (Pair 0 0) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 0 0) @parameter - "Foo" @storage.some ] + [ (Pair 0 0) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) [ 0 0 - "Foo" @storage.some ] + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) [ (Some "") ] - location: 13 (remaining gas: 1039988.793 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 10-None].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 10-None].out" index 99e2695b4b..21b844f603 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 10-None].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 10-None].out" @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.898 units remaining) [ (Pair (Pair 0 10) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 0 10) @parameter - (Some "Foo") @storage ] + [ (Pair 0 10) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") @storage - (Pair 0 10) @parameter ] + [ (Some "Foo") + (Pair 0 10) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" @storage.some - (Pair 0 10) @parameter ] + [ "Foo" + (Pair 0 10) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 0 10) @parameter - "Foo" @storage.some ] + [ (Pair 0 10) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) [ 0 10 - "Foo" @storage.some ] + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) [ None ] - location: 13 (remaining gas: 1039988.793 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" index 54696cfa06..076c6ab5b7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.898 units remaining) [ (Pair (Pair 0 2) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 0 2) @parameter - (Some "Foo") @storage ] + [ (Pair 0 2) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") @storage - (Pair 0 2) @parameter ] + [ (Some "Foo") + (Pair 0 2) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" @storage.some - (Pair 0 2) @parameter ] + [ "Foo" + (Pair 0 2) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 0 2) @parameter - "Foo" @storage.some ] + [ (Pair 0 2) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) [ 0 2 - "Foo" @storage.some ] + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) [ (Some "Fo") ] - location: 13 (remaining gas: 1039988.793 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" index 8c98a9e47a..0a7caac8bb 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.898 units remaining) [ (Pair (Pair 1 1) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 1 1) @parameter - (Some "Foo") @storage ] + [ (Pair 1 1) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") @storage - (Pair 1 1) @parameter ] + [ (Some "Foo") + (Pair 1 1) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" @storage.some - (Pair 1 1) @parameter ] + [ "Foo" + (Pair 1 1) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 1 1) @parameter - "Foo" @storage.some ] + [ (Pair 1 1) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) [ 1 1 - "Foo" @storage.some ] + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) [ (Some "o") ] - location: 13 (remaining gas: 1039988.793 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 3-None].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 3-None].out" index 23873f1146..c5cd69a0a2 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 3-None].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 3-None].out" @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.898 units remaining) [ (Pair (Pair 1 3) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 1 3) @parameter - (Some "Foo") @storage ] + [ (Pair 1 3) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") @storage - (Pair 1 3) @parameter ] + [ (Some "Foo") + (Pair 1 3) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" @storage.some - (Pair 1 3) @parameter ] + [ "Foo" + (Pair 1 3) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 1 3) @parameter - "Foo" @storage.some ] + [ (Pair 1 3) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) [ 1 3 - "Foo" @storage.some ] + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) [ None ] - location: 13 (remaining gas: 1039988.793 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 10 5-None].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 10 5-None].out" index cc8f05eb53..8a1ce998ac 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 10 5-None].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 10 5-None].out" @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.898 units remaining) [ (Pair (Pair 10 5) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 10 5) @parameter - (Some "Foo") @storage ] + [ (Pair 10 5) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") @storage - (Pair 10 5) @parameter ] + [ (Some "Foo") + (Pair 10 5) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" @storage.some - (Pair 10 5) @parameter ] + [ "Foo" + (Pair 10 5) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 10 5) @parameter - "Foo" @storage.some ] + [ (Pair 10 5) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) [ 10 5 - "Foo" @storage.some ] + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) [ None ] - location: 13 (remaining gas: 1039988.793 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some\"FooFooFooFooFooFooFooFooFooFooFooFooFooFo.c508d67bb0.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some\"FooFooFooFooFooFooFooFooFooFooFooFooFooFo.c508d67bb0.out" index b1d7bb4fe7..2c1100d411 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some\"FooFooFooFooFooFooFooFooFooFooFooFooFooFo.c508d67bb0.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some\"FooFooFooFooFooFooFooFooFooFooFooFooFooFo.c508d67bb0.out" @@ -11,21 +11,21 @@ trace [ (Pair (Pair 1 10000) (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo")) ] - location: 10 (remaining gas: 1039928.918 units remaining) - [ (Pair 1 10000) @parameter - (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo") @storage ] + [ (Pair 1 10000) + (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo") ] - location: 11 (remaining gas: 1039928.908 units remaining) - [ (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo") @storage - (Pair 1 10000) @parameter ] + [ (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo") + (Pair 1 10000) ] - location: 13 (remaining gas: 1039928.898 units remaining) - [ "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" @storage.some - (Pair 1 10000) @parameter ] + [ "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" + (Pair 1 10000) ] - location: 19 (remaining gas: 1039928.888 units remaining) - [ (Pair 1 10000) @parameter - "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" @storage.some ] + [ (Pair 1 10000) + "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" ] - location: 20 (remaining gas: 1039928.878 units remaining) [ 1 10000 - "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" @storage.some ] + "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" ] - location: 21 (remaining gas: 1039928.463 units remaining) [ None ] - location: 13 (remaining gas: 1039928.448 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-None-Pair 0 1-None].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-None-Pair 0 1-None].out index 256f5917a2..bcdb1245d4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-None-Pair 0 1-None].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-None-Pair 0 1-None].out @@ -10,13 +10,13 @@ trace - location: 10 (remaining gas: 1039989.042 units remaining) [ (Pair (Pair 0 1) None) ] - location: 10 (remaining gas: 1039989.032 units remaining) - [ (Pair 0 1) @parameter - None @storage ] + [ (Pair 0 1) + None ] - location: 11 (remaining gas: 1039989.022 units remaining) - [ None @storage - (Pair 0 1) @parameter ] + [ None + (Pair 0 1) ] - location: 13 (remaining gas: 1039989.012 units remaining) - [ (Pair 0 1) @parameter ] + [ (Pair 0 1) ] - location: 15 (remaining gas: 1039989.002 units remaining) [ ] - location: 16 (remaining gas: 1039988.987 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out index 96a78a7ff8..d31938e3a1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.942 units remaining) [ (Pair (Pair 0 0) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 0 0) @parameter - (Some 0xaabbcc) @storage ] + [ (Pair 0 0) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) @storage - (Pair 0 0) @parameter ] + [ (Some 0xaabbcc) + (Pair 0 0) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc @storage.some - (Pair 0 0) @parameter ] + [ 0xaabbcc + (Pair 0 0) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 0 0) @parameter - 0xaabbcc @storage.some ] + [ (Pair 0 0) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) [ 0 0 - 0xaabbcc @storage.some ] + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) [ (Some 0x) ] - location: 13 (remaining gas: 1039988.837 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out index b233c04348..a8d0bb71cd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.942 units remaining) [ (Pair (Pair 0 1) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 0 1) @parameter - (Some 0xaabbcc) @storage ] + [ (Pair 0 1) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) @storage - (Pair 0 1) @parameter ] + [ (Some 0xaabbcc) + (Pair 0 1) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc @storage.some - (Pair 0 1) @parameter ] + [ 0xaabbcc + (Pair 0 1) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 0 1) @parameter - 0xaabbcc @storage.some ] + [ (Pair 0 1) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) [ 0 1 - 0xaabbcc @storage.some ] + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) [ (Some 0xaa) ] - location: 13 (remaining gas: 1039988.837 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out index 9f69cf01a0..5e8cef70aa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.942 units remaining) [ (Pair (Pair 1 1) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 1) @parameter - (Some 0xaabbcc) @storage ] + [ (Pair 1 1) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) @storage - (Pair 1 1) @parameter ] + [ (Some 0xaabbcc) + (Pair 1 1) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc @storage.some - (Pair 1 1) @parameter ] + [ 0xaabbcc + (Pair 1 1) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 1) @parameter - 0xaabbcc @storage.some ] + [ (Pair 1 1) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) [ 1 1 - 0xaabbcc @storage.some ] + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) [ (Some 0xbb) ] - location: 13 (remaining gas: 1039988.837 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out index fa991956f7..29c349e130 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.942 units remaining) [ (Pair (Pair 1 1) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 1) @parameter - (Some 0xaabbcc) @storage ] + [ (Pair 1 1) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) @storage - (Pair 1 1) @parameter ] + [ (Some 0xaabbcc) + (Pair 1 1) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc @storage.some - (Pair 1 1) @parameter ] + [ 0xaabbcc + (Pair 1 1) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 1) @parameter - 0xaabbcc @storage.some ] + [ (Pair 1 1) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) [ 1 1 - 0xaabbcc @storage.some ] + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) [ (Some 0xbb) ] - location: 13 (remaining gas: 1039988.837 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out index 5a965d90bf..19d285d644 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.942 units remaining) [ (Pair (Pair 1 2) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 2) @parameter - (Some 0xaabbcc) @storage ] + [ (Pair 1 2) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) @storage - (Pair 1 2) @parameter ] + [ (Some 0xaabbcc) + (Pair 1 2) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc @storage.some - (Pair 1 2) @parameter ] + [ 0xaabbcc + (Pair 1 2) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 2) @parameter - 0xaabbcc @storage.some ] + [ (Pair 1 2) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) [ 1 2 - 0xaabbcc @storage.some ] + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) [ (Some 0xbbcc) ] - location: 13 (remaining gas: 1039988.837 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 3-None].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 3-None].out index 4de769383e..eb73897b75 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 3-None].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 3-None].out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039988.942 units remaining) [ (Pair (Pair 1 3) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 3) @parameter - (Some 0xaabbcc) @storage ] + [ (Pair 1 3) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) @storage - (Pair 1 3) @parameter ] + [ (Some 0xaabbcc) + (Pair 1 3) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc @storage.some - (Pair 1 3) @parameter ] + [ 0xaabbcc + (Pair 1 3) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 3) @parameter - 0xaabbcc @storage.some ] + [ (Pair 1 3) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) [ 1 3 - 0xaabbcc @storage.some ] + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) [ None ] - location: 13 (remaining gas: 1039988.837 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbccaabbccaabbccaabbccaabbccaab.df5895de85.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbccaabbccaabbccaabbccaabbccaab.df5895de85.out index 610a32f2cd..c799f7b1fc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbccaabbccaabbccaabbccaabbccaab.df5895de85.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbccaabbccaabbccaabbccaabbccaab.df5895de85.out @@ -11,21 +11,21 @@ trace [ (Pair (Pair 1 10000) (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 10000) @parameter - (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc) @storage ] + [ (Pair 1 10000) + (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc) @storage - (Pair 1 10000) @parameter ] + [ (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc) + (Pair 1 10000) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc @storage.some - (Pair 1 10000) @parameter ] + [ 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc + (Pair 1 10000) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 10000) @parameter - 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc @storage.some ] + [ (Pair 1 10000) + 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) [ 1 10000 - 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc @storage.some ] + 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc ] - location: 21 (remaining gas: 1039988.477 units remaining) [ None ] - location: 13 (remaining gas: 1039988.462 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"Hello\"-(Some \"Hello\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"Hello\"-(Some \"Hello\")].out" index 162c47dc4c..1546d75217 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"Hello\"-(Some \"Hello\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"Hello\"-(Some \"Hello\")].out" @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039994.491 units remaining) [ (Pair "Hello" None) ] - location: 8 (remaining gas: 1039994.481 units remaining) - [ "Hello" @parameter ] + [ "Hello" ] - location: 9 (remaining gas: 1039994.466 units remaining) [ (Some "Hello") ] - location: 10 (remaining gas: 1039994.451 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"abcd\"-(Some \"abcd\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"abcd\"-(Some \"abcd\")].out" index 87dff6fbde..c27191405d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"abcd\"-(Some \"abcd\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"abcd\"-(Some \"abcd\")].out" @@ -10,7 +10,7 @@ trace - location: 8 (remaining gas: 1039994.501 units remaining) [ (Pair "abcd" None) ] - location: 8 (remaining gas: 1039994.491 units remaining) - [ "abcd" @parameter ] + [ "abcd" ] - location: 9 (remaining gas: 1039994.476 units remaining) [ (Some "abcd") ] - location: 10 (remaining gas: 1039994.461 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 -100)-\"1970-01-01T00:03:20Z\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 -100)-\"1970-01-01T00:03:20Z\"].out" index 939c203a34..153eeec133 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 -100)-\"1970-01-01T00:03:20Z\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 -100)-\"1970-01-01T00:03:20Z\"].out" @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039991.553 units remaining) [ (Pair (Pair "1970-01-01T00:01:40Z" -100) "1970-01-01T00:01:51Z") ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" -100) ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) @parameter - (Pair "1970-01-01T00:01:40Z" -100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" -100) + (Pair "1970-01-01T00:01:40Z" -100) ] - location: 11 (remaining gas: 1039991.523 units remaining) [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" -100) @parameter ] + (Pair "1970-01-01T00:01:40Z" -100) ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" -100) ] - location: 14 (remaining gas: 1039991.498 units remaining) [ -100 ] - location: 12 (remaining gas: 1039991.468 units remaining) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 100)-\"1970-01-01T00:00:00Z\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 100)-\"1970-01-01T00:00:00Z\"].out" index b7d7a6e25a..9452cd9c65 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 100)-\"1970-01-01T00:00:00Z\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 100)-\"1970-01-01T00:00:00Z\"].out" @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039991.553 units remaining) [ (Pair (Pair "1970-01-01T00:01:40Z" 100) "1970-01-01T00:01:51Z") ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 100) ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) @parameter - (Pair "1970-01-01T00:01:40Z" 100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 100) + (Pair "1970-01-01T00:01:40Z" 100) ] - location: 11 (remaining gas: 1039991.523 units remaining) [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" 100) @parameter ] + (Pair "1970-01-01T00:01:40Z" 100) ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 100) ] - location: 14 (remaining gas: 1039991.498 units remaining) [ 100 ] - location: 12 (remaining gas: 1039991.468 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 200000000000000000.3db82d2c25.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 200000000000000000.3db82d2c25.out index f1dc51c5b5..e01283a07a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 200000000000000000.3db82d2c25.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 200000000000000000.3db82d2c25.out @@ -10,15 +10,15 @@ trace - location: 9 (remaining gas: 1039991.553 units remaining) [ (Pair (Pair "1970-01-01T00:01:40Z" 2000000000000000000) "1970-01-01T00:01:51Z") ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) @parameter - (Pair "1970-01-01T00:01:40Z" 2000000000000000000) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) + (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] - location: 11 (remaining gas: 1039991.523 units remaining) [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" 2000000000000000000) @parameter ] + (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) @parameter ] + [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] - location: 14 (remaining gas: 1039991.498 units remaining) [ 2000000000000000000 ] - location: 12 (remaining gas: 1039991.468 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2000000 1000000)-(Some (Pair .b461aa042b.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2000000 1000000)-(Some (Pair .b461aa042b.out index 631857ce90..0f816c4c8d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2000000 1000000)-(Some (Pair .b461aa042b.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2000000 1000000)-(Some (Pair .b461aa042b.out @@ -10,41 +10,41 @@ trace - location: 12 (remaining gas: 1039980.750 units remaining) [ (Pair (Pair 2000000 1000000) None) ] - location: 12 (remaining gas: 1039980.740 units remaining) - [ (Pair 2000000 1000000) @parameter ] + [ (Pair 2000000 1000000) ] - location: 13 (remaining gas: 1039980.730 units remaining) - [ (Pair 2000000 1000000) @parameter - (Pair 2000000 1000000) @parameter ] + [ (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 14 (remaining gas: 1039980.720 units remaining) - [ (Pair 2000000 1000000) @parameter - (Pair 2000000 1000000) @parameter - (Pair 2000000 1000000) @parameter ] + [ (Pair 2000000 1000000) + (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 15 (remaining gas: 1039980.710 units remaining) [ 2000000 - (Pair 2000000 1000000) @parameter - (Pair 2000000 1000000) @parameter ] + (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 16 (remaining gas: 1039980.695 units remaining) - [ (Pair 2000000 1000000) @parameter - (Pair 2000000 1000000) @parameter ] + [ (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 18 (remaining gas: 1039980.685 units remaining) [ 1000000 - (Pair 2000000 1000000) @parameter ] + (Pair 2000000 1000000) ] - location: 16 (remaining gas: 1039980.655 units remaining) [ 2000000 1000000 - (Pair 2000000 1000000) @parameter ] + (Pair 2000000 1000000) ] - location: 19 (remaining gas: 1039980.635 units remaining) [ 3000000 - (Pair 2000000 1000000) @parameter ] + (Pair 2000000 1000000) ] - location: 20 (remaining gas: 1039980.620 units remaining) - [ (Pair 2000000 1000000) @parameter ] + [ (Pair 2000000 1000000) ] - location: 22 (remaining gas: 1039980.610 units remaining) - [ (Pair 2000000 1000000) @parameter - (Pair 2000000 1000000) @parameter ] + [ (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 23 (remaining gas: 1039980.600 units remaining) [ 2000000 - (Pair 2000000 1000000) @parameter ] + (Pair 2000000 1000000) ] - location: 24 (remaining gas: 1039980.585 units remaining) - [ (Pair 2000000 1000000) @parameter ] + [ (Pair 2000000 1000000) ] - location: 26 (remaining gas: 1039980.575 units remaining) [ 1000000 ] - location: 24 (remaining gas: 1039980.545 units remaining) @@ -53,12 +53,12 @@ trace - location: 27 (remaining gas: 1039980.525 units remaining) [ (Some 1000000) ] - location: 29 (remaining gas: 1039980.515 units remaining) - [ 1000000 @some ] + [ 1000000 ] - location: 29 (remaining gas: 1039980.500 units remaining) - [ 1000000 @some ] + [ 1000000 ] - location: 20 (remaining gas: 1039980.470 units remaining) [ 3000000 - 1000000 @some ] + 1000000 ] - location: 35 (remaining gas: 1039980.455 units remaining) [ (Pair 3000000 1000000) ] - location: 36 (remaining gas: 1039980.440 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2310000 1010000)-(Some (Pair .1e8cf7679c.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2310000 1010000)-(Some (Pair .1e8cf7679c.out index 8476b34141..8a4550d362 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2310000 1010000)-(Some (Pair .1e8cf7679c.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2310000 1010000)-(Some (Pair .1e8cf7679c.out @@ -10,41 +10,41 @@ trace - location: 12 (remaining gas: 1039980.750 units remaining) [ (Pair (Pair 2310000 1010000) None) ] - location: 12 (remaining gas: 1039980.740 units remaining) - [ (Pair 2310000 1010000) @parameter ] + [ (Pair 2310000 1010000) ] - location: 13 (remaining gas: 1039980.730 units remaining) - [ (Pair 2310000 1010000) @parameter - (Pair 2310000 1010000) @parameter ] + [ (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 14 (remaining gas: 1039980.720 units remaining) - [ (Pair 2310000 1010000) @parameter - (Pair 2310000 1010000) @parameter - (Pair 2310000 1010000) @parameter ] + [ (Pair 2310000 1010000) + (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 15 (remaining gas: 1039980.710 units remaining) [ 2310000 - (Pair 2310000 1010000) @parameter - (Pair 2310000 1010000) @parameter ] + (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 16 (remaining gas: 1039980.695 units remaining) - [ (Pair 2310000 1010000) @parameter - (Pair 2310000 1010000) @parameter ] + [ (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 18 (remaining gas: 1039980.685 units remaining) [ 1010000 - (Pair 2310000 1010000) @parameter ] + (Pair 2310000 1010000) ] - location: 16 (remaining gas: 1039980.655 units remaining) [ 2310000 1010000 - (Pair 2310000 1010000) @parameter ] + (Pair 2310000 1010000) ] - location: 19 (remaining gas: 1039980.635 units remaining) [ 3320000 - (Pair 2310000 1010000) @parameter ] + (Pair 2310000 1010000) ] - location: 20 (remaining gas: 1039980.620 units remaining) - [ (Pair 2310000 1010000) @parameter ] + [ (Pair 2310000 1010000) ] - location: 22 (remaining gas: 1039980.610 units remaining) - [ (Pair 2310000 1010000) @parameter - (Pair 2310000 1010000) @parameter ] + [ (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 23 (remaining gas: 1039980.600 units remaining) [ 2310000 - (Pair 2310000 1010000) @parameter ] + (Pair 2310000 1010000) ] - location: 24 (remaining gas: 1039980.585 units remaining) - [ (Pair 2310000 1010000) @parameter ] + [ (Pair 2310000 1010000) ] - location: 26 (remaining gas: 1039980.575 units remaining) [ 1010000 ] - location: 24 (remaining gas: 1039980.545 units remaining) @@ -53,12 +53,12 @@ trace - location: 27 (remaining gas: 1039980.525 units remaining) [ (Some 1300000) ] - location: 29 (remaining gas: 1039980.515 units remaining) - [ 1300000 @some ] + [ 1300000 ] - location: 29 (remaining gas: 1039980.500 units remaining) - [ 1300000 @some ] + [ 1300000 ] - location: 20 (remaining gas: 1039980.470 units remaining) [ 3320000 - 1300000 @some ] + 1300000 ] - location: 35 (remaining gas: 1039980.455 units remaining) [ (Pair 3320000 1300000) ] - location: 36 (remaining gas: 1039980.440 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[uncomb.tz-0-(Pair 1 4 2)-142].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[uncomb.tz-0-(Pair 1 4 2)-142].out index 2c4d6472da..5f5c1ccc7d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[uncomb.tz-0-(Pair 1 4 2)-142].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[uncomb.tz-0-(Pair 1 4 2)-142].out @@ -10,7 +10,7 @@ trace - location: 10 (remaining gas: 1039988.846 units remaining) [ (Pair (Pair 1 4 2) 0) ] - location: 10 (remaining gas: 1039988.836 units remaining) - [ (Pair 1 4 2) @parameter ] + [ (Pair 1 4 2) ] - location: 11 (remaining gas: 1039988.799 units remaining) [ 1 4 diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[voting_power.tz-(Pair 0 0)-\"edpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[voting_power.tz-(Pair 0 0)-\"edpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" index 50ad2a1cdf..24900d3ab5 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[voting_power.tz-(Pair 0 0)-\"edpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[voting_power.tz-(Pair 0 0)-\"edpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" @@ -10,7 +10,7 @@ trace - location: 9 (remaining gas: 1039666.323 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" 0 0) ] - location: 9 (remaining gas: 1039666.313 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" @parameter ] + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" ] - location: 10 (remaining gas: 1039665.658 units remaining) [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] - location: 11 (remaining gas: 1039445.120 units remaining) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False False)-(Some (Left False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False False)-(Some (Left False))].out index fd7eba43bf..cfefc05870 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False False)-(Some (Left False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False False)-(Some (Left False))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Left (Pair False False)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Left (Pair False False)) @parameter ] + [ (Left (Pair False False)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair False False) @parameter.left ] + [ (Pair False False) ] - location: 19 (remaining gas: 1039986.729 units remaining) [ False False ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False True)-(Some (Left True))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False True)-(Some (Left True))].out index fa58c680f8..5b7a2be2c2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False True)-(Some (Left True))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False True)-(Some (Left True))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Left (Pair False True)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Left (Pair False True)) @parameter ] + [ (Left (Pair False True)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair False True) @parameter.left ] + [ (Pair False True) ] - location: 19 (remaining gas: 1039986.729 units remaining) [ False True ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True False)-(Some (Left True))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True False)-(Some (Left True))].out index 82918b6ec2..3ff40dde89 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True False)-(Some (Left True))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True False)-(Some (Left True))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Left (Pair True False)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Left (Pair True False)) @parameter ] + [ (Left (Pair True False)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair True False) @parameter.left ] + [ (Pair True False) ] - location: 19 (remaining gas: 1039986.729 units remaining) [ True False ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True True)-(Some (Left False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True True)-(Some (Left False))].out index ecc4b102cb..486f945828 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True True)-(Some (Left False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True True)-(Some (Left False))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Left (Pair True True)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Left (Pair True True)) @parameter ] + [ (Left (Pair True True)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair True True) @parameter.left ] + [ (Pair True True) ] - location: 19 (remaining gas: 1039986.729 units remaining) [ True True ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 0)-(Some (Right 0))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 0)-(Some (Right 0))].out index 0936aa9bb7..8c0ba39db8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 0)-(Some (Right 0))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 0)-(Some (Right 0))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Right (Pair 0 0)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 0 0)) @parameter ] + [ (Right (Pair 0 0)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 0 0) @parameter.right ] + [ (Pair 0 0) ] - location: 24 (remaining gas: 1039986.729 units remaining) [ 0 0 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 1)-(Some (Right 1))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 1)-(Some (Right 1))].out index 20fbdeb828..d806e493bc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 1)-(Some (Right 1))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 1)-(Some (Right 1))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Right (Pair 0 1)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 0 1)) @parameter ] + [ (Right (Pair 0 1)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 0 1) @parameter.right ] + [ (Pair 0 1) ] - location: 24 (remaining gas: 1039986.729 units remaining) [ 0 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 0)-(Some (Right 1))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 0)-(Some (Right 1))].out index 18e78e5e50..98a4afea08 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 0)-(Some (Right 1))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 0)-(Some (Right 1))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Right (Pair 1 0)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 1 0)) @parameter ] + [ (Right (Pair 1 0)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 1 0) @parameter.right ] + [ (Pair 1 0) ] - location: 24 (remaining gas: 1039986.729 units remaining) [ 1 0 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 1)-(Some (Right 0))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 1)-(Some (Right 0))].out index 33fdbda9e1..6bd1043375 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 1)-(Some (Right 0))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 1)-(Some (Right 0))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Right (Pair 1 1)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 1 1)) @parameter ] + [ (Right (Pair 1 1)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 1 1) @parameter.right ] + [ (Pair 1 1) ] - location: 24 (remaining gas: 1039986.729 units remaining) [ 1 1 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 21)-(Some (Right 63))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 21)-(Some (Right 63))].out index 8006c7b5b9..4e10d0de47 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 21)-(Some (Right 63))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 21)-(Some (Right 63))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Right (Pair 42 21)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 42 21)) @parameter ] + [ (Right (Pair 42 21)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 42 21) @parameter.right ] + [ (Pair 42 21) ] - location: 24 (remaining gas: 1039986.729 units remaining) [ 42 21 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 63)-(Some (Right 21))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 63)-(Some (Right 21))].out index 22c89c416d..fd4ae34cd5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 63)-(Some (Right 21))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 63)-(Some (Right 21))].out @@ -10,9 +10,9 @@ trace - location: 16 (remaining gas: 1039986.759 units remaining) [ (Pair (Right (Pair 42 63)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 42 63)) @parameter ] + [ (Right (Pair 42 63)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 42 63) @parameter.right ] + [ (Pair 42 63) ] - location: 24 (remaining gas: 1039986.729 units remaining) [ 42 63 ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_level.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_level.out index 6d1948a5fc..df46a5c8bc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_level.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_level.out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039994.923 units remaining) - [ 10 @level ] + [ 10 ] - location: 9 (remaining gas: 1039994.908 units remaining) [ {} - 10 @level ] + 10 ] - location: 11 (remaining gas: 1039994.893 units remaining) [ (Pair {} 10) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_now.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_now.out index 4b51db4baa..a6549cb096 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_now.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_now.out @@ -12,10 +12,10 @@ trace - location: 7 (remaining gas: 1039994.838 units remaining) [ ] - location: 8 (remaining gas: 1039994.823 units remaining) - [ "2021-10-13T10:16:52Z" @now ] + [ "2021-10-13T10:16:52Z" ] - location: 9 (remaining gas: 1039994.808 units remaining) [ {} - "2021-10-13T10:16:52Z" @now ] + "2021-10-13T10:16:52Z" ] - location: 11 (remaining gas: 1039994.793 units remaining) [ (Pair {} "2021-10-13T10:16:52Z") ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_packunpack.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_packunpack.out index 4f54f2ba53..69d30c9a1f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_packunpack.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_packunpack.out @@ -13,7 +13,7 @@ trace Unit) ] - location: 15 (remaining gas: 1039977.521 units remaining) [ (Pair (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003) @parameter ] + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003) ] - location: 16 (remaining gas: 1039977.511 units remaining) [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] @@ -27,7 +27,7 @@ trace 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 20 (remaining gas: 1039975.016 units remaining) - [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 @packed + [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 23 (remaining gas: 1039974.981 units remaining) @@ -41,11 +41,11 @@ trace - location: 25 (remaining gas: 1039974.941 units remaining) [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 31 (remaining gas: 1039971.783 units remaining) - [ (Some (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 })) @unpacked ] + [ (Some (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 })) ] - location: 40 (remaining gas: 1039971.773 units remaining) - [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) @unpacked.some ] + [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) ] - location: 40 (remaining gas: 1039971.758 units remaining) - [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) @unpacked.some ] + [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) ] - location: 46 (remaining gas: 1039971.748 units remaining) [ ] - location: 47 (remaining gas: 1039971.738 units remaining) @@ -74,7 +74,7 @@ trace Unit) ] - location: 15 (remaining gas: 1039977.521 units remaining) [ (Pair (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004) @parameter ] + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004) ] - location: 16 (remaining gas: 1039977.511 units remaining) [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] @@ -88,7 +88,7 @@ trace 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 20 (remaining gas: 1039975.016 units remaining) - [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 @packed + [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 23 (remaining gas: 1039974.981 units remaining) From 79d527f45031be2e5c976eda8a3b299de4dbcce0 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Thu, 6 Jan 2022 14:55:32 +0100 Subject: [PATCH 0022/1220] Proto/Michelson: unparse_var_annot None is [] --- src/proto_alpha/lib_plugin/plugin.ml | 7 +------ src/proto_alpha/lib_protocol/script_ir_translator.ml | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 9bf9ab9b1a..55940be708 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -1492,12 +1492,7 @@ module RPC = struct v >>=? fun (data, _ctxt) -> unparse_stack (rest_ty, rest) >|=? fun rest -> - let annot = - match Script_ir_annot.unparse_var_annot None with - | [] -> None - | [a] -> Some a - | _ -> assert false - in + let annot = None in let data = Micheline.strip_locations data in (data, annot) :: rest in diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 69711bb09b..89ab1c123c 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -402,7 +402,7 @@ let rec unparse_stack_uncarbonated : | Item_t (ty, rest) -> let uty = unparse_ty_uncarbonated ~loc:() ty in let urest = unparse_stack_uncarbonated rest in - (strip_locations uty, unparse_var_annot None) :: urest + (strip_locations uty, []) :: urest let serialize_stack_for_error ctxt stack_ty = match Gas.level ctxt with From 981cee2ce1d858f9827c9898cf0eb84a81a4070a Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Thu, 6 Jan 2022 15:08:19 +0100 Subject: [PATCH 0023/1220] Proto/Michelson: simplify unparsed_stack_ty --- .../lib_protocol/script_ir_translator.ml | 9 +++------ .../lib_protocol/script_ir_translator.mli | 5 +---- src/proto_alpha/lib_protocol/script_tc_errors.ml | 2 +- .../script_tc_errors_registration.ml | 16 ++++++++++++++-- .../script_tc_errors_registration.mli | 5 ++--- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 89ab1c123c..ad3e74e7c3 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -99,10 +99,7 @@ type tc_context = Tc_context.t type unparsing_mode = Optimized | Readable | Optimized_legacy type type_logger = - Script.location -> - (Script.expr * Script.annot) list -> - (Script.expr * Script.annot) list -> - unit + Script.location -> Script.expr list -> Script.expr list -> unit (* ---- Error helpers -------------------------------------------------------*) @@ -397,12 +394,12 @@ let[@coq_axiom_with_reason "gadt"] rec comparable_ty_of_ty : error (Comparable_type_expected (loc, t)) let rec unparse_stack_uncarbonated : - type a s. (a, s) stack_ty -> (Script.expr * Script.annot) list = function + type a s. (a, s) stack_ty -> Script.expr list = function | Bot_t -> [] | Item_t (ty, rest) -> let uty = unparse_ty_uncarbonated ~loc:() ty in let urest = unparse_stack_uncarbonated rest in - (strip_locations uty, []) :: urest + strip_locations uty :: urest let serialize_stack_for_error ctxt stack_ty = match Gas.level ctxt with diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.mli b/src/proto_alpha/lib_protocol/script_ir_translator.mli index a6f906826a..24c1d6ef4d 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.mli +++ b/src/proto_alpha/lib_protocol/script_ir_translator.mli @@ -148,10 +148,7 @@ type unparsing_mode = Optimized | Readable | Optimized_legacy (** {2 High-level Michelson Data Types} *) type type_logger = - Script.location -> - (Script.expr * Script.annot) list -> - (Script.expr * Script.annot) list -> - unit + Script.location -> Script.expr list -> Script.expr list -> unit (** Create an empty big_map *) val empty_big_map : diff --git a/src/proto_alpha/lib_protocol/script_tc_errors.ml b/src/proto_alpha/lib_protocol/script_tc_errors.ml index 7b334cb5bf..f75694fe81 100644 --- a/src/proto_alpha/lib_protocol/script_tc_errors.ml +++ b/src/proto_alpha/lib_protocol/script_tc_errors.ml @@ -30,7 +30,7 @@ open Script type kind = Int_kind | String_kind | Bytes_kind | Prim_kind | Seq_kind -type unparsed_stack_ty = (Script.expr * Script.annot) list +type unparsed_stack_ty = Script.expr list type type_map = (Script.location * (unparsed_stack_ty * unparsed_stack_ty)) list diff --git a/src/proto_alpha/lib_protocol/script_tc_errors_registration.ml b/src/proto_alpha/lib_protocol/script_tc_errors_registration.ml index e63e9c5f76..0d7f79e0fd 100644 --- a/src/proto_alpha/lib_protocol/script_tc_errors_registration.ml +++ b/src/proto_alpha/lib_protocol/script_tc_errors_registration.ml @@ -30,7 +30,14 @@ open Script_tc_errors (* Helpers for encoding *) let type_map_enc = let open Data_encoding in - let stack_enc = list (tup2 Script.expr_encoding (list string)) in + (* TODO? simplify this encoding *) + let stack_enc = + list + (conv + (fun ty -> (ty, [])) + (fun (ty, _annots) -> ty) + (tup2 Script.expr_encoding (list string))) + in list (conv (fun (loc, (bef, aft)) -> (loc, bef, aft)) @@ -42,7 +49,12 @@ let type_map_enc = let stack_ty_enc = let open Data_encoding in - list (obj2 (req "type" Script.expr_encoding) (dft "annots" (list string) [])) + (* TODO? simplify this encoding *) + list + (conv + (fun ty -> (ty, [])) + (fun (ty, _annots) -> ty) + (obj2 (req "type" Script.expr_encoding) (dft "annots" (list string) []))) (* main registration *) let () = diff --git a/src/proto_alpha/lib_protocol/script_tc_errors_registration.mli b/src/proto_alpha/lib_protocol/script_tc_errors_registration.mli index c8dd34c2e0..b8f29ec306 100644 --- a/src/proto_alpha/lib_protocol/script_tc_errors_registration.mli +++ b/src/proto_alpha/lib_protocol/script_tc_errors_registration.mli @@ -28,7 +28,6 @@ open Alpha_context open Script val type_map_enc : - (location * ((expr * string list) list * (expr * string list) list)) list - Data_encoding.encoding + (location * (expr list * expr list)) list Data_encoding.encoding -val stack_ty_enc : (expr * string list) list Data_encoding.encoding +val stack_ty_enc : expr list Data_encoding.encoding From 6377c5b72710d21610186d16ba885193ee5b1446 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Thu, 6 Jan 2022 15:29:57 +0100 Subject: [PATCH 0024/1220] Proto/Client: adapt to change of unparsed_stack_ty --- .../lib_client/michelson_v1_emacs.ml | 5 +---- .../lib_client/michelson_v1_error_reporter.ml | 19 ++++--------------- .../lib_client/michelson_v1_printer.ml | 7 +------ 3 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/proto_alpha/lib_client/michelson_v1_emacs.ml b/src/proto_alpha/lib_client/michelson_v1_emacs.ml index 2721fa702d..c7e7010770 100644 --- a/src/proto_alpha/lib_client/michelson_v1_emacs.ml +++ b/src/proto_alpha/lib_client/michelson_v1_emacs.ml @@ -57,10 +57,7 @@ let print_expr ppf expr = let root = root (Michelson_v1_primitives.strings_of_prims expr) in Format.fprintf ppf "@[%a@]" print_expr root -let print_var_annots ppf = List.iter (Format.fprintf ppf "%s ") - -let print_annot_expr ppf (expr, annot) = - Format.fprintf ppf "(%a%a)" print_var_annots annot print_expr expr +let print_annot_expr ppf expr = Format.fprintf ppf "(%a)" print_expr expr open Micheline_parser open Script_tc_errors diff --git a/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml b/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml index 88250bf7bf..1376f983a9 100644 --- a/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml +++ b/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml @@ -32,24 +32,13 @@ open Michelson_v1_printer let print_ty ppf ty = Michelson_v1_printer.print_expr_unwrapped ppf ty -let print_var_annot ppf annot = List.iter (Format.fprintf ppf "@ %s") annot - let print_stack_ty ?(depth = max_int) ppf s = let rec loop depth ppf = function | [] -> () | _ when depth <= 0 -> Format.fprintf ppf "..." - | [(last, annot)] -> - Format.fprintf ppf "%a%a" print_ty last print_var_annot annot - | (last, annot) :: rest -> - Format.fprintf - ppf - "%a%a@ :@ %a" - print_ty - last - print_var_annot - annot - (loop (depth - 1)) - rest + | [last] -> print_ty ppf last + | last :: rest -> + Format.fprintf ppf "%a@ :@ %a" print_ty last (loop (depth - 1)) rest in match s with | [] -> Format.fprintf ppf "[]" @@ -538,7 +527,7 @@ let report_errors ~details ~show_source ?parsed ppf errs = print_loc loc (fun ppf -> print_stack_ty ppf) - [(exp, [])] + [exp] (fun ppf -> print_stack_ty ppf) got | Bad_stack (loc, name, depth, sty) -> diff --git a/src/proto_alpha/lib_client/michelson_v1_printer.ml b/src/proto_alpha/lib_client/michelson_v1_printer.ml index 5eeb4e1fd8..e6ade80dd0 100644 --- a/src/proto_alpha/lib_client/michelson_v1_printer.ml +++ b/src/proto_alpha/lib_client/michelson_v1_printer.ml @@ -41,11 +41,6 @@ let print_expr_unwrapped ppf expr = |> Micheline.inject_locations (fun _ -> anon) |> print_expr_unwrapped ppf -let print_var_annots ppf = List.iter (Format.fprintf ppf "%s ") - -let print_annot_expr_unwrapped ppf (expr, annot) = - Format.fprintf ppf "%a%a" print_var_annots annot print_expr_unwrapped expr - let print_stack ppf = function | [] -> Format.fprintf ppf "[]" | more -> @@ -54,7 +49,7 @@ let print_stack ppf = function "@[[ %a ]@]" (Format.pp_print_list ~pp_sep:(fun ppf () -> Format.fprintf ppf "@ : ") - print_annot_expr_unwrapped) + print_expr_unwrapped) more let print_execution_trace ppf trace = From 1cc01811e8f9141b5e30ec852f7cf85ed8ed629d Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Thu, 6 Jan 2022 15:46:45 +0100 Subject: [PATCH 0025/1220] Proto/Michelson: ignore special annotations instead of failing It happened in cases like `PAIR %@ %@`, where it meant the stack variable annotation should be converted to a field annotation. But since there are no stack variable annotation any more, it was failing all the time. Let's ignore them instead. --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index c028a7d0ad..85c27c1178 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -320,11 +320,10 @@ let parse_var_annot : Script.location -> string list -> unit tzresult = error_unexpected_annot loc fields >>? fun () -> get_one_annot loc vars >|? fun (_a : var_annot option) -> () -let split_if_special ~loc f = +let ignore_special f = match f with - | Some (Field_annot fa) when Non_empty_string.(fa = at) -> - error (Unexpected_annotation loc) - | _ -> ok () + | Some (Field_annot fa) when Non_empty_string.(fa = at) -> ok None + | _ -> ok f let parse_constr_annot : Script.location -> @@ -336,8 +335,8 @@ let parse_constr_annot : get_one_annot loc vars >>? fun (_v : var_annot option) -> get_one_annot loc types >>? fun t -> get_two_annot loc fields >>? fun (f1, f2) -> - split_if_special ~loc f1 >>? fun () -> - split_if_special ~loc f2 >|? fun () -> (t, f1, f2) + ignore_special f1 >>? fun f1 -> + ignore_special f2 >|? fun f2 -> (t, f1, f2) let parse_two_var_annot : Script.location -> string list -> unit tzresult = fun loc annot -> From 6dd7e5b20399a305d962a847f9309711abd246c5 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Thu, 6 Jan 2022 16:16:51 +0100 Subject: [PATCH 0026/1220] Tests/Python: adapt tests accordingly --- .../unpair_field_annotation_mismatch.tz | 0 ..._hash[client_regtest_custom_scrubber0].out | 1 + ...est_typecheck[macros--map_caddaadr.tz].out | 6 +- ...est_typecheck[macros--set_caddaadr.tz].out | 36 +-- ...[mini_scenarios--vote_for_delegate.tz].out | 109 ++++----- ...[mini_scenarios--weather_insurance.tz].out | 62 +++-- ...k::test_typecheck[opcodes--map_car.tz].out | 13 +- ...k::test_typecheck[opcodes--set_car.tz].out | 10 +- ...k::test_typecheck[opcodes--set_cdr.tz].out | 10 +- ...ck::test_typecheck[opcodes--unpair.tz].out | 214 +++++++++--------- ...--unpair_field_annotation_mismatch.tz].out | 28 +++ ...Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" | 34 +-- ..."hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" | 34 +-- ...lo\" 0)-\"world\"-(Pair \"world\" 0)].out" | 34 +-- ...ir \"hello\" 0)-1-(Pair \"hello\" 1)].out" | 30 +-- ... \"hello\" 500)-3-(Pair \"hello\" 3)].out" | 30 +-- ..."hello\" 7)-100-(Pair \"hello\" 100)].out" | 30 +-- ...input_output[unpair.tz-Unit-Unit-Unit].out | 212 ++++++++--------- tests_python/tests_alpha/test_contract.py | 5 - 19 files changed, 434 insertions(+), 464 deletions(-) rename tests_python/contracts_alpha/{ill_typed => opcodes}/unpair_field_annotation_mismatch.tz (100%) create mode 100644 tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--unpair_field_annotation_mismatch.tz].out diff --git a/tests_python/contracts_alpha/ill_typed/unpair_field_annotation_mismatch.tz b/tests_python/contracts_alpha/opcodes/unpair_field_annotation_mismatch.tz similarity index 100% rename from tests_python/contracts_alpha/ill_typed/unpair_field_annotation_mismatch.tz rename to tests_python/contracts_alpha/opcodes/unpair_field_annotation_mismatch.tz diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestScriptHashRegression::test_contract_hash[client_regtest_custom_scrubber0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestScriptHashRegression::test_contract_hash[client_regtest_custom_scrubber0].out index 96b6c31728..e1fbc7c9c8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestScriptHashRegression::test_contract_hash[client_regtest_custom_scrubber0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestScriptHashRegression::test_contract_hash[client_regtest_custom_scrubber0].out @@ -282,6 +282,7 @@ expruhV9RSEPAtKAUhBbdTw5gPFdjcKk8zr7cVLSsGtmJuH3o7VXXo [CONTRACT_PATH]/opcodes/t expru3MSjYZRmQi3yiN6gYa4X6rs88XLWH4H8ivzrCvxs8z8cJfu4Z [CONTRACT_PATH]/opcodes/transfer_tokens.tz exprtbACDcFtDfEwsBA5LAG13uMRAjnQsFjzNELMS7jQ87bcqgdE6r [CONTRACT_PATH]/opcodes/uncomb.tz exprufJpS3BWpgv4QBaBEMucbn1jsVpdqEGLLMfXjDuKGPRGCpZUkj [CONTRACT_PATH]/opcodes/unpair.tz +exprtqjpmEs9GUjSEzJYSnN3skiCb8js2bY48R9Lhxk9JW1CKnm6VP [CONTRACT_PATH]/opcodes/unpair_field_annotation_mismatch.tz exprv4ACaZe4aECCfG93NGVVHbQBNQ5Atxtju5vWASZSEp5sLECcjg [CONTRACT_PATH]/opcodes/update_big_map.tz expruWzM36ATA3fAee4WHDS4vvMeewkwhya1fZaa6HFPbjwt9vvGpg [CONTRACT_PATH]/opcodes/utxo_read.tz expru3YgRPQBAnTWgKytSMs3tRj7dMgtWUxo75b1pUFrTLscKy2byF [CONTRACT_PATH]/opcodes/utxor.tz diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--map_caddaadr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--map_caddaadr.tz].out index 8c504cfa9a..2cd94487cb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--map_caddaadr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--map_caddaadr.tz].out @@ -6,13 +6,13 @@ Gas remaining: 1039964.206 units remaining storage (pair (pair nat (pair nat (pair (pair (pair (nat %p) (mutez %value)) nat) nat))) nat) ; code { MAP_CDADDAADR @new_storage %value { PUSH mutez 1000000 - /* [ mutez : @value mutez : pair (nat %p) (mutez %value) ] */ ; + /* [ mutez : mutez : pair (nat %p) (mutez %value) ] */ ; ADD /* [ mutez : pair (nat %p) (mutez %value) ] */ } ; NIL operation /* [ list operation - : @new_storage pair unit (pair nat nat (pair (pair (nat %p @p) (mutez %value)) nat) nat) nat ] */ ; + : pair unit (pair nat nat (pair (pair nat (mutez %value)) nat) nat) nat ] */ ; SWAP - /* [ @new_storage pair unit (pair nat nat (pair (pair (nat %p @p) (mutez %value)) nat) nat) nat + /* [ pair unit (pair nat nat (pair (pair nat (mutez %value)) nat) nat) nat : list operation ] */ ; SET_CAR } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--set_caddaadr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--set_caddaadr.tz].out index 089d2e45ef..6cb6fd18c0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--set_caddaadr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--set_caddaadr.tz].out @@ -10,43 +10,19 @@ Gas remaining: 1039968.110 units remaining : pair (mutez @parameter) (pair @storage (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat) ] */ ; CAR - /* [ @parameter mutez + /* [ mutez : pair (mutez @parameter) (pair @storage (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat) ] */ ; SWAP /* [ pair (mutez @parameter) (pair @storage (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat) - : @parameter mutez ] */ ; + : mutez ] */ ; CDR - /* [ @storage pair (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat - : @parameter mutez ] */ ; + /* [ pair (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat + : mutez ] */ ; SET_CADDAADR @toplevel_pair_name %value ; NIL operation /* [ list operation - : @toplevel_pair_name pair (pair @storage.car - (nat @storage.car.car) - (pair @storage.car.cdr - (nat @storage.car.cdr.car) - (pair @storage.car.cdr.cdr - (pair @storage.car.cdr.cdr.car - (pair @storage.car.cdr.cdr.car.car - (nat %p @storage.car.cdr.cdr.car.car.p) - (mutez %value @parameter)) - (nat @storage.car.cdr.cdr.car.cdr)) - (nat @storage.car.cdr.cdr.cdr)))) - (nat @storage.cdr) ] */ ; + : pair (pair nat nat (pair (pair nat (mutez %value)) nat) nat) nat ] */ ; PAIR - /* [ pair (list operation) - (pair @toplevel_pair_name - (pair @storage.car - (nat @storage.car.car) - (pair @storage.car.cdr - (nat @storage.car.cdr.car) - (pair @storage.car.cdr.cdr - (pair @storage.car.cdr.cdr.car - (pair @storage.car.cdr.cdr.car.car - (nat %p @storage.car.cdr.cdr.car.car.p) - (mutez %value @parameter)) - (nat @storage.car.cdr.cdr.car.cdr)) - (nat @storage.car.cdr.cdr.cdr)))) - (nat @storage.cdr)) ] */ } } + /* [ pair (list operation) (pair nat nat (pair (pair nat (mutez %value)) nat) nat) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--vote_for_delegate.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--vote_for_delegate.tz].out index 3c1a5323b9..09ddd4a678 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--vote_for_delegate.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--vote_for_delegate.tz].out @@ -17,32 +17,31 @@ Gas remaining: 1039933.671 units remaining (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; CDAAR %addr @% ; SENDER - /* [ @sender address : @addr address + /* [ address : address : pair (option @parameter key_hash) (pair @storage (pair %mgr1 (address %addr) (option %key key_hash)) (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; PAIR %@ %@ - /* [ pair (address %sender @sender) (address %addr @addr) + /* [ pair address address : pair (option @parameter key_hash) (pair @storage (pair %mgr1 (address %addr) (option %key key_hash)) (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; UNPAIR - /* [ @sender address : @addr address + /* [ address : address : pair (option @parameter key_hash) (pair @storage (pair %mgr1 (address %addr) (option %key key_hash)) (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; IFCMPEQ { UNPAIR - /* [ @parameter option key_hash - : @storage pair (pair %mgr1 (address %addr) (option %key key_hash)) + /* [ option key_hash + : pair (pair %mgr1 (address %addr) (option %key key_hash)) (pair %mgr2 (address %addr) (option %key key_hash)) ] */ ; SWAP - /* [ @storage pair (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash)) - : @parameter option key_hash ] */ ; + /* [ pair (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) : option key_hash ] */ ; SET_CADR %key @changed_mgr1_key } { DUP /* [ pair (option @parameter key_hash) @@ -55,114 +54,90 @@ Gas remaining: 1039933.671 units remaining (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; CDDAR ; SENDER - /* [ @sender address : address + /* [ address : address : pair (option @parameter key_hash) (pair @storage (pair %mgr1 (address %addr) (option %key key_hash)) (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; IFCMPEQ { UNPAIR - /* [ @parameter option key_hash - : @storage pair (pair %mgr1 (address %addr) (option %key key_hash)) + /* [ option key_hash + : pair (pair %mgr1 (address %addr) (option %key key_hash)) (pair %mgr2 (address %addr) (option %key key_hash)) ] */ ; SWAP - /* [ @storage pair (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash)) - : @parameter option key_hash ] */ ; + /* [ pair (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) : option key_hash ] */ ; SET_CDDR %key } { FAIL } } ; DUP - /* [ pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + /* [ pair (pair address (option %key key_hash)) address (option %key key_hash) + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; CADR ; DIP { DUP - /* [ pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + /* [ pair (pair address (option %key key_hash)) address (option %key key_hash) + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; CDDR } /* [ option key_hash : option key_hash - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; IF_NONE { IF_NONE { NONE key_hash /* [ option key_hash - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; SET_DELEGATE /* [ operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; NIL operation /* [ list operation : operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; SWAP /* [ operation : list operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; CONS /* [ list operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ } + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ } { DROP - /* [ pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + /* [ pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; NIL operation /* [ list operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ } } + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ } } { SWAP - /* [ option key_hash : @some key_hash - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + /* [ option key_hash : key_hash + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; IF_SOME { DIP { DUP - /* [ @some key_hash : @some key_hash - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ } - /* [ @some key_hash : @some key_hash : @some key_hash - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + /* [ key_hash : key_hash + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ } + /* [ key_hash : key_hash : key_hash + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; IFCMPEQ { SOME /* [ option key_hash - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; SET_DELEGATE /* [ operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; NIL operation /* [ list operation : operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; SWAP /* [ operation : list operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; CONS /* [ list operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ } + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ } { DROP - /* [ pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + /* [ pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; NIL operation /* [ list operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ } } + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ } } { DROP - /* [ pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ ; + /* [ pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ ; NIL operation /* [ list operation - : pair (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ } } ; + : pair (pair address (option %key key_hash)) address (option %key key_hash) ] */ } } ; PAIR /* [ pair (list operation) - (pair %mgr1 @storage.mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 @storage.mgr2 (address %addr) (option %key key_hash)) ] */ } } + (pair address (option %key key_hash)) + address + (option %key key_hash) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--weather_insurance.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--weather_insurance.tz].out index 54f287f9e6..24584db5b7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--weather_insurance.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--weather_insurance.tz].out @@ -34,7 +34,7 @@ Gas remaining: 1039960.200 units remaining (nat :rain %rain_level) (key %weather_service_key)) ] */ ; CAR - /* [ @parameter pair (signature %signed_weather_data) (nat :rain %actual_level) + /* [ pair (signature %signed_weather_data) (nat :rain %actual_level) : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) (pair @storage (pair (address %under_key) (address %over_key)) @@ -47,8 +47,7 @@ Gas remaining: 1039960.200 units remaining (key %weather_service_key)) ] */ ; MAP_CDR { PACK - /* [ @packed bytes - : @parameter pair (signature %signed_weather_data) (nat :rain %actual_level) + /* [ bytes : pair (signature %signed_weather_data) (nat :rain %actual_level) : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) (pair @storage (pair (address %under_key) (address %over_key)) @@ -60,8 +59,7 @@ Gas remaining: 1039960.200 units remaining (nat :rain %rain_level) (key %weather_service_key)) ] */ ; BLAKE2B - /* [ bytes - : @parameter pair (signature %signed_weather_data) (nat :rain %actual_level) + /* [ bytes : pair (signature %signed_weather_data) (nat :rain %actual_level) : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) (pair @storage (pair (address %under_key) (address %over_key)) @@ -77,8 +75,7 @@ Gas remaining: 1039960.200 units remaining (pair @storage (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) - (key %weather_service_key)) - : @parameter pair (signature %signed_weather_data @parameter.signed_weather_data) bytes + (key %weather_service_key)) : pair signature bytes : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) (pair @storage (pair (address %under_key) (address %over_key)) @@ -86,20 +83,20 @@ Gas remaining: 1039960.200 units remaining (key %weather_service_key)) ] */ ; CDDDR %weather_service_key ; DIP { UNPAIR - /* [ @parameter.signed_weather_data signature : bytes + /* [ signature : bytes : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) (pair @storage (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key)) ] */ } - /* [ key : @parameter.signed_weather_data signature : bytes + /* [ key : signature : bytes : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) (pair @storage (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key)) ] */ ; CHECK_SIGNATURE @sigok - /* [ @sigok bool + /* [ bool : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) (pair @storage (pair (address %under_key) (address %over_key)) @@ -156,7 +153,7 @@ Gas remaining: 1039960.200 units remaining (key %weather_service_key)) ] */ ; DIIIP { CDR %storage - /* [ @storage pair (pair (address %under_key) (address %over_key)) + /* [ pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ } /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) @@ -174,7 +171,7 @@ Gas remaining: 1039960.200 units remaining (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key)) - : @storage pair (pair (address %under_key) (address %over_key)) + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; DIIP { CDAR } @@ -189,7 +186,7 @@ Gas remaining: 1039960.200 units remaining (nat :rain %rain_level) (key %weather_service_key)) : pair (address %under_key) (address %over_key) - : @storage pair (pair (address %under_key) (address %over_key)) + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; DIP { CADR %actual_level } @@ -199,61 +196,60 @@ Gas remaining: 1039960.200 units remaining (nat :rain %rain_level) (key %weather_service_key)) : nat :rain : pair (address %under_key) (address %over_key) - : @storage pair (pair (address %under_key) (address %over_key)) + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; CDDAR %rain_level ; CMPLT ; IF { CAR %under_key /* [ address - : @storage pair (pair (address %under_key) (address %over_key)) + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ } { CDR %over_key /* [ address - : @storage pair (pair (address %under_key) (address %over_key)) + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ } ; CONTRACT unit - /* [ @contract option (contract unit) - : @storage pair (pair (address %under_key) (address %over_key)) + /* [ option (contract unit) + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; ASSERT_SOME ; BALANCE - /* [ @balance mutez : @contract.some contract unit - : @storage pair (pair (address %under_key) (address %over_key)) + /* [ mutez : contract unit + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; UNIT - /* [ unit : @balance mutez : @contract.some contract unit - : @storage pair (pair (address %under_key) (address %over_key)) + /* [ unit : mutez : contract unit + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; TRANSFER_TOKENS @trans.op - /* [ @trans.op operation - : @storage pair (pair (address %under_key) (address %over_key)) + /* [ operation + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; NIL operation - /* [ list operation : @trans.op operation - : @storage pair (pair (address %under_key) (address %over_key)) + /* [ list operation : operation + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; SWAP - /* [ @trans.op operation : list operation - : @storage pair (pair (address %under_key) (address %over_key)) + /* [ operation : list operation + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; CONS /* [ list operation - : @storage pair (pair (address %under_key) (address %over_key)) + : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; PAIR /* [ pair (list operation) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ } } + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_car.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_car.tz].out index 653d286927..38c2db76e9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_car.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_car.tz].out @@ -8,14 +8,13 @@ Gas remaining: 1039990.103 units remaining /* [ pair (bool @parameter) (pair @storage (bool %b) (nat %n)) : pair (bool @parameter) (pair @storage (bool %b) (nat %n)) ] */ ; CAR - /* [ @parameter bool - : pair (bool @parameter) (pair @storage (bool %b) (nat %n)) ] */ ; - DIP { CDR /* [ @storage pair (bool %b) (nat %n) ] */ } - /* [ @parameter bool : @storage pair (bool %b) (nat %n) ] */ ; + /* [ bool : pair (bool @parameter) (pair @storage (bool %b) (nat %n)) ] */ ; + DIP { CDR /* [ pair (bool %b) (nat %n) ] */ } + /* [ bool : pair (bool %b) (nat %n) ] */ ; SWAP - /* [ @storage pair (bool %b) (nat %n) : @parameter bool ] */ ; + /* [ pair (bool %b) (nat %n) : bool ] */ ; MAP_CAR @new_storage %b { AND /* [ bool ] */ } ; NIL operation - /* [ list operation : @storage pair (bool %b) (nat %n @storage.n) ] */ ; + /* [ list operation : pair (bool %b) nat ] */ ; PAIR - /* [ pair (list operation) (pair @storage (bool %b) (nat %n @storage.n)) ] */ } } + /* [ pair (list operation) (bool %b) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_car.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_car.tz].out index 917fc6f413..0fdf159b05 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_car.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_car.tz].out @@ -8,12 +8,12 @@ Gas remaining: 1039991.314 units remaining /* [ pair (string @parameter) (pair @storage (string %s) (nat %n)) : pair (string @parameter) (pair @storage (string %s) (nat %n)) ] */ ; CDR - /* [ @storage pair (string %s) (nat %n) + /* [ pair (string %s) (nat %n) : pair (string @parameter) (pair @storage (string %s) (nat %n)) ] */ ; - DIP { CAR /* [ @parameter string ] */ } - /* [ @storage pair (string %s) (nat %n) : @parameter string ] */ ; + DIP { CAR /* [ string ] */ } + /* [ pair (string %s) (nat %n) : string ] */ ; SET_CAR %s ; NIL operation - /* [ list operation : @storage pair (string %s @parameter) (nat %n @storage.n) ] */ ; + /* [ list operation : pair (string %s) nat ] */ ; PAIR - /* [ pair (list operation) (pair @storage (string %s @parameter) (nat %n @storage.n)) ] */ } } + /* [ pair (list operation) (string %s) nat ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_cdr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_cdr.tz].out index 6fa6e59406..04a7076e77 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_cdr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_cdr.tz].out @@ -8,12 +8,12 @@ Gas remaining: 1039991.782 units remaining /* [ pair (nat @parameter) (pair @storage (string %s) (nat %n)) : pair (nat @parameter) (pair @storage (string %s) (nat %n)) ] */ ; CDR - /* [ @storage pair (string %s) (nat %n) + /* [ pair (string %s) (nat %n) : pair (nat @parameter) (pair @storage (string %s) (nat %n)) ] */ ; - DIP { CAR /* [ @parameter nat ] */ } - /* [ @storage pair (string %s) (nat %n) : @parameter nat ] */ ; + DIP { CAR /* [ nat ] */ } + /* [ pair (string %s) (nat %n) : nat ] */ ; SET_CDR %n ; NIL operation - /* [ list operation : @storage pair (string %s @storage.s) (nat %n @parameter) ] */ ; + /* [ list operation : pair string (nat %n) ] */ ; PAIR - /* [ pair (list operation) (pair @storage (string %s @storage.s) (nat %n @parameter)) ] */ } } + /* [ pair (list operation) string (nat %n) ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--unpair.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--unpair.tz].out index f9b6f69e4a..2cea990326 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--unpair.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--unpair.tz].out @@ -17,173 +17,173 @@ Gas remaining: 1039903.879 units remaining DROP 2 /* [] */ ; UNIT @b - /* [ @b unit ] */ ; + /* [ unit ] */ ; UNIT @a - /* [ @a unit : @b unit ] */ ; + /* [ unit : unit ] */ ; PAIR - /* [ pair (unit @a) (unit @b) ] */ ; + /* [ pair unit unit ] */ ; UNPAIR @c @d - /* [ @c unit : @d unit ] */ ; + /* [ unit : unit ] */ ; DROP 2 /* [] */ ; UNIT @b - /* [ @b unit ] */ ; + /* [ unit ] */ ; UNIT @a - /* [ @a unit : @b unit ] */ ; + /* [ unit : unit ] */ ; PAIR %@ %@ - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR %a %b - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR % %b - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR %a % - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR % % - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR %a - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR % - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR %a %b @a @b - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR @a @b %a %b - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR @a @% %a %b - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR @% @% %a %b - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DUP - /* [ pair (unit %a @a) (unit %b @b) : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit : pair unit unit ] */ ; UNPAIR @% @b %a %b - /* [ @a unit : @b unit : pair (unit %a @a) (unit %b @b) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; DROP 2 - /* [ pair (unit %a @a) (unit %b @b) ] */ ; + /* [ pair unit unit ] */ ; DROP /* [] */ ; UNIT @d - /* [ @d unit ] */ ; + /* [ unit ] */ ; UNIT @c - /* [ @c unit : @d unit ] */ ; + /* [ unit : unit ] */ ; PAIR %a %b - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR %a %b - /* [ @c unit : @d unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR % %b - /* [ @c unit : @d unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR %a % - /* [ @c unit : @d unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR % % - /* [ @c unit : @d unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR %a - /* [ @c unit : @d unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR % - /* [ @c unit : @d unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR - /* [ @c unit : @d unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR %a %b @a @b - /* [ @a unit : @b unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @a @b %a %b - /* [ @a unit : @b unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @a @% %a %b - /* [ @a unit : @b unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @% @% %a %b - /* [ @a unit : @b unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ pair (unit %a @c) (unit %b @d) : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @% @b %a %b - /* [ @a unit : @b unit : pair (unit %a @c) (unit %b @d) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ pair (unit %a @c) (unit %b @d) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DROP /* [] */ ; UNIT @@ -237,31 +237,31 @@ Gas remaining: 1039903.879 units remaining DUP /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR %a %b @a @b - /* [ @a unit : @b unit : pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 /* [ pair (unit %a) (unit %b) ] */ ; DUP /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @a @b %a %b - /* [ @a unit : @b unit : pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 /* [ pair (unit %a) (unit %b) ] */ ; DUP /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @a @% %a %b - /* [ @a unit : @b unit : pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 /* [ pair (unit %a) (unit %b) ] */ ; DUP /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @% @% %a %b - /* [ @a unit : @b unit : pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 /* [ pair (unit %a) (unit %b) ] */ ; DUP /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @% @b %a %b - /* [ @a unit : @b unit : pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 /* [ pair (unit %a) (unit %b) ] */ ; DROP @@ -271,47 +271,47 @@ Gas remaining: 1039903.879 units remaining UNIT /* [ unit : unit ] */ ; PAIR %a %b @p - /* [ @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ @p pair (unit %a) (unit %b) : @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @%% @b - /* [ @p.a unit : @b unit : @p pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ @p pair (unit %a) (unit %b) : @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @a @%% - /* [ @a unit : @p.b unit : @p pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ @p pair (unit %a) (unit %b) : @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @%% @%% - /* [ @p.a unit : @p.b unit : @p pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ @p pair (unit %a) (unit %b) : @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @% @%% - /* [ @a unit : @p.b unit : @p pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DUP - /* [ @p pair (unit %a) (unit %b) : @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) : pair (unit %a) (unit %b) ] */ ; UNPAIR @%% @% - /* [ @p.a unit : @b unit : @p pair (unit %a) (unit %b) ] */ ; + /* [ unit : unit : pair (unit %a) (unit %b) ] */ ; DROP 2 - /* [ @p pair (unit %a) (unit %b) ] */ ; + /* [ pair (unit %a) (unit %b) ] */ ; DROP /* [] */ ; UNIT @b - /* [ @b unit ] */ ; + /* [ unit ] */ ; UNIT @a - /* [ @a unit : @b unit ] */ ; + /* [ unit : unit ] */ ; PAIR @c - /* [ @c pair (unit @a) (unit @b) ] */ ; + /* [ pair unit unit ] */ ; UNPAIR @b @a - /* [ @b unit : @a unit ] */ ; + /* [ unit : unit ] */ ; DROP 2 /* [] */ ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--unpair_field_annotation_mismatch.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--unpair_field_annotation_mismatch.tz].out new file mode 100644 index 0000000000..51456482ac --- /dev/null +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--unpair_field_annotation_mismatch.tz].out @@ -0,0 +1,28 @@ +tests_alpha/test_contract.py::TestTypecheck::test_typecheck[opcodes/unpair_field_annotation_mismatch.tz] + +Well typed +Gas remaining: 1039993.045 units remaining +{ parameter (unit :param_unit) ; + storage (unit :u1) ; + code { DROP + /* [] */ ; + UNIT @b + /* [ unit ] */ ; + UNIT @a + /* [ unit : unit ] */ ; + PAIR %@ %@ + /* [ pair unit unit ] */ ; + DUP + /* [ pair unit unit : pair unit unit ] */ ; + UNPAIR %c %d + /* [ unit : unit : pair unit unit ] */ ; + DROP 2 + /* [ pair unit unit ] */ ; + DROP + /* [] */ ; + UNIT + /* [ unit ] */ ; + NIL operation + /* [ list operation : unit ] */ ; + PAIR + /* [ pair (list operation) unit ] */ } } diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" index 0997339e6b..05f706bdcd 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" @@ -13,37 +13,37 @@ trace [ (Pair "" "hello" 0) (Pair "" "hello" 0) ] - location: 10 (remaining gas: 1039987.541 units remaining) - [ (Pair "hello" 0) @storage + [ (Pair "hello" 0) (Pair "" "hello" 0) ] - location: 11 (remaining gas: 1039987.526 units remaining) [ (Pair "" "hello" 0) ] - location: 13 (remaining gas: 1039987.516 units remaining) - [ "" @parameter ] + [ "" ] - location: 11 (remaining gas: 1039987.486 units remaining) - [ (Pair "hello" 0) @storage - "" @parameter ] + [ (Pair "hello" 0) + "" ] - location: 15 (remaining gas: 1039987.476 units remaining) - [ (Pair "hello" 0) @storage - (Pair "hello" 0) @storage - "" @parameter ] + [ (Pair "hello" 0) + (Pair "hello" 0) + "" ] - location: 16 (remaining gas: 1039987.466 units remaining) [ "hello" - (Pair "hello" 0) @storage - "" @parameter ] + (Pair "hello" 0) + "" ] - location: 17 (remaining gas: 1039987.456 units remaining) - [ (Pair "hello" 0) @storage - "" @parameter ] + [ (Pair "hello" 0) + "" ] - location: 18 (remaining gas: 1039987.446 units remaining) - [ 0 @storage.n - "" @parameter ] + [ 0 + "" ] - location: 19 (remaining gas: 1039987.436 units remaining) - [ "" @parameter - 0 @storage.n ] + [ "" + 0 ] - location: 20 (remaining gas: 1039987.421 units remaining) - [ (Pair "" 0) @storage ] + [ (Pair "" 0) ] - location: 21 (remaining gas: 1039987.406 units remaining) [ {} - (Pair "" 0) @storage ] + (Pair "" 0) ] - location: 23 (remaining gas: 1039987.391 units remaining) [ (Pair {} "" 0) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" index f03b3b848b..7aa7e30add 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" @@ -13,37 +13,37 @@ trace [ (Pair "abc" "hello" 0) (Pair "abc" "hello" 0) ] - location: 10 (remaining gas: 1039987.511 units remaining) - [ (Pair "hello" 0) @storage + [ (Pair "hello" 0) (Pair "abc" "hello" 0) ] - location: 11 (remaining gas: 1039987.496 units remaining) [ (Pair "abc" "hello" 0) ] - location: 13 (remaining gas: 1039987.486 units remaining) - [ "abc" @parameter ] + [ "abc" ] - location: 11 (remaining gas: 1039987.456 units remaining) - [ (Pair "hello" 0) @storage - "abc" @parameter ] + [ (Pair "hello" 0) + "abc" ] - location: 15 (remaining gas: 1039987.446 units remaining) - [ (Pair "hello" 0) @storage - (Pair "hello" 0) @storage - "abc" @parameter ] + [ (Pair "hello" 0) + (Pair "hello" 0) + "abc" ] - location: 16 (remaining gas: 1039987.436 units remaining) [ "hello" - (Pair "hello" 0) @storage - "abc" @parameter ] + (Pair "hello" 0) + "abc" ] - location: 17 (remaining gas: 1039987.426 units remaining) - [ (Pair "hello" 0) @storage - "abc" @parameter ] + [ (Pair "hello" 0) + "abc" ] - location: 18 (remaining gas: 1039987.416 units remaining) - [ 0 @storage.n - "abc" @parameter ] + [ 0 + "abc" ] - location: 19 (remaining gas: 1039987.406 units remaining) - [ "abc" @parameter - 0 @storage.n ] + [ "abc" + 0 ] - location: 20 (remaining gas: 1039987.391 units remaining) - [ (Pair "abc" 0) @storage ] + [ (Pair "abc" 0) ] - location: 21 (remaining gas: 1039987.376 units remaining) [ {} - (Pair "abc" 0) @storage ] + (Pair "abc" 0) ] - location: 23 (remaining gas: 1039987.361 units remaining) [ (Pair {} "abc" 0) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"world\"-(Pair \"world\" 0)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"world\"-(Pair \"world\" 0)].out" index 1d2d951295..209613e571 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"world\"-(Pair \"world\" 0)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"world\"-(Pair \"world\" 0)].out" @@ -13,37 +13,37 @@ trace [ (Pair "world" "hello" 0) (Pair "world" "hello" 0) ] - location: 10 (remaining gas: 1039987.491 units remaining) - [ (Pair "hello" 0) @storage + [ (Pair "hello" 0) (Pair "world" "hello" 0) ] - location: 11 (remaining gas: 1039987.476 units remaining) [ (Pair "world" "hello" 0) ] - location: 13 (remaining gas: 1039987.466 units remaining) - [ "world" @parameter ] + [ "world" ] - location: 11 (remaining gas: 1039987.436 units remaining) - [ (Pair "hello" 0) @storage - "world" @parameter ] + [ (Pair "hello" 0) + "world" ] - location: 15 (remaining gas: 1039987.426 units remaining) - [ (Pair "hello" 0) @storage - (Pair "hello" 0) @storage - "world" @parameter ] + [ (Pair "hello" 0) + (Pair "hello" 0) + "world" ] - location: 16 (remaining gas: 1039987.416 units remaining) [ "hello" - (Pair "hello" 0) @storage - "world" @parameter ] + (Pair "hello" 0) + "world" ] - location: 17 (remaining gas: 1039987.406 units remaining) - [ (Pair "hello" 0) @storage - "world" @parameter ] + [ (Pair "hello" 0) + "world" ] - location: 18 (remaining gas: 1039987.396 units remaining) - [ 0 @storage.n - "world" @parameter ] + [ 0 + "world" ] - location: 19 (remaining gas: 1039987.386 units remaining) - [ "world" @parameter - 0 @storage.n ] + [ "world" + 0 ] - location: 20 (remaining gas: 1039987.371 units remaining) - [ (Pair "world" 0) @storage ] + [ (Pair "world" 0) ] - location: 21 (remaining gas: 1039987.356 units remaining) [ {} - (Pair "world" 0) @storage ] + (Pair "world" 0) ] - location: 23 (remaining gas: 1039987.341 units remaining) [ (Pair {} "world" 0) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 0)-1-(Pair \"hello\" 1)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 0)-1-(Pair \"hello\" 1)].out" index 9f90fe1895..fb0d3ede36 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 0)-1-(Pair \"hello\" 1)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 0)-1-(Pair \"hello\" 1)].out" @@ -13,34 +13,34 @@ trace [ (Pair 1 "hello" 0) (Pair 1 "hello" 0) ] - location: 10 (remaining gas: 1039988.158 units remaining) - [ (Pair "hello" 0) @storage + [ (Pair "hello" 0) (Pair 1 "hello" 0) ] - location: 11 (remaining gas: 1039988.143 units remaining) [ (Pair 1 "hello" 0) ] - location: 13 (remaining gas: 1039988.133 units remaining) - [ 1 @parameter ] + [ 1 ] - location: 11 (remaining gas: 1039988.103 units remaining) - [ (Pair "hello" 0) @storage - 1 @parameter ] + [ (Pair "hello" 0) + 1 ] - location: 15 (remaining gas: 1039988.093 units remaining) - [ (Pair "hello" 0) @storage - (Pair "hello" 0) @storage - 1 @parameter ] + [ (Pair "hello" 0) + (Pair "hello" 0) + 1 ] - location: 16 (remaining gas: 1039988.083 units remaining) [ 0 - (Pair "hello" 0) @storage - 1 @parameter ] + (Pair "hello" 0) + 1 ] - location: 17 (remaining gas: 1039988.073 units remaining) - [ (Pair "hello" 0) @storage - 1 @parameter ] + [ (Pair "hello" 0) + 1 ] - location: 18 (remaining gas: 1039988.063 units remaining) - [ "hello" @storage.s - 1 @parameter ] + [ "hello" + 1 ] - location: 19 (remaining gas: 1039988.048 units remaining) - [ (Pair "hello" 1) @storage ] + [ (Pair "hello" 1) ] - location: 20 (remaining gas: 1039988.033 units remaining) [ {} - (Pair "hello" 1) @storage ] + (Pair "hello" 1) ] - location: 22 (remaining gas: 1039988.018 units remaining) [ (Pair {} "hello" 1) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 500)-3-(Pair \"hello\" 3)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 500)-3-(Pair \"hello\" 3)].out" index 79f18b9ba1..9c87b488d0 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 500)-3-(Pair \"hello\" 3)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 500)-3-(Pair \"hello\" 3)].out" @@ -13,34 +13,34 @@ trace [ (Pair 3 "hello" 500) (Pair 3 "hello" 500) ] - location: 10 (remaining gas: 1039988.158 units remaining) - [ (Pair "hello" 500) @storage + [ (Pair "hello" 500) (Pair 3 "hello" 500) ] - location: 11 (remaining gas: 1039988.143 units remaining) [ (Pair 3 "hello" 500) ] - location: 13 (remaining gas: 1039988.133 units remaining) - [ 3 @parameter ] + [ 3 ] - location: 11 (remaining gas: 1039988.103 units remaining) - [ (Pair "hello" 500) @storage - 3 @parameter ] + [ (Pair "hello" 500) + 3 ] - location: 15 (remaining gas: 1039988.093 units remaining) - [ (Pair "hello" 500) @storage - (Pair "hello" 500) @storage - 3 @parameter ] + [ (Pair "hello" 500) + (Pair "hello" 500) + 3 ] - location: 16 (remaining gas: 1039988.083 units remaining) [ 500 - (Pair "hello" 500) @storage - 3 @parameter ] + (Pair "hello" 500) + 3 ] - location: 17 (remaining gas: 1039988.073 units remaining) - [ (Pair "hello" 500) @storage - 3 @parameter ] + [ (Pair "hello" 500) + 3 ] - location: 18 (remaining gas: 1039988.063 units remaining) - [ "hello" @storage.s - 3 @parameter ] + [ "hello" + 3 ] - location: 19 (remaining gas: 1039988.048 units remaining) - [ (Pair "hello" 3) @storage ] + [ (Pair "hello" 3) ] - location: 20 (remaining gas: 1039988.033 units remaining) [ {} - (Pair "hello" 3) @storage ] + (Pair "hello" 3) ] - location: 22 (remaining gas: 1039988.018 units remaining) [ (Pair {} "hello" 3) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 7)-100-(Pair \"hello\" 100)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 7)-100-(Pair \"hello\" 100)].out" index 41b3b1a297..73ffe70d77 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 7)-100-(Pair \"hello\" 100)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 7)-100-(Pair \"hello\" 100)].out" @@ -13,34 +13,34 @@ trace [ (Pair 100 "hello" 7) (Pair 100 "hello" 7) ] - location: 10 (remaining gas: 1039988.158 units remaining) - [ (Pair "hello" 7) @storage + [ (Pair "hello" 7) (Pair 100 "hello" 7) ] - location: 11 (remaining gas: 1039988.143 units remaining) [ (Pair 100 "hello" 7) ] - location: 13 (remaining gas: 1039988.133 units remaining) - [ 100 @parameter ] + [ 100 ] - location: 11 (remaining gas: 1039988.103 units remaining) - [ (Pair "hello" 7) @storage - 100 @parameter ] + [ (Pair "hello" 7) + 100 ] - location: 15 (remaining gas: 1039988.093 units remaining) - [ (Pair "hello" 7) @storage - (Pair "hello" 7) @storage - 100 @parameter ] + [ (Pair "hello" 7) + (Pair "hello" 7) + 100 ] - location: 16 (remaining gas: 1039988.083 units remaining) [ 7 - (Pair "hello" 7) @storage - 100 @parameter ] + (Pair "hello" 7) + 100 ] - location: 17 (remaining gas: 1039988.073 units remaining) - [ (Pair "hello" 7) @storage - 100 @parameter ] + [ (Pair "hello" 7) + 100 ] - location: 18 (remaining gas: 1039988.063 units remaining) - [ "hello" @storage.s - 100 @parameter ] + [ "hello" + 100 ] - location: 19 (remaining gas: 1039988.048 units remaining) - [ (Pair "hello" 100) @storage ] + [ (Pair "hello" 100) ] - location: 20 (remaining gas: 1039988.033 units remaining) [ {} - (Pair "hello" 100) @storage ] + (Pair "hello" 100) ] - location: 22 (remaining gas: 1039988.018 units remaining) [ (Pair {} "hello" 100) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[unpair.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[unpair.tz-Unit-Unit-Unit].out index fe53dfdd86..cb6725b995 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[unpair.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[unpair.tz-Unit-Unit-Unit].out @@ -24,30 +24,30 @@ trace - location: 12 (remaining gas: 1039872.969 units remaining) [ ] - location: 14 (remaining gas: 1039872.959 units remaining) - [ Unit @b ] + [ Unit ] - location: 15 (remaining gas: 1039872.949 units remaining) - [ Unit @a - Unit @b ] + [ Unit + Unit ] - location: 16 (remaining gas: 1039872.934 units remaining) [ (Pair Unit Unit) ] - location: 17 (remaining gas: 1039872.924 units remaining) - [ Unit @c - Unit @d ] + [ Unit + Unit ] - location: 18 (remaining gas: 1039872.859 units remaining) [ ] - location: 20 (remaining gas: 1039872.849 units remaining) - [ Unit @b ] + [ Unit ] - location: 21 (remaining gas: 1039872.839 units remaining) - [ Unit @a - Unit @b ] + [ Unit + Unit ] - location: 22 (remaining gas: 1039872.824 units remaining) [ (Pair Unit Unit) ] - location: 23 (remaining gas: 1039872.814 units remaining) [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 24 (remaining gas: 1039872.804 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 25 (remaining gas: 1039872.739 units remaining) [ (Pair Unit Unit) ] @@ -55,8 +55,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 28 (remaining gas: 1039872.719 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 29 (remaining gas: 1039872.654 units remaining) [ (Pair Unit Unit) ] @@ -64,8 +64,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 32 (remaining gas: 1039872.634 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 33 (remaining gas: 1039872.569 units remaining) [ (Pair Unit Unit) ] @@ -73,8 +73,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 36 (remaining gas: 1039872.549 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 37 (remaining gas: 1039872.484 units remaining) [ (Pair Unit Unit) ] @@ -82,8 +82,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 40 (remaining gas: 1039872.464 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 41 (remaining gas: 1039872.399 units remaining) [ (Pair Unit Unit) ] @@ -91,8 +91,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 44 (remaining gas: 1039872.379 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 45 (remaining gas: 1039872.314 units remaining) [ (Pair Unit Unit) ] @@ -100,8 +100,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 48 (remaining gas: 1039872.294 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 49 (remaining gas: 1039872.229 units remaining) [ (Pair Unit Unit) ] @@ -109,8 +109,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 52 (remaining gas: 1039872.209 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 53 (remaining gas: 1039872.144 units remaining) [ (Pair Unit Unit) ] @@ -118,8 +118,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 56 (remaining gas: 1039872.124 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 57 (remaining gas: 1039872.059 units remaining) [ (Pair Unit Unit) ] @@ -127,8 +127,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 60 (remaining gas: 1039872.039 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 61 (remaining gas: 1039871.974 units remaining) [ (Pair Unit Unit) ] @@ -136,8 +136,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 64 (remaining gas: 1039871.954 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 65 (remaining gas: 1039871.889 units remaining) [ (Pair Unit Unit) ] @@ -145,26 +145,26 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 68 (remaining gas: 1039871.869 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 69 (remaining gas: 1039871.804 units remaining) [ (Pair Unit Unit) ] - location: 71 (remaining gas: 1039871.794 units remaining) [ ] - location: 72 (remaining gas: 1039871.784 units remaining) - [ Unit @d ] + [ Unit ] - location: 73 (remaining gas: 1039871.774 units remaining) - [ Unit @c - Unit @d ] + [ Unit + Unit ] - location: 74 (remaining gas: 1039871.759 units remaining) [ (Pair Unit Unit) ] - location: 75 (remaining gas: 1039871.749 units remaining) [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 76 (remaining gas: 1039871.739 units remaining) - [ Unit @c - Unit @d + [ Unit + Unit (Pair Unit Unit) ] - location: 77 (remaining gas: 1039871.674 units remaining) [ (Pair Unit Unit) ] @@ -172,8 +172,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 80 (remaining gas: 1039871.654 units remaining) - [ Unit @c - Unit @d + [ Unit + Unit (Pair Unit Unit) ] - location: 81 (remaining gas: 1039871.589 units remaining) [ (Pair Unit Unit) ] @@ -181,8 +181,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 84 (remaining gas: 1039871.569 units remaining) - [ Unit @c - Unit @d + [ Unit + Unit (Pair Unit Unit) ] - location: 85 (remaining gas: 1039871.504 units remaining) [ (Pair Unit Unit) ] @@ -190,8 +190,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 88 (remaining gas: 1039871.484 units remaining) - [ Unit @c - Unit @d + [ Unit + Unit (Pair Unit Unit) ] - location: 89 (remaining gas: 1039871.419 units remaining) [ (Pair Unit Unit) ] @@ -199,8 +199,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 92 (remaining gas: 1039871.399 units remaining) - [ Unit @c - Unit @d + [ Unit + Unit (Pair Unit Unit) ] - location: 93 (remaining gas: 1039871.334 units remaining) [ (Pair Unit Unit) ] @@ -208,8 +208,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 96 (remaining gas: 1039871.314 units remaining) - [ Unit @c - Unit @d + [ Unit + Unit (Pair Unit Unit) ] - location: 97 (remaining gas: 1039871.249 units remaining) [ (Pair Unit Unit) ] @@ -217,8 +217,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 100 (remaining gas: 1039871.229 units remaining) - [ Unit @c - Unit @d + [ Unit + Unit (Pair Unit Unit) ] - location: 101 (remaining gas: 1039871.164 units remaining) [ (Pair Unit Unit) ] @@ -226,8 +226,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 104 (remaining gas: 1039871.144 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 105 (remaining gas: 1039871.079 units remaining) [ (Pair Unit Unit) ] @@ -235,8 +235,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 108 (remaining gas: 1039871.059 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 109 (remaining gas: 1039870.994 units remaining) [ (Pair Unit Unit) ] @@ -244,8 +244,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 112 (remaining gas: 1039870.974 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 113 (remaining gas: 1039870.909 units remaining) [ (Pair Unit Unit) ] @@ -253,8 +253,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 116 (remaining gas: 1039870.889 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 117 (remaining gas: 1039870.824 units remaining) [ (Pair Unit Unit) ] @@ -262,8 +262,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 120 (remaining gas: 1039870.804 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 121 (remaining gas: 1039870.739 units remaining) [ (Pair Unit Unit) ] @@ -343,8 +343,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 156 (remaining gas: 1039870.079 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 157 (remaining gas: 1039870.014 units remaining) [ (Pair Unit Unit) ] @@ -352,8 +352,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 160 (remaining gas: 1039869.994 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 161 (remaining gas: 1039869.929 units remaining) [ (Pair Unit Unit) ] @@ -361,8 +361,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 164 (remaining gas: 1039869.909 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 165 (remaining gas: 1039869.844 units remaining) [ (Pair Unit Unit) ] @@ -370,8 +370,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 168 (remaining gas: 1039869.824 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 169 (remaining gas: 1039869.759 units remaining) [ (Pair Unit Unit) ] @@ -379,8 +379,8 @@ trace [ (Pair Unit Unit) (Pair Unit Unit) ] - location: 172 (remaining gas: 1039869.739 units remaining) - [ Unit @a - Unit @b + [ Unit + Unit (Pair Unit Unit) ] - location: 173 (remaining gas: 1039869.674 units remaining) [ (Pair Unit Unit) ] @@ -392,64 +392,64 @@ trace [ Unit Unit ] - location: 178 (remaining gas: 1039869.629 units remaining) - [ (Pair Unit Unit) @p ] + [ (Pair Unit Unit) ] - location: 179 (remaining gas: 1039869.619 units remaining) - [ (Pair Unit Unit) @p - (Pair Unit Unit) @p ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 180 (remaining gas: 1039869.609 units remaining) - [ Unit @p.a - Unit @b - (Pair Unit Unit) @p ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 181 (remaining gas: 1039869.544 units remaining) - [ (Pair Unit Unit) @p ] + [ (Pair Unit Unit) ] - location: 183 (remaining gas: 1039869.534 units remaining) - [ (Pair Unit Unit) @p - (Pair Unit Unit) @p ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 184 (remaining gas: 1039869.524 units remaining) - [ Unit @a - Unit @p.b - (Pair Unit Unit) @p ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 185 (remaining gas: 1039869.459 units remaining) - [ (Pair Unit Unit) @p ] + [ (Pair Unit Unit) ] - location: 187 (remaining gas: 1039869.449 units remaining) - [ (Pair Unit Unit) @p - (Pair Unit Unit) @p ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 188 (remaining gas: 1039869.439 units remaining) - [ Unit @p.a - Unit @p.b - (Pair Unit Unit) @p ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 189 (remaining gas: 1039869.374 units remaining) - [ (Pair Unit Unit) @p ] + [ (Pair Unit Unit) ] - location: 191 (remaining gas: 1039869.364 units remaining) - [ (Pair Unit Unit) @p - (Pair Unit Unit) @p ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 192 (remaining gas: 1039869.354 units remaining) - [ Unit @a - Unit @p.b - (Pair Unit Unit) @p ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 193 (remaining gas: 1039869.289 units remaining) - [ (Pair Unit Unit) @p ] + [ (Pair Unit Unit) ] - location: 195 (remaining gas: 1039869.279 units remaining) - [ (Pair Unit Unit) @p - (Pair Unit Unit) @p ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 196 (remaining gas: 1039869.269 units remaining) - [ Unit @p.a - Unit @b - (Pair Unit Unit) @p ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 197 (remaining gas: 1039869.204 units remaining) - [ (Pair Unit Unit) @p ] + [ (Pair Unit Unit) ] - location: 199 (remaining gas: 1039869.194 units remaining) [ ] - location: 200 (remaining gas: 1039869.184 units remaining) - [ Unit @b ] + [ Unit ] - location: 201 (remaining gas: 1039869.174 units remaining) - [ Unit @a - Unit @b ] + [ Unit + Unit ] - location: 202 (remaining gas: 1039869.159 units remaining) - [ (Pair Unit Unit) @c ] + [ (Pair Unit Unit) ] - location: 203 (remaining gas: 1039869.149 units remaining) - [ Unit @b - Unit @a ] + [ Unit + Unit ] - location: 204 (remaining gas: 1039869.084 units remaining) [ ] - location: 206 (remaining gas: 1039869.074 units remaining) diff --git a/tests_python/tests_alpha/test_contract.py b/tests_python/tests_alpha/test_contract.py index 06c0e745c4..61dd7a4b9c 100644 --- a/tests_python/tests_alpha/test_contract.py +++ b/tests_python/tests_alpha/test_contract.py @@ -557,11 +557,6 @@ def test_deprecated_typecheck_in_legacy(self, client, contract): ), # error message for attempting to push a value of type never ("never_literal.tz", r'type never has no inhabitant.'), - # field annotation mismatch with UNPAIR - ( - "unpair_field_annotation_mismatch.tz", - r'The field access annotation does not match', - ), # COMB, UNCOMB, and DUP cannot take 0 as argument ("comb0.tz", r"PAIR expects an argument of at least 2"), ("comb1.tz", r"PAIR expects an argument of at least 2"), From 455879e3a1c1606db5f6748faa16b2b1327af98b Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Fri, 7 Jan 2022 11:46:28 +0100 Subject: [PATCH 0027/1220] Proto/Michelson: simplify execution_trace --- src/proto_alpha/lib_client/michelson_v1_printer.ml | 9 ++------- src/proto_alpha/lib_client/michelson_v1_printer.mli | 4 +--- src/proto_alpha/lib_plugin/plugin.ml | 13 +++++++++---- src/proto_alpha/lib_protocol/script_interpreter.ml | 7 ++++++- src/proto_alpha/lib_protocol/script_typed_ir.ml | 3 +-- src/proto_alpha/lib_protocol/script_typed_ir.mli | 3 +-- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/proto_alpha/lib_client/michelson_v1_printer.ml b/src/proto_alpha/lib_client/michelson_v1_printer.ml index e6ade80dd0..0e53de294b 100644 --- a/src/proto_alpha/lib_client/michelson_v1_printer.ml +++ b/src/proto_alpha/lib_client/michelson_v1_printer.ml @@ -61,13 +61,8 @@ let print_execution_trace ppf trace = loc Gas.pp gas - (Format.pp_print_list (fun ppf (e, annot) -> - Format.fprintf - ppf - "@[%a \t%s@]" - print_expr - e - (match annot with None -> "" | Some a -> a))) + (Format.pp_print_list (fun ppf e -> + Format.fprintf ppf "@[%a@]" print_expr e)) stack) ppf trace diff --git a/src/proto_alpha/lib_client/michelson_v1_printer.mli b/src/proto_alpha/lib_client/michelson_v1_printer.mli index 07cb29ae85..8b7ec8dfaa 100644 --- a/src/proto_alpha/lib_client/michelson_v1_printer.mli +++ b/src/proto_alpha/lib_client/michelson_v1_printer.mli @@ -32,9 +32,7 @@ val print_expr : Format.formatter -> Script_repr.expr -> unit val print_expr_unwrapped : Format.formatter -> Script_repr.expr -> unit val print_execution_trace : - Format.formatter -> - (Script.location * Gas.t * (Script.expr * string option) list) list -> - unit + Format.formatter -> (Script.location * Gas.t * Script.expr list) list -> unit val print_big_map_diff : Format.formatter -> Lazy_storage.diffs -> unit diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 55940be708..47f36c3446 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -1245,6 +1245,7 @@ module RPC = struct let trace_code_input_encoding = run_code_input_encoding let trace_encoding = + (* TODO: should this encoding be updated? *) def "scripted.trace" @@ list @@ obj3 (req "location" Script.location_encoding) @@ -1252,7 +1253,12 @@ module RPC = struct (req "stack" (list - (obj2 (req "item" Script.expr_encoding) (opt "annot" string)))) + (conv + (fun e -> (e, None)) + (fun (e, _annot) -> e) + (obj2 + (req "item" Script.expr_encoding) + (opt "annot" string))))) let trace_code_output_encoding = conv @@ -1482,7 +1488,7 @@ module RPC = struct let rec unparse_stack : type a s. (a, s) Script_typed_ir.stack_ty * (a * s) -> - (Script.expr * string option) list tzresult Lwt.t = function + Script.expr list tzresult Lwt.t = function | (Bot_t, (EmptyCell, EmptyCell)) -> return_nil | (Item_t (ty, rest_ty), (v, rest)) -> Script_ir_translator.unparse_data @@ -1492,9 +1498,8 @@ module RPC = struct v >>=? fun (data, _ctxt) -> unparse_stack (rest_ty, rest) >|=? fun rest -> - let annot = None in let data = Micheline.strip_locations data in - (data, annot) :: rest + data :: rest in unparse_stack (stack_ty, stack) diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index dd156b88f5..d2cc95e3d7 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -119,13 +119,18 @@ type error += Michelson_too_many_recursive_calls let () = let open Data_encoding in let trace_encoding = + (* TODO: should this encoding be updated? *) list @@ obj3 (req "location" Script.location_encoding) (req "gas" Gas.encoding) (req "stack" - (list (obj2 (req "item" Script.expr_encoding) (opt "annot" string)))) + (list + (conv + (fun e -> (e, None)) + (fun (e, _annot) -> e) + (obj2 (req "item" Script.expr_encoding) (opt "annot" string))))) in (* Reject *) register_error_kind diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index debf686128..1b795de98d 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -1111,8 +1111,7 @@ and ('a, 's, 'b, 'f, 'c, 'u) logging_function = 'c * 'u -> unit -and execution_trace = - (Script.location * Gas.t * (Script.expr * string option) list) list +and execution_trace = (Script.location * Gas.t * Script.expr list) list and logger = { log_interp : 'a 's 'b 'f 'c 'u. ('a, 's, 'b, 'f, 'c, 'u) logging_function; diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 1a29beb605..7c586021b6 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -1207,8 +1207,7 @@ and ('a, 's, 'b, 'f, 'c, 'u) logging_function = 'c * 'u -> unit -and execution_trace = - (Script.location * Gas.t * (Script.expr * string option) list) list +and execution_trace = (Script.location * Gas.t * Script.expr list) list and logger = { log_interp : 'a 's 'b 'f 'c 'u. ('a, 's, 'b, 'f, 'c, 'u) logging_function; From 4521e1d907d2f9c6912e96ac3a4c054fa52bd9ed Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Fri, 7 Jan 2022 11:49:33 +0100 Subject: [PATCH 0028/1220] Proto/Michelson: rename parse_var_annot into check_var_annot --- .../lib_protocol/script_ir_annot.ml | 2 +- .../lib_protocol/script_ir_annot.mli | 4 +- .../lib_protocol/script_ir_translator.ml | 252 +++++++++--------- 3 files changed, 129 insertions(+), 129 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 85c27c1178..6cdc6892d0 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -313,7 +313,7 @@ let check_correct_field : (Inconsistent_field_annotations ("%" ^ (s1 :> string), "%" ^ (s2 :> string))) -let parse_var_annot : Script.location -> string list -> unit tzresult = +let check_var_annot : Script.location -> string list -> unit tzresult = fun loc annot -> parse_annots loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 18dc22605c..dcc133449a 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -131,8 +131,8 @@ val check_correct_field : (** Instruction annotations parsing *) -(** Parse a variable annotation. *) -val parse_var_annot : Script.location -> string list -> unit tzresult +(** Check a variable annotation. *) +val check_var_annot : Script.location -> string list -> unit tzresult val is_allowed_char : char -> bool diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index ad3e74e7c3..090abeebcc 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3040,7 +3040,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : However, DROP is equivalent to DROP 1 so hinting at an arity of 1 makes sense. *) fail (Invalid_arity (loc, I_DROP, 1, List.length l)) | (Prim (loc, I_DUP, [], annot), Item_t (v, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> record_trace_eval (fun () -> let t = serialize_ty_for_error v in @@ -3050,7 +3050,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let dup = {apply = (fun kinfo k -> IDup (kinfo, k))} in typed ctxt loc dup (Item_t (v, Item_t (v, rest))) | (Prim (loc, I_DUP, [n], v_annot), stack_ty) -> - parse_var_annot loc v_annot >>?= fun () -> + check_var_annot loc v_annot >>?= fun () -> let rec make_proof_argument : type a s. int -> (a, s) stack_ty -> (a * s) dup_n_proof_argument tzresult = @@ -3143,7 +3143,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack_ty = Item_t (w, Item_t (v, rest)) in typed ctxt loc swap stack_ty | (Prim (loc, I_PUSH, [t; d], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> parse_packable_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy t >>?= fun (Ex_ty t, ctxt) -> parse_data @@ -3244,7 +3244,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let cons_pair = {apply = (fun kinfo k -> ICons_pair (kinfo, k))} in typed ctxt loc cons_pair stack_ty | (Prim (loc, I_PAIR, [n], annot), stack_ty) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let rec make_proof_argument : type a s. int -> (a, s) stack_ty -> (a * s) comb_proof_argument tzresult = @@ -3298,7 +3298,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let uncomb = {apply = (fun kinfo k -> IUncomb (kinfo, n, witness, k))} in typed ctxt loc uncomb after_ty | (Prim (loc, I_GET, [n], annot), Item_t (comb_ty, rest_ty)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let rec make_proof_argument : type b. int -> b ty -> b comb_get_proof_argument tzresult = fun n ty -> @@ -3327,7 +3327,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc comb_get after_stack_ty | ( Prim (loc, I_UPDATE, [n], annot), Item_t (value_ty, Item_t (comb_ty, rest_ty)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let rec make_proof_argument : type value before. int -> @@ -3448,7 +3448,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_CONS, [], annot), Item_t (tv, Item_t (List_t (t, ty_name), rest)) ) -> check_item_ty ctxt tv t loc I_CONS 1 2 >>?= fun (Eq, t, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let cons_list = {apply = (fun kinfo k -> ICons_list (kinfo, k))} in (typed ctxt loc cons_list (Item_t (List_t (t, ty_name), rest)) : ((a, s) judgement * context) tzresult Lwt.t) @@ -3617,12 +3617,12 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (v, Item_t (Bool_t _, Item_t (Set_t (elt, tname), rest))) ) -> check_item_ty ctxt (ty_of_comparable_ty elt) v loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISet_update (kinfo, k))} in (typed ctxt loc instr (Item_t (Set_t (elt, tname), rest)) : ((a, s) judgement * context) tzresult Lwt.t) | (Prim (loc, I_SIZE, [], annot), Item_t (Set_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISet_size (kinfo, k))} in typed ctxt loc instr (Item_t (nat_t ~annot:None, rest)) (* maps *) @@ -3729,7 +3729,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_MEM 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_mem (kinfo, k))} in (typed ctxt loc instr (Item_t (bool_t ~annot:None, rest)) : ((a, s) judgement * context) tzresult Lwt.t) @@ -3737,7 +3737,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (vk, Item_t (Map_t (ck, elt, _), rest)) ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_get (kinfo, k))} in option_t loc elt ~annot:None >>?= fun ty : ((a, s) judgement * context) tzresult Lwt.t -> @@ -3749,7 +3749,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_update (kinfo, k))} in (typed ctxt loc instr (Item_t (Map_t (ck, v, map_name), rest)) : ((a, s) judgement * context) tzresult Lwt.t) @@ -3761,14 +3761,14 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET_AND_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_GET_AND_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_get_and_update (kinfo, k))} in let stack = Item_t (Option_t (vv, vname), Item_t (Map_t (ck, v, map_name), rest)) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | (Prim (loc, I_SIZE, [], annot), Item_t (Map_t (_, _, _), rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMap_size (kinfo, k))} in typed ctxt loc instr (Item_t (nat_t ~annot:None, rest)) (* big_map *) @@ -3788,7 +3788,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (set_key, Item_t (Big_map_t (map_key, _, _), rest)) ) -> let k = ty_of_comparable_ty map_key in check_item_ty ctxt set_key k loc I_MEM 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_mem (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) @@ -3796,7 +3796,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (vk, Item_t (Big_map_t (ck, elt, _), rest)) ) -> let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_get (kinfo, k))} in option_t loc elt ~annot:None >>?= fun ty -> let stack = Item_t (ty, rest) in @@ -3811,7 +3811,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : check_item_ty ctxt set_key k loc I_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt set_value map_value loc I_UPDATE 2 3 >>?= fun (Eq, map_value, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_update (kinfo, k))} in let stack = Item_t (Big_map_t (map_key, map_value, map_name), rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) @@ -3824,7 +3824,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_item_ty ctxt vk k loc I_GET_AND_UPDATE 1 3 >>?= fun (Eq, _, ctxt) -> check_item_ty ctxt vv v loc I_GET_AND_UPDATE 2 3 >>?= fun (Eq, v, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBig_map_get_and_update (kinfo, k))} in @@ -3835,7 +3835,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* Sapling *) | (Prim (loc, I_SAPLING_EMPTY_STATE, [memo_size], annot), rest) -> parse_memo_size memo_size >>?= fun memo_size -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISapling_empty_state (kinfo, memo_size, k))} in @@ -3959,7 +3959,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_LOOP_LEFT, [body], annot), (Item_t (Union_t ((tl, _l_field), (tr, _), _), rest) as stack) ) -> ( check_kind [Seq_kind] body >>?= fun () -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> non_terminal_recursion ?type_logger tc_context @@ -4013,7 +4013,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy ret >>?= fun (Ex_ty ret, ctxt) -> check_kind [Seq_kind] code >>?= fun () -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> parse_returning (Tc_context.add_lambda tc_context) ?type_logger @@ -4031,7 +4031,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_EXEC, [], annot), Item_t (arg, Item_t (Lambda_t (param, ret, _), rest)) ) -> check_item_ty ctxt arg param loc I_EXEC 1 2 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IExec (kinfo, k))} in let stack = Item_t (ret, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) @@ -4048,7 +4048,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : check_packable ~legacy:false loc capture_ty >>?= fun () -> check_item_ty ctxt capture capture_ty loc I_APPLY 1 2 >>?= fun (Eq, capture_ty, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IApply (kinfo, capture_ty, k))} in lambda_t loc arg_ty ret ~annot:lam_annot (* This cannot fail because the type [lambda 'arg 'ret] is always smaller than @@ -4146,21 +4146,21 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* timestamp operations *) | ( Prim (loc, I_ADD, [], annot), Item_t (Timestamp_t tname, Item_t (Int_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAdd_timestamp_to_seconds (kinfo, k))} in typed ctxt loc instr (Item_t (Timestamp_t tname, rest)) | ( Prim (loc, I_ADD, [], annot), Item_t (Int_t _, Item_t (Timestamp_t tname, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAdd_seconds_to_timestamp (kinfo, k))} in typed ctxt loc instr (Item_t (Timestamp_t tname, rest)) | ( Prim (loc, I_SUB, [], annot), Item_t (Timestamp_t tname, Item_t (Int_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISub_timestamp_seconds (kinfo, k))} in @@ -4170,7 +4170,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t ( Timestamp_t {annot = tn1; size = _}, Item_t (Timestamp_t {annot = tn2; size = _}, rest) ) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_annot ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IDiff_timestamps (kinfo, k))} in @@ -4179,31 +4179,31 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* string operations *) | ( Prim (loc, I_CONCAT, [], annot), Item_t (String_t tn1, Item_t (String_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IConcat_string_pair (kinfo, k))} in typed ctxt loc instr (Item_t (String_t tname, rest)) | (Prim (loc, I_CONCAT, [], annot), Item_t (List_t (String_t tname, _), rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IConcat_string (kinfo, k))} in typed ctxt loc instr (Item_t (String_t tname, rest)) | ( Prim (loc, I_SLICE, [], annot), Item_t (Nat_t _, Item_t (Nat_t _, Item_t (String_t tname, rest))) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISlice_string (kinfo, k))} in let stack = Item_t (option_string'_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_SIZE, [], annot), Item_t (String_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IString_size (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack (* bytes operations *) | ( Prim (loc, I_CONCAT, [], annot), Item_t (Bytes_t tn1, Item_t (Bytes_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IConcat_bytes_pair (kinfo, k))} in @@ -4211,25 +4211,25 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_CONCAT, [], annot), Item_t (List_t (Bytes_t tname, _), rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IConcat_bytes (kinfo, k))} in let stack = Item_t (Bytes_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_SLICE, [], annot), Item_t (Nat_t _, Item_t (Nat_t _, Item_t (Bytes_t tname, rest))) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISlice_bytes (kinfo, k))} in let stack = Item_t (option_bytes'_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_SIZE, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBytes_size (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack (* currency operations *) | ( Prim (loc, I_ADD, [], annot), Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_tez (kinfo, k))} in @@ -4238,7 +4238,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_SUB, [], annot), Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> if legacy then - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_tez_legacy (kinfo, k))} in @@ -4247,7 +4247,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : else fail (Deprecated_instruction I_SUB) | ( Prim (loc, I_SUB_MUTEZ, [], annot), Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_tez (kinfo, k))} in @@ -4256,21 +4256,21 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_MUL, [], annot), Item_t (Mutez_t tname, Item_t (Nat_t _, rest)) ) -> (* no type name check *) - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_teznat (kinfo, k))} in let stack = Item_t (Mutez_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Nat_t _, Item_t (Mutez_t tname, rest)) ) -> (* no type name check *) - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_nattez (kinfo, k))} in let stack = Item_t (Mutez_t tname, rest) in typed ctxt loc instr stack (* boolean operations *) | (Prim (loc, I_OR, [], annot), Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IOr (kinfo, k))} in @@ -4278,7 +4278,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_AND, [], annot), Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAnd (kinfo, k))} in @@ -4286,46 +4286,46 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_XOR, [], annot), Item_t (Bool_t tn1, Item_t (Bool_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IXor (kinfo, k))} in let stack = Item_t (Bool_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NOT, [], annot), Item_t (Bool_t tname, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INot (kinfo, k))} in let stack = Item_t (Bool_t tname, rest) in typed ctxt loc instr stack (* integer operations *) | (Prim (loc, I_ABS, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAbs_int (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_ISNAT, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IIs_nat (kinfo, k))} in let stack = Item_t (option_nat_t, rest) in typed ctxt loc instr stack | (Prim (loc, I_INT, [], annot), Item_t (Nat_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IInt_nat (kinfo, k))} in let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Int_t tname, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Nat_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg (kinfo, k))} in let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_ADD, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in @@ -4333,19 +4333,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_ADD, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_ADD, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAdd_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_ADD, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_nat (kinfo, k))} in @@ -4353,7 +4353,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_SUB, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in @@ -4361,19 +4361,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_SUB, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_SUB, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_SUB, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun _tname -> let instr = {apply = (fun kinfo k -> ISub_int (kinfo, k))} in @@ -4381,7 +4381,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_MUL, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IMul_int (kinfo, k))} in @@ -4389,19 +4389,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_MUL, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_MUL, [], annot), Item_t (Nat_t _, Item_t (Int_t tname, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_nat (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_MUL, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IMul_nat (kinfo, k))} in @@ -4409,13 +4409,13 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_EDIV, [], annot), Item_t (Mutez_t tname, Item_t (Nat_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IEdiv_teznat (kinfo, k))} in let stack = Item_t (option_pair_mutez'_mutez'_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_EDIV, [], annot), Item_t (Mutez_t tn1, Item_t (Mutez_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_tez (kinfo, k))} in @@ -4423,7 +4423,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_EDIV, [], annot), Item_t (Int_t tn1, Item_t (Int_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_int (kinfo, k))} in @@ -4431,19 +4431,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_EDIV, [], annot), Item_t (Int_t tname, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IEdiv_int (kinfo, k))} in let stack = Item_t (option_pair_int'_nat_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_EDIV, [], annot), Item_t (Nat_t tname, Item_t (Int_t _, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IEdiv_nat (kinfo, k))} in let stack = Item_t (option_pair_int_nat'_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_EDIV, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IEdiv_nat (kinfo, k))} in @@ -4451,7 +4451,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_LSL, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ILsl_nat (kinfo, k))} in @@ -4459,7 +4459,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_LSR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> ILsr_nat (kinfo, k))} in @@ -4467,7 +4467,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_OR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IOr_nat (kinfo, k))} in @@ -4475,7 +4475,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_AND, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAnd_nat (kinfo, k))} in @@ -4483,31 +4483,31 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | (Prim (loc, I_AND, [], annot), Item_t (Int_t _, Item_t (Nat_t tname, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAnd_int_nat (kinfo, k))} in let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_XOR, [], annot), Item_t (Nat_t tn1, Item_t (Nat_t tn2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IXor_nat (kinfo, k))} in let stack = Item_t (Nat_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NOT, [], annot), Item_t (Int_t tname, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INot_int (kinfo, k))} in let stack = Item_t (Int_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NOT, [], annot), Item_t (Nat_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INot_int (kinfo, k))} in let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack (* comparison *) | (Prim (loc, I_COMPARE, [], annot), Item_t (t1, Item_t (t2, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> check_item_ty ctxt t1 t2 loc I_COMPARE 1 2 >>?= fun (Eq, t, ctxt) -> comparable_ty_of_ty ctxt loc t >>?= fun (key, ctxt) -> let instr = {apply = (fun kinfo k -> ICompare (kinfo, key, k))} in @@ -4515,38 +4515,38 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) (* comparators *) | (Prim (loc, I_EQ, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IEq (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEQ, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeq (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_LT, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ILt (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_GT, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IGt (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_LE, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ILe (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_GE, [], annot), Item_t (Int_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IGe (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack (* annotations *) | (Prim (loc, I_CAST, [cast_t], annot), Item_t (t, stack)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> parse_any_ty ctxt ~stack_depth:(stack_depth + 1) ~legacy cast_t >>?= fun (Ex_ty cast_t, ctxt) -> ty_eq ~legacy ctxt loc cast_t t >>?= fun (Eq, ctxt) -> @@ -4554,7 +4554,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack = Item_t (cast_t, stack) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | (Prim (loc, I_RENAME, [], annot), Item_t (t, stack)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> (* can erase annot *) let instr = {apply = (fun _ k -> k)} in let stack = Item_t (t, stack) in @@ -4566,7 +4566,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* allow to pack contracts for hash/signature checks *) loc t >>?= fun () -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IPack (kinfo, t, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack @@ -4580,7 +4580,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack (* protocol *) | (Prim (loc, I_ADDRESS, [], annot), Item_t (Contract_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAddress (kinfo, k))} in let stack = Item_t (address_t ~annot:None, rest) in typed ctxt loc instr stack @@ -4604,7 +4604,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : parse_view_output_ty ctxt ~stack_depth:0 ~legacy output_ty >>?= fun (Ex_ty output_ty, ctxt) -> option_t output_ty_loc output_ty ~annot:None >>?= fun res_ty -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = { apply = @@ -4618,21 +4618,21 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (p, Item_t (Mutez_t _, Item_t (Contract_t (cp, _), rest))) ) -> Tc_context.check_not_in_view loc ~legacy tc_context prim >>?= fun () -> check_item_ty ctxt p cp loc prim 1 4 >>?= fun (Eq, _, ctxt) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ITransfer_tokens (kinfo, k))} in let stack = Item_t (operation_t ~annot:None, rest) in (typed ctxt loc instr stack : ((a, s) judgement * context) tzresult Lwt.t) | ( Prim (loc, (I_SET_DELEGATE as prim), [], annot), Item_t (Option_t (Key_hash_t _, _), rest) ) -> Tc_context.check_not_in_view loc ~legacy tc_context prim >>?= fun () -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISet_delegate (kinfo, k))} in let stack = Item_t (operation_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (_, I_CREATE_ACCOUNT, _, _), _) -> fail (Deprecated_instruction I_CREATE_ACCOUNT) | (Prim (loc, I_IMPLICIT_ACCOUNT, [], annot), Item_t (Key_hash_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IImplicit_account (kinfo, k))} in let stack = Item_t (contract_unit_t, rest) in typed ctxt loc instr stack @@ -4722,49 +4722,49 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : in typed ctxt loc instr stack | (Prim (loc, I_NOW, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INow (kinfo, k))} in let stack = Item_t (timestamp_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_AMOUNT, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IAmount (kinfo, k))} in let stack = Item_t (mutez_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_CHAIN_ID, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IChainId (kinfo, k))} in let stack = Item_t (chain_id_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_BALANCE, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBalance (kinfo, k))} in let stack = Item_t (mutez_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_LEVEL, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ILevel (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_VOTING_POWER, [], annot), Item_t (Key_hash_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IVoting_power (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_TOTAL_VOTING_POWER, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ITotal_voting_power (kinfo, k))} in let stack = Item_t (nat_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (_, I_STEPS_TO_QUOTA, _, _), _) -> fail (Deprecated_instruction I_STEPS_TO_QUOTA) | (Prim (loc, I_SOURCE, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISource (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack | (Prim (loc, I_SENDER, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISender (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack @@ -4804,50 +4804,50 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let stack = Item_t (res_ty, stack) in typed_no_lwt ctxt loc instr stack ) | (Prim (loc, I_SELF_ADDRESS, [], annot), stack) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISelf_address (kinfo, k))} in let stack = Item_t (address_t ~annot:None, stack) in typed ctxt loc instr stack (* cryptography *) | (Prim (loc, I_HASH_KEY, [], annot), Item_t (Key_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IHash_key (kinfo, k))} in let stack = Item_t (key_hash_t ~annot:None, rest) in typed ctxt loc instr stack | ( Prim (loc, I_CHECK_SIGNATURE, [], annot), Item_t (Key_t _, Item_t (Signature_t _, Item_t (Bytes_t _, rest))) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ICheck_signature (kinfo, k))} in let stack = Item_t (bool_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_BLAKE2B, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IBlake2b (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_SHA256, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISha256 (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_SHA512, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISha512 (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_KECCAK, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IKeccak (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_SHA3, [], annot), Item_t (Bytes_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> ISha3 (kinfo, k))} in let stack = Item_t (bytes_t ~annot:None, rest) in typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), Item_t (Bls12_381_g1_t tn1, Item_t (Bls12_381_g1_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_g1 (kinfo, k))} in @@ -4855,7 +4855,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), Item_t (Bls12_381_g2_t tn1, Item_t (Bls12_381_g2_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_g2 (kinfo, k))} in @@ -4863,7 +4863,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_ADD, [], annot), Item_t (Bls12_381_fr_t tn1, Item_t (Bls12_381_fr_t tn2, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> merge_type_metadata ~legacy ~error_details:Informative tn1 tn2 >>?= fun tname -> let instr = {apply = (fun kinfo k -> IAdd_bls12_381_fr (kinfo, k))} in @@ -4871,63 +4871,63 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_g1_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_g1 (kinfo, k))} in let stack = Item_t (Bls12_381_g1_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_g2_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_g2 (kinfo, k))} in let stack = Item_t (Bls12_381_g2_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_fr_t tname, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr (kinfo, k))} in let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Nat_t {annot = tname; _}, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr_z (kinfo, k))} in let stack = Item_t (bls12_381_fr_t ~annot:tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Int_t {annot = tname; _}, Item_t (Bls12_381_fr_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_fr_z (kinfo, k))} in let stack = Item_t (bls12_381_fr_t ~annot:tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_fr_t tname, Item_t (Int_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_z_fr (kinfo, k))} in let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | ( Prim (loc, I_MUL, [], annot), Item_t (Bls12_381_fr_t tname, Item_t (Nat_t _, rest)) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IMul_bls12_381_z_fr (kinfo, k))} in let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_INT, [], annot), Item_t (Bls12_381_fr_t _, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IInt_bls12_381_fr (kinfo, k))} in let stack = Item_t (int_t ~annot:None, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_g1_t tname, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_g1 (kinfo, k))} in let stack = Item_t (Bls12_381_g1_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_g2_t tname, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_g2 (kinfo, k))} in let stack = Item_t (Bls12_381_g2_t tname, rest) in typed ctxt loc instr stack | (Prim (loc, I_NEG, [], annot), Item_t (Bls12_381_fr_t tname, rest)) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> INeg_bls12_381_fr (kinfo, k))} in let stack = Item_t (Bls12_381_fr_t tname, rest) in typed ctxt loc instr stack @@ -4936,7 +4936,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ( List_t (Pair_t ((Bls12_381_g1_t _, _, _), (Bls12_381_g2_t _, _, _), _), _), rest ) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let instr = {apply = (fun kinfo k -> IPairing_check_bls12_381 (kinfo, k))} in @@ -4944,7 +4944,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack (* Tickets *) | (Prim (loc, I_TICKET, [], annot), Item_t (t, Item_t (Nat_t _, rest))) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> comparable_ty_of_ty ctxt loc t >>?= fun (ty, ctxt) -> ticket_t loc ty ~annot:None >>?= fun res_ty -> let instr = {apply = (fun kinfo k -> ITicket (kinfo, k))} in @@ -4952,7 +4952,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_READ_TICKET, [], annot), (Item_t (Ticket_t (t, _), _) as full_stack) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let () = check_dupable_comparable_ty t in opened_ticket_type loc t >>?= fun opened_ticket_ty -> let result = ty_of_comparable_ty opened_ticket_ty in @@ -4964,7 +4964,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ( (Ticket_t (t, _) as ticket_t), Item_t (Pair_t ((Nat_t _, fa_a, a_a), (Nat_t _, fa_b, a_b), _), rest) ) ) -> - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> let () = check_dupable_comparable_ty t in pair_t loc (ticket_t, fa_a, a_a) (ticket_t, fa_b, a_b) ~annot:None >>?= fun pair_tickets_ty -> @@ -4976,7 +4976,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t ( Pair_t (((Ticket_t _ as ty_a), _, _), ((Ticket_t _ as ty_b), _, _), _), rest ) ) -> ( - parse_var_annot loc annot >>?= fun () -> + check_var_annot loc annot >>?= fun () -> Gas_monad.run ctxt @@ merge_types ~legacy ~error_details:Informative loc ty_a ty_b >>?= fun (eq_ty, ctxt) -> From 89d945ba59562b4c0173bf4126a8b5df61a304e8 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Fri, 7 Jan 2022 11:50:09 +0100 Subject: [PATCH 0029/1220] Proto/Michelson: rename parse_two_var_annot into check_two_var_annot --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 2 +- src/proto_alpha/lib_protocol/script_ir_annot.mli | 2 +- src/proto_alpha/lib_protocol/script_ir_translator.ml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 6cdc6892d0..bd7801125e 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -338,7 +338,7 @@ let parse_constr_annot : ignore_special f1 >>? fun f1 -> ignore_special f2 >|? fun f2 -> (t, f1, f2) -let parse_two_var_annot : Script.location -> string list -> unit tzresult = +let check_two_var_annot : Script.location -> string list -> unit tzresult = fun loc annot -> parse_annots loc annot >>? classify_annot loc >>? fun (vars, types, fields) -> error_unexpected_annot loc types >>? fun () -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index dcc133449a..b606426da0 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -141,7 +141,7 @@ val parse_constr_annot : string list -> (type_annot option * field_annot option * field_annot option) tzresult -val parse_two_var_annot : Script.location -> string list -> unit tzresult +val check_two_var_annot : Script.location -> string list -> unit tzresult val parse_destr_annot : Script.location -> string list -> field_annot option tzresult diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 090abeebcc..655d8db2d9 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -4641,7 +4641,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (Option_t (Key_hash_t _, _), Item_t (Mutez_t _, Item_t (ginit, rest))) ) -> Tc_context.check_not_in_view ~legacy loc tc_context prim >>?= fun () -> - parse_two_var_annot loc annot >>?= fun () -> + check_two_var_annot loc annot >>?= fun () -> let canonical_code = Micheline.strip_locations code in parse_toplevel ctxt ~legacy canonical_code >>?= fun ({arg_type; storage_type; code_field; views; root_name}, ctxt) -> From be0cccb528b2e1ceea0ba9abde21595f64e89295 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Fri, 7 Jan 2022 13:46:06 +0100 Subject: [PATCH 0030/1220] Tests/Python: regenerate regtest outputs A previous commit removed a tab in the format of stack types --- ...(Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" | 30 +- ...(Some 5) { Elt \"hello\" 4.0427752f13.out" | 30 +- ...(Some 5) { Elt \"hello\" 4.0793dc66d5.out" | 30 +- ...None { Elt \"1\" 1 ; .df114499b8.out" | 30 +- ...None { Elt \"1\" 1 ; .f9bea98de9.out" | 30 +- ...None { Elt \"hello\" 4 })-.1db12cd837.out" | 30 +- ...None {})-\"hello\"-(Pair N.6fc7d0acf2.out" | 30 +- ..." \"one\" ; Elt \"2\" \"tw.524c5459f8.out" | 42 +- ...ello\" \"hi\" } None)-\"\".33eba403e7.out" | 42 +- ...hello\" \"hi\" } None)-\"h.a5cd1005c9.out" | 42 +- ...one\" ; Elt \"2\" \"two\" .6f3d35b151.out" | 30 +- ...one\" ; Elt \"2\" \"two\" .76aeaa0706.out" | 48 +- ...one\" ; Elt \"2\" \"two\" .7e7197f248.out" | 48 +- ...one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" | 48 +- ...one\" ; Elt \"2\" \"two\" .b688cc94a7.out" | 48 +- ...one\" ; Elt \"2\" \"two\" .c68db221ed.out" | 48 +- ...TestContractOpcodes::test_balance[0.5].out | 10 +- ...s.TestContractOpcodes::test_balance[0].out | 10 +- ...estContractOpcodes::test_balance[1000].out | 10 +- ...s.TestContractOpcodes::test_balance[1].out | 10 +- ...stContractOpcodes::test_balance[1e-06].out | 10 +- ...s.TestContractOpcodes::test_balance[5].out | 10 +- ...Opcodes::test_balance[8000000000000.0].out | 10 +- ... \"two\" }) )-(Right (Righ.7492e8cdea.out" | 98 +- ... \"two\" }))-(Left Unit)-(.21b30dd90f.out" | 36 +- ... \"two\" }))-(Right (Left .2873ef610c.out" | 30 +- ... \"two\" }))-(Right (Left .8a6f480005.out" | 30 +- ... \"two\" }))-(Right (Right.d336ca1903.out" | 88 +- ...Pair \"foo\" \"bar\" } { P.7f2ee47600.out" | 162 +- ...tContractOpcodes::test_check_signature.out | 158 +- ...tract_input_output[abs.tz-Unit-0-Unit].out | 28 +- ....tz-Unit-12039123919239192312931-Unit].out | 28 +- ...act_input_output[abs.tz-Unit-948-Unit].out | 28 +- ...ct_input_output[add.tz-Unit-Unit-Unit].out | 266 +- ...r 0x00 0x00-(Some 0x0000000.3c2de60480.out | 18 +- ...r 0x01 0x00-(Some 0x0100000.12b2c1172b.out | 18 +- ...r 0x010000 0x00-(Some 0x010.0e44fc6f40.out | 18 +- ...r 0x010000 0x010000-(Some 0.7e0ed229a3.out | 18 +- ...air -100 100)-(Some \"1970.7c1b1e4e5b.out" | 30 +- ...air 0 \"1970-01-01T00:00:0.528ed42c01.out" | 30 +- ...air 100 100)-(Some \"1970-.6566111ad2.out" | 30 +- ...air \"1970-01-01T00:00:00Z.72c424f3da.out" | 30 +- ...air 100 -100)-(Some \"1970.7c4b12e9aa.out" | 30 +- ...air 100 100)-(Some \"1970-.af32743640.out" | 30 +- ...dhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" | 14 +- ...-None-(Pair False False)-(Some False)].out | 24 +- ...z-None-(Pair False True)-(Some False)].out | 24 +- ...z-None-(Pair True False)-(Some False)].out | 24 +- ....tz-None-(Pair True True)-(Some True)].out | 24 +- ...t_output[and_binary.tz-Unit-Unit-Unit].out | 74 +- ...l_1.tz-False-(Pair False False)-False].out | 16 +- ...al_1.tz-False-(Pair False True)-False].out | 16 +- ...al_1.tz-False-(Pair True False)-False].out | 16 +- ...ical_1.tz-False-(Pair True True)-True].out | 16 +- ...put[balance.tz-111-Unit-4000000000000].out | 10 +- ...lt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out | 40 +- ...lt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out | 40 +- ...lt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out | 40 +- ...lt 1 0 } None)-1-(Pair 4 (S.73700321f8.out | 40 +- ...lt 1 4 ; Elt 2 11 } None)-1.1182eca937.out | 40 +- ...lt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out | 40 +- ...lt 1 4 ; Elt 2 11 } None)-2.1eead33885.out | 40 +- ...lt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out | 40 +- ...lt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out | 40 +- ...lt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out | 40 +- ...air {} None)-1-(Pair 4 (Some False))0].out | 40 +- ...air {} None)-1-(Pair 4 (Some False))1].out | 40 +- ... \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" | 40 +- ... \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" | 40 +- ... \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" | 40 +- ... \"foo\" 0 } None)-\"foo\".968709d39d.out" | 40 +- ... \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" | 40 +- ... None)-\"bar\"-(Pair 4 (Some False))].out" | 40 +- ...padded.tz-None-Unit-(Some 0.9b6e8bcbd3.out | 12 +- ...e-Unit-(Some 0x100000000000.d1219ca789.out | 12 +- ...utput[bls12_381_fr_to_int.tz-0-0x00-0].out | 12 +- ...utput[bls12_381_fr_to_int.tz-0-0x01-1].out | 12 +- ...8db8e57af88d9576acd181b89f2.7a85c336ff.out | 12 +- ...9e8abf8dc324a010007addde986.b821eb26b3.out | 12 +- ...ut[bls12_381_fr_to_mutez.tz-0-0x10-16].out | 24 +- ...000000000000000000000000000.0accef5bef.out | 14 +- ...000000000000000000000000000.0ecc537252.out | 14 +- ...000000000000000000000000000.2229b767cd.out | 14 +- ...000000000000000000000000000.2ff549b46b.out | 14 +- ...000000000000000000000000000.bf8a711be6.out | 14 +- ...000000000000000000000000000.d41cbb044b.out | 14 +- ...a5ad0a633e4880d2296f08ec5c1.a50412e458.out | 14 +- ...cd0fa853810e356f1eb79721e80.f3a349c4a7.out | 14 +- ...be1766f92cd82c5e5135c374a03.1b9676e4c2.out | 14 +- ...be1766f92cd82c5e5135c374a03.e966dc6de5.out | 14 +- ...000000000000000000000000000.964835cc43.out | 14 +- ...000000000000000000000000000.b25ea709fb.out | 14 +- ...000000000000000000000000000.eae36753ea.out | 14 +- ...000000000000000000000000000.ee57dac8f7.out | 14 +- ...a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out | 14 +- ...cd0fa853810e356f1eb79721e80.bd5800f6b8.out | 14 +- ...be1766f92cd82c5e5135c374a03.00e897789a.out | 14 +- ...be1766f92cd82c5e5135c374a03.a4697eaa13.out | 14 +- ...000000000000000000000000000.0177355bbf.out | 18 +- ...000000000000000000000000000.744166c609.out | 18 +- ...000000000000000000000000000.9f3c5cdc6a.out | 18 +- ...000000000000000000000000000.a54cb341ba.out | 18 +- ...000000000000000000000000000.b0dc584c94.out | 18 +- ...000000000000000000000000000.bddcad090c.out | 18 +- ...a5ad0a633e4880d2296f08ec5c1.92c153eb47.out | 18 +- ...cd0fa853810e356f1eb79721e80.290ab49d11.out | 18 +- ...be1766f92cd82c5e5135c374a03.69f3589a06.out | 18 +- ...be1766f92cd82c5e5135c374a03.fee3c5cf43.out | 18 +- ...000000000000000000000000000.1bccc033e8.out | 18 +- ...000000000000000000000000000.40958700fe.out | 18 +- ...000000000000000000000000000.6c62b03d78.out | 18 +- ...000000000000000000000000000.d23f269341.out | 18 +- ...a5ad0a633e4880d2296f08ec5c1.927f808504.out | 18 +- ...cd0fa853810e356f1eb79721e80.0c114c956a.out | 18 +- ...be1766f92cd82c5e5135c374a03.03c4f38e68.out | 18 +- ...be1766f92cd82c5e5135c374a03.8ed19cfdd9.out | 18 +- ...input_output[car.tz-0-(Pair 34 17)-34].out | 12 +- ...input_output[cdr.tz-0-(Pair 34 17)-17].out | 12 +- ...prcVkpaWU\")-Unit-(Some \".8420090f97.out" | 12 +- ...770)-Unit-(Some \"NetXdQprcVkpaWU\")].out" | 12 +- ...None-Unit-(Some \"NetXdQprcVkpaWU\")].out" | 12 +- ...mb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out | 142 +- ... Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" | 30 +- ...r 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out | 34 +- ...omb.tz-(Pair 0 0 0)-Unit-(Pair 1 2 3)].out | 24 +- ...nput_output[compare.tz-Unit-Unit-Unit].out | 300 +- ...; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out | 378 +- ...-{ \"World!\" }-{ \"Hello World!\" }].out" | 20 +- ..."test2\" }-{ \"Hello test1.c27e8c3ee6.out" | 28 +- ...input_output[concat_hello.tz-{}-{}-{}].out | 12 +- ...}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out | 28 +- ...hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out | 20 +- ...output[concat_hello_bytes.tz-{}-{}-{}].out | 12 +- ...; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" | 132 +- ...\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" | 104 +- ...t_output[concat_list.tz-\"\"-{}-\"\"].out" | 20 +- ...ns.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out | 14 +- ..._output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out | 14 +- ...act_input_output[cons.tz-{}-10-{ 10 }].out | 14 +- ...ir { \"A\" } { \"B\" })-(Some False)].out" | 212 +- ...\"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" | 556 +- ...\"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" | 588 +- ...air { \"B\" } { \"B\" })-(Some True)].out" | 212 +- ...ir { \"c\" } { \"B\" })-(Some False)].out" | 212 +- ..._all.tz-None-(Pair {} {})-(Some True)].out | 68 +- ...wnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" | 18 +- ...Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" | 38 +- ...970-01-01T00:03:20Z\" \"19.90e9215d17.out" | 28 +- ...t[diff_timestamps.tz-111-(Pair 0 0)-0].out | 28 +- ...[diff_timestamps.tz-111-(Pair 0 1)--1].out | 28 +- ...t[diff_timestamps.tz-111-(Pair 1 0)-1].out | 28 +- ...r 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out | 6090 ++++++++--------- ... 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out | 6090 ++++++++--------- ...air (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out | 70 +- ...p.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out | 32 +- ...z-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out | 32 +- ...air (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out | 122 +- ...air (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out | 40 +- ...air (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out | 68 +- ..._input_output[dup-n.tz-Unit-Unit-Unit].out | 390 +- ... None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out | 194 +- ... None)-(Pair 10 -3)-(Pair (.3caea50555.out | 194 +- ... None)-(Pair 10 0)-(Pair No.f9448c04fb.out | 194 +- ... None)-(Pair 10 (Left 0))-(Left None)].out | 32 +- ...air 10 (Left 10))-(Left (So.f782cc1dec.out | 32 +- ...air 10 (Left 3))-(Left (Som.016b4db96c.out | 32 +- ...one)-(Pair 10 (Right 0))-(Right None)].out | 32 +- ...air 10 (Right 10))-(Right (.e705a30e07.out | 32 +- ...air 10 (Right 3))-(Right (S.44485eda6a.out | 32 +- ...air 5 (Right 10))-(Right (S.8ab987af15.out | 32 +- ...-{}-Unit-{ Elt \"hello\" \"world\" }].out" | 26 +- ...t[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" | 48 +- ...oncat.tz-\"?\"-\"test\"-\"test_abc\"].out" | 48 +- ...tput[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out | 20 +- ...act_input_output[first.tz-111-{ 4 }-4].out | 20 +- ...me 4) {})-\"hello\"-(Pair .161d86cef6.out" | 30 +- ...me 5) { Elt \"hello\" 4 }).684ab7e326.out" | 30 +- ...me 5) { Elt \"hello\" 4 }).d49817fb83.out" | 30 +- ...e { Elt \"1\" 1 ; .6900b1da14.out" | 30 +- ...e { Elt \"1\" 1 ; .bca0ede8be.out" | 30 +- ... { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" | 30 +- ...ir None {})-\"hello\"-(Pair None {})].out" | 30 +- ... \"1\" \"one\" ; .bc4127094e.out" | 38 +- ..."hello\" \"hi\" })-\"\"-(P.0c03056487.out" | 38 +- ...\"hello\" \"hi\" })-\"hell.cc45544c66.out" | 38 +- ...nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" | 14 +- ...2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" | 14 +- ...xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" | 14 +- ...-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" | 14 +- ..._output[if.tz-None-False-(Some False)].out | 16 +- ...ut_output[if.tz-None-True-(Some True)].out | 16 +- ....tz-\"?\"-(Some \"hello\")-\"hello\"].out" | 14 +- ...ut_output[if_some.tz-\"?\"-None-\"\"].out" | 14 +- ...t_input_output[int.tz-None-0-(Some 0)].out | 14 +- ...t_input_output[int.tz-None-1-(Some 1)].out | 14 +- ...t_output[int.tz-None-9999-(Some 9999)].out | 14 +- ...c20776f726c6421-(Some 0xb6e.34c02678c9.out | 14 +- ...Left \"X\")-(Left True)-(Right True)].out" | 16 +- ...ft \"X\")-(Right \"a\")-(Left \"a\")].out" | 16 +- ...ract_input_output[level.tz-111-Unit-1].out | 10 +- ...{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" | 20 +- ...ut[list_concat.tz-\"abc\"-{}-\"abc\"].out" | 20 +- ...tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out | 20 +- ..._output[list_concat_bytes.tz-0x-{}-0x].out | 20 +- ...b-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out | 20 +- ...list_concat_bytes.tz-0xabcd-{}-0xabcd].out | 20 +- ... ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" | 10 +- ... ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 10 +- ...input_output[list_id.tz-{\"\"}-{}-{}].out" | 10 +- ... ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" | 18 +- ... ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 18 +- ...t_output[list_id_map.tz-{\"\"}-{}-{}].out" | 12 +- ...tput[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out | 38 +- ...tput[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out | 38 +- ...}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out | 158 +- ...}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out | 158 +- ...ut_output[list_map_block.tz-{0}-{}-{}].out | 30 +- ...ze.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out | 12 +- ...tput[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out | 12 +- ...input_output[list_size.tz-111-{ 1 }-1].out | 12 +- ...ct_input_output[list_size.tz-111-{}-0].out | 12 +- ... ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 186 +- ...put_output[loop_left.tz-{\"\"}-{}-{}].out" | 48 +- ...0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out | 10 +- ...[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out | 10 +- ...[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out | 10 +- ... Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out | 190 +- ...-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out | 190 +- ...foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" | 72 +- ...lt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" | 48 +- ...ract_input_output[map_map.tz-{}-10-{}].out | 24 +- ... 1 } None)-1-(Pair { Elt 0 .7396e5f090.out | 40 +- ... 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out | 40 +- ... 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out | 40 +- ... 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out | 40 +- ... 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out | 40 +- ...air {} None)-1-(Pair {} (Some False))].out | 40 +- ...ar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" | 40 +- ...ar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" | 40 +- ...ar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" | 40 +- ...oo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" | 40 +- ...oo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" | 40 +- ...None)-\"bar\"-(Pair {} (Some False))].out" | 40 +- ... \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" | 12 +- ...\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" | 12 +- ...ut[map_size.tz-111-{ Elt \"a\" 1 }-1].out" | 12 +- ...act_input_output[map_size.tz-111-{}-0].out | 12 +- ...ct_input_output[mul.tz-Unit-Unit-Unit].out | 108 +- ...0-257-0x0101000000000000000.be11332c7f.out | 32 +- ...2-16-0x10000000000000000000.8230fb4fac.out | 32 +- ...act_input_output[neg.tz-0-(Left -2)-2].out | 16 +- ...ract_input_output[neg.tz-0-(Left 0)-0].out | 16 +- ...act_input_output[neg.tz-0-(Left 2)--2].out | 16 +- ...act_input_output[neg.tz-0-(Right 0)-0].out | 16 +- ...ct_input_output[neg.tz-0-(Right 2)--2].out | 16 +- ...nput_output[none.tz-Some 10-Unit-None].out | 10 +- ..._output[not.tz-None-False-(Some True)].out | 14 +- ..._output[not.tz-None-True-(Some False)].out | 14 +- ...not_binary.tz-None-(Left -8)-(Some 7)].out | 18 +- ...not_binary.tz-None-(Left -9)-(Some 8)].out | 18 +- ...not_binary.tz-None-(Left 0)-(Some -1)].out | 18 +- ...not_binary.tz-None-(Left 7)-(Some -8)].out | 18 +- ...not_binary.tz-None-(Left 8)-(Some -9)].out | 18 +- ...ot_binary.tz-None-(Right 0)-(Some -1)].out | 18 +- ...ot_binary.tz-None-(Right 7)-(Some -8)].out | 18 +- ...ot_binary.tz-None-(Right 8)-(Some -9)].out | 18 +- ...-None-(Pair False False)-(Some False)].out | 30 +- ...tz-None-(Pair False True)-(Some True)].out | 30 +- ...tz-None-(Pair True False)-(Some True)].out | 30 +- ....tz-None-(Pair True True)-(Some True)].out | 30 +- ...or_binary.tz-None-(Pair 0 8)-(Some 8)].out | 18 +- ..._binary.tz-None-(Pair 14 1)-(Some 15)].out | 18 +- ..._binary.tz-None-(Pair 15 4)-(Some 15)].out | 18 +- ...r_binary.tz-None-(Pair 4 8)-(Some 12)].out | 18 +- ...or_binary.tz-None-(Pair 7 7)-(Some 7)].out | 18 +- ...or_binary.tz-None-(Pair 8 0)-(Some 8)].out | 18 +- ... (Pair 1 (Pair \"foobar\".368bdfd73a.out" | 512 +- ... (Pair 1 (Pair \"foobar\".735d9ae802.out" | 512 +- ...ir \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" | 652 +- ...ir \"edpkuBknW28nW72KG6RoH.4e20b52378.out" | 652 +- ...alse False)-(Some (Pair False False))].out | 12 +- ... False True)-(Some (Pair False True))].out | 12 +- ... True False)-(Some (Pair True False))].out | 12 +- ...ir True True)-(Some (Pair True True))].out | 12 +- ...ntract_input_output[pexec.tz-14-38-52].out | 46 +- ... 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out | 266 +- ...utput[ret_int.tz-None-Unit-(Some 300)].out | 12 +- ... ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 38 +- ...input_output[reverse.tz-{\"\"}-{}-{}].out" | 20 +- ... ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 166 +- ..._output[reverse_loop.tz-{\"\"}-{}-{}].out" | 52 +- ...tput[sapling_empty_state.tz-{}-Unit-0].out | 10 +- ...output[self_address.tz-Unit-Unit-Unit].out | 32 +- ..._default_entrypoint.tz-Unit-Unit-Unit].out | 30 +- ...entrypoint.tz-Unit-Left (Left 0)-Unit].out | 78 +- ...Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" | 50 +- ..."hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" | 50 +- ...lo\" 0)-\"world\"-(Pair \"world\" 0)].out" | 50 +- ...ir \"hello\" 0)-1-(Pair \"hello\" 1)].out" | 46 +- ... \"hello\" 500)-3-(Pair \"hello\" 3)].out" | 46 +- ..."hello\" 7)-100-(Pair \"hello\" 100)].out" | 46 +- ... ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" | 10 +- ...; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" | 10 +- ...tract_input_output[set_id.tz-{}-{}-{}].out | 10 +- ..._iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out | 44 +- ..._input_output[set_iter.tz-111-{ 1 }-1].out | 26 +- ...act_input_output[set_iter.tz-111-{}-0].out | 20 +- ..."World\" } None)-\"\"-(Pai.3d2044726e.out" | 66 +- ...)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" | 66 +- ... None)-\"Hi\"-(Pair {} (Some False))].out" | 66 +- ...ze.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out | 12 +- ...utput[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out | 12 +- ..._input_output[set_size.tz-111-{ 1 }-1].out | 12 +- ...act_input_output[set_size.tz-111-{}-0].out | 12 +- ...0776f726c6421-(Some 0xf345a.a07ae9dddf.out | 14 +- ...ts.tz-None-(Left (Pair 0 0))-(Some 0)].out | 22 +- ...ts.tz-None-(Left (Pair 0 1))-(Some 0)].out | 22 +- ...ts.tz-None-(Left (Pair 1 2))-(Some 4)].out | 22 +- ....tz-None-(Left (Pair 15 2))-(Some 60)].out | 22 +- ...s.tz-None-(Left (Pair 8 1))-(Some 16)].out | 22 +- ...s.tz-None-(Right (Pair 0 0))-(Some 0)].out | 22 +- ...s.tz-None-(Right (Pair 0 1))-(Some 0)].out | 22 +- ...s.tz-None-(Right (Pair 1 2))-(Some 0)].out | 22 +- ....tz-None-(Right (Pair 15 2))-(Some 3)].out | 22 +- ...s.tz-None-(Right (Pair 8 1))-(Some 4)].out | 22 +- ...ut_output[slice.tz-None-Pair 0 0-None].out | 22 +- ...tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" | 34 +- ...slice.tz-Some \"Foo\"-Pair 0 10-None].out" | 34 +- ...-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" | 34 +- ...z-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" | 34 +- ...[slice.tz-Some \"Foo\"-Pair 1 3-None].out" | 34 +- ...slice.tz-Some \"Foo\"-Pair 10 5-None].out" | 34 +- ...FooFooFooFooFooFooFooFooFo.c508d67bb0.out" | 34 +- ...put[slice_bytes.tz-None-Pair 0 1-None].out | 22 +- ...s.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out | 34 +- ...tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out | 34 +- ...z-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out | 34 +- ...z-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out | 34 +- ...-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out | 34 +- ..._bytes.tz-Some 0xaabbcc-Pair 1 3-None].out | 34 +- ...aabbccaabbccaabbccaabbccaab.df5895de85.out | 34 +- ...d.tz-None-\"Hello\"-(Some \"Hello\")].out" | 12 +- ..._id.tz-None-\"abcd\"-(Some \"abcd\")].out" | 12 +- ...r 100 -100)-\"1970-01-01T00:03:20Z\"].out" | 28 +- ...ir 100 100)-\"1970-01-01T00:00:00Z\"].out" | 28 +- ...Pair 100 200000000000000000.3db82d2c25.out | 28 +- ...00000 1000000)-(Some (Pair .b461aa042b.out | 76 +- ...10000 1010000)-(Some (Pair .1e8cf7679c.out | 76 +- ...t_output[uncomb.tz-0-(Pair 1 4 2)-142].out | 56 +- ...input_output[unpair.tz-Unit-Unit-Unit].out | 570 +- ...dpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" | 22 +- ...Pair False False)-(Some (Left False))].out | 24 +- ... (Pair False True)-(Some (Left True))].out | 24 +- ... (Pair True False)-(Some (Left True))].out | 24 +- ... (Pair True True)-(Some (Left False))].out | 24 +- ...one-Right (Pair 0 0)-(Some (Right 0))].out | 24 +- ...one-Right (Pair 0 1)-(Some (Right 1))].out | 24 +- ...one-Right (Pair 1 0)-(Some (Right 1))].out | 24 +- ...one-Right (Pair 1 1)-(Some (Right 0))].out | 24 +- ...-Right (Pair 42 21)-(Some (Right 63))].out | 24 +- ...-Right (Pair 42 63)-(Some (Right 21))].out | 24 +- ...pcodes.TestContractOpcodes::test_level.out | 10 +- ..._opcodes.TestContractOpcodes::test_now.out | 10 +- ...s.TestContractOpcodes::test_packunpack.out | 92 +- 364 files changed, 14906 insertions(+), 14906 deletions(-) diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" index d7d62b06ef..8e53e14d29 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 4) {})-\"hello\"-(Pa.f6092ac5d6.out" @@ -9,27 +9,27 @@ big_map diff Set map(4)["hello"] to 4 trace - location: 13 (remaining gas: 1039989.246 units remaining) - [ (Pair "hello" (Some 4) {}) ] + [ (Pair "hello" (Some 4) {}) ] - location: 13 (remaining gas: 1039989.236 units remaining) - [ "hello" - (Pair (Some 4) {}) ] + [ "hello" + (Pair (Some 4) {}) ] - location: 14 (remaining gas: 1039989.221 units remaining) - [ (Pair (Some 4) {}) ] + [ (Pair (Some 4) {}) ] - location: 16 (remaining gas: 1039989.211 units remaining) - [ (Some 4) - {} ] + [ (Some 4) + {} ] - location: 14 (remaining gas: 1039989.181 units remaining) - [ "hello" - (Some 4) - {} ] + [ "hello" + (Some 4) + {} ] - location: 17 (remaining gas: 1039988.109 units remaining) - [ None - { Elt "hello" 4 } ] + [ None + { Elt "hello" 4 } ] - location: 18 (remaining gas: 1039988.094 units remaining) - [ (Pair None { Elt "hello" 4 }) ] + [ (Pair None { Elt "hello" 4 }) ] - location: 19 (remaining gas: 1039988.079 units remaining) - [ {} - (Pair None { Elt "hello" 4 }) ] + [ {} + (Pair None { Elt "hello" 4 }) ] - location: 21 (remaining gas: 1039988.064 units remaining) - [ (Pair {} None { Elt "hello" 4 }) ] + [ (Pair {} None { Elt "hello" 4 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0427752f13.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0427752f13.out" index 72939f4a08..c25cd2b11a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0427752f13.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0427752f13.out" @@ -9,27 +9,27 @@ big_map diff Set map(4)["hello"] to 5 trace - location: 13 (remaining gas: 1039987.916 units remaining) - [ (Pair "hello" (Some 5) { Elt "hello" 4 }) ] + [ (Pair "hello" (Some 5) { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039987.906 units remaining) - [ "hello" - (Pair (Some 5) { Elt "hello" 4 }) ] + [ "hello" + (Pair (Some 5) { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039987.891 units remaining) - [ (Pair (Some 5) { Elt "hello" 4 }) ] + [ (Pair (Some 5) { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039987.881 units remaining) - [ (Some 5) - { Elt "hello" 4 } ] + [ (Some 5) + { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039987.851 units remaining) - [ "hello" - (Some 5) - { Elt "hello" 4 } ] + [ "hello" + (Some 5) + { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039986.774 units remaining) - [ (Some 4) - { Elt "hello" 5 } ] + [ (Some 4) + { Elt "hello" 5 } ] - location: 18 (remaining gas: 1039986.759 units remaining) - [ (Pair (Some 4) { Elt "hello" 5 }) ] + [ (Pair (Some 4) { Elt "hello" 5 }) ] - location: 19 (remaining gas: 1039986.744 units remaining) - [ {} - (Pair (Some 4) { Elt "hello" 5 }) ] + [ {} + (Pair (Some 4) { Elt "hello" 5 }) ] - location: 21 (remaining gas: 1039986.729 units remaining) - [ (Pair {} (Some 4) { Elt "hello" 5 }) ] + [ (Pair {} (Some 4) { Elt "hello" 5 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0793dc66d5.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0793dc66d5.out" index 4e5bcf4372..05d15f7ae6 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0793dc66d5.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair (Some 5) { Elt \"hello\" 4.0793dc66d5.out" @@ -10,27 +10,27 @@ big_map diff Set map(4)["hi"] to 5 trace - location: 13 (remaining gas: 1039987.946 units remaining) - [ (Pair "hi" (Some 5) { Elt "hello" 4 }) ] + [ (Pair "hi" (Some 5) { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039987.936 units remaining) - [ "hi" - (Pair (Some 5) { Elt "hello" 4 }) ] + [ "hi" + (Pair (Some 5) { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039987.921 units remaining) - [ (Pair (Some 5) { Elt "hello" 4 }) ] + [ (Pair (Some 5) { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039987.911 units remaining) - [ (Some 5) - { Elt "hello" 4 } ] + [ (Some 5) + { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039987.881 units remaining) - [ "hi" - (Some 5) - { Elt "hello" 4 } ] + [ "hi" + (Some 5) + { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039986.906 units remaining) - [ None - { Elt "hello" 4 ; Elt "hi" 5 } ] + [ None + { Elt "hello" 4 ; Elt "hi" 5 } ] - location: 18 (remaining gas: 1039986.891 units remaining) - [ (Pair None { Elt "hello" 4 ; Elt "hi" 5 }) ] + [ (Pair None { Elt "hello" 4 ; Elt "hi" 5 }) ] - location: 19 (remaining gas: 1039986.876 units remaining) - [ {} - (Pair None { Elt "hello" 4 ; Elt "hi" 5 }) ] + [ {} + (Pair None { Elt "hello" 4 ; Elt "hi" 5 }) ] - location: 21 (remaining gas: 1039986.861 units remaining) - [ (Pair {} None { Elt "hello" 4 ; Elt "hi" 5 }) ] + [ (Pair {} None { Elt "hello" 4 ; Elt "hi" 5 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .df114499b8.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .df114499b8.out" index e2c009ca36..6279c52fd8 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .df114499b8.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .df114499b8.out" @@ -10,27 +10,27 @@ big_map diff Unset map(4)["1"] trace - location: 13 (remaining gas: 1039987.042 units remaining) - [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] + [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 13 (remaining gas: 1039987.032 units remaining) - [ "1" - (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] + [ "1" + (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 14 (remaining gas: 1039987.017 units remaining) - [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] + [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 16 (remaining gas: 1039987.007 units remaining) - [ None - { Elt "1" 1 ; Elt "2" 2 } ] + [ None + { Elt "1" 1 ; Elt "2" 2 } ] - location: 14 (remaining gas: 1039986.977 units remaining) - [ "1" - None - { Elt "1" 1 ; Elt "2" 2 } ] + [ "1" + None + { Elt "1" 1 ; Elt "2" 2 } ] - location: 17 (remaining gas: 1039986.033 units remaining) - [ (Some 1) - { Elt "2" 2 } ] + [ (Some 1) + { Elt "2" 2 } ] - location: 18 (remaining gas: 1039986.018 units remaining) - [ (Pair (Some 1) { Elt "2" 2 }) ] + [ (Pair (Some 1) { Elt "2" 2 }) ] - location: 19 (remaining gas: 1039986.003 units remaining) - [ {} - (Pair (Some 1) { Elt "2" 2 }) ] + [ {} + (Pair (Some 1) { Elt "2" 2 }) ] - location: 21 (remaining gas: 1039985.988 units remaining) - [ (Pair {} (Some 1) { Elt "2" 2 }) ] + [ (Pair {} (Some 1) { Elt "2" 2 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .f9bea98de9.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .f9bea98de9.out" index 74d56b8f1e..17bb59cb62 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .f9bea98de9.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"1\" 1 ; .f9bea98de9.out" @@ -10,27 +10,27 @@ big_map diff Unset map(4)["1"] trace - location: 13 (remaining gas: 1039987.042 units remaining) - [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] + [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 13 (remaining gas: 1039987.032 units remaining) - [ "1" - (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] + [ "1" + (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 14 (remaining gas: 1039987.017 units remaining) - [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] + [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 16 (remaining gas: 1039987.007 units remaining) - [ None - { Elt "1" 1 ; Elt "2" 2 } ] + [ None + { Elt "1" 1 ; Elt "2" 2 } ] - location: 14 (remaining gas: 1039986.977 units remaining) - [ "1" - None - { Elt "1" 1 ; Elt "2" 2 } ] + [ "1" + None + { Elt "1" 1 ; Elt "2" 2 } ] - location: 17 (remaining gas: 1039986.033 units remaining) - [ (Some 1) - { Elt "2" 2 } ] + [ (Some 1) + { Elt "2" 2 } ] - location: 18 (remaining gas: 1039986.018 units remaining) - [ (Pair (Some 1) { Elt "2" 2 }) ] + [ (Pair (Some 1) { Elt "2" 2 }) ] - location: 19 (remaining gas: 1039986.003 units remaining) - [ {} - (Pair (Some 1) { Elt "2" 2 }) ] + [ {} + (Pair (Some 1) { Elt "2" 2 }) ] - location: 21 (remaining gas: 1039985.988 units remaining) - [ (Pair {} (Some 1) { Elt "2" 2 }) ] + [ (Pair {} (Some 1) { Elt "2" 2 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"hello\" 4 })-.1db12cd837.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"hello\" 4 })-.1db12cd837.out" index c0ab6d6214..33d5479c3a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"hello\" 4 })-.1db12cd837.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None { Elt \"hello\" 4 })-.1db12cd837.out" @@ -9,27 +9,27 @@ big_map diff Unset map(4)["hello"] trace - location: 13 (remaining gas: 1039988.016 units remaining) - [ (Pair "hello" None { Elt "hello" 4 }) ] + [ (Pair "hello" None { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039988.006 units remaining) - [ "hello" - (Pair None { Elt "hello" 4 }) ] + [ "hello" + (Pair None { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039987.991 units remaining) - [ (Pair None { Elt "hello" 4 }) ] + [ (Pair None { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039987.981 units remaining) - [ None - { Elt "hello" 4 } ] + [ None + { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039987.951 units remaining) - [ "hello" - None - { Elt "hello" 4 } ] + [ "hello" + None + { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039986.874 units remaining) - [ (Some 4) - {} ] + [ (Some 4) + {} ] - location: 18 (remaining gas: 1039986.859 units remaining) - [ (Pair (Some 4) {}) ] + [ (Pair (Some 4) {}) ] - location: 19 (remaining gas: 1039986.844 units remaining) - [ {} - (Pair (Some 4) {}) ] + [ {} + (Pair (Some 4) {}) ] - location: 21 (remaining gas: 1039986.829 units remaining) - [ (Pair {} (Some 4) {}) ] + [ (Pair {} (Some 4) {}) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None {})-\"hello\"-(Pair N.6fc7d0acf2.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None {})-\"hello\"-(Pair N.6fc7d0acf2.out" index 5259001789..9cd26e035a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None {})-\"hello\"-(Pair N.6fc7d0acf2.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_and_update_big_map.tz-(Pair None {})-\"hello\"-(Pair N.6fc7d0acf2.out" @@ -9,27 +9,27 @@ big_map diff Unset map(4)["hello"] trace - location: 13 (remaining gas: 1039989.346 units remaining) - [ (Pair "hello" None {}) ] + [ (Pair "hello" None {}) ] - location: 13 (remaining gas: 1039989.336 units remaining) - [ "hello" - (Pair None {}) ] + [ "hello" + (Pair None {}) ] - location: 14 (remaining gas: 1039989.321 units remaining) - [ (Pair None {}) ] + [ (Pair None {}) ] - location: 16 (remaining gas: 1039989.311 units remaining) - [ None - {} ] + [ None + {} ] - location: 14 (remaining gas: 1039989.281 units remaining) - [ "hello" - None - {} ] + [ "hello" + None + {} ] - location: 17 (remaining gas: 1039988.209 units remaining) - [ None - {} ] + [ None + {} ] - location: 18 (remaining gas: 1039988.194 units remaining) - [ (Pair None {}) ] + [ (Pair None {}) ] - location: 19 (remaining gas: 1039988.179 units remaining) - [ {} - (Pair None {}) ] + [ {} + (Pair None {}) ] - location: 21 (remaining gas: 1039988.164 units remaining) - [ (Pair {} None {}) ] + [ (Pair {} None {}) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"tw.524c5459f8.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"tw.524c5459f8.out" index 4550d805fc..337147c0dc 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"tw.524c5459f8.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"tw.524c5459f8.out" @@ -10,37 +10,37 @@ big_map diff Set map(4)["1"] to "one" trace - location: 12 (remaining gas: 1039983.953 units remaining) - [ (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] + [ (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 12 (remaining gas: 1039983.943 units remaining) - [ (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) - (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] + [ (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) + (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 13 (remaining gas: 1039983.933 units remaining) - [ "1" - (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] + [ "1" + (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 14 (remaining gas: 1039983.918 units remaining) - [ (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] + [ (Pair "1" { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 17 (remaining gas: 1039983.908 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } None) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } None) ] - location: 18 (remaining gas: 1039983.898 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } ] + [ { Elt "1" "one" ; Elt "2" "two" } ] - location: 19 (remaining gas: 1039983.888 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - { Elt "1" "one" ; Elt "2" "two" } ] + [ { Elt "1" "one" ; Elt "2" "two" } + { Elt "1" "one" ; Elt "2" "two" } ] - location: 14 (remaining gas: 1039983.858 units remaining) - [ "1" - { Elt "1" "one" ; Elt "2" "two" } - { Elt "1" "one" ; Elt "2" "two" } ] + [ "1" + { Elt "1" "one" ; Elt "2" "two" } + { Elt "1" "one" ; Elt "2" "two" } ] - location: 20 (remaining gas: 1039982.948 units remaining) - [ (Some "one") - { Elt "1" "one" ; Elt "2" "two" } ] + [ (Some "one") + { Elt "1" "one" ; Elt "2" "two" } ] - location: 21 (remaining gas: 1039982.938 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - (Some "one") ] + [ { Elt "1" "one" ; Elt "2" "two" } + (Some "one") ] - location: 22 (remaining gas: 1039982.923 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } (Some "one")) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } (Some "one")) ] - location: 23 (remaining gas: 1039982.908 units remaining) - [ {} - (Pair { Elt "1" "one" ; Elt "2" "two" } (Some "one")) ] + [ {} + (Pair { Elt "1" "one" ; Elt "2" "two" } (Some "one")) ] - location: 25 (remaining gas: 1039982.893 units remaining) - [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } (Some "one")) ] + [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } (Some "one")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"\".33eba403e7.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"\".33eba403e7.out" index 50c6e12614..ffff5e29c9 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"\".33eba403e7.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"\".33eba403e7.out" @@ -9,37 +9,37 @@ big_map diff Set map(4)["hello"] to "hi" trace - location: 12 (remaining gas: 1039985.031 units remaining) - [ (Pair "" { Elt "hello" "hi" } None) ] + [ (Pair "" { Elt "hello" "hi" } None) ] - location: 12 (remaining gas: 1039985.021 units remaining) - [ (Pair "" { Elt "hello" "hi" } None) - (Pair "" { Elt "hello" "hi" } None) ] + [ (Pair "" { Elt "hello" "hi" } None) + (Pair "" { Elt "hello" "hi" } None) ] - location: 13 (remaining gas: 1039985.011 units remaining) - [ "" - (Pair "" { Elt "hello" "hi" } None) ] + [ "" + (Pair "" { Elt "hello" "hi" } None) ] - location: 14 (remaining gas: 1039984.996 units remaining) - [ (Pair "" { Elt "hello" "hi" } None) ] + [ (Pair "" { Elt "hello" "hi" } None) ] - location: 17 (remaining gas: 1039984.986 units remaining) - [ (Pair { Elt "hello" "hi" } None) ] + [ (Pair { Elt "hello" "hi" } None) ] - location: 18 (remaining gas: 1039984.976 units remaining) - [ { Elt "hello" "hi" } ] + [ { Elt "hello" "hi" } ] - location: 19 (remaining gas: 1039984.966 units remaining) - [ { Elt "hello" "hi" } - { Elt "hello" "hi" } ] + [ { Elt "hello" "hi" } + { Elt "hello" "hi" } ] - location: 14 (remaining gas: 1039984.936 units remaining) - [ "" - { Elt "hello" "hi" } - { Elt "hello" "hi" } ] + [ "" + { Elt "hello" "hi" } + { Elt "hello" "hi" } ] - location: 20 (remaining gas: 1039984.061 units remaining) - [ None - { Elt "hello" "hi" } ] + [ None + { Elt "hello" "hi" } ] - location: 21 (remaining gas: 1039984.051 units remaining) - [ { Elt "hello" "hi" } - None ] + [ { Elt "hello" "hi" } + None ] - location: 22 (remaining gas: 1039984.036 units remaining) - [ (Pair { Elt "hello" "hi" } None) ] + [ (Pair { Elt "hello" "hi" } None) ] - location: 23 (remaining gas: 1039984.021 units remaining) - [ {} - (Pair { Elt "hello" "hi" } None) ] + [ {} + (Pair { Elt "hello" "hi" } None) ] - location: 25 (remaining gas: 1039984.006 units remaining) - [ (Pair {} { Elt "hello" "hi" } None) ] + [ (Pair {} { Elt "hello" "hi" } None) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"h.a5cd1005c9.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"h.a5cd1005c9.out" index f59faa698d..072de163ff 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"h.a5cd1005c9.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[get_big_map_value.tz-(Pair { Elt \"hello\" \"hi\" } None)-\"h.a5cd1005c9.out" @@ -9,37 +9,37 @@ big_map diff Set map(4)["hello"] to "hi" trace - location: 12 (remaining gas: 1039984.981 units remaining) - [ (Pair "hello" { Elt "hello" "hi" } None) ] + [ (Pair "hello" { Elt "hello" "hi" } None) ] - location: 12 (remaining gas: 1039984.971 units remaining) - [ (Pair "hello" { Elt "hello" "hi" } None) - (Pair "hello" { Elt "hello" "hi" } None) ] + [ (Pair "hello" { Elt "hello" "hi" } None) + (Pair "hello" { Elt "hello" "hi" } None) ] - location: 13 (remaining gas: 1039984.961 units remaining) - [ "hello" - (Pair "hello" { Elt "hello" "hi" } None) ] + [ "hello" + (Pair "hello" { Elt "hello" "hi" } None) ] - location: 14 (remaining gas: 1039984.946 units remaining) - [ (Pair "hello" { Elt "hello" "hi" } None) ] + [ (Pair "hello" { Elt "hello" "hi" } None) ] - location: 17 (remaining gas: 1039984.936 units remaining) - [ (Pair { Elt "hello" "hi" } None) ] + [ (Pair { Elt "hello" "hi" } None) ] - location: 18 (remaining gas: 1039984.926 units remaining) - [ { Elt "hello" "hi" } ] + [ { Elt "hello" "hi" } ] - location: 19 (remaining gas: 1039984.916 units remaining) - [ { Elt "hello" "hi" } - { Elt "hello" "hi" } ] + [ { Elt "hello" "hi" } + { Elt "hello" "hi" } ] - location: 14 (remaining gas: 1039984.886 units remaining) - [ "hello" - { Elt "hello" "hi" } - { Elt "hello" "hi" } ] + [ "hello" + { Elt "hello" "hi" } + { Elt "hello" "hi" } ] - location: 20 (remaining gas: 1039983.840 units remaining) - [ (Some "hi") - { Elt "hello" "hi" } ] + [ (Some "hi") + { Elt "hello" "hi" } ] - location: 21 (remaining gas: 1039983.830 units remaining) - [ { Elt "hello" "hi" } - (Some "hi") ] + [ { Elt "hello" "hi" } + (Some "hi") ] - location: 22 (remaining gas: 1039983.815 units remaining) - [ (Pair { Elt "hello" "hi" } (Some "hi")) ] + [ (Pair { Elt "hello" "hi" } (Some "hi")) ] - location: 23 (remaining gas: 1039983.800 units remaining) - [ {} - (Pair { Elt "hello" "hi" } (Some "hi")) ] + [ {} + (Pair { Elt "hello" "hi" } (Some "hi")) ] - location: 25 (remaining gas: 1039983.785 units remaining) - [ (Pair {} { Elt "hello" "hi" } (Some "hi")) ] + [ (Pair {} { Elt "hello" "hi" } (Some "hi")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .6f3d35b151.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .6f3d35b151.out" index 7d4e9dd6f5..15079a7ea7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .6f3d35b151.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .6f3d35b151.out" @@ -10,27 +10,27 @@ big_map diff Set map(4)["1"] to "one" trace - location: 15 (remaining gas: 1039984.639 units remaining) - [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.629 units remaining) - [ {} - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ {} + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.614 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.604 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 16 (remaining gas: 1039984.574 units remaining) - [ {} - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ {} + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039984.574 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 23 (remaining gas: 1039984.559 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 24 (remaining gas: 1039984.544 units remaining) - [ {} - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ {} + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 26 (remaining gas: 1039984.529 units remaining) - [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .76aeaa0706.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .76aeaa0706.out" index edf538c685..831cd03c4a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .76aeaa0706.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .76aeaa0706.out" @@ -10,39 +10,39 @@ big_map diff Set map(4)["1"] to "two" trace - location: 15 (remaining gas: 1039984.121 units remaining) - [ (Pair { Elt "1" (Some "two") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" (Some "two") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.111 units remaining) - [ { Elt "1" (Some "two") } - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ { Elt "1" (Some "two") } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.096 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.086 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 16 (remaining gas: 1039984.056 units remaining) - [ { Elt "1" (Some "two") } - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" (Some "two") } + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039984.056 units remaining) - [ (Pair "1" (Some "two")) - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ (Pair "1" (Some "two")) + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 21 (remaining gas: 1039984.046 units remaining) - [ "1" - (Some "two") - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ "1" + (Some "two") + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 22 (remaining gas: 1039983.111 units remaining) - [ { Elt "1" "two" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "two" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039983.096 units remaining) - [ { Elt "1" "two" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "two" ; Elt "2" "two" } + Unit ] - location: 23 (remaining gas: 1039983.081 units remaining) - [ (Pair { Elt "1" "two" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "two" ; Elt "2" "two" } Unit) ] - location: 24 (remaining gas: 1039983.066 units remaining) - [ {} - (Pair { Elt "1" "two" ; Elt "2" "two" } Unit) ] + [ {} + (Pair { Elt "1" "two" ; Elt "2" "two" } Unit) ] - location: 26 (remaining gas: 1039983.051 units remaining) - [ (Pair {} { Elt "1" "two" ; Elt "2" "two" } Unit) ] + [ (Pair {} { Elt "1" "two" ; Elt "2" "two" } Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7e7197f248.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7e7197f248.out" index 5a01c495a2..3dc184666a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7e7197f248.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7e7197f248.out" @@ -10,39 +10,39 @@ big_map diff Set map(4)["1"] to "two" trace - location: 15 (remaining gas: 1039984.121 units remaining) - [ (Pair { Elt "1" (Some "two") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" (Some "two") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.111 units remaining) - [ { Elt "1" (Some "two") } - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ { Elt "1" (Some "two") } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.096 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.086 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 16 (remaining gas: 1039984.056 units remaining) - [ { Elt "1" (Some "two") } - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" (Some "two") } + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039984.056 units remaining) - [ (Pair "1" (Some "two")) - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ (Pair "1" (Some "two")) + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 21 (remaining gas: 1039984.046 units remaining) - [ "1" - (Some "two") - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ "1" + (Some "two") + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 22 (remaining gas: 1039983.111 units remaining) - [ { Elt "1" "two" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "two" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039983.096 units remaining) - [ { Elt "1" "two" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "two" ; Elt "2" "two" } + Unit ] - location: 23 (remaining gas: 1039983.081 units remaining) - [ (Pair { Elt "1" "two" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "two" ; Elt "2" "two" } Unit) ] - location: 24 (remaining gas: 1039983.066 units remaining) - [ {} - (Pair { Elt "1" "two" ; Elt "2" "two" } Unit) ] + [ {} + (Pair { Elt "1" "two" ; Elt "2" "two" } Unit) ] - location: 26 (remaining gas: 1039983.051 units remaining) - [ (Pair {} { Elt "1" "two" ; Elt "2" "two" } Unit) ] + [ (Pair {} { Elt "1" "two" ; Elt "2" "two" } Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" index 07ca29e9bf..809729f5ea 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .7ef2c415a7.out" @@ -11,39 +11,39 @@ big_map diff Set map(4)["1"] to "one" trace - location: 15 (remaining gas: 1039984.101 units remaining) - [ (Pair { Elt "3" (Some "three") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "3" (Some "three") } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.091 units remaining) - [ { Elt "3" (Some "three") } - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ { Elt "3" (Some "three") } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.076 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.066 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 16 (remaining gas: 1039984.036 units remaining) - [ { Elt "3" (Some "three") } - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "3" (Some "three") } + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039984.036 units remaining) - [ (Pair "3" (Some "three")) - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ (Pair "3" (Some "three")) + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 21 (remaining gas: 1039984.026 units remaining) - [ "3" - (Some "three") - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ "3" + (Some "three") + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 22 (remaining gas: 1039983.091 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } + Unit ] - location: 19 (remaining gas: 1039983.076 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } + Unit ] - location: 23 (remaining gas: 1039983.061 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } Unit) ] - location: 24 (remaining gas: 1039983.046 units remaining) - [ {} - (Pair { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } Unit) ] + [ {} + (Pair { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } Unit) ] - location: 26 (remaining gas: 1039983.031 units remaining) - [ (Pair {} { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } Unit) ] + [ (Pair {} { Elt "1" "one" ; Elt "2" "two" ; Elt "3" "three" } Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .b688cc94a7.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .b688cc94a7.out" index 5d841a4f18..840edbe77d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .b688cc94a7.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .b688cc94a7.out" @@ -11,39 +11,39 @@ big_map diff Set map(4)["1"] to "one" trace - location: 15 (remaining gas: 1039984.265 units remaining) - [ (Pair { Elt "3" None } { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "3" None } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.255 units remaining) - [ { Elt "3" None } - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ { Elt "3" None } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.240 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.230 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 16 (remaining gas: 1039984.200 units remaining) - [ { Elt "3" None } - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "3" None } + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039984.200 units remaining) - [ (Pair "3" None) - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ (Pair "3" None) + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 21 (remaining gas: 1039984.190 units remaining) - [ "3" - None - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ "3" + None + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 22 (remaining gas: 1039983.255 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039983.240 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 23 (remaining gas: 1039983.225 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 24 (remaining gas: 1039983.210 units remaining) - [ {} - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ {} + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 26 (remaining gas: 1039983.195 units remaining) - [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair {} { Elt "1" "one" ; Elt "2" "two" } Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .c68db221ed.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .c68db221ed.out" index 960d8f38b5..7ef65e62a3 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .c68db221ed.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test__big_map_contract_io[update_big_map.tz-(Pair { Elt \"1\" \"one\" ; Elt \"2\" \"two\" .c68db221ed.out" @@ -10,39 +10,39 @@ big_map diff Set map(4)["1"] to "one" trace - location: 15 (remaining gas: 1039984.265 units remaining) - [ (Pair { Elt "2" None } { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "2" None } { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 15 (remaining gas: 1039984.255 units remaining) - [ { Elt "2" None } - (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ { Elt "2" None } + (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 16 (remaining gas: 1039984.240 units remaining) - [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] + [ (Pair { Elt "1" "one" ; Elt "2" "two" } Unit) ] - location: 18 (remaining gas: 1039984.230 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 16 (remaining gas: 1039984.200 units remaining) - [ { Elt "2" None } - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ { Elt "2" None } + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 19 (remaining gas: 1039984.200 units remaining) - [ (Pair "2" None) - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ (Pair "2" None) + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 21 (remaining gas: 1039984.190 units remaining) - [ "2" - None - { Elt "1" "one" ; Elt "2" "two" } - Unit ] + [ "2" + None + { Elt "1" "one" ; Elt "2" "two" } + Unit ] - location: 22 (remaining gas: 1039983.255 units remaining) - [ { Elt "1" "one" } - Unit ] + [ { Elt "1" "one" } + Unit ] - location: 19 (remaining gas: 1039983.240 units remaining) - [ { Elt "1" "one" } - Unit ] + [ { Elt "1" "one" } + Unit ] - location: 23 (remaining gas: 1039983.225 units remaining) - [ (Pair { Elt "1" "one" } Unit) ] + [ (Pair { Elt "1" "one" } Unit) ] - location: 24 (remaining gas: 1039983.210 units remaining) - [ {} - (Pair { Elt "1" "one" } Unit) ] + [ {} + (Pair { Elt "1" "one" } Unit) ] - location: 26 (remaining gas: 1039983.195 units remaining) - [ (Pair {} { Elt "1" "one" } Unit) ] + [ (Pair {} { Elt "1" "one" } Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out index 1086ac40e9..49508b6ba6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 0) ] + [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 500000 ] + [ 500000 ] - location: 9 (remaining gas: 1039774.907 units remaining) - [ {} - 500000 ] + [ {} + 500000 ] - location: 11 (remaining gas: 1039774.892 units remaining) - [ (Pair {} 500000) ] + [ (Pair {} 500000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out index 37b7098d60..5e66595481 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 0) ] + [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 0 ] + [ 0 ] - location: 9 (remaining gas: 1039774.907 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 11 (remaining gas: 1039774.892 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out index 026c5b66fe..a579be096a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 0) ] + [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 1000000000 ] + [ 1000000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) - [ {} - 1000000000 ] + [ {} + 1000000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) - [ (Pair {} 1000000000) ] + [ (Pair {} 1000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out index 181e955e12..bf19a152b9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 0) ] + [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 1000000 ] + [ 1000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) - [ {} - 1000000 ] + [ {} + 1000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) - [ (Pair {} 1000000) ] + [ (Pair {} 1000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out index af71c77770..9ac426c714 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 0) ] + [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 1 ] + [ 1 ] - location: 9 (remaining gas: 1039774.907 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 11 (remaining gas: 1039774.892 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out index 1da47dccfa..ce8cb06010 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 0) ] + [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 5000000 ] + [ 5000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) - [ {} - 5000000 ] + [ {} + 5000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) - [ (Pair {} 5000000) ] + [ (Pair {} 5000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out index e668b6c003..47b7efaaaf 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 0) ] + [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 8000000000000000000 ] + [ 8000000000000000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) - [ {} - 8000000000000000000 ] + [ {} + 8000000000000000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) - [ (Pair {} 8000000000000000000) ] + [ (Pair {} 8000000000000000000) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }) )-(Right (Righ.7492e8cdea.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }) )-(Right (Righ.7492e8cdea.out" index d1176a9ba9..a5fd94e28f 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }) )-(Right (Righ.7492e8cdea.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }) )-(Right (Righ.7492e8cdea.out" @@ -13,78 +13,78 @@ big_map diff trace - location: 43 (remaining gas: 1039916.593 units remaining) [ (Pair (Right (Right (Right (Left { Pair "3" "three" })))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] + (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039916.583 units remaining) - [ (Right (Right (Right (Left { Pair "3" "three" })))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right (Right (Right (Left { Pair "3" "three" })))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039916.573 units remaining) - [ (Right (Right (Left { Pair "3" "three" }))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right (Right (Left { Pair "3" "three" }))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039916.563 units remaining) - [ (Right (Left { Pair "3" "three" })) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right (Left { Pair "3" "three" })) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 65 (remaining gas: 1039916.553 units remaining) - [ (Left { Pair "3" "three" }) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Left { Pair "3" "three" }) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 108 (remaining gas: 1039916.543 units remaining) - [ { Pair "3" "three" } - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ { Pair "3" "three" } + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 110 (remaining gas: 1039916.528 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 113 (remaining gas: 1039916.518 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 113 (remaining gas: 1039916.503 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 119 (remaining gas: 1039916.493 units remaining) - [ { Elt "1" "one" } - { Elt "2" "two" } ] + [ { Elt "1" "one" } + { Elt "2" "two" } ] - location: 110 (remaining gas: 1039916.463 units remaining) - [ { Pair "3" "three" } - { Elt "1" "one" } - { Elt "2" "two" } ] + [ { Pair "3" "three" } + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 120 (remaining gas: 1039916.463 units remaining) - [ (Pair "3" "three") - { Elt "1" "one" } - { Elt "2" "two" } ] + [ (Pair "3" "three") + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 122 (remaining gas: 1039916.453 units remaining) - [ "3" - "three" - { Elt "1" "one" } - { Elt "2" "two" } ] + [ "3" + "three" + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 123 (remaining gas: 1039916.438 units remaining) - [ "three" - { Elt "1" "one" } - { Elt "2" "two" } ] + [ "three" + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 125 (remaining gas: 1039916.423 units remaining) - [ (Some "three") - { Elt "1" "one" } - { Elt "2" "two" } ] + [ (Some "three") + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 123 (remaining gas: 1039916.393 units remaining) - [ "3" - (Some "three") - { Elt "1" "one" } - { Elt "2" "two" } ] + [ "3" + (Some "three") + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 126 (remaining gas: 1039915.461 units remaining) - [ { Elt "1" "one" ; Elt "3" "three" } - { Elt "2" "two" } ] + [ { Elt "1" "one" ; Elt "3" "three" } + { Elt "2" "two" } ] - location: 120 (remaining gas: 1039915.446 units remaining) - [ { Elt "1" "one" ; Elt "3" "three" } - { Elt "2" "two" } ] + [ { Elt "1" "one" ; Elt "3" "three" } + { Elt "2" "two" } ] - location: 127 (remaining gas: 1039915.431 units remaining) - [ (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" }) ] + [ (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" }) ] - location: 128 (remaining gas: 1039915.416 units remaining) - [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] - location: 108 (remaining gas: 1039915.401 units remaining) - [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] - location: 65 (remaining gas: 1039915.386 units remaining) - [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039915.371 units remaining) - [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039915.356 units remaining) - [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] - location: 151 (remaining gas: 1039915.341 units remaining) - [ {} - (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] + [ {} + (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" })) ] - location: 153 (remaining gas: 1039915.326 units remaining) - [ (Pair {} (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" }))) ] + [ (Pair {} (Left (Pair { Elt "1" "one" ; Elt "3" "three" } { Elt "2" "two" }))) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Left Unit)-(.21b30dd90f.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Left Unit)-(.21b30dd90f.out" index d545e5435b..c21de0497c 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Left Unit)-(.21b30dd90f.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Left Unit)-(.21b30dd90f.out" @@ -11,34 +11,34 @@ big_map diff Set map(4)["2"] to "two" trace - location: 43 (remaining gas: 1039917.501 units remaining) - [ (Pair (Left Unit) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] + [ (Pair (Left Unit) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039917.491 units remaining) - [ (Left Unit) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Left Unit) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039917.481 units remaining) - [ Unit - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ Unit + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 46 (remaining gas: 1039917.471 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 48 (remaining gas: 1039917.461 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 48 (remaining gas: 1039917.446 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 54 (remaining gas: 1039917.436 units remaining) - [ { Elt "1" "one" } - { Elt "2" "two" } ] + [ { Elt "1" "one" } + { Elt "2" "two" } ] - location: 55 (remaining gas: 1039917.426 units remaining) - [ { Elt "2" "two" } - { Elt "1" "one" } ] + [ { Elt "2" "two" } + { Elt "1" "one" } ] - location: 56 (remaining gas: 1039917.411 units remaining) - [ (Pair { Elt "2" "two" } { Elt "1" "one" }) ] + [ (Pair { Elt "2" "two" } { Elt "1" "one" }) ] - location: 57 (remaining gas: 1039917.396 units remaining) - [ (Left (Pair { Elt "2" "two" } { Elt "1" "one" })) ] + [ (Left (Pair { Elt "2" "two" } { Elt "1" "one" })) ] - location: 44 (remaining gas: 1039917.381 units remaining) - [ (Left (Pair { Elt "2" "two" } { Elt "1" "one" })) ] + [ (Left (Pair { Elt "2" "two" } { Elt "1" "one" })) ] - location: 151 (remaining gas: 1039917.366 units remaining) - [ {} - (Left (Pair { Elt "2" "two" } { Elt "1" "one" })) ] + [ {} + (Left (Pair { Elt "2" "two" } { Elt "1" "one" })) ] - location: 153 (remaining gas: 1039917.351 units remaining) - [ (Pair {} (Left (Pair { Elt "2" "two" } { Elt "1" "one" }))) ] + [ (Pair {} (Left (Pair { Elt "2" "two" } { Elt "1" "one" }))) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .2873ef610c.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .2873ef610c.out" index 6506a10c74..b632f89aff 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .2873ef610c.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .2873ef610c.out" @@ -12,28 +12,28 @@ big_map diff trace - location: 43 (remaining gas: 1039913.797 units remaining) [ (Pair (Right (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" })))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] + (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039913.787 units remaining) - [ (Right (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" })))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" })))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039913.777 units remaining) - [ (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" }))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Left (Left (Pair { Elt "3" "three" } { Elt "4" "four" }))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039913.767 units remaining) - [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 62 (remaining gas: 1039913.757 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) - (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) + (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] - location: 63 (remaining gas: 1039913.747 units remaining) - [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] + [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] - location: 60 (remaining gas: 1039913.732 units remaining) - [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] + [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] - location: 44 (remaining gas: 1039913.717 units remaining) - [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] + [ (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] - location: 151 (remaining gas: 1039913.702 units remaining) - [ {} - (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] + [ {} + (Left (Pair { Elt "3" "three" } { Elt "4" "four" })) ] - location: 153 (remaining gas: 1039913.687 units remaining) - [ (Pair {} (Left (Pair { Elt "3" "three" } { Elt "4" "four" }))) ] + [ (Pair {} (Left (Pair { Elt "3" "three" } { Elt "4" "four" }))) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .8a6f480005.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .8a6f480005.out" index 4918b5e8fe..a3d2c6c6e0 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .8a6f480005.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Left .8a6f480005.out" @@ -8,28 +8,28 @@ big_map diff trace - location: 43 (remaining gas: 1039916.861 units remaining) - [ (Pair (Right (Left (Right Unit))) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] + [ (Pair (Right (Left (Right Unit))) (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039916.851 units remaining) - [ (Right (Left (Right Unit))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right (Left (Right Unit))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039916.841 units remaining) - [ (Left (Right Unit)) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Left (Right Unit)) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039916.831 units remaining) - [ (Right Unit) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right Unit) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 62 (remaining gas: 1039916.821 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) - (Right Unit) ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) + (Right Unit) ] - location: 63 (remaining gas: 1039916.811 units remaining) - [ (Right Unit) ] + [ (Right Unit) ] - location: 60 (remaining gas: 1039916.796 units remaining) - [ (Right Unit) ] + [ (Right Unit) ] - location: 44 (remaining gas: 1039916.781 units remaining) - [ (Right Unit) ] + [ (Right Unit) ] - location: 151 (remaining gas: 1039916.766 units remaining) - [ {} - (Right Unit) ] + [ {} + (Right Unit) ] - location: 153 (remaining gas: 1039916.751 units remaining) - [ (Pair {} (Right Unit)) ] + [ (Pair {} (Right Unit)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Right.d336ca1903.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Right.d336ca1903.out" index 8489cdc827..2bc1e13b5b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Right.d336ca1903.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Left (Pair { Elt \"1\" \"one\" } { Elt \"2\" \"two\" }))-(Right (Right.d336ca1903.out" @@ -12,72 +12,72 @@ big_map diff trace - location: 43 (remaining gas: 1039916.857 units remaining) [ (Pair (Right (Right (Right (Right { "1" })))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] + (Left (Pair { Elt "1" "one" } { Elt "2" "two" }))) ] - location: 43 (remaining gas: 1039916.847 units remaining) - [ (Right (Right (Right (Right { "1" })))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right (Right (Right (Right { "1" })))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039916.837 units remaining) - [ (Right (Right (Right { "1" }))) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right (Right (Right { "1" }))) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039916.827 units remaining) - [ (Right (Right { "1" })) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right (Right { "1" })) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 65 (remaining gas: 1039916.817 units remaining) - [ (Right { "1" }) - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Right { "1" }) + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 108 (remaining gas: 1039916.807 units remaining) - [ { "1" } - (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ { "1" } + (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 131 (remaining gas: 1039916.792 units remaining) - [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] + [ (Left (Pair { Elt "1" "one" } { Elt "2" "two" })) ] - location: 134 (remaining gas: 1039916.782 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 134 (remaining gas: 1039916.767 units remaining) - [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] + [ (Pair { Elt "1" "one" } { Elt "2" "two" }) ] - location: 140 (remaining gas: 1039916.757 units remaining) - [ { Elt "1" "one" } - { Elt "2" "two" } ] + [ { Elt "1" "one" } + { Elt "2" "two" } ] - location: 131 (remaining gas: 1039916.727 units remaining) - [ { "1" } - { Elt "1" "one" } - { Elt "2" "two" } ] + [ { "1" } + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 141 (remaining gas: 1039916.727 units remaining) - [ "1" - { Elt "1" "one" } - { Elt "2" "two" } ] + [ "1" + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 143 (remaining gas: 1039916.712 units remaining) - [ { Elt "1" "one" } - { Elt "2" "two" } ] + [ { Elt "1" "one" } + { Elt "2" "two" } ] - location: 145 (remaining gas: 1039916.697 units remaining) - [ None - { Elt "1" "one" } - { Elt "2" "two" } ] + [ None + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 143 (remaining gas: 1039916.667 units remaining) - [ "1" - None - { Elt "1" "one" } - { Elt "2" "two" } ] + [ "1" + None + { Elt "1" "one" } + { Elt "2" "two" } ] - location: 147 (remaining gas: 1039915.735 units remaining) - [ {} - { Elt "2" "two" } ] + [ {} + { Elt "2" "two" } ] - location: 141 (remaining gas: 1039915.720 units remaining) - [ {} - { Elt "2" "two" } ] + [ {} + { Elt "2" "two" } ] - location: 148 (remaining gas: 1039915.705 units remaining) - [ (Pair {} { Elt "2" "two" }) ] + [ (Pair {} { Elt "2" "two" }) ] - location: 149 (remaining gas: 1039915.690 units remaining) - [ (Left (Pair {} { Elt "2" "two" })) ] + [ (Left (Pair {} { Elt "2" "two" })) ] - location: 108 (remaining gas: 1039915.675 units remaining) - [ (Left (Pair {} { Elt "2" "two" })) ] + [ (Left (Pair {} { Elt "2" "two" })) ] - location: 65 (remaining gas: 1039915.660 units remaining) - [ (Left (Pair {} { Elt "2" "two" })) ] + [ (Left (Pair {} { Elt "2" "two" })) ] - location: 60 (remaining gas: 1039915.645 units remaining) - [ (Left (Pair {} { Elt "2" "two" })) ] + [ (Left (Pair {} { Elt "2" "two" })) ] - location: 44 (remaining gas: 1039915.630 units remaining) - [ (Left (Pair {} { Elt "2" "two" })) ] + [ (Left (Pair {} { Elt "2" "two" })) ] - location: 151 (remaining gas: 1039915.615 units remaining) - [ {} - (Left (Pair {} { Elt "2" "two" })) ] + [ {} + (Left (Pair {} { Elt "2" "two" })) ] - location: 153 (remaining gas: 1039915.600 units remaining) - [ (Pair {} (Left (Pair {} { Elt "2" "two" }))) ] + [ (Pair {} (Left (Pair {} { Elt "2" "two" }))) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Right Unit)-(Right (Right (Left (Pair { Pair \"foo\" \"bar\" } { P.7f2ee47600.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Right Unit)-(Right (Right (Left (Pair { Pair \"foo\" \"bar\" } { P.7f2ee47600.out" index 5bd8c2bf43..f342fec909 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Right Unit)-(Right (Right (Left (Pair { Pair \"foo\" \"bar\" } { P.7f2ee47600.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_big_map_magic[(Right Unit)-(Right (Right (Left (Pair { Pair \"foo\" \"bar\" } { P.7f2ee47600.out" @@ -11,125 +11,125 @@ big_map diff Set map(4)["foo"] to "bar" trace - location: 43 (remaining gas: 1039919.139 units remaining) - [ (Pair (Right (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })))) (Right Unit)) ] + [ (Pair (Right (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })))) (Right Unit)) ] - location: 43 (remaining gas: 1039919.129 units remaining) - [ (Right (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })))) - (Right Unit) ] + [ (Right (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })))) + (Right Unit) ] - location: 44 (remaining gas: 1039919.119 units remaining) - [ (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }))) - (Right Unit) ] + [ (Right (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }))) + (Right Unit) ] - location: 60 (remaining gas: 1039919.109 units remaining) - [ (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })) - (Right Unit) ] + [ (Left (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" })) + (Right Unit) ] - location: 65 (remaining gas: 1039919.099 units remaining) - [ (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }) - (Right Unit) ] + [ (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }) + (Right Unit) ] - location: 67 (remaining gas: 1039919.084 units remaining) - [ (Right Unit) ] + [ (Right Unit) ] - location: 70 (remaining gas: 1039919.074 units remaining) - [ Unit ] + [ Unit ] - location: 70 (remaining gas: 1039919.059 units remaining) - [ Unit ] + [ Unit ] - location: 76 (remaining gas: 1039919.049 units remaining) [ ] - location: 67 (remaining gas: 1039919.019 units remaining) - [ (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }) ] + [ (Pair { Pair "foo" "bar" } { Pair "gaz" "baz" }) ] - location: 77 (remaining gas: 1039919.009 units remaining) - [ { Pair "foo" "bar" } - { Pair "gaz" "baz" } ] + [ { Pair "foo" "bar" } + { Pair "gaz" "baz" } ] - location: 78 (remaining gas: 1039918.994 units remaining) - [ { Pair "gaz" "baz" } ] + [ { Pair "gaz" "baz" } ] - location: 80 (remaining gas: 1039918.979 units remaining) - [ {} - { Pair "gaz" "baz" } ] + [ {} + { Pair "gaz" "baz" } ] - location: 78 (remaining gas: 1039918.949 units remaining) - [ { Pair "foo" "bar" } - {} - { Pair "gaz" "baz" } ] + [ { Pair "foo" "bar" } + {} + { Pair "gaz" "baz" } ] - location: 83 (remaining gas: 1039918.949 units remaining) - [ (Pair "foo" "bar") - {} - { Pair "gaz" "baz" } ] + [ (Pair "foo" "bar") + {} + { Pair "gaz" "baz" } ] - location: 85 (remaining gas: 1039918.939 units remaining) - [ "foo" - "bar" - {} - { Pair "gaz" "baz" } ] + [ "foo" + "bar" + {} + { Pair "gaz" "baz" } ] - location: 86 (remaining gas: 1039918.924 units remaining) - [ "bar" - {} - { Pair "gaz" "baz" } ] + [ "bar" + {} + { Pair "gaz" "baz" } ] - location: 88 (remaining gas: 1039918.909 units remaining) - [ (Some "bar") - {} - { Pair "gaz" "baz" } ] + [ (Some "bar") + {} + { Pair "gaz" "baz" } ] - location: 86 (remaining gas: 1039918.879 units remaining) - [ "foo" - (Some "bar") - {} - { Pair "gaz" "baz" } ] + [ "foo" + (Some "bar") + {} + { Pair "gaz" "baz" } ] - location: 89 (remaining gas: 1039917.881 units remaining) - [ { Elt "foo" "bar" } - { Pair "gaz" "baz" } ] + [ { Elt "foo" "bar" } + { Pair "gaz" "baz" } ] - location: 83 (remaining gas: 1039917.866 units remaining) - [ { Elt "foo" "bar" } - { Pair "gaz" "baz" } ] + [ { Elt "foo" "bar" } + { Pair "gaz" "baz" } ] - location: 90 (remaining gas: 1039917.856 units remaining) - [ { Pair "gaz" "baz" } - { Elt "foo" "bar" } ] + [ { Pair "gaz" "baz" } + { Elt "foo" "bar" } ] - location: 91 (remaining gas: 1039917.841 units remaining) - [ { Elt "foo" "bar" } ] + [ { Elt "foo" "bar" } ] - location: 93 (remaining gas: 1039917.826 units remaining) - [ {} - { Elt "foo" "bar" } ] + [ {} + { Elt "foo" "bar" } ] - location: 91 (remaining gas: 1039917.796 units remaining) - [ { Pair "gaz" "baz" } - {} - { Elt "foo" "bar" } ] + [ { Pair "gaz" "baz" } + {} + { Elt "foo" "bar" } ] - location: 96 (remaining gas: 1039917.796 units remaining) - [ (Pair "gaz" "baz") - {} - { Elt "foo" "bar" } ] + [ (Pair "gaz" "baz") + {} + { Elt "foo" "bar" } ] - location: 98 (remaining gas: 1039917.786 units remaining) - [ "gaz" - "baz" - {} - { Elt "foo" "bar" } ] + [ "gaz" + "baz" + {} + { Elt "foo" "bar" } ] - location: 99 (remaining gas: 1039917.771 units remaining) - [ "baz" - {} - { Elt "foo" "bar" } ] + [ "baz" + {} + { Elt "foo" "bar" } ] - location: 101 (remaining gas: 1039917.756 units remaining) - [ (Some "baz") - {} - { Elt "foo" "bar" } ] + [ (Some "baz") + {} + { Elt "foo" "bar" } ] - location: 99 (remaining gas: 1039917.726 units remaining) - [ "gaz" - (Some "baz") - {} - { Elt "foo" "bar" } ] + [ "gaz" + (Some "baz") + {} + { Elt "foo" "bar" } ] - location: 102 (remaining gas: 1039916.728 units remaining) - [ { Elt "gaz" "baz" } - { Elt "foo" "bar" } ] + [ { Elt "gaz" "baz" } + { Elt "foo" "bar" } ] - location: 96 (remaining gas: 1039916.713 units remaining) - [ { Elt "gaz" "baz" } - { Elt "foo" "bar" } ] + [ { Elt "gaz" "baz" } + { Elt "foo" "bar" } ] - location: 103 (remaining gas: 1039916.703 units remaining) - [ { Elt "foo" "bar" } - { Elt "gaz" "baz" } ] + [ { Elt "foo" "bar" } + { Elt "gaz" "baz" } ] - location: 104 (remaining gas: 1039916.688 units remaining) - [ (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" }) ] + [ (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" }) ] - location: 105 (remaining gas: 1039916.673 units remaining) - [ (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] + [ (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] - location: 65 (remaining gas: 1039916.658 units remaining) - [ (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] + [ (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] - location: 60 (remaining gas: 1039916.643 units remaining) - [ (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] + [ (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] - location: 44 (remaining gas: 1039916.628 units remaining) - [ (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] + [ (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] - location: 151 (remaining gas: 1039916.613 units remaining) - [ {} - (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] + [ {} + (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" })) ] - location: 153 (remaining gas: 1039916.598 units remaining) - [ (Pair {} (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" }))) ] + [ (Pair {} (Left (Pair { Elt "foo" "bar" } { Elt "gaz" "baz" }))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_check_signature.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_check_signature.out index f6a3132a50..59df2ccab8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_check_signature.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_check_signature.out @@ -11,114 +11,114 @@ trace - location: 9 (remaining gas: 1039651.625 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 9 (remaining gas: 1039651.615 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 10 (remaining gas: 1039651.605 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 11 (remaining gas: 1039651.590 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 13 (remaining gas: 1039651.580 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 14 (remaining gas: 1039651.570 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 15 (remaining gas: 1039651.560 units remaining) - [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" + [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 16 (remaining gas: 1039651.545 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") + "hello") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 18 (remaining gas: 1039651.535 units remaining) - [ "hello" + [ "hello" (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 19 (remaining gas: 1039651.044 units remaining) - [ 0x05010000000568656c6c6f + [ 0x05010000000568656c6c6f (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 16 (remaining gas: 1039651.014 units remaining) - [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000568656c6c6f + [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" + 0x05010000000568656c6c6f (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 11 (remaining gas: 1039650.984 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") - "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000568656c6c6f + "hello") + "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" + 0x05010000000568656c6c6f (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 20 (remaining gas: 1039650.974 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" - "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000568656c6c6f + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" + 0x05010000000568656c6c6f (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 21 (remaining gas: 1039585.162 units remaining) - [ True + [ True (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 22 (remaining gas: 1039585.152 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 22 (remaining gas: 1039585.137 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 28 (remaining gas: 1039585.127 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 29 (remaining gas: 1039585.112 units remaining) - [ {} + [ {} (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] - location: 31 (remaining gas: 1039585.097 units remaining) [ (Pair {} "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "hello") ] + "hello") ] Runtime error in contract [CONTRACT_HASH]: 01: parameter key; @@ -139,103 +139,103 @@ trace - location: 9 (remaining gas: 1039651.635 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 9 (remaining gas: 1039651.625 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 10 (remaining gas: 1039651.615 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 11 (remaining gas: 1039651.600 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 13 (remaining gas: 1039651.590 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 14 (remaining gas: 1039651.580 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 15 (remaining gas: 1039651.570 units remaining) - [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" + [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 16 (remaining gas: 1039651.555 units remaining) [ (Pair "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") + "abcd") (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 18 (remaining gas: 1039651.545 units remaining) - [ "abcd" + [ "abcd" (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 19 (remaining gas: 1039651.087 units remaining) - [ 0x05010000000461626364 + [ 0x05010000000461626364 (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 16 (remaining gas: 1039651.057 units remaining) - [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000461626364 + [ "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" + 0x05010000000461626364 (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 11 (remaining gas: 1039651.027 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") - "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000461626364 + "abcd") + "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" + 0x05010000000461626364 (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 20 (remaining gas: 1039651.017 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" - "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - 0x05010000000461626364 + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" + 0x05010000000461626364 (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 21 (remaining gas: 1039585.206 units remaining) - [ False + [ False (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 22 (remaining gas: 1039585.196 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] - location: 26 (remaining gas: 1039585.186 units remaining) - [ Unit + [ Unit (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" "edsigu3QszDjUpeqYqbvhyRxMpVFamEnvm9FYnt7YiiNt9nmjYfh8ZTbsybZ5WnBkhA7zfHsRVyuTnRsGLR6fNHt1Up1FxgyRtF" - "abcd") ] + "abcd") ] Fatal error: error running script diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-0-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-0-Unit].out index e2bb06cdf5..a558e24ed7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-0-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-0-Unit].out @@ -8,31 +8,31 @@ big_map diff trace - location: 7 (remaining gas: 1039988.319 units remaining) - [ (Pair 0 Unit) ] + [ (Pair 0 Unit) ] - location: 7 (remaining gas: 1039988.309 units remaining) - [ 0 ] + [ 0 ] - location: 8 (remaining gas: 1039988.299 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 9 (remaining gas: 1039988.259 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 10 (remaining gas: 1039988.234 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 11 (remaining gas: 1039988.199 units remaining) - [ 0 ] + [ 0 ] - location: 13 (remaining gas: 1039988.184 units remaining) - [ True ] + [ True ] - location: 14 (remaining gas: 1039988.174 units remaining) [ ] - location: 14 (remaining gas: 1039988.159 units remaining) [ ] - location: 20 (remaining gas: 1039988.149 units remaining) - [ Unit ] + [ Unit ] - location: 21 (remaining gas: 1039988.134 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 23 (remaining gas: 1039988.119 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-12039123919239192312931-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-12039123919239192312931-Unit].out index e0c421e748..84d2968d9b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-12039123919239192312931-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-12039123919239192312931-Unit].out @@ -8,31 +8,31 @@ big_map diff trace - location: 7 (remaining gas: 1039988.319 units remaining) - [ (Pair 12039123919239192312931 Unit) ] + [ (Pair 12039123919239192312931 Unit) ] - location: 7 (remaining gas: 1039988.309 units remaining) - [ 12039123919239192312931 ] + [ 12039123919239192312931 ] - location: 8 (remaining gas: 1039988.299 units remaining) - [ 12039123919239192312931 - 12039123919239192312931 ] + [ 12039123919239192312931 + 12039123919239192312931 ] - location: 9 (remaining gas: 1039988.259 units remaining) - [ -12039123919239192312931 - 12039123919239192312931 ] + [ -12039123919239192312931 + 12039123919239192312931 ] - location: 10 (remaining gas: 1039988.234 units remaining) - [ 12039123919239192312931 - 12039123919239192312931 ] + [ 12039123919239192312931 + 12039123919239192312931 ] - location: 11 (remaining gas: 1039988.199 units remaining) - [ 0 ] + [ 0 ] - location: 13 (remaining gas: 1039988.184 units remaining) - [ True ] + [ True ] - location: 14 (remaining gas: 1039988.174 units remaining) [ ] - location: 14 (remaining gas: 1039988.159 units remaining) [ ] - location: 20 (remaining gas: 1039988.149 units remaining) - [ Unit ] + [ Unit ] - location: 21 (remaining gas: 1039988.134 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 23 (remaining gas: 1039988.119 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-948-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-948-Unit].out index fff9d94664..0919fe3067 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-948-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[abs.tz-Unit-948-Unit].out @@ -8,31 +8,31 @@ big_map diff trace - location: 7 (remaining gas: 1039988.319 units remaining) - [ (Pair 948 Unit) ] + [ (Pair 948 Unit) ] - location: 7 (remaining gas: 1039988.309 units remaining) - [ 948 ] + [ 948 ] - location: 8 (remaining gas: 1039988.299 units remaining) - [ 948 - 948 ] + [ 948 + 948 ] - location: 9 (remaining gas: 1039988.259 units remaining) - [ -948 - 948 ] + [ -948 + 948 ] - location: 10 (remaining gas: 1039988.234 units remaining) - [ 948 - 948 ] + [ 948 + 948 ] - location: 11 (remaining gas: 1039988.199 units remaining) - [ 0 ] + [ 0 ] - location: 13 (remaining gas: 1039988.184 units remaining) - [ True ] + [ True ] - location: 14 (remaining gas: 1039988.174 units remaining) [ ] - location: 14 (remaining gas: 1039988.159 units remaining) [ ] - location: 20 (remaining gas: 1039988.149 units remaining) - [ Unit ] + [ Unit ] - location: 21 (remaining gas: 1039988.134 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 23 (remaining gas: 1039988.119 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add.tz-Unit-Unit-Unit].out index 81c0677e14..a1ff070532 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add.tz-Unit-Unit-Unit].out @@ -8,204 +8,204 @@ big_map diff trace - location: 7 (remaining gas: 1039925.003 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039924.993 units remaining) - [ Unit ] + [ Unit ] - location: 8 (remaining gas: 1039924.983 units remaining) - [ 2 - Unit ] + [ 2 + Unit ] - location: 11 (remaining gas: 1039924.973 units remaining) - [ 2 - 2 - Unit ] + [ 2 + 2 + Unit ] - location: 14 (remaining gas: 1039924.918 units remaining) - [ 4 - Unit ] + [ 4 + Unit ] - location: 15 (remaining gas: 1039924.908 units remaining) - [ 4 - 4 - Unit ] + [ 4 + 4 + Unit ] - location: 20 (remaining gas: 1039924.873 units remaining) - [ 0 - Unit ] + [ 0 + Unit ] - location: 21 (remaining gas: 1039924.858 units remaining) - [ True - Unit ] + [ True + Unit ] - location: 22 (remaining gas: 1039924.848 units remaining) - [ Unit ] + [ Unit ] - location: 22 (remaining gas: 1039924.833 units remaining) - [ Unit ] + [ Unit ] - location: 28 (remaining gas: 1039924.823 units remaining) - [ 2 - Unit ] + [ 2 + Unit ] - location: 31 (remaining gas: 1039924.813 units remaining) - [ 2 - 2 - Unit ] + [ 2 + 2 + Unit ] - location: 34 (remaining gas: 1039924.758 units remaining) - [ 4 - Unit ] + [ 4 + Unit ] - location: 35 (remaining gas: 1039924.748 units remaining) - [ 4 - 4 - Unit ] + [ 4 + 4 + Unit ] - location: 40 (remaining gas: 1039924.713 units remaining) - [ 0 - Unit ] + [ 0 + Unit ] - location: 41 (remaining gas: 1039924.698 units remaining) - [ True - Unit ] + [ True + Unit ] - location: 42 (remaining gas: 1039924.688 units remaining) - [ Unit ] + [ Unit ] - location: 42 (remaining gas: 1039924.673 units remaining) - [ Unit ] + [ Unit ] - location: 48 (remaining gas: 1039924.663 units remaining) - [ 2 - Unit ] + [ 2 + Unit ] - location: 51 (remaining gas: 1039924.653 units remaining) - [ 2 - 2 - Unit ] + [ 2 + 2 + Unit ] - location: 54 (remaining gas: 1039924.598 units remaining) - [ 4 - Unit ] + [ 4 + Unit ] - location: 55 (remaining gas: 1039924.588 units remaining) - [ 4 - 4 - Unit ] + [ 4 + 4 + Unit ] - location: 60 (remaining gas: 1039924.553 units remaining) - [ 0 - Unit ] + [ 0 + Unit ] - location: 61 (remaining gas: 1039924.538 units remaining) - [ True - Unit ] + [ True + Unit ] - location: 62 (remaining gas: 1039924.528 units remaining) - [ Unit ] + [ Unit ] - location: 62 (remaining gas: 1039924.513 units remaining) - [ Unit ] + [ Unit ] - location: 68 (remaining gas: 1039924.503 units remaining) - [ 2 - Unit ] + [ 2 + Unit ] - location: 71 (remaining gas: 1039924.493 units remaining) - [ 2 - 2 - Unit ] + [ 2 + 2 + Unit ] - location: 74 (remaining gas: 1039924.438 units remaining) - [ 4 - Unit ] + [ 4 + Unit ] - location: 75 (remaining gas: 1039924.428 units remaining) - [ 4 - 4 - Unit ] + [ 4 + 4 + Unit ] - location: 80 (remaining gas: 1039924.393 units remaining) - [ 0 - Unit ] + [ 0 + Unit ] - location: 81 (remaining gas: 1039924.378 units remaining) - [ True - Unit ] + [ True + Unit ] - location: 82 (remaining gas: 1039924.368 units remaining) - [ Unit ] + [ Unit ] - location: 82 (remaining gas: 1039924.353 units remaining) - [ Unit ] + [ Unit ] - location: 88 (remaining gas: 1039924.343 units remaining) - [ 2 - Unit ] + [ 2 + Unit ] - location: 91 (remaining gas: 1039924.333 units remaining) - [ 2 - 2 - Unit ] + [ 2 + 2 + Unit ] - location: 94 (remaining gas: 1039924.278 units remaining) - [ 4 - Unit ] + [ 4 + Unit ] - location: 95 (remaining gas: 1039924.268 units remaining) - [ 4 - 4 - Unit ] + [ 4 + 4 + Unit ] - location: 100 (remaining gas: 1039924.233 units remaining) - [ 0 - Unit ] + [ 0 + Unit ] - location: 101 (remaining gas: 1039924.218 units remaining) - [ True - Unit ] + [ True + Unit ] - location: 102 (remaining gas: 1039924.208 units remaining) - [ Unit ] + [ Unit ] - location: 102 (remaining gas: 1039924.193 units remaining) - [ Unit ] + [ Unit ] - location: 108 (remaining gas: 1039924.183 units remaining) - [ 60 - Unit ] + [ 60 + Unit ] - location: 111 (remaining gas: 1039924.173 units remaining) - [ "2019-09-09T12:08:37Z" - 60 - Unit ] + [ "2019-09-09T12:08:37Z" + 60 + Unit ] - location: 114 (remaining gas: 1039924.118 units remaining) - [ "2019-09-09T12:09:37Z" - Unit ] + [ "2019-09-09T12:09:37Z" + Unit ] - location: 115 (remaining gas: 1039924.108 units remaining) - [ "2019-09-09T12:09:37Z" - "2019-09-09T12:09:37Z" - Unit ] + [ "2019-09-09T12:09:37Z" + "2019-09-09T12:09:37Z" + Unit ] - location: 120 (remaining gas: 1039924.073 units remaining) - [ 0 - Unit ] + [ 0 + Unit ] - location: 121 (remaining gas: 1039924.058 units remaining) - [ True - Unit ] + [ True + Unit ] - location: 122 (remaining gas: 1039924.048 units remaining) - [ Unit ] + [ Unit ] - location: 122 (remaining gas: 1039924.033 units remaining) - [ Unit ] + [ Unit ] - location: 128 (remaining gas: 1039924.023 units remaining) - [ "2019-09-09T12:08:37Z" - Unit ] + [ "2019-09-09T12:08:37Z" + Unit ] - location: 131 (remaining gas: 1039924.013 units remaining) - [ 60 - "2019-09-09T12:08:37Z" - Unit ] + [ 60 + "2019-09-09T12:08:37Z" + Unit ] - location: 134 (remaining gas: 1039923.958 units remaining) - [ "2019-09-09T12:09:37Z" - Unit ] + [ "2019-09-09T12:09:37Z" + Unit ] - location: 135 (remaining gas: 1039923.948 units remaining) - [ "2019-09-09T12:09:37Z" - "2019-09-09T12:09:37Z" - Unit ] + [ "2019-09-09T12:09:37Z" + "2019-09-09T12:09:37Z" + Unit ] - location: 140 (remaining gas: 1039923.913 units remaining) - [ 0 - Unit ] + [ 0 + Unit ] - location: 141 (remaining gas: 1039923.898 units remaining) - [ True - Unit ] + [ True + Unit ] - location: 142 (remaining gas: 1039923.888 units remaining) - [ Unit ] + [ Unit ] - location: 142 (remaining gas: 1039923.873 units remaining) - [ Unit ] + [ Unit ] - location: 148 (remaining gas: 1039923.863 units remaining) - [ 1000 - Unit ] + [ 1000 + Unit ] - location: 151 (remaining gas: 1039923.853 units remaining) - [ 1000 - 1000 - Unit ] + [ 1000 + 1000 + Unit ] - location: 154 (remaining gas: 1039923.833 units remaining) - [ 2000 - Unit ] + [ 2000 + Unit ] - location: 155 (remaining gas: 1039923.823 units remaining) - [ 2000 - 2000 - Unit ] + [ 2000 + 2000 + Unit ] - location: 160 (remaining gas: 1039923.788 units remaining) - [ 0 - Unit ] + [ 0 + Unit ] - location: 161 (remaining gas: 1039923.773 units remaining) - [ True - Unit ] + [ True + Unit ] - location: 162 (remaining gas: 1039923.763 units remaining) - [ Unit ] + [ Unit ] - location: 162 (remaining gas: 1039923.748 units remaining) - [ Unit ] + [ Unit ] - location: 168 (remaining gas: 1039923.733 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 170 (remaining gas: 1039923.718 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x00 0x00-(Some 0x0000000.3c2de60480.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x00 0x00-(Some 0x0000000.3c2de60480.out index e8078892e3..24e6cbcdf7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x00 0x00-(Some 0x0000000.3c2de60480.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x00 0x00-(Some 0x0000000.3c2de60480.out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039992.524 units remaining) [ (Pair (Pair 0x0000000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000000000000000000000000000) - None) ] + None) ] - location: 10 (remaining gas: 1039992.514 units remaining) [ (Pair 0x0000000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000) ] + 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 11 (remaining gas: 1039992.504 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039992.459 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 13 (remaining gas: 1039992.444 units remaining) - [ (Some 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ (Some 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 14 (remaining gas: 1039992.429 units remaining) - [ {} - (Some 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ {} + (Some 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 16 (remaining gas: 1039992.414 units remaining) [ (Pair {} - (Some 0x0000000000000000000000000000000000000000000000000000000000000000)) ] + (Some 0x0000000000000000000000000000000000000000000000000000000000000000)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x01 0x00-(Some 0x0100000.12b2c1172b.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x01 0x00-(Some 0x0100000.12b2c1172b.out index 23fbcb9c5a..8da54a4da9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x01 0x00-(Some 0x0100000.12b2c1172b.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x01 0x00-(Some 0x0100000.12b2c1172b.out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039992.524 units remaining) [ (Pair (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000000000000000000000000000) - None) ] + None) ] - location: 10 (remaining gas: 1039992.514 units remaining) [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000) ] + 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 11 (remaining gas: 1039992.504 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039992.459 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 13 (remaining gas: 1039992.444 units remaining) - [ (Some 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Some 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 14 (remaining gas: 1039992.429 units remaining) - [ {} - (Some 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ {} + (Some 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 16 (remaining gas: 1039992.414 units remaining) [ (Pair {} - (Some 0x0100000000000000000000000000000000000000000000000000000000000000)) ] + (Some 0x0100000000000000000000000000000000000000000000000000000000000000)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x00-(Some 0x010.0e44fc6f40.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x00-(Some 0x010.0e44fc6f40.out index b637f3a2ef..b8ff832fcd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x00-(Some 0x010.0e44fc6f40.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x00-(Some 0x010.0e44fc6f40.out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039992.524 units remaining) [ (Pair (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000000000000000000000000000) - None) ] + None) ] - location: 10 (remaining gas: 1039992.514 units remaining) [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000) ] + 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 11 (remaining gas: 1039992.504 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039992.459 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 13 (remaining gas: 1039992.444 units remaining) - [ (Some 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Some 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 14 (remaining gas: 1039992.429 units remaining) - [ {} - (Some 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ {} + (Some 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 16 (remaining gas: 1039992.414 units remaining) [ (Pair {} - (Some 0x0100000000000000000000000000000000000000000000000000000000000000)) ] + (Some 0x0100000000000000000000000000000000000000000000000000000000000000)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x010000-(Some 0.7e0ed229a3.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x010000-(Some 0.7e0ed229a3.out index 790d95b9c3..6a320b0b7d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x010000-(Some 0.7e0ed229a3.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_bls12_381_fr.tz-None-Pair 0x010000 0x010000-(Some 0.7e0ed229a3.out @@ -10,21 +10,21 @@ trace - location: 10 (remaining gas: 1039992.524 units remaining) [ (Pair (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 0x0100000000000000000000000000000000000000000000000000000000000000) - None) ] + None) ] - location: 10 (remaining gas: 1039992.514 units remaining) [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0100000000000000000000000000000000000000000000000000000000000000) ] + 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 11 (remaining gas: 1039992.504 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039992.459 units remaining) - [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 13 (remaining gas: 1039992.444 units remaining) - [ (Some 0x0200000000000000000000000000000000000000000000000000000000000000) ] + [ (Some 0x0200000000000000000000000000000000000000000000000000000000000000) ] - location: 14 (remaining gas: 1039992.429 units remaining) - [ {} - (Some 0x0200000000000000000000000000000000000000000000000000000000000000) ] + [ {} + (Some 0x0200000000000000000000000000000000000000000000000000000000000000) ] - location: 16 (remaining gas: 1039992.414 units remaining) [ (Pair {} - (Some 0x0200000000000000000000000000000000000000000000000000000000000000)) ] + (Some 0x0200000000000000000000000000000000000000000000000000000000000000)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair -100 100)-(Some \"1970.7c1b1e4e5b.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair -100 100)-(Some \"1970.7c1b1e4e5b.out" index 7ad05509fa..ff6f287ef4 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair -100 100)-(Some \"1970.7c1b1e4e5b.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair -100 100)-(Some \"1970.7c1b1e4e5b.out" @@ -8,29 +8,29 @@ big_map diff trace - location: 10 (remaining gas: 1039990.553 units remaining) - [ (Pair (Pair -100 "1970-01-01T00:01:40Z") None) ] + [ (Pair (Pair -100 "1970-01-01T00:01:40Z") None) ] - location: 10 (remaining gas: 1039990.543 units remaining) - [ (Pair -100 "1970-01-01T00:01:40Z") ] + [ (Pair -100 "1970-01-01T00:01:40Z") ] - location: 11 (remaining gas: 1039990.533 units remaining) - [ (Pair -100 "1970-01-01T00:01:40Z") - (Pair -100 "1970-01-01T00:01:40Z") ] + [ (Pair -100 "1970-01-01T00:01:40Z") + (Pair -100 "1970-01-01T00:01:40Z") ] - location: 12 (remaining gas: 1039990.523 units remaining) - [ -100 - (Pair -100 "1970-01-01T00:01:40Z") ] + [ -100 + (Pair -100 "1970-01-01T00:01:40Z") ] - location: 13 (remaining gas: 1039990.508 units remaining) - [ (Pair -100 "1970-01-01T00:01:40Z") ] + [ (Pair -100 "1970-01-01T00:01:40Z") ] - location: 15 (remaining gas: 1039990.498 units remaining) - [ "1970-01-01T00:01:40Z" ] + [ "1970-01-01T00:01:40Z" ] - location: 13 (remaining gas: 1039990.468 units remaining) - [ -100 - "1970-01-01T00:01:40Z" ] + [ -100 + "1970-01-01T00:01:40Z" ] - location: 16 (remaining gas: 1039990.413 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 17 (remaining gas: 1039990.398 units remaining) - [ (Some "1970-01-01T00:00:00Z") ] + [ (Some "1970-01-01T00:00:00Z") ] - location: 18 (remaining gas: 1039990.383 units remaining) - [ {} - (Some "1970-01-01T00:00:00Z") ] + [ {} + (Some "1970-01-01T00:00:00Z") ] - location: 20 (remaining gas: 1039990.368 units remaining) - [ (Pair {} (Some "1970-01-01T00:00:00Z")) ] + [ (Pair {} (Some "1970-01-01T00:00:00Z")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 0 \"1970-01-01T00:00:0.528ed42c01.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 0 \"1970-01-01T00:00:0.528ed42c01.out" index 2f84092b1d..a5ff0af6ce 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 0 \"1970-01-01T00:00:0.528ed42c01.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 0 \"1970-01-01T00:00:0.528ed42c01.out" @@ -8,29 +8,29 @@ big_map diff trace - location: 10 (remaining gas: 1039990.453 units remaining) - [ (Pair (Pair 0 "1970-01-01T00:00:00Z") None) ] + [ (Pair (Pair 0 "1970-01-01T00:00:00Z") None) ] - location: 10 (remaining gas: 1039990.443 units remaining) - [ (Pair 0 "1970-01-01T00:00:00Z") ] + [ (Pair 0 "1970-01-01T00:00:00Z") ] - location: 11 (remaining gas: 1039990.433 units remaining) - [ (Pair 0 "1970-01-01T00:00:00Z") - (Pair 0 "1970-01-01T00:00:00Z") ] + [ (Pair 0 "1970-01-01T00:00:00Z") + (Pair 0 "1970-01-01T00:00:00Z") ] - location: 12 (remaining gas: 1039990.423 units remaining) - [ 0 - (Pair 0 "1970-01-01T00:00:00Z") ] + [ 0 + (Pair 0 "1970-01-01T00:00:00Z") ] - location: 13 (remaining gas: 1039990.408 units remaining) - [ (Pair 0 "1970-01-01T00:00:00Z") ] + [ (Pair 0 "1970-01-01T00:00:00Z") ] - location: 15 (remaining gas: 1039990.398 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 13 (remaining gas: 1039990.368 units remaining) - [ 0 - "1970-01-01T00:00:00Z" ] + [ 0 + "1970-01-01T00:00:00Z" ] - location: 16 (remaining gas: 1039990.313 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 17 (remaining gas: 1039990.298 units remaining) - [ (Some "1970-01-01T00:00:00Z") ] + [ (Some "1970-01-01T00:00:00Z") ] - location: 18 (remaining gas: 1039990.283 units remaining) - [ {} - (Some "1970-01-01T00:00:00Z") ] + [ {} + (Some "1970-01-01T00:00:00Z") ] - location: 20 (remaining gas: 1039990.268 units remaining) - [ (Pair {} (Some "1970-01-01T00:00:00Z")) ] + [ (Pair {} (Some "1970-01-01T00:00:00Z")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 100 100)-(Some \"1970-.6566111ad2.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 100 100)-(Some \"1970-.6566111ad2.out" index cd54c3c542..afdaa65ea1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 100 100)-(Some \"1970-.6566111ad2.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_delta_timestamp.tz-None-(Pair 100 100)-(Some \"1970-.6566111ad2.out" @@ -8,29 +8,29 @@ big_map diff trace - location: 10 (remaining gas: 1039990.553 units remaining) - [ (Pair (Pair 100 "1970-01-01T00:01:40Z") None) ] + [ (Pair (Pair 100 "1970-01-01T00:01:40Z") None) ] - location: 10 (remaining gas: 1039990.543 units remaining) - [ (Pair 100 "1970-01-01T00:01:40Z") ] + [ (Pair 100 "1970-01-01T00:01:40Z") ] - location: 11 (remaining gas: 1039990.533 units remaining) - [ (Pair 100 "1970-01-01T00:01:40Z") - (Pair 100 "1970-01-01T00:01:40Z") ] + [ (Pair 100 "1970-01-01T00:01:40Z") + (Pair 100 "1970-01-01T00:01:40Z") ] - location: 12 (remaining gas: 1039990.523 units remaining) - [ 100 - (Pair 100 "1970-01-01T00:01:40Z") ] + [ 100 + (Pair 100 "1970-01-01T00:01:40Z") ] - location: 13 (remaining gas: 1039990.508 units remaining) - [ (Pair 100 "1970-01-01T00:01:40Z") ] + [ (Pair 100 "1970-01-01T00:01:40Z") ] - location: 15 (remaining gas: 1039990.498 units remaining) - [ "1970-01-01T00:01:40Z" ] + [ "1970-01-01T00:01:40Z" ] - location: 13 (remaining gas: 1039990.468 units remaining) - [ 100 - "1970-01-01T00:01:40Z" ] + [ 100 + "1970-01-01T00:01:40Z" ] - location: 16 (remaining gas: 1039990.413 units remaining) - [ "1970-01-01T00:03:20Z" ] + [ "1970-01-01T00:03:20Z" ] - location: 17 (remaining gas: 1039990.398 units remaining) - [ (Some "1970-01-01T00:03:20Z") ] + [ (Some "1970-01-01T00:03:20Z") ] - location: 18 (remaining gas: 1039990.383 units remaining) - [ {} - (Some "1970-01-01T00:03:20Z") ] + [ {} + (Some "1970-01-01T00:03:20Z") ] - location: 20 (remaining gas: 1039990.368 units remaining) - [ (Pair {} (Some "1970-01-01T00:03:20Z")) ] + [ (Pair {} (Some "1970-01-01T00:03:20Z")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair \"1970-01-01T00:00:00Z.72c424f3da.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair \"1970-01-01T00:00:00Z.72c424f3da.out" index 2ecbae14a5..9471de8485 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair \"1970-01-01T00:00:00Z.72c424f3da.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair \"1970-01-01T00:00:00Z.72c424f3da.out" @@ -8,29 +8,29 @@ big_map diff trace - location: 10 (remaining gas: 1039990.453 units remaining) - [ (Pair (Pair "1970-01-01T00:00:00Z" 0) None) ] + [ (Pair (Pair "1970-01-01T00:00:00Z" 0) None) ] - location: 10 (remaining gas: 1039990.443 units remaining) - [ (Pair "1970-01-01T00:00:00Z" 0) ] + [ (Pair "1970-01-01T00:00:00Z" 0) ] - location: 11 (remaining gas: 1039990.433 units remaining) - [ (Pair "1970-01-01T00:00:00Z" 0) - (Pair "1970-01-01T00:00:00Z" 0) ] + [ (Pair "1970-01-01T00:00:00Z" 0) + (Pair "1970-01-01T00:00:00Z" 0) ] - location: 12 (remaining gas: 1039990.423 units remaining) - [ "1970-01-01T00:00:00Z" - (Pair "1970-01-01T00:00:00Z" 0) ] + [ "1970-01-01T00:00:00Z" + (Pair "1970-01-01T00:00:00Z" 0) ] - location: 13 (remaining gas: 1039990.408 units remaining) - [ (Pair "1970-01-01T00:00:00Z" 0) ] + [ (Pair "1970-01-01T00:00:00Z" 0) ] - location: 15 (remaining gas: 1039990.398 units remaining) - [ 0 ] + [ 0 ] - location: 13 (remaining gas: 1039990.368 units remaining) - [ "1970-01-01T00:00:00Z" - 0 ] + [ "1970-01-01T00:00:00Z" + 0 ] - location: 16 (remaining gas: 1039990.313 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 17 (remaining gas: 1039990.298 units remaining) - [ (Some "1970-01-01T00:00:00Z") ] + [ (Some "1970-01-01T00:00:00Z") ] - location: 18 (remaining gas: 1039990.283 units remaining) - [ {} - (Some "1970-01-01T00:00:00Z") ] + [ {} + (Some "1970-01-01T00:00:00Z") ] - location: 20 (remaining gas: 1039990.268 units remaining) - [ (Pair {} (Some "1970-01-01T00:00:00Z")) ] + [ (Pair {} (Some "1970-01-01T00:00:00Z")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 -100)-(Some \"1970.7c4b12e9aa.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 -100)-(Some \"1970.7c4b12e9aa.out" index 951cae1f28..fd3b1fe3bc 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 -100)-(Some \"1970.7c4b12e9aa.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 -100)-(Some \"1970.7c4b12e9aa.out" @@ -8,29 +8,29 @@ big_map diff trace - location: 10 (remaining gas: 1039990.553 units remaining) - [ (Pair (Pair "1970-01-01T00:01:40Z" -100) None) ] + [ (Pair (Pair "1970-01-01T00:01:40Z" -100) None) ] - location: 10 (remaining gas: 1039990.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) ] + [ (Pair "1970-01-01T00:01:40Z" -100) ] - location: 11 (remaining gas: 1039990.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) - (Pair "1970-01-01T00:01:40Z" -100) ] + [ (Pair "1970-01-01T00:01:40Z" -100) + (Pair "1970-01-01T00:01:40Z" -100) ] - location: 12 (remaining gas: 1039990.523 units remaining) - [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" -100) ] + [ "1970-01-01T00:01:40Z" + (Pair "1970-01-01T00:01:40Z" -100) ] - location: 13 (remaining gas: 1039990.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) ] + [ (Pair "1970-01-01T00:01:40Z" -100) ] - location: 15 (remaining gas: 1039990.498 units remaining) - [ -100 ] + [ -100 ] - location: 13 (remaining gas: 1039990.468 units remaining) - [ "1970-01-01T00:01:40Z" - -100 ] + [ "1970-01-01T00:01:40Z" + -100 ] - location: 16 (remaining gas: 1039990.413 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 17 (remaining gas: 1039990.398 units remaining) - [ (Some "1970-01-01T00:00:00Z") ] + [ (Some "1970-01-01T00:00:00Z") ] - location: 18 (remaining gas: 1039990.383 units remaining) - [ {} - (Some "1970-01-01T00:00:00Z") ] + [ {} + (Some "1970-01-01T00:00:00Z") ] - location: 20 (remaining gas: 1039990.368 units remaining) - [ (Pair {} (Some "1970-01-01T00:00:00Z")) ] + [ (Pair {} (Some "1970-01-01T00:00:00Z")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 100)-(Some \"1970-.af32743640.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 100)-(Some \"1970-.af32743640.out" index ccd1b962d0..6024b7ff6c 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 100)-(Some \"1970-.af32743640.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[add_timestamp_delta.tz-None-(Pair 100 100)-(Some \"1970-.af32743640.out" @@ -8,29 +8,29 @@ big_map diff trace - location: 10 (remaining gas: 1039990.553 units remaining) - [ (Pair (Pair "1970-01-01T00:01:40Z" 100) None) ] + [ (Pair (Pair "1970-01-01T00:01:40Z" 100) None) ] - location: 10 (remaining gas: 1039990.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) ] + [ (Pair "1970-01-01T00:01:40Z" 100) ] - location: 11 (remaining gas: 1039990.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) - (Pair "1970-01-01T00:01:40Z" 100) ] + [ (Pair "1970-01-01T00:01:40Z" 100) + (Pair "1970-01-01T00:01:40Z" 100) ] - location: 12 (remaining gas: 1039990.523 units remaining) - [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" 100) ] + [ "1970-01-01T00:01:40Z" + (Pair "1970-01-01T00:01:40Z" 100) ] - location: 13 (remaining gas: 1039990.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) ] + [ (Pair "1970-01-01T00:01:40Z" 100) ] - location: 15 (remaining gas: 1039990.498 units remaining) - [ 100 ] + [ 100 ] - location: 13 (remaining gas: 1039990.468 units remaining) - [ "1970-01-01T00:01:40Z" - 100 ] + [ "1970-01-01T00:01:40Z" + 100 ] - location: 16 (remaining gas: 1039990.413 units remaining) - [ "1970-01-01T00:03:20Z" ] + [ "1970-01-01T00:03:20Z" ] - location: 17 (remaining gas: 1039990.398 units remaining) - [ (Some "1970-01-01T00:03:20Z") ] + [ (Some "1970-01-01T00:03:20Z") ] - location: 18 (remaining gas: 1039990.383 units remaining) - [ {} - (Some "1970-01-01T00:03:20Z") ] + [ {} + (Some "1970-01-01T00:03:20Z") ] - location: 20 (remaining gas: 1039990.368 units remaining) - [ (Pair {} (Some "1970-01-01T00:03:20Z")) ] + [ (Pair {} (Some "1970-01-01T00:03:20Z")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[address.tz-None-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[address.tz-None-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" index e280de38f1..48d573875f 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[address.tz-None-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[address.tz-None-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-.f9045c3a04.out" @@ -8,16 +8,16 @@ big_map diff trace - location: 9 (remaining gas: 1039343.609 units remaining) - [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" None) ] + [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" None) ] - location: 9 (remaining gas: 1039343.599 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 10 (remaining gas: 1039343.589 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 11 (remaining gas: 1039343.574 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 12 (remaining gas: 1039343.559 units remaining) - [ {} - (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ {} + (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 14 (remaining gas: 1039343.544 units remaining) - [ (Pair {} (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5")) ] + [ (Pair {} (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5")) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False False)-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False False)-(Some False)].out index bee19dea56..a4fc8fe3f1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False False)-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False False)-(Some False)].out @@ -8,24 +8,24 @@ big_map diff trace - location: 10 (remaining gas: 1039991.303 units remaining) - [ (Pair (Pair False False) None) ] + [ (Pair (Pair False False) None) ] - location: 10 (remaining gas: 1039991.293 units remaining) - [ (Pair False False) ] + [ (Pair False False) ] - location: 11 (remaining gas: 1039991.283 units remaining) - [ False - False ] + [ False + False ] - location: 12 (remaining gas: 1039991.263 units remaining) - [ False ] + [ False ] - location: 13 (remaining gas: 1039991.248 units remaining) - [ (Some False) ] + [ (Some False) ] - location: 14 (remaining gas: 1039991.233 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 16 (remaining gas: 1039991.218 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 17 (remaining gas: 1039991.208 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 18 (remaining gas: 1039991.193 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False True)-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False True)-(Some False)].out index 0cca8c86d4..1aebaad3bc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False True)-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair False True)-(Some False)].out @@ -8,24 +8,24 @@ big_map diff trace - location: 10 (remaining gas: 1039991.303 units remaining) - [ (Pair (Pair False True) None) ] + [ (Pair (Pair False True) None) ] - location: 10 (remaining gas: 1039991.293 units remaining) - [ (Pair False True) ] + [ (Pair False True) ] - location: 11 (remaining gas: 1039991.283 units remaining) - [ False - True ] + [ False + True ] - location: 12 (remaining gas: 1039991.263 units remaining) - [ False ] + [ False ] - location: 13 (remaining gas: 1039991.248 units remaining) - [ (Some False) ] + [ (Some False) ] - location: 14 (remaining gas: 1039991.233 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 16 (remaining gas: 1039991.218 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 17 (remaining gas: 1039991.208 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 18 (remaining gas: 1039991.193 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True False)-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True False)-(Some False)].out index 274ee1e111..bb922eddad 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True False)-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True False)-(Some False)].out @@ -8,24 +8,24 @@ big_map diff trace - location: 10 (remaining gas: 1039991.303 units remaining) - [ (Pair (Pair True False) None) ] + [ (Pair (Pair True False) None) ] - location: 10 (remaining gas: 1039991.293 units remaining) - [ (Pair True False) ] + [ (Pair True False) ] - location: 11 (remaining gas: 1039991.283 units remaining) - [ True - False ] + [ True + False ] - location: 12 (remaining gas: 1039991.263 units remaining) - [ False ] + [ False ] - location: 13 (remaining gas: 1039991.248 units remaining) - [ (Some False) ] + [ (Some False) ] - location: 14 (remaining gas: 1039991.233 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 16 (remaining gas: 1039991.218 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 17 (remaining gas: 1039991.208 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 18 (remaining gas: 1039991.193 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True True)-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True True)-(Some True)].out index 9aacb64a52..2d10322938 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True True)-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and.tz-None-(Pair True True)-(Some True)].out @@ -8,24 +8,24 @@ big_map diff trace - location: 10 (remaining gas: 1039991.303 units remaining) - [ (Pair (Pair True True) None) ] + [ (Pair (Pair True True) None) ] - location: 10 (remaining gas: 1039991.293 units remaining) - [ (Pair True True) ] + [ (Pair True True) ] - location: 11 (remaining gas: 1039991.283 units remaining) - [ True - True ] + [ True + True ] - location: 12 (remaining gas: 1039991.263 units remaining) - [ True ] + [ True ] - location: 13 (remaining gas: 1039991.248 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 14 (remaining gas: 1039991.233 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 16 (remaining gas: 1039991.218 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] - location: 17 (remaining gas: 1039991.208 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 18 (remaining gas: 1039991.193 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_binary.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_binary.tz-Unit-Unit-Unit].out index cfe6aa0f79..0337fc6457 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_binary.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_binary.tz-Unit-Unit-Unit].out @@ -8,86 +8,86 @@ big_map diff trace - location: 7 (remaining gas: 1039960.451 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039960.441 units remaining) [ ] - location: 8 (remaining gas: 1039960.431 units remaining) - [ 5 ] + [ 5 ] - location: 11 (remaining gas: 1039960.421 units remaining) - [ 6 - 5 ] + [ 6 + 5 ] - location: 14 (remaining gas: 1039960.371 units remaining) - [ 4 ] + [ 4 ] - location: 15 (remaining gas: 1039960.361 units remaining) - [ 4 - 4 ] + [ 4 + 4 ] - location: 20 (remaining gas: 1039960.326 units remaining) - [ 0 ] + [ 0 ] - location: 21 (remaining gas: 1039960.311 units remaining) - [ True ] + [ True ] - location: 22 (remaining gas: 1039960.301 units remaining) [ ] - location: 22 (remaining gas: 1039960.286 units remaining) [ ] - location: 28 (remaining gas: 1039960.276 units remaining) - [ 6 ] + [ 6 ] - location: 31 (remaining gas: 1039960.266 units remaining) - [ 5 - 6 ] + [ 5 + 6 ] - location: 34 (remaining gas: 1039960.216 units remaining) - [ 4 ] + [ 4 ] - location: 35 (remaining gas: 1039960.206 units remaining) - [ 4 - 4 ] + [ 4 + 4 ] - location: 40 (remaining gas: 1039960.171 units remaining) - [ 0 ] + [ 0 ] - location: 41 (remaining gas: 1039960.156 units remaining) - [ True ] + [ True ] - location: 42 (remaining gas: 1039960.146 units remaining) [ ] - location: 42 (remaining gas: 1039960.131 units remaining) [ ] - location: 48 (remaining gas: 1039960.121 units remaining) - [ 12 ] + [ 12 ] - location: 51 (remaining gas: 1039960.111 units remaining) - [ -1 - 12 ] + [ -1 + 12 ] - location: 54 (remaining gas: 1039960.061 units remaining) - [ 12 ] + [ 12 ] - location: 55 (remaining gas: 1039960.051 units remaining) - [ 12 - 12 ] + [ 12 + 12 ] - location: 60 (remaining gas: 1039960.016 units remaining) - [ 0 ] + [ 0 ] - location: 61 (remaining gas: 1039960.001 units remaining) - [ True ] + [ True ] - location: 62 (remaining gas: 1039959.991 units remaining) [ ] - location: 62 (remaining gas: 1039959.976 units remaining) [ ] - location: 68 (remaining gas: 1039959.966 units remaining) - [ 12 ] + [ 12 ] - location: 71 (remaining gas: 1039959.956 units remaining) - [ -5 - 12 ] + [ -5 + 12 ] - location: 74 (remaining gas: 1039959.906 units remaining) - [ 8 ] + [ 8 ] - location: 75 (remaining gas: 1039959.896 units remaining) - [ 8 - 8 ] + [ 8 + 8 ] - location: 80 (remaining gas: 1039959.861 units remaining) - [ 0 ] + [ 0 ] - location: 81 (remaining gas: 1039959.846 units remaining) - [ True ] + [ True ] - location: 82 (remaining gas: 1039959.836 units remaining) [ ] - location: 82 (remaining gas: 1039959.821 units remaining) [ ] - location: 88 (remaining gas: 1039959.811 units remaining) - [ Unit ] + [ Unit ] - location: 89 (remaining gas: 1039959.796 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 91 (remaining gas: 1039959.781 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False False)-False].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False False)-False].out index 4c5abc8387..33b2a0f8b9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False False)-False].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False False)-False].out @@ -8,17 +8,17 @@ big_map diff trace - location: 9 (remaining gas: 1039993.804 units remaining) - [ (Pair (Pair False False) False) ] + [ (Pair (Pair False False) False) ] - location: 9 (remaining gas: 1039993.794 units remaining) - [ (Pair False False) ] + [ (Pair False False) ] - location: 10 (remaining gas: 1039993.784 units remaining) - [ False - False ] + [ False + False ] - location: 11 (remaining gas: 1039993.764 units remaining) - [ False ] + [ False ] - location: 12 (remaining gas: 1039993.749 units remaining) - [ {} - False ] + [ {} + False ] - location: 14 (remaining gas: 1039993.734 units remaining) - [ (Pair {} False) ] + [ (Pair {} False) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False True)-False].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False True)-False].out index ef555e8253..b774e9f071 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False True)-False].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair False True)-False].out @@ -8,17 +8,17 @@ big_map diff trace - location: 9 (remaining gas: 1039993.804 units remaining) - [ (Pair (Pair False True) False) ] + [ (Pair (Pair False True) False) ] - location: 9 (remaining gas: 1039993.794 units remaining) - [ (Pair False True) ] + [ (Pair False True) ] - location: 10 (remaining gas: 1039993.784 units remaining) - [ False - True ] + [ False + True ] - location: 11 (remaining gas: 1039993.764 units remaining) - [ False ] + [ False ] - location: 12 (remaining gas: 1039993.749 units remaining) - [ {} - False ] + [ {} + False ] - location: 14 (remaining gas: 1039993.734 units remaining) - [ (Pair {} False) ] + [ (Pair {} False) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True False)-False].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True False)-False].out index b654eef473..c60ecc28d9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True False)-False].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True False)-False].out @@ -8,17 +8,17 @@ big_map diff trace - location: 9 (remaining gas: 1039993.804 units remaining) - [ (Pair (Pair True False) False) ] + [ (Pair (Pair True False) False) ] - location: 9 (remaining gas: 1039993.794 units remaining) - [ (Pair True False) ] + [ (Pair True False) ] - location: 10 (remaining gas: 1039993.784 units remaining) - [ True - False ] + [ True + False ] - location: 11 (remaining gas: 1039993.764 units remaining) - [ False ] + [ False ] - location: 12 (remaining gas: 1039993.749 units remaining) - [ {} - False ] + [ {} + False ] - location: 14 (remaining gas: 1039993.734 units remaining) - [ (Pair {} False) ] + [ (Pair {} False) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True True)-True].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True True)-True].out index 63ef601a19..1b17ddce00 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True True)-True].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[and_logical_1.tz-False-(Pair True True)-True].out @@ -8,17 +8,17 @@ big_map diff trace - location: 9 (remaining gas: 1039993.804 units remaining) - [ (Pair (Pair True True) False) ] + [ (Pair (Pair True True) False) ] - location: 9 (remaining gas: 1039993.794 units remaining) - [ (Pair True True) ] + [ (Pair True True) ] - location: 10 (remaining gas: 1039993.784 units remaining) - [ True - True ] + [ True + True ] - location: 11 (remaining gas: 1039993.764 units remaining) - [ True ] + [ True ] - location: 12 (remaining gas: 1039993.749 units remaining) - [ {} - True ] + [ {} + True ] - location: 14 (remaining gas: 1039993.734 units remaining) - [ (Pair {} True) ] + [ (Pair {} True) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out index 1a20af3830..78cc5b8253 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 111) ] + [ (Pair Unit 111) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039774.922 units remaining) - [ 4000000000000 ] + [ 4000000000000 ] - location: 9 (remaining gas: 1039774.907 units remaining) - [ {} - 4000000000000 ] + [ {} + 4000000000000 ] - location: 11 (remaining gas: 1039774.892 units remaining) - [ (Pair {} 4000000000000) ] + [ (Pair {} 4000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out index 8dd7f60a8a..bd0dba8d0d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.2292d6ce17.out @@ -9,35 +9,35 @@ big_map diff Set map(4)[0] to 1 trace - location: 12 (remaining gas: 1039987.011 units remaining) - [ (Pair 1 { Elt 0 1 } None) ] + [ (Pair 1 { Elt 0 1 } None) ] - location: 12 (remaining gas: 1039987.001 units remaining) - [ 1 - (Pair { Elt 0 1 } None) ] + [ 1 + (Pair { Elt 0 1 } None) ] - location: 13 (remaining gas: 1039986.986 units remaining) - [ (Pair { Elt 0 1 } None) ] + [ (Pair { Elt 0 1 } None) ] - location: 15 (remaining gas: 1039986.976 units remaining) - [ { Elt 0 1 } ] + [ { Elt 0 1 } ] - location: 16 (remaining gas: 1039986.966 units remaining) - [ { Elt 0 1 } - { Elt 0 1 } ] + [ { Elt 0 1 } + { Elt 0 1 } ] - location: 13 (remaining gas: 1039986.936 units remaining) - [ 1 - { Elt 0 1 } - { Elt 0 1 } ] + [ 1 + { Elt 0 1 } + { Elt 0 1 } ] - location: 17 (remaining gas: 1039986.163 units remaining) - [ False - { Elt 0 1 } ] + [ False + { Elt 0 1 } ] - location: 18 (remaining gas: 1039986.148 units remaining) - [ (Some False) - { Elt 0 1 } ] + [ (Some False) + { Elt 0 1 } ] - location: 19 (remaining gas: 1039986.138 units remaining) - [ { Elt 0 1 } - (Some False) ] + [ { Elt 0 1 } + (Some False) ] - location: 20 (remaining gas: 1039986.123 units remaining) - [ (Pair { Elt 0 1 } (Some False)) ] + [ (Pair { Elt 0 1 } (Some False)) ] - location: 21 (remaining gas: 1039986.108 units remaining) - [ {} - (Pair { Elt 0 1 } (Some False)) ] + [ {} + (Pair { Elt 0 1 } (Some False)) ] - location: 23 (remaining gas: 1039986.093 units remaining) - [ (Pair {} { Elt 0 1 } (Some False)) ] + [ (Pair {} { Elt 0 1 } (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out index 2ace6b8de4..26dd95fdaf 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair 4 (S.dda583f5e9.out @@ -9,35 +9,35 @@ big_map diff Set map(4)[0] to 1 trace - location: 12 (remaining gas: 1039987.011 units remaining) - [ (Pair 1 { Elt 0 1 } None) ] + [ (Pair 1 { Elt 0 1 } None) ] - location: 12 (remaining gas: 1039987.001 units remaining) - [ 1 - (Pair { Elt 0 1 } None) ] + [ 1 + (Pair { Elt 0 1 } None) ] - location: 13 (remaining gas: 1039986.986 units remaining) - [ (Pair { Elt 0 1 } None) ] + [ (Pair { Elt 0 1 } None) ] - location: 15 (remaining gas: 1039986.976 units remaining) - [ { Elt 0 1 } ] + [ { Elt 0 1 } ] - location: 16 (remaining gas: 1039986.966 units remaining) - [ { Elt 0 1 } - { Elt 0 1 } ] + [ { Elt 0 1 } + { Elt 0 1 } ] - location: 13 (remaining gas: 1039986.936 units remaining) - [ 1 - { Elt 0 1 } - { Elt 0 1 } ] + [ 1 + { Elt 0 1 } + { Elt 0 1 } ] - location: 17 (remaining gas: 1039986.163 units remaining) - [ False - { Elt 0 1 } ] + [ False + { Elt 0 1 } ] - location: 18 (remaining gas: 1039986.148 units remaining) - [ (Some False) - { Elt 0 1 } ] + [ (Some False) + { Elt 0 1 } ] - location: 19 (remaining gas: 1039986.138 units remaining) - [ { Elt 0 1 } - (Some False) ] + [ { Elt 0 1 } + (Some False) ] - location: 20 (remaining gas: 1039986.123 units remaining) - [ (Pair { Elt 0 1 } (Some False)) ] + [ (Pair { Elt 0 1 } (Some False)) ] - location: 21 (remaining gas: 1039986.108 units remaining) - [ {} - (Pair { Elt 0 1 } (Some False)) ] + [ {} + (Pair { Elt 0 1 } (Some False)) ] - location: 23 (remaining gas: 1039986.093 units remaining) - [ (Pair {} { Elt 0 1 } (Some False)) ] + [ (Pair {} { Elt 0 1 } (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out index e9cc9b9806..d8bf969f3e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.6d753598ba.out @@ -9,35 +9,35 @@ big_map diff Set map(4)[1] to 0 trace - location: 12 (remaining gas: 1039987.011 units remaining) - [ (Pair 1 { Elt 1 0 } None) ] + [ (Pair 1 { Elt 1 0 } None) ] - location: 12 (remaining gas: 1039987.001 units remaining) - [ 1 - (Pair { Elt 1 0 } None) ] + [ 1 + (Pair { Elt 1 0 } None) ] - location: 13 (remaining gas: 1039986.986 units remaining) - [ (Pair { Elt 1 0 } None) ] + [ (Pair { Elt 1 0 } None) ] - location: 15 (remaining gas: 1039986.976 units remaining) - [ { Elt 1 0 } ] + [ { Elt 1 0 } ] - location: 16 (remaining gas: 1039986.966 units remaining) - [ { Elt 1 0 } - { Elt 1 0 } ] + [ { Elt 1 0 } + { Elt 1 0 } ] - location: 13 (remaining gas: 1039986.936 units remaining) - [ 1 - { Elt 1 0 } - { Elt 1 0 } ] + [ 1 + { Elt 1 0 } + { Elt 1 0 } ] - location: 17 (remaining gas: 1039986.163 units remaining) - [ True - { Elt 1 0 } ] + [ True + { Elt 1 0 } ] - location: 18 (remaining gas: 1039986.148 units remaining) - [ (Some True) - { Elt 1 0 } ] + [ (Some True) + { Elt 1 0 } ] - location: 19 (remaining gas: 1039986.138 units remaining) - [ { Elt 1 0 } - (Some True) ] + [ { Elt 1 0 } + (Some True) ] - location: 20 (remaining gas: 1039986.123 units remaining) - [ (Pair { Elt 1 0 } (Some True)) ] + [ (Pair { Elt 1 0 } (Some True)) ] - location: 21 (remaining gas: 1039986.108 units remaining) - [ {} - (Pair { Elt 1 0 } (Some True)) ] + [ {} + (Pair { Elt 1 0 } (Some True)) ] - location: 23 (remaining gas: 1039986.093 units remaining) - [ (Pair {} { Elt 1 0 } (Some True)) ] + [ (Pair {} { Elt 1 0 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.73700321f8.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.73700321f8.out index 21fdc5a447..23d66d24d5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.73700321f8.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair 4 (S.73700321f8.out @@ -9,35 +9,35 @@ big_map diff Set map(4)[1] to 0 trace - location: 12 (remaining gas: 1039987.011 units remaining) - [ (Pair 1 { Elt 1 0 } None) ] + [ (Pair 1 { Elt 1 0 } None) ] - location: 12 (remaining gas: 1039987.001 units remaining) - [ 1 - (Pair { Elt 1 0 } None) ] + [ 1 + (Pair { Elt 1 0 } None) ] - location: 13 (remaining gas: 1039986.986 units remaining) - [ (Pair { Elt 1 0 } None) ] + [ (Pair { Elt 1 0 } None) ] - location: 15 (remaining gas: 1039986.976 units remaining) - [ { Elt 1 0 } ] + [ { Elt 1 0 } ] - location: 16 (remaining gas: 1039986.966 units remaining) - [ { Elt 1 0 } - { Elt 1 0 } ] + [ { Elt 1 0 } + { Elt 1 0 } ] - location: 13 (remaining gas: 1039986.936 units remaining) - [ 1 - { Elt 1 0 } - { Elt 1 0 } ] + [ 1 + { Elt 1 0 } + { Elt 1 0 } ] - location: 17 (remaining gas: 1039986.163 units remaining) - [ True - { Elt 1 0 } ] + [ True + { Elt 1 0 } ] - location: 18 (remaining gas: 1039986.148 units remaining) - [ (Some True) - { Elt 1 0 } ] + [ (Some True) + { Elt 1 0 } ] - location: 19 (remaining gas: 1039986.138 units remaining) - [ { Elt 1 0 } - (Some True) ] + [ { Elt 1 0 } + (Some True) ] - location: 20 (remaining gas: 1039986.123 units remaining) - [ (Pair { Elt 1 0 } (Some True)) ] + [ (Pair { Elt 1 0 } (Some True)) ] - location: 21 (remaining gas: 1039986.108 units remaining) - [ {} - (Pair { Elt 1 0 } (Some True)) ] + [ {} + (Pair { Elt 1 0 } (Some True)) ] - location: 23 (remaining gas: 1039986.093 units remaining) - [ (Pair {} { Elt 1 0 } (Some True)) ] + [ (Pair {} { Elt 1 0 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.1182eca937.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.1182eca937.out index a2facc759a..cc4ce7a2cb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.1182eca937.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.1182eca937.out @@ -10,35 +10,35 @@ big_map diff Set map(4)[2] to 11 trace - location: 12 (remaining gas: 1039985.980 units remaining) - [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 1 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 1 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 1 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 1 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) - [ True - { Elt 1 4 ; Elt 2 11 } ] + [ True + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039985.116 units remaining) - [ (Some True) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some True) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039985.106 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some True) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some True) ] - location: 20 (remaining gas: 1039985.091 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 21 (remaining gas: 1039985.076 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 23 (remaining gas: 1039985.061 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out index 772b053b45..c89a3f0e40 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1.2ea67af009.out @@ -10,35 +10,35 @@ big_map diff Set map(4)[2] to 11 trace - location: 12 (remaining gas: 1039985.980 units remaining) - [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 1 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 1 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 1 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 1 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) - [ True - { Elt 1 4 ; Elt 2 11 } ] + [ True + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039985.116 units remaining) - [ (Some True) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some True) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039985.106 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some True) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some True) ] - location: 20 (remaining gas: 1039985.091 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 21 (remaining gas: 1039985.076 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 23 (remaining gas: 1039985.061 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.1eead33885.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.1eead33885.out index 4e0e0c3669..e7337b2044 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.1eead33885.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.1eead33885.out @@ -10,35 +10,35 @@ big_map diff Set map(4)[2] to 11 trace - location: 12 (remaining gas: 1039985.980 units remaining) - [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 2 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 2 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 2 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 2 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) - [ True - { Elt 1 4 ; Elt 2 11 } ] + [ True + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039985.116 units remaining) - [ (Some True) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some True) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039985.106 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some True) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some True) ] - location: 20 (remaining gas: 1039985.091 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 21 (remaining gas: 1039985.076 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 23 (remaining gas: 1039985.061 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out index 3eb04b7638..2e95aa6a1e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2.47f55c94c8.out @@ -10,35 +10,35 @@ big_map diff Set map(4)[2] to 11 trace - location: 12 (remaining gas: 1039985.980 units remaining) - [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 2 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 2 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 2 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 2 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) - [ True - { Elt 1 4 ; Elt 2 11 } ] + [ True + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039985.116 units remaining) - [ (Some True) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some True) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039985.106 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some True) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some True) ] - location: 20 (remaining gas: 1039985.091 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 21 (remaining gas: 1039985.076 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 23 (remaining gas: 1039985.061 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out index 70dfe5d4de..5ffb855ef9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.7f1f2ab27d.out @@ -10,35 +10,35 @@ big_map diff Set map(4)[2] to 11 trace - location: 12 (remaining gas: 1039985.980 units remaining) - [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 3 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 3 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 3 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 3 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) - [ False - { Elt 1 4 ; Elt 2 11 } ] + [ False + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039985.116 units remaining) - [ (Some False) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some False) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039985.106 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some False) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some False) ] - location: 20 (remaining gas: 1039985.091 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] - location: 21 (remaining gas: 1039985.076 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] - location: 23 (remaining gas: 1039985.061 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out index 953b10d7c0..4f4172fc54 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3.a3c5c126ce.out @@ -10,35 +10,35 @@ big_map diff Set map(4)[2] to 11 trace - location: 12 (remaining gas: 1039985.980 units remaining) - [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039985.970 units remaining) - [ 3 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 3 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039985.955 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039985.945 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039985.935 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039985.905 units remaining) - [ 3 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 3 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039985.131 units remaining) - [ False - { Elt 1 4 ; Elt 2 11 } ] + [ False + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039985.116 units remaining) - [ (Some False) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some False) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039985.106 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some False) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some False) ] - location: 20 (remaining gas: 1039985.091 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] - location: 21 (remaining gas: 1039985.076 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] - location: 23 (remaining gas: 1039985.061 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))0].out index e6139cb929..966472a96e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))0].out @@ -8,35 +8,35 @@ big_map diff New map(4) of type (big_map nat nat) trace - location: 12 (remaining gas: 1039988.004 units remaining) - [ (Pair 1 {} None) ] + [ (Pair 1 {} None) ] - location: 12 (remaining gas: 1039987.994 units remaining) - [ 1 - (Pair {} None) ] + [ 1 + (Pair {} None) ] - location: 13 (remaining gas: 1039987.979 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039987.969 units remaining) - [ {} ] + [ {} ] - location: 16 (remaining gas: 1039987.959 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039987.929 units remaining) - [ 1 - {} - {} ] + [ 1 + {} + {} ] - location: 17 (remaining gas: 1039987.158 units remaining) - [ False - {} ] + [ False + {} ] - location: 18 (remaining gas: 1039987.143 units remaining) - [ (Some False) - {} ] + [ (Some False) + {} ] - location: 19 (remaining gas: 1039987.133 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 20 (remaining gas: 1039987.118 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 21 (remaining gas: 1039987.103 units remaining) - [ {} - (Pair {} (Some False)) ] + [ {} + (Pair {} (Some False)) ] - location: 23 (remaining gas: 1039987.088 units remaining) - [ (Pair {} {} (Some False)) ] + [ (Pair {} {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))1].out index d0348a66ef..fe8b9fb964 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_nat.tz-(Pair {} None)-1-(Pair 4 (Some False))1].out @@ -8,35 +8,35 @@ big_map diff New map(4) of type (big_map nat nat) trace - location: 12 (remaining gas: 1039988.004 units remaining) - [ (Pair 1 {} None) ] + [ (Pair 1 {} None) ] - location: 12 (remaining gas: 1039987.994 units remaining) - [ 1 - (Pair {} None) ] + [ 1 + (Pair {} None) ] - location: 13 (remaining gas: 1039987.979 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039987.969 units remaining) - [ {} ] + [ {} ] - location: 16 (remaining gas: 1039987.959 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039987.929 units remaining) - [ 1 - {} - {} ] + [ 1 + {} + {} ] - location: 17 (remaining gas: 1039987.158 units remaining) - [ False - {} ] + [ False + {} ] - location: 18 (remaining gas: 1039987.143 units remaining) - [ (Some False) - {} ] + [ (Some False) + {} ] - location: 19 (remaining gas: 1039987.133 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 20 (remaining gas: 1039987.118 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 21 (remaining gas: 1039987.103 units remaining) - [ {} - (Pair {} (Some False)) ] + [ {} + (Pair {} (Some False)) ] - location: 23 (remaining gas: 1039987.088 units remaining) - [ (Pair {} {} (Some False)) ] + [ (Pair {} {} (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" index 65b757d5b6..7ca3059033 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.4be99ce05d.out" @@ -10,35 +10,35 @@ big_map diff Set map(4)["foo"] to 11 trace - location: 12 (remaining gas: 1039985.438 units remaining) - [ (Pair "baz" { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair "baz" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039985.428 units remaining) - [ "baz" - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ "baz" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039985.413 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039985.403 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039985.393 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039985.363 units remaining) - [ "baz" - { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ "baz" + { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039984.384 units remaining) - [ False - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ False + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 18 (remaining gas: 1039984.369 units remaining) - [ (Some False) - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ (Some False) + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 19 (remaining gas: 1039984.359 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - (Some False) ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + (Some False) ] - location: 20 (remaining gas: 1039984.344 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] - location: 21 (remaining gas: 1039984.329 units remaining) - [ {} - (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] + [ {} + (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] - location: 23 (remaining gas: 1039984.314 units remaining) - [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] + [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" index a1cfb1a035..3a8da63983 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.50c0e0ff8b.out" @@ -10,35 +10,35 @@ big_map diff Set map(4)["foo"] to 11 trace - location: 12 (remaining gas: 1039985.438 units remaining) - [ (Pair "foo" { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair "foo" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039985.428 units remaining) - [ "foo" - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ "foo" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039985.413 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039985.403 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039985.393 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039985.363 units remaining) - [ "foo" - { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ "foo" + { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039984.384 units remaining) - [ True - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ True + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 18 (remaining gas: 1039984.369 units remaining) - [ (Some True) - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ (Some True) + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 19 (remaining gas: 1039984.359 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - (Some True) ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + (Some True) ] - location: 20 (remaining gas: 1039984.344 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] - location: 21 (remaining gas: 1039984.329 units remaining) - [ {} - (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ {} + (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] - location: 23 (remaining gas: 1039984.314 units remaining) - [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" index 47519a4889..43f9d8e9dd 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 1.775c22b027.out" @@ -10,35 +10,35 @@ big_map diff Set map(4)["foo"] to 11 trace - location: 12 (remaining gas: 1039985.438 units remaining) - [ (Pair "bar" { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair "bar" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039985.428 units remaining) - [ "bar" - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ "bar" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039985.413 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039985.403 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039985.393 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039985.363 units remaining) - [ "bar" - { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ "bar" + { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039984.384 units remaining) - [ True - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ True + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 18 (remaining gas: 1039984.369 units remaining) - [ (Some True) - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ (Some True) + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 19 (remaining gas: 1039984.359 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - (Some True) ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + (Some True) ] - location: 20 (remaining gas: 1039984.344 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] - location: 21 (remaining gas: 1039984.329 units remaining) - [ {} - (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ {} + (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] - location: 23 (remaining gas: 1039984.314 units remaining) - [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\".968709d39d.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\".968709d39d.out" index 86a1d85a15..53bc0976d1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\".968709d39d.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\".968709d39d.out" @@ -9,35 +9,35 @@ big_map diff Set map(4)["foo"] to 0 trace - location: 12 (remaining gas: 1039986.718 units remaining) - [ (Pair "foo" { Elt "foo" 0 } None) ] + [ (Pair "foo" { Elt "foo" 0 } None) ] - location: 12 (remaining gas: 1039986.708 units remaining) - [ "foo" - (Pair { Elt "foo" 0 } None) ] + [ "foo" + (Pair { Elt "foo" 0 } None) ] - location: 13 (remaining gas: 1039986.693 units remaining) - [ (Pair { Elt "foo" 0 } None) ] + [ (Pair { Elt "foo" 0 } None) ] - location: 15 (remaining gas: 1039986.683 units remaining) - [ { Elt "foo" 0 } ] + [ { Elt "foo" 0 } ] - location: 16 (remaining gas: 1039986.673 units remaining) - [ { Elt "foo" 0 } - { Elt "foo" 0 } ] + [ { Elt "foo" 0 } + { Elt "foo" 0 } ] - location: 13 (remaining gas: 1039986.643 units remaining) - [ "foo" - { Elt "foo" 0 } - { Elt "foo" 0 } ] + [ "foo" + { Elt "foo" 0 } + { Elt "foo" 0 } ] - location: 17 (remaining gas: 1039985.665 units remaining) - [ True - { Elt "foo" 0 } ] + [ True + { Elt "foo" 0 } ] - location: 18 (remaining gas: 1039985.650 units remaining) - [ (Some True) - { Elt "foo" 0 } ] + [ (Some True) + { Elt "foo" 0 } ] - location: 19 (remaining gas: 1039985.640 units remaining) - [ { Elt "foo" 0 } - (Some True) ] + [ { Elt "foo" 0 } + (Some True) ] - location: 20 (remaining gas: 1039985.625 units remaining) - [ (Pair { Elt "foo" 0 } (Some True)) ] + [ (Pair { Elt "foo" 0 } (Some True)) ] - location: 21 (remaining gas: 1039985.610 units remaining) - [ {} - (Pair { Elt "foo" 0 } (Some True)) ] + [ {} + (Pair { Elt "foo" 0 } (Some True)) ] - location: 23 (remaining gas: 1039985.595 units remaining) - [ (Pair {} { Elt "foo" 0 } (Some True)) ] + [ (Pair {} { Elt "foo" 0 } (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" index 189205480a..138002e1ef 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\".cdcfaf9d09.out" @@ -9,35 +9,35 @@ big_map diff Set map(4)["foo"] to 1 trace - location: 12 (remaining gas: 1039986.718 units remaining) - [ (Pair "bar" { Elt "foo" 1 } None) ] + [ (Pair "bar" { Elt "foo" 1 } None) ] - location: 12 (remaining gas: 1039986.708 units remaining) - [ "bar" - (Pair { Elt "foo" 1 } None) ] + [ "bar" + (Pair { Elt "foo" 1 } None) ] - location: 13 (remaining gas: 1039986.693 units remaining) - [ (Pair { Elt "foo" 1 } None) ] + [ (Pair { Elt "foo" 1 } None) ] - location: 15 (remaining gas: 1039986.683 units remaining) - [ { Elt "foo" 1 } ] + [ { Elt "foo" 1 } ] - location: 16 (remaining gas: 1039986.673 units remaining) - [ { Elt "foo" 1 } - { Elt "foo" 1 } ] + [ { Elt "foo" 1 } + { Elt "foo" 1 } ] - location: 13 (remaining gas: 1039986.643 units remaining) - [ "bar" - { Elt "foo" 1 } - { Elt "foo" 1 } ] + [ "bar" + { Elt "foo" 1 } + { Elt "foo" 1 } ] - location: 17 (remaining gas: 1039985.665 units remaining) - [ False - { Elt "foo" 1 } ] + [ False + { Elt "foo" 1 } ] - location: 18 (remaining gas: 1039985.650 units remaining) - [ (Some False) - { Elt "foo" 1 } ] + [ (Some False) + { Elt "foo" 1 } ] - location: 19 (remaining gas: 1039985.640 units remaining) - [ { Elt "foo" 1 } - (Some False) ] + [ { Elt "foo" 1 } + (Some False) ] - location: 20 (remaining gas: 1039985.625 units remaining) - [ (Pair { Elt "foo" 1 } (Some False)) ] + [ (Pair { Elt "foo" 1 } (Some False)) ] - location: 21 (remaining gas: 1039985.610 units remaining) - [ {} - (Pair { Elt "foo" 1 } (Some False)) ] + [ {} + (Pair { Elt "foo" 1 } (Some False)) ] - location: 23 (remaining gas: 1039985.595 units remaining) - [ (Pair {} { Elt "foo" 1 } (Some False)) ] + [ (Pair {} { Elt "foo" 1 } (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair 4 (Some False))].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair 4 (Some False))].out" index 5e3d574dfc..f8b48e0525 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair 4 (Some False))].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[big_map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair 4 (Some False))].out" @@ -8,35 +8,35 @@ big_map diff New map(4) of type (big_map string nat) trace - location: 12 (remaining gas: 1039987.960 units remaining) - [ (Pair "bar" {} None) ] + [ (Pair "bar" {} None) ] - location: 12 (remaining gas: 1039987.950 units remaining) - [ "bar" - (Pair {} None) ] + [ "bar" + (Pair {} None) ] - location: 13 (remaining gas: 1039987.935 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039987.925 units remaining) - [ {} ] + [ {} ] - location: 16 (remaining gas: 1039987.915 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039987.885 units remaining) - [ "bar" - {} - {} ] + [ "bar" + {} + {} ] - location: 17 (remaining gas: 1039986.909 units remaining) - [ False - {} ] + [ False + {} ] - location: 18 (remaining gas: 1039986.894 units remaining) - [ (Some False) - {} ] + [ (Some False) + {} ] - location: 19 (remaining gas: 1039986.884 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 20 (remaining gas: 1039986.869 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 21 (remaining gas: 1039986.854 units remaining) - [ {} - (Pair {} (Some False)) ] + [ {} + (Pair {} (Some False)) ] - location: 23 (remaining gas: 1039986.839 units remaining) - [ (Pair {} {} (Some False)) ] + [ (Pair {} {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_push_bytes_not_padded.tz-None-Unit-(Some 0.9b6e8bcbd3.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_push_bytes_not_padded.tz-None-Unit-(Some 0.9b6e8bcbd3.out index b98b1e13d1..c23a873b9b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_push_bytes_not_padded.tz-None-Unit-(Some 0.9b6e8bcbd3.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_push_bytes_not_padded.tz-None-Unit-(Some 0.9b6e8bcbd3.out @@ -8,17 +8,17 @@ big_map diff trace - location: 8 (remaining gas: 1039993.391 units remaining) - [ (Pair Unit None) ] + [ (Pair Unit None) ] - location: 8 (remaining gas: 1039993.381 units remaining) [ ] - location: 9 (remaining gas: 1039993.371 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.356 units remaining) - [ (Some 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ (Some 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 13 (remaining gas: 1039993.341 units remaining) - [ {} - (Some 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ {} + (Some 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 15 (remaining gas: 1039993.326 units remaining) [ (Pair {} - (Some 0x0000000000000000000000000000000000000000000000000000000000000000)) ] + (Some 0x0000000000000000000000000000000000000000000000000000000000000000)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_push_nat.tz-None-Unit-(Some 0x100000000000.d1219ca789.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_push_nat.tz-None-Unit-(Some 0x100000000000.d1219ca789.out index 6d98c13cab..57750ecd1f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_push_nat.tz-None-Unit-(Some 0x100000000000.d1219ca789.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_push_nat.tz-None-Unit-(Some 0x100000000000.d1219ca789.out @@ -8,17 +8,17 @@ big_map diff trace - location: 8 (remaining gas: 1039993.391 units remaining) - [ (Pair Unit None) ] + [ (Pair Unit None) ] - location: 8 (remaining gas: 1039993.381 units remaining) [ ] - location: 9 (remaining gas: 1039993.371 units remaining) - [ 0x1000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x1000000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.356 units remaining) - [ (Some 0x1000000000000000000000000000000000000000000000000000000000000000) ] + [ (Some 0x1000000000000000000000000000000000000000000000000000000000000000) ] - location: 13 (remaining gas: 1039993.341 units remaining) - [ {} - (Some 0x1000000000000000000000000000000000000000000000000000000000000000) ] + [ {} + (Some 0x1000000000000000000000000000000000000000000000000000000000000000) ] - location: 15 (remaining gas: 1039993.326 units remaining) [ (Pair {} - (Some 0x1000000000000000000000000000000000000000000000000000000000000000)) ] + (Some 0x1000000000000000000000000000000000000000000000000000000000000000)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x00-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x00-0].out index f3e30eb455..b538dd115f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x00-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x00-0].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 0x0000000000000000000000000000000000000000000000000000000000000000 0) ] + [ (Pair 0x0000000000000000000000000000000000000000000000000000000000000000 0) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.663 units remaining) - [ 0 ] + [ 0 ] - location: 9 (remaining gas: 1039994.648 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 11 (remaining gas: 1039994.633 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x01-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x01-1].out index c63e99c05e..2ee44971f7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x01-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x01-1].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 0) ] + [ (Pair 0x0100000000000000000000000000000000000000000000000000000000000000 0) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.663 units remaining) - [ 1 ] + [ 1 ] - location: 9 (remaining gas: 1039994.648 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 11 (remaining gas: 1039994.633 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x28db8e57af88d9576acd181b89f2.7a85c336ff.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x28db8e57af88d9576acd181b89f2.7a85c336ff.out index bb0afa1cf6..d99a836063 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x28db8e57af88d9576acd181b89f2.7a85c336ff.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0x28db8e57af88d9576acd181b89f2.7a85c336ff.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 0x28db8e57af88d9576acd181b89f24e50a89a6423f939026ed91349fc9af16c27 0) ] + [ (Pair 0x28db8e57af88d9576acd181b89f24e50a89a6423f939026ed91349fc9af16c27 0) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0x28db8e57af88d9576acd181b89f24e50a89a6423f939026ed91349fc9af16c27 ] + [ 0x28db8e57af88d9576acd181b89f24e50a89a6423f939026ed91349fc9af16c27 ] - location: 8 (remaining gas: 1039994.663 units remaining) - [ 17832688077013577776524784494464728518213913213412866604053735695200962927400 ] + [ 17832688077013577776524784494464728518213913213412866604053735695200962927400 ] - location: 9 (remaining gas: 1039994.648 units remaining) - [ {} - 17832688077013577776524784494464728518213913213412866604053735695200962927400 ] + [ {} + 17832688077013577776524784494464728518213913213412866604053735695200962927400 ] - location: 11 (remaining gas: 1039994.633 units remaining) [ (Pair {} - 17832688077013577776524784494464728518213913213412866604053735695200962927400) ] + 17832688077013577776524784494464728518213913213412866604053735695200962927400) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0xb9e8abf8dc324a010007addde986.b821eb26b3.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0xb9e8abf8dc324a010007addde986.b821eb26b3.out index 915b57fa5d..072eddd6de 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0xb9e8abf8dc324a010007addde986.b821eb26b3.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_int.tz-0-0xb9e8abf8dc324a010007addde986.b821eb26b3.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 0xb9e8abf8dc324a010007addde986fe0f7c81fab16d26819d0534b7691c0b0719 0) ] + [ (Pair 0xb9e8abf8dc324a010007addde986fe0f7c81fab16d26819d0534b7691c0b0719 0) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0xb9e8abf8dc324a010007addde986fe0f7c81fab16d26819d0534b7691c0b0719 ] + [ 0xb9e8abf8dc324a010007addde986fe0f7c81fab16d26819d0534b7691c0b0719 ] - location: 8 (remaining gas: 1039994.663 units remaining) - [ 11320265829256585830781521966149529460476767408210445238902869222031333517497 ] + [ 11320265829256585830781521966149529460476767408210445238902869222031333517497 ] - location: 9 (remaining gas: 1039994.648 units remaining) - [ {} - 11320265829256585830781521966149529460476767408210445238902869222031333517497 ] + [ {} + 11320265829256585830781521966149529460476767408210445238902869222031333517497 ] - location: 11 (remaining gas: 1039994.633 units remaining) [ (Pair {} - 11320265829256585830781521966149529460476767408210445238902869222031333517497) ] + 11320265829256585830781521966149529460476767408210445238902869222031333517497) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_mutez.tz-0-0x10-16].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_mutez.tz-0-0x10-16].out index 5be3e74fdf..2c09c6747f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_mutez.tz-0-0x10-16].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_to_mutez.tz-0-0x10-16].out @@ -8,25 +8,25 @@ big_map diff trace - location: 7 (remaining gas: 1039989.509 units remaining) - [ (Pair 0x1000000000000000000000000000000000000000000000000000000000000000 0) ] + [ (Pair 0x1000000000000000000000000000000000000000000000000000000000000000 0) ] - location: 7 (remaining gas: 1039989.499 units remaining) - [ 0x1000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x1000000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039989.374 units remaining) - [ 16 ] + [ 16 ] - location: 9 (remaining gas: 1039989.359 units remaining) - [ (Some 16) ] + [ (Some 16) ] - location: 11 (remaining gas: 1039989.349 units remaining) - [ 16 ] + [ 16 ] - location: 11 (remaining gas: 1039989.334 units remaining) - [ 16 ] + [ 16 ] - location: 17 (remaining gas: 1039989.324 units remaining) - [ 1 - 16 ] + [ 1 + 16 ] - location: 20 (remaining gas: 1039989.324 units remaining) - [ 16 ] + [ 16 ] - location: 21 (remaining gas: 1039989.309 units remaining) - [ {} - 16 ] + [ {} + 16 ] - location: 23 (remaining gas: 1039989.294 units remaining) - [ (Pair {} 16) ] + [ (Pair {} 16) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0accef5bef.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0accef5bef.out index 387a4f7064..ae11b1b779 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0accef5bef.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0accef5bef.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair -42 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair -42 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ -42 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ -42 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) - [ 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] + [ 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 9 (remaining gas: 1039994.442 units remaining) - [ {} - 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] + [ {} + 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 11 (remaining gas: 1039994.427 units remaining) - [ (Pair {} 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73) ] + [ (Pair {} 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0ecc537252.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0ecc537252.out index 738d40e31b..e45e96c05f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0ecc537252.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.0ecc537252.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 2 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 2 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) - [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.442 units remaining) - [ {} - 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 11 (remaining gas: 1039994.427 units remaining) - [ (Pair {} 0x0200000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0200000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2229b767cd.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2229b767cd.out index 24d8968a89..6f951075d8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2229b767cd.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2229b767cd.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair -1 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair -1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ -1 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ -1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) - [ 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] + [ 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 9 (remaining gas: 1039994.442 units remaining) - [ {} - 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] + [ {} + 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 11 (remaining gas: 1039994.427 units remaining) - [ (Pair {} 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73) ] + [ (Pair {} 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2ff549b46b.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2ff549b46b.out index 65f8e7bc47..a1ad16ec1f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2ff549b46b.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.2ff549b46b.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.458 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.443 units remaining) - [ {} - 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 11 (remaining gas: 1039994.428 units remaining) - [ (Pair {} 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0000000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.bf8a711be6.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.bf8a711be6.out index 15438080a4..84906a164a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.bf8a711be6.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.bf8a711be6.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 52435875175126190479447740508185965837690552500527637822603658699938581184514 - 0x0100000000000000000000000000000000000000000000000000000000000000) ] + 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.d41cbb044b.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.d41cbb044b.out index adb62b5a42..68102fa494 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.d41cbb044b.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x0100000000000000000000000000000.d41cbb044b.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 1 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.442 units remaining) - [ {} - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 11 (remaining gas: 1039994.427 units remaining) - [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.a50412e458.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.a50412e458.out index df94be6244..894554b527 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.a50412e458.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.a50412e458.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 22620284817922784902564672469917992996328211127984472897491698543785655336309 - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] + [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] + [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] + [ {} + 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62) ] + [ (Pair {} 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.f3a349c4a7.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.f3a349c4a7.out index aa1e80460d..db34b4115d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.f3a349c4a7.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.f3a349c4a7.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 33644916630334844239120348434626468649534186770809802792596996408934105684394 - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] + [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] + [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] + [ {} + 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221) ] + [ (Pair {} 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.1b9676e4c2.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.1b9676e4c2.out index f15cd6ebd6..3106a26747 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.1b9676e4c2.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.1b9676e4c2.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 69615968247920749285624776342583898043608129789011377475114141186797415307882 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] + [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ {} + 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] + [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.e966dc6de5.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.e966dc6de5.out index 769c1e5856..c116e842a7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.e966dc6de5.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_int.tz-0x8578be1766f92cd82c5e5135c374a03.e966dc6de5.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 17180093072794558806177035834397932205917577288483739652510482486858834123369 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] + [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ {} + 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] + [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.964835cc43.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.964835cc43.out index 6c429511be..a4195cc3be 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.964835cc43.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.964835cc43.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 1 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.442 units remaining) - [ {} - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 11 (remaining gas: 1039994.427 units remaining) - [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.b25ea709fb.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.b25ea709fb.out index db9d2d8051..9f942855e2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.b25ea709fb.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.b25ea709fb.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 0 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.458 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.443 units remaining) - [ {} - 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 11 (remaining gas: 1039994.428 units remaining) - [ (Pair {} 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0000000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.eae36753ea.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.eae36753ea.out index b2f90efdfd..85b20c111e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.eae36753ea.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.eae36753ea.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 52435875175126190479447740508185965837690552500527637822603658699938581184514 - 0x0100000000000000000000000000000000000000000000000000000000000000) ] + 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.ee57dac8f7.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.ee57dac8f7.out index 9c166a387d..803db298cd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.ee57dac8f7.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x0100000000000000000000000000000.ee57dac8f7.out @@ -8,15 +8,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) - [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 2 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 2 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.457 units remaining) - [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 9 (remaining gas: 1039994.442 units remaining) - [ {} - 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 11 (remaining gas: 1039994.427 units remaining) - [ (Pair {} 0x0200000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0200000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out index ef105dd0e4..930b37a402 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.928f6d4b93.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 22620284817922784902564672469917992996328211127984472897491698543785655336309 - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] + [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] + [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] + [ {} + 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62) ] + [ (Pair {} 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.bd5800f6b8.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.bd5800f6b8.out index 4903c56a5a..f9dd4e0b58 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.bd5800f6b8.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.bd5800f6b8.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 33644916630334844239120348434626468649534186770809802792596996408934105684394 - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] + [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] + [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] + [ {} + 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221) ] + [ (Pair {} 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.00e897789a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.00e897789a.out index 68ccd215ec..0667104a8a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.00e897789a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.00e897789a.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 17180093072794558806177035834397932205917577288483739652510482486858834123369 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] + [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ {} + 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] + [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.a4697eaa13.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.a4697eaa13.out index 592484dd8c..805487c5c0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.a4697eaa13.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_fr_z_nat.tz-0x8578be1766f92cd82c5e5135c374a03.a4697eaa13.out @@ -9,15 +9,15 @@ big_map diff trace - location: 7 (remaining gas: 1039994.798 units remaining) [ (Pair 69615968247920749285624776342583898043608129789011377475114141186797415307882 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.788 units remaining) - [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] + [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.424 units remaining) - [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 9 (remaining gas: 1039994.409 units remaining) - [ {} - 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ {} + 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 11 (remaining gas: 1039994.394 units remaining) - [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] + [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.0177355bbf.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.0177355bbf.out index 212e1a80fa..b59d98bd98 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.0177355bbf.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.0177355bbf.out @@ -8,18 +8,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) - [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 2 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 2 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 2 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 2 ] - location: 9 (remaining gas: 1039993.849 units remaining) - [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.834 units remaining) - [ {} - 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.819 units remaining) - [ (Pair {} 0x0200000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0200000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.744166c609.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.744166c609.out index cb44a73d59..47699c6b95 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.744166c609.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.744166c609.out @@ -8,18 +8,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) - [ (Pair -1 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair -1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ -1 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ -1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - -1 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + -1 ] - location: 9 (remaining gas: 1039993.849 units remaining) - [ 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] + [ 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 10 (remaining gas: 1039993.834 units remaining) - [ {} - 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] + [ {} + 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 12 (remaining gas: 1039993.819 units remaining) - [ (Pair {} 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73) ] + [ (Pair {} 0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.9f3c5cdc6a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.9f3c5cdc6a.out index 0bda3c16a0..fa6edceede 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.9f3c5cdc6a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.9f3c5cdc6a.out @@ -8,18 +8,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) - [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 0 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 0 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 0 ] - location: 9 (remaining gas: 1039993.850 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.835 units remaining) - [ {} - 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.820 units remaining) - [ (Pair {} 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0000000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.a54cb341ba.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.a54cb341ba.out index d539b95b0f..565d872128 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.a54cb341ba.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.a54cb341ba.out @@ -8,18 +8,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) - [ (Pair -42 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair -42 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ -42 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ -42 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - -42 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + -42 ] - location: 9 (remaining gas: 1039993.849 units remaining) - [ 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] + [ 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 10 (remaining gas: 1039993.834 units remaining) - [ {} - 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] + [ {} + 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73 ] - location: 12 (remaining gas: 1039993.819 units remaining) - [ (Pair {} 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73) ] + [ (Pair {} 0xd7fffffffefffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.b0dc584c94.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.b0dc584c94.out index 6c42a7331d..5c627e828b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.b0dc584c94.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.b0dc584c94.out @@ -8,18 +8,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) - [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 1 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 1 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 1 ] - location: 9 (remaining gas: 1039993.849 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.834 units remaining) - [ {} - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.819 units remaining) - [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.bddcad090c.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.bddcad090c.out index 2c173ef748..29ecaf0f8b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.bddcad090c.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x0100000000000000000000000000000.bddcad090c.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 52435875175126190479447740508185965837690552500527637822603658699938581184514 - 0x0100000000000000000000000000000000000000000000000000000000000000) ] + 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 52435875175126190479447740508185965837690552500527637822603658699938581184514 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 52435875175126190479447740508185965837690552500527637822603658699938581184514 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.92c153eb47.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.92c153eb47.out index 7afaf42c9a..e142c2f449 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.92c153eb47.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x4147a5ad0a633e4880d2296f08ec5c1.92c153eb47.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 22620284817922784902564672469917992996328211127984472897491698543785655336309 - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] + [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f - 22620284817922784902564672469917992996328211127984472897491698543785655336309 ] + [ 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f + 22620284817922784902564672469917992996328211127984472897491698543785655336309 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] + [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] + [ {} + 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62) ] + [ (Pair {} 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.290ab49d11.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.290ab49d11.out index 603b3ec223..4653f89339 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.290ab49d11.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x5b0ecd0fa853810e356f1eb79721e80.290ab49d11.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 33644916630334844239120348434626468649534186770809802792596996408934105684394 - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] + [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f - 33644916630334844239120348434626468649534186770809802792596996408934105684394 ] + [ 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f + 33644916630334844239120348434626468649534186770809802792596996408934105684394 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] + [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] + [ {} + 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221) ] + [ (Pair {} 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.69f3589a06.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.69f3589a06.out index 9888f5e5fd..0f9a7dcaa2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.69f3589a06.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.69f3589a06.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 17180093072794558806177035834397932205917577288483739652510482486858834123369 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] + [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d - 17180093072794558806177035834397932205917577288483739652510482486858834123369 ] + [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d + 17180093072794558806177035834397932205917577288483739652510482486858834123369 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ {} + 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] + [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.fee3c5cf43.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.fee3c5cf43.out index 3756e52b0e..911876413e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.fee3c5cf43.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_int.tz-0x8578be1766f92cd82c5e5135c374a03.fee3c5cf43.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 69615968247920749285624776342583898043608129789011377475114141186797415307882 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] + [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d - 69615968247920749285624776342583898043608129789011377475114141186797415307882 ] + [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d + 69615968247920749285624776342583898043608129789011377475114141186797415307882 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ {} + 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] + [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.1bccc033e8.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.1bccc033e8.out index 08d0622e6c..a49ced7be2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.1bccc033e8.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.1bccc033e8.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 52435875175126190479447740508185965837690552500527637822603658699938581184514 - 0x0100000000000000000000000000000000000000000000000000000000000000) ] + 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 52435875175126190479447740508185965837690552500527637822603658699938581184514 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 52435875175126190479447740508185965837690552500527637822603658699938581184514 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 52435875175126190479447740508185965837690552500527637822603658699938581184514 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.40958700fe.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.40958700fe.out index 017a16d6a6..9073ccb95a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.40958700fe.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.40958700fe.out @@ -8,18 +8,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) - [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 0 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 0 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 0 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 0 ] - location: 9 (remaining gas: 1039993.850 units remaining) - [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.835 units remaining) - [ {} - 0x0000000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0000000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.820 units remaining) - [ (Pair {} 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0000000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.6c62b03d78.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.6c62b03d78.out index 609b05c2a8..790176f39a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.6c62b03d78.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.6c62b03d78.out @@ -8,18 +8,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) - [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 1 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 1 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 1 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 1 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 1 ] - location: 9 (remaining gas: 1039993.849 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.834 units remaining) - [ {} - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.819 units remaining) - [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0100000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.d23f269341.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.d23f269341.out index d537cd5a04..2d8931cb76 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.d23f269341.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x0100000000000000000000000000000.d23f269341.out @@ -8,18 +8,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) - [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 2 0x0100000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 2 - 0x0100000000000000000000000000000000000000000000000000000000000000 ] + [ 2 + 0x0100000000000000000000000000000000000000000000000000000000000000 ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 2 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 2 ] - location: 9 (remaining gas: 1039993.849 units remaining) - [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 10 (remaining gas: 1039993.834 units remaining) - [ {} - 0x0200000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0200000000000000000000000000000000000000000000000000000000000000 ] - location: 12 (remaining gas: 1039993.819 units remaining) - [ (Pair {} 0x0200000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0200000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.927f808504.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.927f808504.out index 0b364f1398..42386c0957 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.927f808504.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x4147a5ad0a633e4880d2296f08ec5c1.927f808504.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 22620284817922784902564672469917992996328211127984472897491698543785655336309 - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 - 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] + [ 22620284817922784902564672469917992996328211127984472897491698543785655336309 + 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f - 22620284817922784902564672469917992996328211127984472897491698543785655336309 ] + [ 0x4147a5ad0a633e4880d2296f08ec5c12d03e3fa4a6b49ecbd16a30a3cfcdbe3f + 22620284817922784902564672469917992996328211127984472897491698543785655336309 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] + [ 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] + [ {} + 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62) ] + [ (Pair {} 0x4e387e0ebfb3d1633153c195036e0c0b672955c4a0e420f93ec20a76fe677c62) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.0c114c956a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.0c114c956a.out index df944c3ab6..05eed80df7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.0c114c956a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x5b0ecd0fa853810e356f1eb79721e80.0c114c956a.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 33644916630334844239120348434626468649534186770809802792596996408934105684394 - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 - 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] + [ 33644916630334844239120348434626468649534186770809802792596996408934105684394 + 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f - 33644916630334844239120348434626468649534186770809802792596996408934105684394 ] + [ 0x5b0ecd0fa853810e356f1eb79721e80b30510fcc3a455f4fc02fdd9a90c5401f + 33644916630334844239120348434626468649534186770809802792596996408934105684394 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] + [ 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] + [ {} + 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221) ] + [ (Pair {} 0x2ef123703093cbbbd124e15f2054fa5781ed0b8d092ec3c6e5d76b4ca918a221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.03c4f38e68.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.03c4f38e68.out index 8fd31556a2..154de78b52 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.03c4f38e68.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.03c4f38e68.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 69615968247920749285624776342583898043608129789011377475114141186797415307882 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] + [ 69615968247920749285624776342583898043608129789011377475114141186797415307882 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d - 69615968247920749285624776342583898043608129789011377475114141186797415307882 ] + [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d + 69615968247920749285624776342583898043608129789011377475114141186797415307882 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ {} + 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] + [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.8ed19cfdd9.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.8ed19cfdd9.out index ba2c2fce32..0e82c89bff 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.8ed19cfdd9.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[bls12_381_z_fr_nat.tz-0x8578be1766f92cd82c5e5135c374a03.8ed19cfdd9.out @@ -9,18 +9,18 @@ big_map diff trace - location: 7 (remaining gas: 1039994.200 units remaining) [ (Pair 17180093072794558806177035834397932205917577288483739652510482486858834123369 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d) ] - location: 7 (remaining gas: 1039994.190 units remaining) - [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 - 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] + [ 17180093072794558806177035834397932205917577288483739652510482486858834123369 + 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d ] - location: 8 (remaining gas: 1039994.180 units remaining) - [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d - 17180093072794558806177035834397932205917577288483739652510482486858834123369 ] + [ 0x8578be1766f92cd82c5e5135c374a03a8562e263ea953a3f9711b0153b7fcf2d + 17180093072794558806177035834397932205917577288483739652510482486858834123369 ] - location: 9 (remaining gas: 1039993.816 units remaining) - [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 10 (remaining gas: 1039993.801 units remaining) - [ {} - 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] + [ {} + 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221 ] - location: 12 (remaining gas: 1039993.786 units remaining) - [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] + [ (Pair {} 0xfaa60dacea8e26112e524d379720fe4f95fbc5a26f1b1a67e229e26ddecbf221) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[car.tz-0-(Pair 34 17)-34].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[car.tz-0-(Pair 34 17)-34].out index 58ffce6709..b45e3a3f76 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[car.tz-0-(Pair 34 17)-34].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[car.tz-0-(Pair 34 17)-34].out @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039994.492 units remaining) - [ (Pair (Pair 34 17) 0) ] + [ (Pair (Pair 34 17) 0) ] - location: 9 (remaining gas: 1039994.482 units remaining) - [ (Pair 34 17) ] + [ (Pair 34 17) ] - location: 10 (remaining gas: 1039994.472 units remaining) - [ 34 ] + [ 34 ] - location: 11 (remaining gas: 1039994.457 units remaining) - [ {} - 34 ] + [ {} + 34 ] - location: 13 (remaining gas: 1039994.442 units remaining) - [ (Pair {} 34) ] + [ (Pair {} 34) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cdr.tz-0-(Pair 34 17)-17].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cdr.tz-0-(Pair 34 17)-17].out index 14ffec7128..3754a4b457 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cdr.tz-0-(Pair 34 17)-17].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cdr.tz-0-(Pair 34 17)-17].out @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039994.492 units remaining) - [ (Pair (Pair 34 17) 0) ] + [ (Pair (Pair 34 17) 0) ] - location: 9 (remaining gas: 1039994.482 units remaining) - [ (Pair 34 17) ] + [ (Pair 34 17) ] - location: 10 (remaining gas: 1039994.472 units remaining) - [ 17 ] + [ 17 ] - location: 11 (remaining gas: 1039994.457 units remaining) - [ {} - 17 ] + [ {} + 17 ] - location: 13 (remaining gas: 1039994.442 units remaining) - [ (Pair {} 17) ] + [ (Pair {} 17) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-(Some \"NetXdQprcVkpaWU\")-Unit-(Some \".8420090f97.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-(Some \"NetXdQprcVkpaWU\")-Unit-(Some \".8420090f97.out" index bb224412a5..530ae4ba6d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-(Some \"NetXdQprcVkpaWU\")-Unit-(Some \".8420090f97.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-(Some \"NetXdQprcVkpaWU\")-Unit-(Some \".8420090f97.out" @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039992.257 units remaining) - [ (Pair Unit (Some "NetXdQprcVkpaWU")) ] + [ (Pair Unit (Some "NetXdQprcVkpaWU")) ] - location: 8 (remaining gas: 1039992.247 units remaining) [ ] - location: 9 (remaining gas: 1039992.232 units remaining) - [ "NetXdQprcVkpaWU" ] + [ "NetXdQprcVkpaWU" ] - location: 10 (remaining gas: 1039992.217 units remaining) - [ (Some "NetXdQprcVkpaWU") ] + [ (Some "NetXdQprcVkpaWU") ] - location: 11 (remaining gas: 1039992.202 units remaining) - [ {} - (Some "NetXdQprcVkpaWU") ] + [ {} + (Some "NetXdQprcVkpaWU") ] - location: 13 (remaining gas: 1039992.187 units remaining) - [ (Pair {} (Some "NetXdQprcVkpaWU")) ] + [ (Pair {} (Some "NetXdQprcVkpaWU")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-(Some 0x7a06a770)-Unit-(Some \"NetXdQprcVkpaWU\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-(Some 0x7a06a770)-Unit-(Some \"NetXdQprcVkpaWU\")].out" index 370f25246c..b297aafdc7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-(Some 0x7a06a770)-Unit-(Some \"NetXdQprcVkpaWU\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-(Some 0x7a06a770)-Unit-(Some \"NetXdQprcVkpaWU\")].out" @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039993.807 units remaining) - [ (Pair Unit (Some "NetXdQprcVkpaWU")) ] + [ (Pair Unit (Some "NetXdQprcVkpaWU")) ] - location: 8 (remaining gas: 1039993.797 units remaining) [ ] - location: 9 (remaining gas: 1039993.782 units remaining) - [ "NetXdQprcVkpaWU" ] + [ "NetXdQprcVkpaWU" ] - location: 10 (remaining gas: 1039993.767 units remaining) - [ (Some "NetXdQprcVkpaWU") ] + [ (Some "NetXdQprcVkpaWU") ] - location: 11 (remaining gas: 1039993.752 units remaining) - [ {} - (Some "NetXdQprcVkpaWU") ] + [ {} + (Some "NetXdQprcVkpaWU") ] - location: 13 (remaining gas: 1039993.737 units remaining) - [ (Pair {} (Some "NetXdQprcVkpaWU")) ] + [ (Pair {} (Some "NetXdQprcVkpaWU")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-None-Unit-(Some \"NetXdQprcVkpaWU\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-None-Unit-(Some \"NetXdQprcVkpaWU\")].out" index 6450bebfa2..e9a1e54f7b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-None-Unit-(Some \"NetXdQprcVkpaWU\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[chain_id_store.tz-None-Unit-(Some \"NetXdQprcVkpaWU\")].out" @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039993.957 units remaining) - [ (Pair Unit None) ] + [ (Pair Unit None) ] - location: 8 (remaining gas: 1039993.947 units remaining) [ ] - location: 9 (remaining gas: 1039993.932 units remaining) - [ "NetXdQprcVkpaWU" ] + [ "NetXdQprcVkpaWU" ] - location: 10 (remaining gas: 1039993.917 units remaining) - [ (Some "NetXdQprcVkpaWU") ] + [ (Some "NetXdQprcVkpaWU") ] - location: 11 (remaining gas: 1039993.902 units remaining) - [ {} - (Some "NetXdQprcVkpaWU") ] + [ {} + (Some "NetXdQprcVkpaWU") ] - location: 13 (remaining gas: 1039993.887 units remaining) - [ (Pair {} (Some "NetXdQprcVkpaWU")) ] + [ (Pair {} (Some "NetXdQprcVkpaWU")) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out index 58fa69c425..84381ccb6e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-get.tz-Unit-(Pair 1 4 2 Unit)-Unit].out @@ -8,116 +8,116 @@ big_map diff trace - location: 11 (remaining gas: 1039950.642 units remaining) - [ (Pair (Pair 1 4 2 Unit) Unit) ] + [ (Pair (Pair 1 4 2 Unit) Unit) ] - location: 11 (remaining gas: 1039950.632 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 12 (remaining gas: 1039950.622 units remaining) - [ (Pair 1 4 2 Unit) - (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 13 (remaining gas: 1039950.612 units remaining) - [ 1 - (Pair 1 4 2 Unit) ] + [ 1 + (Pair 1 4 2 Unit) ] - location: 14 (remaining gas: 1039950.602 units remaining) - [ 1 - 1 - (Pair 1 4 2 Unit) ] + [ 1 + 1 + (Pair 1 4 2 Unit) ] - location: 19 (remaining gas: 1039950.567 units remaining) - [ 0 - (Pair 1 4 2 Unit) ] + [ 0 + (Pair 1 4 2 Unit) ] - location: 20 (remaining gas: 1039950.552 units remaining) - [ True - (Pair 1 4 2 Unit) ] + [ True + (Pair 1 4 2 Unit) ] - location: 21 (remaining gas: 1039950.542 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 21 (remaining gas: 1039950.527 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 27 (remaining gas: 1039950.517 units remaining) - [ (Pair 1 4 2 Unit) - (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 28 (remaining gas: 1039950.487 units remaining) - [ 1 - (Pair 1 4 2 Unit) ] + [ 1 + (Pair 1 4 2 Unit) ] - location: 30 (remaining gas: 1039950.477 units remaining) - [ 1 - 1 - (Pair 1 4 2 Unit) ] + [ 1 + 1 + (Pair 1 4 2 Unit) ] - location: 35 (remaining gas: 1039950.442 units remaining) - [ 0 - (Pair 1 4 2 Unit) ] + [ 0 + (Pair 1 4 2 Unit) ] - location: 36 (remaining gas: 1039950.427 units remaining) - [ True - (Pair 1 4 2 Unit) ] + [ True + (Pair 1 4 2 Unit) ] - location: 37 (remaining gas: 1039950.417 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 37 (remaining gas: 1039950.402 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 43 (remaining gas: 1039950.392 units remaining) - [ (Pair 1 4 2 Unit) - (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 44 (remaining gas: 1039950.361 units remaining) - [ 4 - (Pair 1 4 2 Unit) ] + [ 4 + (Pair 1 4 2 Unit) ] - location: 46 (remaining gas: 1039950.351 units remaining) - [ 4 - 4 - (Pair 1 4 2 Unit) ] + [ 4 + 4 + (Pair 1 4 2 Unit) ] - location: 51 (remaining gas: 1039950.316 units remaining) - [ 0 - (Pair 1 4 2 Unit) ] + [ 0 + (Pair 1 4 2 Unit) ] - location: 52 (remaining gas: 1039950.301 units remaining) - [ True - (Pair 1 4 2 Unit) ] + [ True + (Pair 1 4 2 Unit) ] - location: 53 (remaining gas: 1039950.291 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 53 (remaining gas: 1039950.276 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 59 (remaining gas: 1039950.266 units remaining) - [ (Pair 1 4 2 Unit) - (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 60 (remaining gas: 1039950.234 units remaining) - [ 2 - (Pair 1 4 2 Unit) ] + [ 2 + (Pair 1 4 2 Unit) ] - location: 62 (remaining gas: 1039950.224 units remaining) - [ 2 - 2 - (Pair 1 4 2 Unit) ] + [ 2 + 2 + (Pair 1 4 2 Unit) ] - location: 67 (remaining gas: 1039950.189 units remaining) - [ 0 - (Pair 1 4 2 Unit) ] + [ 0 + (Pair 1 4 2 Unit) ] - location: 68 (remaining gas: 1039950.174 units remaining) - [ True - (Pair 1 4 2 Unit) ] + [ True + (Pair 1 4 2 Unit) ] - location: 69 (remaining gas: 1039950.164 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 69 (remaining gas: 1039950.149 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 75 (remaining gas: 1039950.139 units remaining) - [ (Pair 1 4 2 Unit) - (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) + (Pair 1 4 2 Unit) ] - location: 76 (remaining gas: 1039950.106 units remaining) - [ Unit - (Pair 1 4 2 Unit) ] + [ Unit + (Pair 1 4 2 Unit) ] - location: 78 (remaining gas: 1039950.096 units remaining) - [ Unit - Unit - (Pair 1 4 2 Unit) ] + [ Unit + Unit + (Pair 1 4 2 Unit) ] - location: 81 (remaining gas: 1039950.086 units remaining) - [ 0 - (Pair 1 4 2 Unit) ] + [ 0 + (Pair 1 4 2 Unit) ] - location: 82 (remaining gas: 1039950.071 units remaining) - [ True - (Pair 1 4 2 Unit) ] + [ True + (Pair 1 4 2 Unit) ] - location: 83 (remaining gas: 1039950.061 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 83 (remaining gas: 1039950.046 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 89 (remaining gas: 1039950.036 units remaining) [ ] - location: 90 (remaining gas: 1039950.026 units remaining) - [ Unit ] + [ Unit ] - location: 91 (remaining gas: 1039950.011 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 93 (remaining gas: 1039949.996 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set-2.tz-None-(Pair 1 4 2 Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set-2.tz-None-(Pair 1 4 2 Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" index 76af827bac..3a51b36215 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set-2.tz-None-(Pair 1 4 2 Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set-2.tz-None-(Pair 1 4 2 Unit)-(Some (Pair 2 4 \"t.886cc365c6.out" @@ -8,29 +8,29 @@ big_map diff trace - location: 16 (remaining gas: 1039985.116 units remaining) - [ (Pair (Pair 1 4 2 Unit) None) ] + [ (Pair (Pair 1 4 2 Unit) None) ] - location: 16 (remaining gas: 1039985.106 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 17 (remaining gas: 1039985.096 units remaining) - [ 2 - (Pair 1 4 2 Unit) ] + [ 2 + (Pair 1 4 2 Unit) ] - location: 20 (remaining gas: 1039985.055 units remaining) - [ (Pair 2 4 2 Unit) ] + [ (Pair 2 4 2 Unit) ] - location: 22 (remaining gas: 1039985.045 units remaining) - [ "toto" - (Pair 2 4 2 Unit) ] + [ "toto" + (Pair 2 4 2 Unit) ] - location: 25 (remaining gas: 1039984.999 units remaining) - [ (Pair 2 4 "toto" Unit) ] + [ (Pair 2 4 "toto" Unit) ] - location: 27 (remaining gas: 1039984.989 units remaining) - [ 0x01 - (Pair 2 4 "toto" Unit) ] + [ 0x01 + (Pair 2 4 "toto" Unit) ] - location: 30 (remaining gas: 1039984.942 units remaining) - [ (Pair 2 4 "toto" 0x01) ] + [ (Pair 2 4 "toto" 0x01) ] - location: 32 (remaining gas: 1039984.927 units remaining) - [ (Some (Pair 2 4 "toto" 0x01)) ] + [ (Some (Pair 2 4 "toto" 0x01)) ] - location: 33 (remaining gas: 1039984.912 units remaining) - [ {} - (Some (Pair 2 4 "toto" 0x01)) ] + [ {} + (Some (Pair 2 4 "toto" 0x01)) ] - location: 35 (remaining gas: 1039984.897 units remaining) - [ (Pair {} (Some (Pair 2 4 "toto" 0x01))) ] + [ (Pair {} (Some (Pair 2 4 "toto" 0x01))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set.tz-(Pair 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set.tz-(Pair 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out index 4d57d85ea6..ab1120011e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set.tz-(Pair 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb-set.tz-(Pair 1 4 2 Unit)-Unit-(Pair 2 12 8 Unit)].out @@ -8,32 +8,32 @@ big_map diff trace - location: 11 (remaining gas: 1039985.453 units remaining) - [ (Pair Unit 1 4 2 Unit) ] + [ (Pair Unit 1 4 2 Unit) ] - location: 11 (remaining gas: 1039985.443 units remaining) - [ (Pair 1 4 2 Unit) ] + [ (Pair 1 4 2 Unit) ] - location: 12 (remaining gas: 1039985.433 units remaining) - [ 2 - (Pair 1 4 2 Unit) ] + [ 2 + (Pair 1 4 2 Unit) ] - location: 15 (remaining gas: 1039985.392 units remaining) - [ (Pair 2 4 2 Unit) ] + [ (Pair 2 4 2 Unit) ] - location: 17 (remaining gas: 1039985.382 units remaining) - [ 12 - (Pair 2 4 2 Unit) ] + [ 12 + (Pair 2 4 2 Unit) ] - location: 20 (remaining gas: 1039985.339 units remaining) - [ (Pair 2 12 2 Unit) ] + [ (Pair 2 12 2 Unit) ] - location: 22 (remaining gas: 1039985.329 units remaining) - [ 8 - (Pair 2 12 2 Unit) ] + [ 8 + (Pair 2 12 2 Unit) ] - location: 25 (remaining gas: 1039985.283 units remaining) - [ (Pair 2 12 8 Unit) ] + [ (Pair 2 12 8 Unit) ] - location: 27 (remaining gas: 1039985.273 units remaining) - [ Unit - (Pair 2 12 8 Unit) ] + [ Unit + (Pair 2 12 8 Unit) ] - location: 28 (remaining gas: 1039985.226 units remaining) - [ (Pair 2 12 8 Unit) ] + [ (Pair 2 12 8 Unit) ] - location: 30 (remaining gas: 1039985.211 units remaining) - [ {} - (Pair 2 12 8 Unit) ] + [ {} + (Pair 2 12 8 Unit) ] - location: 32 (remaining gas: 1039985.196 units remaining) - [ (Pair {} 2 12 8 Unit) ] + [ (Pair {} 2 12 8 Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb.tz-(Pair 0 0 0)-Unit-(Pair 1 2 3)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb.tz-(Pair 0 0 0)-Unit-(Pair 1 2 3)].out index bbb63940bc..b23d86105f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb.tz-(Pair 0 0 0)-Unit-(Pair 1 2 3)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comb.tz-(Pair 0 0 0)-Unit-(Pair 1 2 3)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 10 (remaining gas: 1039990.399 units remaining) - [ (Pair Unit 0 0 0) ] + [ (Pair Unit 0 0 0) ] - location: 10 (remaining gas: 1039990.389 units remaining) [ ] - location: 11 (remaining gas: 1039990.379 units remaining) - [ 3 ] + [ 3 ] - location: 14 (remaining gas: 1039990.369 units remaining) - [ 2 - 3 ] + [ 2 + 3 ] - location: 17 (remaining gas: 1039990.359 units remaining) - [ 1 - 2 - 3 ] + [ 1 + 2 + 3 ] - location: 20 (remaining gas: 1039990.344 units remaining) - [ {} - 1 - 2 - 3 ] + [ {} + 1 + 2 + 3 ] - location: 22 (remaining gas: 1039990.330 units remaining) - [ (Pair {} 1 2 3) ] + [ (Pair {} 1 2 3) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[compare.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[compare.tz-Unit-Unit-Unit].out index c4d0618c6b..72e683be9e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[compare.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[compare.tz-Unit-Unit-Unit].out @@ -8,391 +8,391 @@ big_map diff trace - location: 7 (remaining gas: 1039782.668 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039782.658 units remaining) [ ] - location: 8 (remaining gas: 1039782.648 units remaining) - [ True ] + [ True ] - location: 11 (remaining gas: 1039782.638 units remaining) - [ True - True ] + [ True + True ] - location: 12 (remaining gas: 1039782.603 units remaining) - [ 0 ] + [ 0 ] - location: 14 (remaining gas: 1039782.588 units remaining) - [ True ] + [ True ] - location: 15 (remaining gas: 1039782.578 units remaining) [ ] - location: 15 (remaining gas: 1039782.563 units remaining) [ ] - location: 21 (remaining gas: 1039782.553 units remaining) - [ False ] + [ False ] - location: 24 (remaining gas: 1039782.543 units remaining) - [ False - False ] + [ False + False ] - location: 25 (remaining gas: 1039782.508 units remaining) - [ 0 ] + [ 0 ] - location: 27 (remaining gas: 1039782.493 units remaining) - [ True ] + [ True ] - location: 28 (remaining gas: 1039782.483 units remaining) [ ] - location: 28 (remaining gas: 1039782.468 units remaining) [ ] - location: 34 (remaining gas: 1039782.458 units remaining) - [ False ] + [ False ] - location: 37 (remaining gas: 1039782.448 units remaining) - [ True - False ] + [ True + False ] - location: 40 (remaining gas: 1039782.413 units remaining) - [ 1 ] + [ 1 ] - location: 42 (remaining gas: 1039782.398 units remaining) - [ True ] + [ True ] - location: 43 (remaining gas: 1039782.388 units remaining) [ ] - location: 43 (remaining gas: 1039782.373 units remaining) [ ] - location: 49 (remaining gas: 1039782.363 units remaining) - [ True ] + [ True ] - location: 52 (remaining gas: 1039782.353 units remaining) - [ False - True ] + [ False + True ] - location: 55 (remaining gas: 1039782.318 units remaining) - [ -1 ] + [ -1 ] - location: 57 (remaining gas: 1039782.303 units remaining) - [ True ] + [ True ] - location: 58 (remaining gas: 1039782.293 units remaining) [ ] - location: 58 (remaining gas: 1039782.278 units remaining) [ ] - location: 64 (remaining gas: 1039782.268 units remaining) - [ 0xaabbcc ] + [ 0xaabbcc ] - location: 67 (remaining gas: 1039782.258 units remaining) - [ 0xaabbcc - 0xaabbcc ] + [ 0xaabbcc + 0xaabbcc ] - location: 68 (remaining gas: 1039782.223 units remaining) - [ 0 ] + [ 0 ] - location: 70 (remaining gas: 1039782.208 units remaining) - [ True ] + [ True ] - location: 71 (remaining gas: 1039782.198 units remaining) [ ] - location: 71 (remaining gas: 1039782.183 units remaining) [ ] - location: 77 (remaining gas: 1039782.173 units remaining) - [ 0x ] + [ 0x ] - location: 80 (remaining gas: 1039782.163 units remaining) - [ 0x - 0x ] + [ 0x + 0x ] - location: 83 (remaining gas: 1039782.128 units remaining) - [ 0 ] + [ 0 ] - location: 85 (remaining gas: 1039782.113 units remaining) - [ True ] + [ True ] - location: 86 (remaining gas: 1039782.103 units remaining) [ ] - location: 86 (remaining gas: 1039782.088 units remaining) [ ] - location: 92 (remaining gas: 1039782.078 units remaining) - [ 0x ] + [ 0x ] - location: 95 (remaining gas: 1039782.068 units remaining) - [ 0x01 - 0x ] + [ 0x01 + 0x ] - location: 98 (remaining gas: 1039782.033 units remaining) - [ 1 ] + [ 1 ] - location: 100 (remaining gas: 1039782.018 units remaining) - [ True ] + [ True ] - location: 101 (remaining gas: 1039782.008 units remaining) [ ] - location: 101 (remaining gas: 1039781.993 units remaining) [ ] - location: 107 (remaining gas: 1039781.983 units remaining) - [ 0x01 ] + [ 0x01 ] - location: 110 (remaining gas: 1039781.973 units remaining) - [ 0x02 - 0x01 ] + [ 0x02 + 0x01 ] - location: 113 (remaining gas: 1039781.938 units remaining) - [ 1 ] + [ 1 ] - location: 115 (remaining gas: 1039781.923 units remaining) - [ True ] + [ True ] - location: 116 (remaining gas: 1039781.913 units remaining) [ ] - location: 116 (remaining gas: 1039781.898 units remaining) [ ] - location: 122 (remaining gas: 1039781.888 units remaining) - [ 0x02 ] + [ 0x02 ] - location: 125 (remaining gas: 1039781.878 units remaining) - [ 0x01 - 0x02 ] + [ 0x01 + 0x02 ] - location: 128 (remaining gas: 1039781.843 units remaining) - [ -1 ] + [ -1 ] - location: 130 (remaining gas: 1039781.828 units remaining) - [ True ] + [ True ] - location: 131 (remaining gas: 1039781.818 units remaining) [ ] - location: 131 (remaining gas: 1039781.803 units remaining) [ ] - location: 137 (remaining gas: 1039781.793 units remaining) - [ 1 ] + [ 1 ] - location: 140 (remaining gas: 1039781.783 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 141 (remaining gas: 1039781.748 units remaining) - [ 0 ] + [ 0 ] - location: 143 (remaining gas: 1039781.733 units remaining) - [ True ] + [ True ] - location: 144 (remaining gas: 1039781.723 units remaining) [ ] - location: 144 (remaining gas: 1039781.708 units remaining) [ ] - location: 150 (remaining gas: 1039781.698 units remaining) - [ 10 ] + [ 10 ] - location: 153 (remaining gas: 1039781.688 units remaining) - [ 5 - 10 ] + [ 5 + 10 ] - location: 156 (remaining gas: 1039781.653 units remaining) - [ -1 ] + [ -1 ] - location: 158 (remaining gas: 1039781.638 units remaining) - [ True ] + [ True ] - location: 159 (remaining gas: 1039781.628 units remaining) [ ] - location: 159 (remaining gas: 1039781.613 units remaining) [ ] - location: 165 (remaining gas: 1039781.603 units remaining) - [ -4 ] + [ -4 ] - location: 168 (remaining gas: 1039781.593 units remaining) - [ 1923 - -4 ] + [ 1923 + -4 ] - location: 171 (remaining gas: 1039781.558 units remaining) - [ 1 ] + [ 1 ] - location: 173 (remaining gas: 1039781.543 units remaining) - [ True ] + [ True ] - location: 174 (remaining gas: 1039781.533 units remaining) [ ] - location: 174 (remaining gas: 1039781.518 units remaining) [ ] - location: 180 (remaining gas: 1039781.508 units remaining) - [ 1 ] + [ 1 ] - location: 183 (remaining gas: 1039781.498 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 184 (remaining gas: 1039781.463 units remaining) - [ 0 ] + [ 0 ] - location: 186 (remaining gas: 1039781.448 units remaining) - [ True ] + [ True ] - location: 187 (remaining gas: 1039781.438 units remaining) [ ] - location: 187 (remaining gas: 1039781.423 units remaining) [ ] - location: 193 (remaining gas: 1039781.413 units remaining) - [ 10 ] + [ 10 ] - location: 196 (remaining gas: 1039781.403 units remaining) - [ 5 - 10 ] + [ 5 + 10 ] - location: 199 (remaining gas: 1039781.368 units remaining) - [ -1 ] + [ -1 ] - location: 201 (remaining gas: 1039781.353 units remaining) - [ True ] + [ True ] - location: 202 (remaining gas: 1039781.343 units remaining) [ ] - location: 202 (remaining gas: 1039781.328 units remaining) [ ] - location: 208 (remaining gas: 1039781.318 units remaining) - [ 4 ] + [ 4 ] - location: 211 (remaining gas: 1039781.308 units remaining) - [ 1923 - 4 ] + [ 1923 + 4 ] - location: 214 (remaining gas: 1039781.273 units remaining) - [ 1 ] + [ 1 ] - location: 216 (remaining gas: 1039781.258 units remaining) - [ True ] + [ True ] - location: 217 (remaining gas: 1039781.248 units remaining) [ ] - location: 217 (remaining gas: 1039781.233 units remaining) [ ] - location: 223 (remaining gas: 1039781.223 units remaining) - [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] + [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] - location: 226 (remaining gas: 1039781.213 units remaining) - [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" - "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] + [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" + "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] - location: 227 (remaining gas: 1039781.177 units remaining) - [ 0 ] + [ 0 ] - location: 229 (remaining gas: 1039781.162 units remaining) - [ True ] + [ True ] - location: 230 (remaining gas: 1039781.152 units remaining) [ ] - location: 230 (remaining gas: 1039781.137 units remaining) [ ] - location: 236 (remaining gas: 1039781.127 units remaining) - [ "tz1ddb9NMYHZi5UzPdzTZMYQQZoMub195zgv" ] + [ "tz1ddb9NMYHZi5UzPdzTZMYQQZoMub195zgv" ] - location: 239 (remaining gas: 1039781.117 units remaining) - [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" - "tz1ddb9NMYHZi5UzPdzTZMYQQZoMub195zgv" ] + [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" + "tz1ddb9NMYHZi5UzPdzTZMYQQZoMub195zgv" ] - location: 242 (remaining gas: 1039781.081 units remaining) - [ -1 ] + [ -1 ] - location: 244 (remaining gas: 1039781.066 units remaining) - [ True ] + [ True ] - location: 245 (remaining gas: 1039781.056 units remaining) [ ] - location: 245 (remaining gas: 1039781.041 units remaining) [ ] - location: 251 (remaining gas: 1039781.031 units remaining) - [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] + [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] - location: 254 (remaining gas: 1039781.021 units remaining) - [ "tz1ddb9NMYHZi5UzPdzTZMYQQZoMub195zgv" - "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] + [ "tz1ddb9NMYHZi5UzPdzTZMYQQZoMub195zgv" + "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] - location: 257 (remaining gas: 1039780.985 units remaining) - [ 1 ] + [ 1 ] - location: 259 (remaining gas: 1039780.970 units remaining) - [ True ] + [ True ] - location: 260 (remaining gas: 1039780.960 units remaining) [ ] - location: 260 (remaining gas: 1039780.945 units remaining) [ ] - location: 266 (remaining gas: 1039780.935 units remaining) - [ 1 ] + [ 1 ] - location: 269 (remaining gas: 1039780.925 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 270 (remaining gas: 1039780.890 units remaining) - [ 0 ] + [ 0 ] - location: 272 (remaining gas: 1039780.875 units remaining) - [ True ] + [ True ] - location: 273 (remaining gas: 1039780.865 units remaining) [ ] - location: 273 (remaining gas: 1039780.850 units remaining) [ ] - location: 279 (remaining gas: 1039780.840 units remaining) - [ 10 ] + [ 10 ] - location: 282 (remaining gas: 1039780.830 units remaining) - [ 5 - 10 ] + [ 5 + 10 ] - location: 285 (remaining gas: 1039780.795 units remaining) - [ -1 ] + [ -1 ] - location: 287 (remaining gas: 1039780.780 units remaining) - [ True ] + [ True ] - location: 288 (remaining gas: 1039780.770 units remaining) [ ] - location: 288 (remaining gas: 1039780.755 units remaining) [ ] - location: 294 (remaining gas: 1039780.745 units remaining) - [ 4 ] + [ 4 ] - location: 297 (remaining gas: 1039780.735 units remaining) - [ 1923 - 4 ] + [ 1923 + 4 ] - location: 300 (remaining gas: 1039780.700 units remaining) - [ 1 ] + [ 1 ] - location: 302 (remaining gas: 1039780.685 units remaining) - [ True ] + [ True ] - location: 303 (remaining gas: 1039780.675 units remaining) [ ] - location: 303 (remaining gas: 1039780.660 units remaining) [ ] - location: 309 (remaining gas: 1039780.650 units remaining) - [ "AABBCC" ] + [ "AABBCC" ] - location: 312 (remaining gas: 1039780.640 units remaining) - [ "AABBCC" - "AABBCC" ] + [ "AABBCC" + "AABBCC" ] - location: 313 (remaining gas: 1039780.605 units remaining) - [ 0 ] + [ 0 ] - location: 315 (remaining gas: 1039780.590 units remaining) - [ True ] + [ True ] - location: 316 (remaining gas: 1039780.580 units remaining) [ ] - location: 316 (remaining gas: 1039780.565 units remaining) [ ] - location: 322 (remaining gas: 1039780.555 units remaining) - [ "" ] + [ "" ] - location: 325 (remaining gas: 1039780.545 units remaining) - [ "" - "" ] + [ "" + "" ] - location: 328 (remaining gas: 1039780.510 units remaining) - [ 0 ] + [ 0 ] - location: 330 (remaining gas: 1039780.495 units remaining) - [ True ] + [ True ] - location: 331 (remaining gas: 1039780.485 units remaining) [ ] - location: 331 (remaining gas: 1039780.470 units remaining) [ ] - location: 337 (remaining gas: 1039780.460 units remaining) - [ "" ] + [ "" ] - location: 340 (remaining gas: 1039780.450 units remaining) - [ "a" - "" ] + [ "a" + "" ] - location: 343 (remaining gas: 1039780.415 units remaining) - [ 1 ] + [ 1 ] - location: 345 (remaining gas: 1039780.400 units remaining) - [ True ] + [ True ] - location: 346 (remaining gas: 1039780.390 units remaining) [ ] - location: 346 (remaining gas: 1039780.375 units remaining) [ ] - location: 352 (remaining gas: 1039780.365 units remaining) - [ "a" ] + [ "a" ] - location: 355 (remaining gas: 1039780.355 units remaining) - [ "b" - "a" ] + [ "b" + "a" ] - location: 358 (remaining gas: 1039780.320 units remaining) - [ 1 ] + [ 1 ] - location: 360 (remaining gas: 1039780.305 units remaining) - [ True ] + [ True ] - location: 361 (remaining gas: 1039780.295 units remaining) [ ] - location: 361 (remaining gas: 1039780.280 units remaining) [ ] - location: 367 (remaining gas: 1039780.270 units remaining) - [ "b" ] + [ "b" ] - location: 370 (remaining gas: 1039780.260 units remaining) - [ "a" - "b" ] + [ "a" + "b" ] - location: 373 (remaining gas: 1039780.225 units remaining) - [ -1 ] + [ -1 ] - location: 375 (remaining gas: 1039780.210 units remaining) - [ True ] + [ True ] - location: 376 (remaining gas: 1039780.200 units remaining) [ ] - location: 376 (remaining gas: 1039780.185 units remaining) [ ] - location: 382 (remaining gas: 1039780.175 units remaining) - [ "2019-09-16T08:38:05Z" ] + [ "2019-09-16T08:38:05Z" ] - location: 385 (remaining gas: 1039780.165 units remaining) - [ "2019-09-16T08:38:05Z" - "2019-09-16T08:38:05Z" ] + [ "2019-09-16T08:38:05Z" + "2019-09-16T08:38:05Z" ] - location: 386 (remaining gas: 1039780.130 units remaining) - [ 0 ] + [ 0 ] - location: 388 (remaining gas: 1039780.115 units remaining) - [ True ] + [ True ] - location: 389 (remaining gas: 1039780.105 units remaining) [ ] - location: 389 (remaining gas: 1039780.090 units remaining) [ ] - location: 395 (remaining gas: 1039780.080 units remaining) - [ "2017-09-16T08:38:04Z" ] + [ "2017-09-16T08:38:04Z" ] - location: 398 (remaining gas: 1039780.070 units remaining) - [ "2019-09-16T08:38:05Z" - "2017-09-16T08:38:04Z" ] + [ "2019-09-16T08:38:05Z" + "2017-09-16T08:38:04Z" ] - location: 401 (remaining gas: 1039780.035 units remaining) - [ 1 ] + [ 1 ] - location: 403 (remaining gas: 1039780.020 units remaining) - [ True ] + [ True ] - location: 404 (remaining gas: 1039780.010 units remaining) [ ] - location: 404 (remaining gas: 1039779.995 units remaining) [ ] - location: 410 (remaining gas: 1039779.985 units remaining) - [ "2019-09-16T08:38:05Z" ] + [ "2019-09-16T08:38:05Z" ] - location: 413 (remaining gas: 1039779.975 units remaining) - [ "2019-09-16T08:38:04Z" - "2019-09-16T08:38:05Z" ] + [ "2019-09-16T08:38:04Z" + "2019-09-16T08:38:05Z" ] - location: 416 (remaining gas: 1039779.940 units remaining) - [ -1 ] + [ -1 ] - location: 418 (remaining gas: 1039779.925 units remaining) - [ True ] + [ True ] - location: 419 (remaining gas: 1039779.915 units remaining) [ ] - location: 419 (remaining gas: 1039779.900 units remaining) [ ] - location: 425 (remaining gas: 1039779.890 units remaining) - [ Unit ] + [ Unit ] - location: 426 (remaining gas: 1039779.875 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 428 (remaining gas: 1039779.860 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comparisons.tz-{}-{ -9999999; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comparisons.tz-{}-{ -9999999; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out index ec75cfebb8..8c32b1b907 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comparisons.tz-{}-{ -9999999; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[comparisons.tz-{}-{ -9999999; -1 ; 0 ; 1 ; 9999999 }-{ .bbaa8924d2.out @@ -13,332 +13,332 @@ big_map diff trace - location: 10 (remaining gas: 1039962.637 units remaining) - [ (Pair { -9999999 ; -1 ; 0 ; 1 ; 9999999 } {}) ] + [ (Pair { -9999999 ; -1 ; 0 ; 1 ; 9999999 } {}) ] - location: 10 (remaining gas: 1039962.627 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 11 (remaining gas: 1039962.612 units remaining) - [ {} - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ {} + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 14 (remaining gas: 1039962.597 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 16 (remaining gas: 1039962.587 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.587 units remaining) - [ -9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.572 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.557 units remaining) - [ -1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.542 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.527 units remaining) - [ 0 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.512 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.497 units remaining) - [ 1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.482 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.467 units remaining) - [ 9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 19 (remaining gas: 1039962.452 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 17 (remaining gas: 1039962.437 units remaining) - [ { False ; False ; True ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { False ; False ; True ; False ; False } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 14 (remaining gas: 1039962.407 units remaining) - [ {} - { False ; False ; True ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ {} + { False ; False ; True ; False ; False } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 20 (remaining gas: 1039962.397 units remaining) - [ { False ; False ; True ; False ; False } - {} - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { False ; False ; True ; False ; False } + {} + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 21 (remaining gas: 1039962.382 units remaining) - [ { { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 22 (remaining gas: 1039962.367 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 24 (remaining gas: 1039962.357 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.357 units remaining) - [ -9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.342 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.327 units remaining) - [ -1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.312 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.297 units remaining) - [ 0 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.282 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.267 units remaining) - [ 1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.252 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.237 units remaining) - [ 9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 27 (remaining gas: 1039962.222 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 25 (remaining gas: 1039962.207 units remaining) - [ { True ; True ; False ; True ; True } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { True ; True ; False ; True ; True } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 22 (remaining gas: 1039962.177 units remaining) - [ { { False ; False ; True ; False ; False } } - { True ; True ; False ; True ; True } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { { False ; False ; True ; False ; False } } + { True ; True ; False ; True ; True } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 28 (remaining gas: 1039962.167 units remaining) - [ { True ; True ; False ; True ; True } - { { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { True ; True ; False ; True ; True } + { { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 29 (remaining gas: 1039962.152 units remaining) [ { { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 30 (remaining gas: 1039962.137 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 32 (remaining gas: 1039962.127 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.127 units remaining) - [ -9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039962.112 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.097 units remaining) - [ -1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039962.082 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.067 units remaining) - [ 0 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039962.052 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.037 units remaining) - [ 1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039962.022 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039962.007 units remaining) - [ 9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 35 (remaining gas: 1039961.992 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 33 (remaining gas: 1039961.977 units remaining) - [ { True ; True ; True ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { True ; True ; True ; False ; False } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 30 (remaining gas: 1039961.947 units remaining) [ { { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { True ; True ; True ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { True ; True ; True ; False ; False } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 36 (remaining gas: 1039961.937 units remaining) - [ { True ; True ; True ; False ; False } + [ { True ; True ; True ; False ; False } { { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 37 (remaining gas: 1039961.922 units remaining) [ { { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 38 (remaining gas: 1039961.907 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 40 (remaining gas: 1039961.897 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.897 units remaining) - [ -9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.882 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.867 units remaining) - [ -1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.852 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.837 units remaining) - [ 0 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.822 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.807 units remaining) - [ 1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.792 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.777 units remaining) - [ 9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 43 (remaining gas: 1039961.762 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 41 (remaining gas: 1039961.747 units remaining) - [ { True ; True ; False ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { True ; True ; False ; False ; False } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 38 (remaining gas: 1039961.717 units remaining) [ { { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { True ; True ; False ; False ; False } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { True ; True ; False ; False ; False } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 44 (remaining gas: 1039961.707 units remaining) - [ { True ; True ; False ; False ; False } + [ { True ; True ; False ; False ; False } { { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 45 (remaining gas: 1039961.692 units remaining) [ { { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 46 (remaining gas: 1039961.677 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 48 (remaining gas: 1039961.667 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.667 units remaining) - [ -9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.652 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.637 units remaining) - [ -1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ -1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.622 units remaining) - [ False - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ False + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.607 units remaining) - [ 0 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 0 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.592 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.577 units remaining) - [ 1 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 1 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.562 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.547 units remaining) - [ 9999999 - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ 9999999 + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 51 (remaining gas: 1039961.532 units remaining) - [ True - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ True + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 49 (remaining gas: 1039961.517 units remaining) - [ { False ; False ; True ; True ; True } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { False ; False ; True ; True ; True } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 46 (remaining gas: 1039961.487 units remaining) [ { { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { False ; False ; True ; True ; True } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { False ; False ; True ; True ; True } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 52 (remaining gas: 1039961.477 units remaining) - [ { False ; False ; True ; True ; True } + [ { False ; False ; True ; True ; True } { { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 53 (remaining gas: 1039961.462 units remaining) [ { { False ; False ; True ; True ; True } ; { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + { False ; False ; True ; False ; False } } + { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 54 (remaining gas: 1039961.447 units remaining) - [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] + [ { -9999999 ; -1 ; 0 ; 1 ; 9999999 } ] - location: 56 (remaining gas: 1039961.447 units remaining) - [ -9999999 ] + [ -9999999 ] - location: 58 (remaining gas: 1039961.432 units remaining) - [ False ] + [ False ] - location: 56 (remaining gas: 1039961.417 units remaining) - [ -1 ] + [ -1 ] - location: 58 (remaining gas: 1039961.402 units remaining) - [ False ] + [ False ] - location: 56 (remaining gas: 1039961.387 units remaining) - [ 0 ] + [ 0 ] - location: 58 (remaining gas: 1039961.372 units remaining) - [ False ] + [ False ] - location: 56 (remaining gas: 1039961.357 units remaining) - [ 1 ] + [ 1 ] - location: 58 (remaining gas: 1039961.342 units remaining) - [ True ] + [ True ] - location: 56 (remaining gas: 1039961.327 units remaining) - [ 9999999 ] + [ 9999999 ] - location: 58 (remaining gas: 1039961.312 units remaining) - [ True ] + [ True ] - location: 56 (remaining gas: 1039961.297 units remaining) - [ { False ; False ; False ; True ; True } ] + [ { False ; False ; False ; True ; True } ] - location: 54 (remaining gas: 1039961.267 units remaining) [ { { False ; False ; True ; True ; True } ; { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } - { False ; False ; False ; True ; True } ] + { False ; False ; True ; False ; False } } + { False ; False ; False ; True ; True } ] - location: 59 (remaining gas: 1039961.257 units remaining) - [ { False ; False ; False ; True ; True } + [ { False ; False ; False ; True ; True } { { False ; False ; True ; True ; True } ; { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } ] + { False ; False ; True ; False ; False } } ] - location: 60 (remaining gas: 1039961.242 units remaining) [ { { False ; False ; False ; True ; True } ; { False ; False ; True ; True ; True } ; { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } ] + { False ; False ; True ; False ; False } } ] - location: 61 (remaining gas: 1039961.227 units remaining) - [ {} + [ {} { { False ; False ; False ; True ; True } ; { False ; False ; True ; True ; True } ; { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } } ] + { False ; False ; True ; False ; False } } ] - location: 63 (remaining gas: 1039961.212 units remaining) [ (Pair {} { { False ; False ; False ; True ; True } ; @@ -346,5 +346,5 @@ trace { True ; True ; False ; False ; False } ; { True ; True ; True ; False ; False } ; { True ; True ; False ; True ; True } ; - { False ; False ; True ; False ; False } }) ] + { False ; False ; True ; False ; False } }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"World!\" }-{ \"Hello World!\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"World!\" }-{ \"Hello World!\" }].out" index 28986a4e8a..85cbfe2d57 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"World!\" }-{ \"Hello World!\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"World!\" }-{ \"Hello World!\" }].out" @@ -8,21 +8,21 @@ big_map diff trace - location: 9 (remaining gas: 1039992.305 units remaining) - [ (Pair { "World!" } {}) ] + [ (Pair { "World!" } {}) ] - location: 9 (remaining gas: 1039992.295 units remaining) - [ { "World!" } ] + [ { "World!" } ] - location: 10 (remaining gas: 1039992.295 units remaining) - [ "World!" ] + [ "World!" ] - location: 12 (remaining gas: 1039992.285 units remaining) - [ "Hello " - "World!" ] + [ "Hello " + "World!" ] - location: 15 (remaining gas: 1039992.220 units remaining) - [ "Hello World!" ] + [ "Hello World!" ] - location: 10 (remaining gas: 1039992.205 units remaining) - [ { "Hello World!" } ] + [ { "Hello World!" } ] - location: 16 (remaining gas: 1039992.190 units remaining) - [ {} - { "Hello World!" } ] + [ {} + { "Hello World!" } ] - location: 18 (remaining gas: 1039992.175 units remaining) - [ (Pair {} { "Hello World!" }) ] + [ (Pair {} { "Hello World!" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"test1\" ; \"test2\" }-{ \"Hello test1.c27e8c3ee6.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"test1\" ; \"test2\" }-{ \"Hello test1.c27e8c3ee6.out" index 92d059004c..cce3f270bf 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"test1\" ; \"test2\" }-{ \"Hello test1.c27e8c3ee6.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{ \"test1\" ; \"test2\" }-{ \"Hello test1.c27e8c3ee6.out" @@ -8,28 +8,28 @@ big_map diff trace - location: 9 (remaining gas: 1039992.151 units remaining) - [ (Pair { "test1" ; "test2" } {}) ] + [ (Pair { "test1" ; "test2" } {}) ] - location: 9 (remaining gas: 1039992.141 units remaining) - [ { "test1" ; "test2" } ] + [ { "test1" ; "test2" } ] - location: 10 (remaining gas: 1039992.141 units remaining) - [ "test1" ] + [ "test1" ] - location: 12 (remaining gas: 1039992.131 units remaining) - [ "Hello " - "test1" ] + [ "Hello " + "test1" ] - location: 15 (remaining gas: 1039992.066 units remaining) - [ "Hello test1" ] + [ "Hello test1" ] - location: 10 (remaining gas: 1039992.051 units remaining) - [ "test2" ] + [ "test2" ] - location: 12 (remaining gas: 1039992.041 units remaining) - [ "Hello " - "test2" ] + [ "Hello " + "test2" ] - location: 15 (remaining gas: 1039991.976 units remaining) - [ "Hello test2" ] + [ "Hello test2" ] - location: 10 (remaining gas: 1039991.961 units remaining) - [ { "Hello test1" ; "Hello test2" } ] + [ { "Hello test1" ; "Hello test2" } ] - location: 16 (remaining gas: 1039991.946 units remaining) - [ {} - { "Hello test1" ; "Hello test2" } ] + [ {} + { "Hello test1" ; "Hello test2" } ] - location: 18 (remaining gas: 1039991.931 units remaining) - [ (Pair {} { "Hello test1" ; "Hello test2" }) ] + [ (Pair {} { "Hello test1" ; "Hello test2" }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{}-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{}-{}].out index f43586da20..dfa030773d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{}-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello.tz-{}-{}-{}].out @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039992.479 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] - location: 9 (remaining gas: 1039992.469 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039992.469 units remaining) - [ {} ] + [ {} ] - location: 16 (remaining gas: 1039992.454 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 18 (remaining gas: 1039992.439 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out index d24d76a16e..1cf956e38e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xab ; 0xcd }-{ 0xffab ; 0xffcd }].out @@ -8,28 +8,28 @@ big_map diff trace - location: 9 (remaining gas: 1039992.398 units remaining) - [ (Pair { 0xab ; 0xcd } {}) ] + [ (Pair { 0xab ; 0xcd } {}) ] - location: 9 (remaining gas: 1039992.388 units remaining) - [ { 0xab ; 0xcd } ] + [ { 0xab ; 0xcd } ] - location: 10 (remaining gas: 1039992.388 units remaining) - [ 0xab ] + [ 0xab ] - location: 12 (remaining gas: 1039992.378 units remaining) - [ 0xff - 0xab ] + [ 0xff + 0xab ] - location: 15 (remaining gas: 1039992.313 units remaining) - [ 0xffab ] + [ 0xffab ] - location: 10 (remaining gas: 1039992.298 units remaining) - [ 0xcd ] + [ 0xcd ] - location: 12 (remaining gas: 1039992.288 units remaining) - [ 0xff - 0xcd ] + [ 0xff + 0xcd ] - location: 15 (remaining gas: 1039992.223 units remaining) - [ 0xffcd ] + [ 0xffcd ] - location: 10 (remaining gas: 1039992.208 units remaining) - [ { 0xffab ; 0xffcd } ] + [ { 0xffab ; 0xffcd } ] - location: 16 (remaining gas: 1039992.193 units remaining) - [ {} - { 0xffab ; 0xffcd } ] + [ {} + { 0xffab ; 0xffcd } ] - location: 18 (remaining gas: 1039992.178 units remaining) - [ (Pair {} { 0xffab ; 0xffcd }) ] + [ (Pair {} { 0xffab ; 0xffcd }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out index df03ec93fa..72093649ef 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{ 0xcd }-{ 0xffcd }].out @@ -8,21 +8,21 @@ big_map diff trace - location: 9 (remaining gas: 1039992.498 units remaining) - [ (Pair { 0xcd } {}) ] + [ (Pair { 0xcd } {}) ] - location: 9 (remaining gas: 1039992.488 units remaining) - [ { 0xcd } ] + [ { 0xcd } ] - location: 10 (remaining gas: 1039992.488 units remaining) - [ 0xcd ] + [ 0xcd ] - location: 12 (remaining gas: 1039992.478 units remaining) - [ 0xff - 0xcd ] + [ 0xff + 0xcd ] - location: 15 (remaining gas: 1039992.413 units remaining) - [ 0xffcd ] + [ 0xffcd ] - location: 10 (remaining gas: 1039992.398 units remaining) - [ { 0xffcd } ] + [ { 0xffcd } ] - location: 16 (remaining gas: 1039992.383 units remaining) - [ {} - { 0xffcd } ] + [ {} + { 0xffcd } ] - location: 18 (remaining gas: 1039992.368 units remaining) - [ (Pair {} { 0xffcd }) ] + [ (Pair {} { 0xffcd }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{}-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{}-{}].out index 0612eb4df5..16a9b699f7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{}-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_hello_bytes.tz-{}-{}-{}].out @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039992.598 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] - location: 9 (remaining gas: 1039992.588 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039992.588 units remaining) - [ {} ] + [ {} ] - location: 16 (remaining gas: 1039992.573 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 18 (remaining gas: 1039992.558 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"Hello\" ; \" \" ; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"Hello\" ; \" \" ; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" index bd2733d92a..4d8c7075d1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"Hello\" ; \" \" ; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"Hello\" ; \" \" ; \"World\" ; \"!\" }-\"He.0c7b4cd53c.out" @@ -8,112 +8,112 @@ big_map diff trace - location: 8 (remaining gas: 1039987.037 units remaining) - [ (Pair { "Hello" ; " " ; "World" ; "!" } "") ] + [ (Pair { "Hello" ; " " ; "World" ; "!" } "") ] - location: 8 (remaining gas: 1039987.027 units remaining) - [ { "Hello" ; " " ; "World" ; "!" } ] + [ { "Hello" ; " " ; "World" ; "!" } ] - location: 9 (remaining gas: 1039987.017 units remaining) - [ "" - { "Hello" ; " " ; "World" ; "!" } ] + [ "" + { "Hello" ; " " ; "World" ; "!" } ] - location: 12 (remaining gas: 1039987.007 units remaining) - [ { "Hello" ; " " ; "World" ; "!" } - "" ] + [ { "Hello" ; " " ; "World" ; "!" } + "" ] - location: 13 (remaining gas: 1039987.007 units remaining) - [ "Hello" - "" ] + [ "Hello" + "" ] - location: 15 (remaining gas: 1039986.997 units remaining) - [ "" - "Hello" ] + [ "" + "Hello" ] - location: 16 (remaining gas: 1039986.982 units remaining) - [ "Hello" ] + [ "Hello" ] - location: 18 (remaining gas: 1039986.967 units remaining) - [ {} - "Hello" ] + [ {} + "Hello" ] - location: 20 (remaining gas: 1039986.957 units remaining) - [ "Hello" - {} ] + [ "Hello" + {} ] - location: 21 (remaining gas: 1039986.942 units remaining) - [ { "Hello" } ] + [ { "Hello" } ] - location: 16 (remaining gas: 1039986.912 units remaining) - [ "" - { "Hello" } ] + [ "" + { "Hello" } ] - location: 22 (remaining gas: 1039986.897 units remaining) - [ { "" ; "Hello" } ] + [ { "" ; "Hello" } ] - location: 23 (remaining gas: 1039986.777 units remaining) - [ "Hello" ] + [ "Hello" ] - location: 13 (remaining gas: 1039986.762 units remaining) - [ " " - "Hello" ] + [ " " + "Hello" ] - location: 15 (remaining gas: 1039986.752 units remaining) - [ "Hello" - " " ] + [ "Hello" + " " ] - location: 16 (remaining gas: 1039986.737 units remaining) - [ " " ] + [ " " ] - location: 18 (remaining gas: 1039986.722 units remaining) - [ {} - " " ] + [ {} + " " ] - location: 20 (remaining gas: 1039986.712 units remaining) - [ " " - {} ] + [ " " + {} ] - location: 21 (remaining gas: 1039986.697 units remaining) - [ { " " } ] + [ { " " } ] - location: 16 (remaining gas: 1039986.667 units remaining) - [ "Hello" - { " " } ] + [ "Hello" + { " " } ] - location: 22 (remaining gas: 1039986.652 units remaining) - [ { "Hello" ; " " } ] + [ { "Hello" ; " " } ] - location: 23 (remaining gas: 1039986.532 units remaining) - [ "Hello " ] + [ "Hello " ] - location: 13 (remaining gas: 1039986.517 units remaining) - [ "World" - "Hello " ] + [ "World" + "Hello " ] - location: 15 (remaining gas: 1039986.507 units remaining) - [ "Hello " - "World" ] + [ "Hello " + "World" ] - location: 16 (remaining gas: 1039986.492 units remaining) - [ "World" ] + [ "World" ] - location: 18 (remaining gas: 1039986.477 units remaining) - [ {} - "World" ] + [ {} + "World" ] - location: 20 (remaining gas: 1039986.467 units remaining) - [ "World" - {} ] + [ "World" + {} ] - location: 21 (remaining gas: 1039986.452 units remaining) - [ { "World" } ] + [ { "World" } ] - location: 16 (remaining gas: 1039986.422 units remaining) - [ "Hello " - { "World" } ] + [ "Hello " + { "World" } ] - location: 22 (remaining gas: 1039986.407 units remaining) - [ { "Hello " ; "World" } ] + [ { "Hello " ; "World" } ] - location: 23 (remaining gas: 1039986.286 units remaining) - [ "Hello World" ] + [ "Hello World" ] - location: 13 (remaining gas: 1039986.271 units remaining) - [ "!" - "Hello World" ] + [ "!" + "Hello World" ] - location: 15 (remaining gas: 1039986.261 units remaining) - [ "Hello World" - "!" ] + [ "Hello World" + "!" ] - location: 16 (remaining gas: 1039986.246 units remaining) - [ "!" ] + [ "!" ] - location: 18 (remaining gas: 1039986.231 units remaining) - [ {} - "!" ] + [ {} + "!" ] - location: 20 (remaining gas: 1039986.221 units remaining) - [ "!" - {} ] + [ "!" + {} ] - location: 21 (remaining gas: 1039986.206 units remaining) - [ { "!" } ] + [ { "!" } ] - location: 16 (remaining gas: 1039986.176 units remaining) - [ "Hello World" - { "!" } ] + [ "Hello World" + { "!" } ] - location: 22 (remaining gas: 1039986.161 units remaining) - [ { "Hello World" ; "!" } ] + [ { "Hello World" ; "!" } ] - location: 23 (remaining gas: 1039986.040 units remaining) - [ "Hello World!" ] + [ "Hello World!" ] - location: 13 (remaining gas: 1039986.025 units remaining) - [ "Hello World!" ] + [ "Hello World!" ] - location: 24 (remaining gas: 1039986.010 units remaining) - [ {} - "Hello World!" ] + [ {} + "Hello World!" ] - location: 26 (remaining gas: 1039985.995 units remaining) - [ (Pair {} "Hello World!") ] + [ (Pair {} "Hello World!") ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" index ac946b1f45..85657f6e29 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{ \"a\" ; \"b\" ; \"c\" }-\"abc\"].out" @@ -8,89 +8,89 @@ big_map diff trace - location: 8 (remaining gas: 1039987.241 units remaining) - [ (Pair { "a" ; "b" ; "c" } "") ] + [ (Pair { "a" ; "b" ; "c" } "") ] - location: 8 (remaining gas: 1039987.231 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 9 (remaining gas: 1039987.221 units remaining) - [ "" - { "a" ; "b" ; "c" } ] + [ "" + { "a" ; "b" ; "c" } ] - location: 12 (remaining gas: 1039987.211 units remaining) - [ { "a" ; "b" ; "c" } - "" ] + [ { "a" ; "b" ; "c" } + "" ] - location: 13 (remaining gas: 1039987.211 units remaining) - [ "a" - "" ] + [ "a" + "" ] - location: 15 (remaining gas: 1039987.201 units remaining) - [ "" - "a" ] + [ "" + "a" ] - location: 16 (remaining gas: 1039987.186 units remaining) - [ "a" ] + [ "a" ] - location: 18 (remaining gas: 1039987.171 units remaining) - [ {} - "a" ] + [ {} + "a" ] - location: 20 (remaining gas: 1039987.161 units remaining) - [ "a" - {} ] + [ "a" + {} ] - location: 21 (remaining gas: 1039987.146 units remaining) - [ { "a" } ] + [ { "a" } ] - location: 16 (remaining gas: 1039987.116 units remaining) - [ "" - { "a" } ] + [ "" + { "a" } ] - location: 22 (remaining gas: 1039987.101 units remaining) - [ { "" ; "a" } ] + [ { "" ; "a" } ] - location: 23 (remaining gas: 1039986.981 units remaining) - [ "a" ] + [ "a" ] - location: 13 (remaining gas: 1039986.966 units remaining) - [ "b" - "a" ] + [ "b" + "a" ] - location: 15 (remaining gas: 1039986.956 units remaining) - [ "a" - "b" ] + [ "a" + "b" ] - location: 16 (remaining gas: 1039986.941 units remaining) - [ "b" ] + [ "b" ] - location: 18 (remaining gas: 1039986.926 units remaining) - [ {} - "b" ] + [ {} + "b" ] - location: 20 (remaining gas: 1039986.916 units remaining) - [ "b" - {} ] + [ "b" + {} ] - location: 21 (remaining gas: 1039986.901 units remaining) - [ { "b" } ] + [ { "b" } ] - location: 16 (remaining gas: 1039986.871 units remaining) - [ "a" - { "b" } ] + [ "a" + { "b" } ] - location: 22 (remaining gas: 1039986.856 units remaining) - [ { "a" ; "b" } ] + [ { "a" ; "b" } ] - location: 23 (remaining gas: 1039986.736 units remaining) - [ "ab" ] + [ "ab" ] - location: 13 (remaining gas: 1039986.721 units remaining) - [ "c" - "ab" ] + [ "c" + "ab" ] - location: 15 (remaining gas: 1039986.711 units remaining) - [ "ab" - "c" ] + [ "ab" + "c" ] - location: 16 (remaining gas: 1039986.696 units remaining) - [ "c" ] + [ "c" ] - location: 18 (remaining gas: 1039986.681 units remaining) - [ {} - "c" ] + [ {} + "c" ] - location: 20 (remaining gas: 1039986.671 units remaining) - [ "c" - {} ] + [ "c" + {} ] - location: 21 (remaining gas: 1039986.656 units remaining) - [ { "c" } ] + [ { "c" } ] - location: 16 (remaining gas: 1039986.626 units remaining) - [ "ab" - { "c" } ] + [ "ab" + { "c" } ] - location: 22 (remaining gas: 1039986.611 units remaining) - [ { "ab" ; "c" } ] + [ { "ab" ; "c" } ] - location: 23 (remaining gas: 1039986.491 units remaining) - [ "abc" ] + [ "abc" ] - location: 13 (remaining gas: 1039986.476 units remaining) - [ "abc" ] + [ "abc" ] - location: 24 (remaining gas: 1039986.461 units remaining) - [ {} - "abc" ] + [ {} + "abc" ] - location: 26 (remaining gas: 1039986.446 units remaining) - [ (Pair {} "abc") ] + [ (Pair {} "abc") ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{}-\"\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{}-\"\"].out" index 486f5213dd..b499b54b28 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{}-\"\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[concat_list.tz-\"\"-{}-\"\"].out" @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039987.613 units remaining) - [ (Pair {} "") ] + [ (Pair {} "") ] - location: 8 (remaining gas: 1039987.603 units remaining) - [ {} ] + [ {} ] - location: 9 (remaining gas: 1039987.593 units remaining) - [ "" - {} ] + [ "" + {} ] - location: 12 (remaining gas: 1039987.583 units remaining) - [ {} - "" ] + [ {} + "" ] - location: 13 (remaining gas: 1039987.583 units remaining) - [ "" ] + [ "" ] - location: 24 (remaining gas: 1039987.568 units remaining) - [ {} - "" ] + [ {} + "" ] - location: 26 (remaining gas: 1039987.553 units remaining) - [ (Pair {} "") ] + [ (Pair {} "") ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out index 94dc28981e..96c73455d4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ -5 ; 10 }-99-{ 99 ; -5 ; 10 }].out @@ -8,15 +8,15 @@ big_map diff trace - location: 8 (remaining gas: 1039994.045 units remaining) - [ (Pair 99 { -5 ; 10 }) ] + [ (Pair 99 { -5 ; 10 }) ] - location: 8 (remaining gas: 1039994.035 units remaining) - [ 99 - { -5 ; 10 } ] + [ 99 + { -5 ; 10 } ] - location: 9 (remaining gas: 1039994.020 units remaining) - [ { 99 ; -5 ; 10 } ] + [ { 99 ; -5 ; 10 } ] - location: 10 (remaining gas: 1039994.005 units remaining) - [ {} - { 99 ; -5 ; 10 } ] + [ {} + { 99 ; -5 ; 10 } ] - location: 12 (remaining gas: 1039993.990 units remaining) - [ (Pair {} { 99 ; -5 ; 10 }) ] + [ (Pair {} { 99 ; -5 ; 10 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out index b7d44136d7..d3babd6fcb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{ 10 }--5-{ -5 ; 10 }].out @@ -8,15 +8,15 @@ big_map diff trace - location: 8 (remaining gas: 1039994.145 units remaining) - [ (Pair -5 { 10 }) ] + [ (Pair -5 { 10 }) ] - location: 8 (remaining gas: 1039994.135 units remaining) - [ -5 - { 10 } ] + [ -5 + { 10 } ] - location: 9 (remaining gas: 1039994.120 units remaining) - [ { -5 ; 10 } ] + [ { -5 ; 10 } ] - location: 10 (remaining gas: 1039994.105 units remaining) - [ {} - { -5 ; 10 } ] + [ {} + { -5 ; 10 } ] - location: 12 (remaining gas: 1039994.090 units remaining) - [ (Pair {} { -5 ; 10 }) ] + [ (Pair {} { -5 ; 10 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{}-10-{ 10 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{}-10-{ 10 }].out index 2a7e61e518..479e6eb03d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{}-10-{ 10 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[cons.tz-{}-10-{ 10 }].out @@ -8,15 +8,15 @@ big_map diff trace - location: 8 (remaining gas: 1039994.245 units remaining) - [ (Pair 10 {}) ] + [ (Pair 10 {}) ] - location: 8 (remaining gas: 1039994.235 units remaining) - [ 10 - {} ] + [ 10 + {} ] - location: 9 (remaining gas: 1039994.220 units remaining) - [ { 10 } ] + [ { 10 } ] - location: 10 (remaining gas: 1039994.205 units remaining) - [ {} - { 10 } ] + [ {} + { 10 } ] - location: 12 (remaining gas: 1039994.190 units remaining) - [ (Pair {} { 10 }) ] + [ (Pair {} { 10 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"A\" } { \"B\" })-(Some False)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"A\" } { \"B\" })-(Some False)].out" index 8b9eba75d3..a4d658b496 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"A\" } { \"B\" })-(Some False)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"A\" } { \"B\" })-(Some False)].out" @@ -8,159 +8,159 @@ big_map diff trace - location: 12 (remaining gas: 1039963.179 units remaining) - [ (Pair (Pair { "A" } { "B" }) None) ] + [ (Pair (Pair { "A" } { "B" }) None) ] - location: 12 (remaining gas: 1039963.169 units remaining) - [ (Pair { "A" } { "B" }) ] + [ (Pair { "A" } { "B" }) ] - location: 13 (remaining gas: 1039963.159 units remaining) - [ (Pair { "A" } { "B" }) - (Pair { "A" } { "B" }) ] + [ (Pair { "A" } { "B" }) + (Pair { "A" } { "B" }) ] - location: 14 (remaining gas: 1039963.149 units remaining) - [ { "A" } - (Pair { "A" } { "B" }) ] + [ { "A" } + (Pair { "A" } { "B" }) ] - location: 15 (remaining gas: 1039963.134 units remaining) - [ (Pair { "A" } { "B" }) ] + [ (Pair { "A" } { "B" }) ] - location: 17 (remaining gas: 1039963.124 units remaining) - [ { "B" } ] + [ { "B" } ] - location: 15 (remaining gas: 1039963.094 units remaining) - [ { "A" } - { "B" } ] + [ { "A" } + { "B" } ] - location: 18 (remaining gas: 1039962.874 units remaining) - [ {} - { "A" } - { "B" } ] + [ {} + { "A" } + { "B" } ] - location: 20 (remaining gas: 1039962.864 units remaining) - [ { "A" } - {} - { "B" } ] + [ { "A" } + {} + { "B" } ] - location: 21 (remaining gas: 1039962.864 units remaining) - [ "A" - {} - { "B" } ] + [ "A" + {} + { "B" } ] - location: 23 (remaining gas: 1039962.849 units remaining) - [ (Pair "A" {}) - { "B" } ] + [ (Pair "A" {}) + { "B" } ] - location: 24 (remaining gas: 1039962.839 units remaining) - [ (Pair "A" {}) - (Pair "A" {}) - { "B" } ] + [ (Pair "A" {}) + (Pair "A" {}) + { "B" } ] - location: 25 (remaining gas: 1039962.829 units remaining) - [ "A" - (Pair "A" {}) - { "B" } ] + [ "A" + (Pair "A" {}) + { "B" } ] - location: 26 (remaining gas: 1039962.814 units remaining) - [ (Pair "A" {}) - { "B" } ] + [ (Pair "A" {}) + { "B" } ] - location: 28 (remaining gas: 1039962.804 units remaining) - [ {} - { "B" } ] + [ {} + { "B" } ] - location: 26 (remaining gas: 1039962.774 units remaining) - [ "A" - {} - { "B" } ] + [ "A" + {} + { "B" } ] - location: 29 (remaining gas: 1039962.764 units remaining) - [ True - "A" - {} - { "B" } ] + [ True + "A" + {} + { "B" } ] - location: 32 (remaining gas: 1039962.754 units remaining) - [ "A" - True - {} - { "B" } ] + [ "A" + True + {} + { "B" } ] - location: 33 (remaining gas: 1039962.554 units remaining) - [ { "A" } - { "B" } ] + [ { "A" } + { "B" } ] - location: 21 (remaining gas: 1039962.539 units remaining) - [ { "A" } - { "B" } ] + [ { "A" } + { "B" } ] - location: 34 (remaining gas: 1039962.529 units remaining) - [ True - { "A" } - { "B" } ] + [ True + { "A" } + { "B" } ] - location: 37 (remaining gas: 1039962.519 units remaining) - [ { "A" } - True - { "B" } ] + [ { "A" } + True + { "B" } ] - location: 38 (remaining gas: 1039962.504 units remaining) - [ (Pair { "A" } True) - { "B" } ] + [ (Pair { "A" } True) + { "B" } ] - location: 39 (remaining gas: 1039962.494 units remaining) - [ { "B" } - (Pair { "A" } True) ] + [ { "B" } + (Pair { "A" } True) ] - location: 40 (remaining gas: 1039962.494 units remaining) - [ "B" - (Pair { "A" } True) ] + [ "B" + (Pair { "A" } True) ] - location: 42 (remaining gas: 1039962.479 units remaining) - [ (Pair "B" { "A" } True) ] + [ (Pair "B" { "A" } True) ] - location: 43 (remaining gas: 1039962.469 units remaining) - [ (Pair "B" { "A" } True) - (Pair "B" { "A" } True) ] + [ (Pair "B" { "A" } True) + (Pair "B" { "A" } True) ] - location: 44 (remaining gas: 1039962.459 units remaining) - [ (Pair "B" { "A" } True) - (Pair "B" { "A" } True) - (Pair "B" { "A" } True) ] + [ (Pair "B" { "A" } True) + (Pair "B" { "A" } True) + (Pair "B" { "A" } True) ] - location: 45 (remaining gas: 1039962.449 units remaining) - [ "B" - (Pair "B" { "A" } True) - (Pair "B" { "A" } True) ] + [ "B" + (Pair "B" { "A" } True) + (Pair "B" { "A" } True) ] - location: 46 (remaining gas: 1039962.434 units remaining) - [ (Pair "B" { "A" } True) - (Pair "B" { "A" } True) ] + [ (Pair "B" { "A" } True) + (Pair "B" { "A" } True) ] - location: 49 (remaining gas: 1039962.424 units remaining) - [ (Pair { "A" } True) - (Pair "B" { "A" } True) ] + [ (Pair { "A" } True) + (Pair "B" { "A" } True) ] - location: 50 (remaining gas: 1039962.414 units remaining) - [ { "A" } - (Pair "B" { "A" } True) ] + [ { "A" } + (Pair "B" { "A" } True) ] - location: 51 (remaining gas: 1039962.399 units remaining) - [ (Pair "B" { "A" } True) ] + [ (Pair "B" { "A" } True) ] - location: 54 (remaining gas: 1039962.389 units remaining) - [ (Pair { "A" } True) ] + [ (Pair { "A" } True) ] - location: 55 (remaining gas: 1039962.379 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039962.349 units remaining) - [ { "A" } - True ] + [ { "A" } + True ] - location: 56 (remaining gas: 1039962.339 units remaining) - [ { "A" } - { "A" } - True ] + [ { "A" } + { "A" } + True ] - location: 46 (remaining gas: 1039962.309 units remaining) - [ "B" - { "A" } - { "A" } - True ] + [ "B" + { "A" } + { "A" } + True ] - location: 57 (remaining gas: 1039962.124 units remaining) - [ False - { "A" } - True ] + [ False + { "A" } + True ] - location: 58 (remaining gas: 1039962.109 units remaining) - [ { "A" } - True ] + [ { "A" } + True ] - location: 60 (remaining gas: 1039962.099 units remaining) - [ True - { "A" } ] + [ True + { "A" } ] - location: 58 (remaining gas: 1039962.069 units remaining) - [ False - True - { "A" } ] + [ False + True + { "A" } ] - location: 61 (remaining gas: 1039962.049 units remaining) - [ False - { "A" } ] + [ False + { "A" } ] - location: 62 (remaining gas: 1039962.039 units remaining) - [ { "A" } - False ] + [ { "A" } + False ] - location: 63 (remaining gas: 1039962.024 units remaining) - [ (Pair { "A" } False) ] + [ (Pair { "A" } False) ] - location: 40 (remaining gas: 1039962.009 units remaining) - [ (Pair { "A" } False) ] + [ (Pair { "A" } False) ] - location: 64 (remaining gas: 1039961.999 units remaining) - [ False ] + [ False ] - location: 65 (remaining gas: 1039961.984 units remaining) - [ (Some False) ] + [ (Some False) ] - location: 66 (remaining gas: 1039961.969 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 68 (remaining gas: 1039961.954 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" index 371c9aa80b..fde6623fdb 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"B\" ; \"asdf\" ; \"C\" }.4360bbe5d0.out" @@ -8,403 +8,403 @@ big_map diff trace - location: 12 (remaining gas: 1039962.499 units remaining) - [ (Pair (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) None) ] + [ (Pair (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) None) ] - location: 12 (remaining gas: 1039962.489 units remaining) - [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] + [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] - location: 13 (remaining gas: 1039962.479 units remaining) - [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) - (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] + [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) + (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] - location: 14 (remaining gas: 1039962.469 units remaining) - [ { "B" ; "B" ; "asdf" ; "C" } - (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] + [ { "B" ; "B" ; "asdf" ; "C" } + (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] - location: 15 (remaining gas: 1039962.454 units remaining) - [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] + [ (Pair { "B" ; "B" ; "asdf" ; "C" } { "B" ; "C" ; "asdf" }) ] - location: 17 (remaining gas: 1039962.444 units remaining) - [ { "B" ; "C" ; "asdf" } ] + [ { "B" ; "C" ; "asdf" } ] - location: 15 (remaining gas: 1039962.414 units remaining) - [ { "B" ; "B" ; "asdf" ; "C" } - { "B" ; "C" ; "asdf" } ] + [ { "B" ; "B" ; "asdf" ; "C" } + { "B" ; "C" ; "asdf" } ] - location: 18 (remaining gas: 1039962.194 units remaining) - [ {} - { "B" ; "B" ; "asdf" ; "C" } - { "B" ; "C" ; "asdf" } ] + [ {} + { "B" ; "B" ; "asdf" ; "C" } + { "B" ; "C" ; "asdf" } ] - location: 20 (remaining gas: 1039962.184 units remaining) - [ { "B" ; "B" ; "asdf" ; "C" } - {} - { "B" ; "C" ; "asdf" } ] + [ { "B" ; "B" ; "asdf" ; "C" } + {} + { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039962.184 units remaining) - [ "B" - {} - { "B" ; "C" ; "asdf" } ] + [ "B" + {} + { "B" ; "C" ; "asdf" } ] - location: 23 (remaining gas: 1039962.169 units remaining) - [ (Pair "B" {}) - { "B" ; "C" ; "asdf" } ] + [ (Pair "B" {}) + { "B" ; "C" ; "asdf" } ] - location: 24 (remaining gas: 1039962.159 units remaining) - [ (Pair "B" {}) - (Pair "B" {}) - { "B" ; "C" ; "asdf" } ] + [ (Pair "B" {}) + (Pair "B" {}) + { "B" ; "C" ; "asdf" } ] - location: 25 (remaining gas: 1039962.149 units remaining) - [ "B" - (Pair "B" {}) - { "B" ; "C" ; "asdf" } ] + [ "B" + (Pair "B" {}) + { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039962.134 units remaining) - [ (Pair "B" {}) - { "B" ; "C" ; "asdf" } ] + [ (Pair "B" {}) + { "B" ; "C" ; "asdf" } ] - location: 28 (remaining gas: 1039962.124 units remaining) - [ {} - { "B" ; "C" ; "asdf" } ] + [ {} + { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039962.094 units remaining) - [ "B" - {} - { "B" ; "C" ; "asdf" } ] + [ "B" + {} + { "B" ; "C" ; "asdf" } ] - location: 29 (remaining gas: 1039962.084 units remaining) - [ True - "B" - {} - { "B" ; "C" ; "asdf" } ] + [ True + "B" + {} + { "B" ; "C" ; "asdf" } ] - location: 32 (remaining gas: 1039962.074 units remaining) - [ "B" - True - {} - { "B" ; "C" ; "asdf" } ] + [ "B" + True + {} + { "B" ; "C" ; "asdf" } ] - location: 33 (remaining gas: 1039961.874 units remaining) - [ { "B" } - { "B" ; "C" ; "asdf" } ] + [ { "B" } + { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039961.859 units remaining) - [ "B" - { "B" } - { "B" ; "C" ; "asdf" } ] + [ "B" + { "B" } + { "B" ; "C" ; "asdf" } ] - location: 23 (remaining gas: 1039961.844 units remaining) - [ (Pair "B" { "B" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "B" { "B" }) + { "B" ; "C" ; "asdf" } ] - location: 24 (remaining gas: 1039961.834 units remaining) - [ (Pair "B" { "B" }) - (Pair "B" { "B" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "B" { "B" }) + (Pair "B" { "B" }) + { "B" ; "C" ; "asdf" } ] - location: 25 (remaining gas: 1039961.824 units remaining) - [ "B" - (Pair "B" { "B" }) - { "B" ; "C" ; "asdf" } ] + [ "B" + (Pair "B" { "B" }) + { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.809 units remaining) - [ (Pair "B" { "B" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "B" { "B" }) + { "B" ; "C" ; "asdf" } ] - location: 28 (remaining gas: 1039961.799 units remaining) - [ { "B" } - { "B" ; "C" ; "asdf" } ] + [ { "B" } + { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.769 units remaining) - [ "B" - { "B" } - { "B" ; "C" ; "asdf" } ] + [ "B" + { "B" } + { "B" ; "C" ; "asdf" } ] - location: 29 (remaining gas: 1039961.759 units remaining) - [ True - "B" - { "B" } - { "B" ; "C" ; "asdf" } ] + [ True + "B" + { "B" } + { "B" ; "C" ; "asdf" } ] - location: 32 (remaining gas: 1039961.749 units remaining) - [ "B" - True - { "B" } - { "B" ; "C" ; "asdf" } ] + [ "B" + True + { "B" } + { "B" ; "C" ; "asdf" } ] - location: 33 (remaining gas: 1039961.479 units remaining) - [ { "B" } - { "B" ; "C" ; "asdf" } ] + [ { "B" } + { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039961.464 units remaining) - [ "asdf" - { "B" } - { "B" ; "C" ; "asdf" } ] + [ "asdf" + { "B" } + { "B" ; "C" ; "asdf" } ] - location: 23 (remaining gas: 1039961.449 units remaining) - [ (Pair "asdf" { "B" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "asdf" { "B" }) + { "B" ; "C" ; "asdf" } ] - location: 24 (remaining gas: 1039961.439 units remaining) - [ (Pair "asdf" { "B" }) - (Pair "asdf" { "B" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "asdf" { "B" }) + (Pair "asdf" { "B" }) + { "B" ; "C" ; "asdf" } ] - location: 25 (remaining gas: 1039961.429 units remaining) - [ "asdf" - (Pair "asdf" { "B" }) - { "B" ; "C" ; "asdf" } ] + [ "asdf" + (Pair "asdf" { "B" }) + { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.414 units remaining) - [ (Pair "asdf" { "B" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "asdf" { "B" }) + { "B" ; "C" ; "asdf" } ] - location: 28 (remaining gas: 1039961.404 units remaining) - [ { "B" } - { "B" ; "C" ; "asdf" } ] + [ { "B" } + { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.374 units remaining) - [ "asdf" - { "B" } - { "B" ; "C" ; "asdf" } ] + [ "asdf" + { "B" } + { "B" ; "C" ; "asdf" } ] - location: 29 (remaining gas: 1039961.364 units remaining) - [ True - "asdf" - { "B" } - { "B" ; "C" ; "asdf" } ] + [ True + "asdf" + { "B" } + { "B" ; "C" ; "asdf" } ] - location: 32 (remaining gas: 1039961.354 units remaining) - [ "asdf" - True - { "B" } - { "B" ; "C" ; "asdf" } ] + [ "asdf" + True + { "B" } + { "B" ; "C" ; "asdf" } ] - location: 33 (remaining gas: 1039961.084 units remaining) - [ { "B" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ { "B" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039961.069 units remaining) - [ "C" - { "B" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ "C" + { "B" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 23 (remaining gas: 1039961.054 units remaining) - [ (Pair "C" { "B" ; "asdf" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "C" { "B" ; "asdf" }) + { "B" ; "C" ; "asdf" } ] - location: 24 (remaining gas: 1039961.044 units remaining) - [ (Pair "C" { "B" ; "asdf" }) - (Pair "C" { "B" ; "asdf" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "C" { "B" ; "asdf" }) + (Pair "C" { "B" ; "asdf" }) + { "B" ; "C" ; "asdf" } ] - location: 25 (remaining gas: 1039961.034 units remaining) - [ "C" - (Pair "C" { "B" ; "asdf" }) - { "B" ; "C" ; "asdf" } ] + [ "C" + (Pair "C" { "B" ; "asdf" }) + { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039961.019 units remaining) - [ (Pair "C" { "B" ; "asdf" }) - { "B" ; "C" ; "asdf" } ] + [ (Pair "C" { "B" ; "asdf" }) + { "B" ; "C" ; "asdf" } ] - location: 28 (remaining gas: 1039961.009 units remaining) - [ { "B" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ { "B" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 26 (remaining gas: 1039960.979 units remaining) - [ "C" - { "B" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ "C" + { "B" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 29 (remaining gas: 1039960.969 units remaining) - [ True - "C" - { "B" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ True + "C" + { "B" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 32 (remaining gas: 1039960.959 units remaining) - [ "C" - True - { "B" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ "C" + True + { "B" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 33 (remaining gas: 1039960.619 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 21 (remaining gas: 1039960.604 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 34 (remaining gas: 1039960.594 units remaining) - [ True - { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } ] - location: 37 (remaining gas: 1039960.584 units remaining) - [ { "B" ; "C" ; "asdf" } - True - { "B" ; "C" ; "asdf" } ] + [ { "B" ; "C" ; "asdf" } + True + { "B" ; "C" ; "asdf" } ] - location: 38 (remaining gas: 1039960.569 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - { "B" ; "C" ; "asdf" } ] + [ (Pair { "B" ; "C" ; "asdf" } True) + { "B" ; "C" ; "asdf" } ] - location: 39 (remaining gas: 1039960.559 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "C" ; "asdf" } + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039960.559 units remaining) - [ "B" - (Pair { "B" ; "C" ; "asdf" } True) ] + [ "B" + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039960.544 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 43 (remaining gas: 1039960.534 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 44 (remaining gas: 1039960.524 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039960.514 units remaining) - [ "B" - (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ "B" + (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039960.499 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 49 (remaining gas: 1039960.489 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 50 (remaining gas: 1039960.479 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "C" ; "asdf" } + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 51 (remaining gas: 1039960.464 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 54 (remaining gas: 1039960.454 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 55 (remaining gas: 1039960.444 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039960.414 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 56 (remaining gas: 1039960.404 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 46 (remaining gas: 1039960.374 units remaining) - [ "B" - { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ "B" + { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 57 (remaining gas: 1039960.154 units remaining) - [ True - { "B" ; "C" ; "asdf" } - True ] + [ True + { "B" ; "C" ; "asdf" } + True ] - location: 58 (remaining gas: 1039960.139 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 60 (remaining gas: 1039960.129 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 58 (remaining gas: 1039960.099 units remaining) - [ True - True - { "B" ; "C" ; "asdf" } ] + [ True + True + { "B" ; "C" ; "asdf" } ] - location: 61 (remaining gas: 1039960.079 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 62 (remaining gas: 1039960.069 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 63 (remaining gas: 1039960.054 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039960.039 units remaining) - [ "C" - (Pair { "B" ; "C" ; "asdf" } True) ] + [ "C" + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039960.024 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 43 (remaining gas: 1039960.014 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 44 (remaining gas: 1039960.004 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039959.994 units remaining) - [ "C" - (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ "C" + (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039959.979 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 49 (remaining gas: 1039959.969 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 50 (remaining gas: 1039959.959 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "C" ; "asdf" } + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 51 (remaining gas: 1039959.944 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 54 (remaining gas: 1039959.934 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 55 (remaining gas: 1039959.924 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039959.894 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 56 (remaining gas: 1039959.884 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 46 (remaining gas: 1039959.854 units remaining) - [ "C" - { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ "C" + { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 57 (remaining gas: 1039959.634 units remaining) - [ True - { "B" ; "C" ; "asdf" } - True ] + [ True + { "B" ; "C" ; "asdf" } + True ] - location: 58 (remaining gas: 1039959.619 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 60 (remaining gas: 1039959.609 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 58 (remaining gas: 1039959.579 units remaining) - [ True - True - { "B" ; "C" ; "asdf" } ] + [ True + True + { "B" ; "C" ; "asdf" } ] - location: 61 (remaining gas: 1039959.559 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 62 (remaining gas: 1039959.549 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 63 (remaining gas: 1039959.534 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039959.519 units remaining) - [ "asdf" - (Pair { "B" ; "C" ; "asdf" } True) ] + [ "asdf" + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039959.504 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 43 (remaining gas: 1039959.494 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 44 (remaining gas: 1039959.484 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039959.474 units remaining) - [ "asdf" - (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ "asdf" + (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039959.459 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 49 (remaining gas: 1039959.449 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 50 (remaining gas: 1039959.439 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "C" ; "asdf" } + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 51 (remaining gas: 1039959.424 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 54 (remaining gas: 1039959.414 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 55 (remaining gas: 1039959.404 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039959.374 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 56 (remaining gas: 1039959.364 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 46 (remaining gas: 1039959.334 units remaining) - [ "asdf" - { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ "asdf" + { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 57 (remaining gas: 1039959.114 units remaining) - [ True - { "B" ; "C" ; "asdf" } - True ] + [ True + { "B" ; "C" ; "asdf" } + True ] - location: 58 (remaining gas: 1039959.099 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 60 (remaining gas: 1039959.089 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 58 (remaining gas: 1039959.059 units remaining) - [ True - True - { "B" ; "C" ; "asdf" } ] + [ True + True + { "B" ; "C" ; "asdf" } ] - location: 61 (remaining gas: 1039959.039 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 62 (remaining gas: 1039959.029 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 63 (remaining gas: 1039959.014 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039958.999 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 64 (remaining gas: 1039958.989 units remaining) - [ True ] + [ True ] - location: 65 (remaining gas: 1039958.974 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 66 (remaining gas: 1039958.959 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 68 (remaining gas: 1039958.944 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" index 0e797d9d17..c7a2fff6e3 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" ; \"C\" ; \"asdf\" } { \"B\".ff6e4785ee.out" @@ -8,430 +8,430 @@ big_map diff trace - location: 12 (remaining gas: 1039962.499 units remaining) - [ (Pair (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) None) ] + [ (Pair (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) None) ] - location: 12 (remaining gas: 1039962.489 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] + [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] - location: 13 (remaining gas: 1039962.479 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) - (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] + [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) + (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] - location: 14 (remaining gas: 1039962.469 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] + [ { "B" ; "C" ; "asdf" } + (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] - location: 15 (remaining gas: 1039962.454 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] + [ (Pair { "B" ; "C" ; "asdf" } { "B" ; "B" ; "asdf" ; "C" }) ] - location: 17 (remaining gas: 1039962.444 units remaining) - [ { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" ; "B" ; "asdf" ; "C" } ] - location: 15 (remaining gas: 1039962.414 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 18 (remaining gas: 1039962.194 units remaining) - [ {} - { "B" ; "C" ; "asdf" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ {} + { "B" ; "C" ; "asdf" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 20 (remaining gas: 1039962.184 units remaining) - [ { "B" ; "C" ; "asdf" } - {} - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" ; "C" ; "asdf" } + {} + { "B" ; "B" ; "asdf" ; "C" } ] - location: 21 (remaining gas: 1039962.184 units remaining) - [ "B" - {} - { "B" ; "B" ; "asdf" ; "C" } ] + [ "B" + {} + { "B" ; "B" ; "asdf" ; "C" } ] - location: 23 (remaining gas: 1039962.169 units remaining) - [ (Pair "B" {}) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "B" {}) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 24 (remaining gas: 1039962.159 units remaining) - [ (Pair "B" {}) - (Pair "B" {}) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "B" {}) + (Pair "B" {}) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 25 (remaining gas: 1039962.149 units remaining) - [ "B" - (Pair "B" {}) - { "B" ; "B" ; "asdf" ; "C" } ] + [ "B" + (Pair "B" {}) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039962.134 units remaining) - [ (Pair "B" {}) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "B" {}) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 28 (remaining gas: 1039962.124 units remaining) - [ {} - { "B" ; "B" ; "asdf" ; "C" } ] + [ {} + { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039962.094 units remaining) - [ "B" - {} - { "B" ; "B" ; "asdf" ; "C" } ] + [ "B" + {} + { "B" ; "B" ; "asdf" ; "C" } ] - location: 29 (remaining gas: 1039962.084 units remaining) - [ True - "B" - {} - { "B" ; "B" ; "asdf" ; "C" } ] + [ True + "B" + {} + { "B" ; "B" ; "asdf" ; "C" } ] - location: 32 (remaining gas: 1039962.074 units remaining) - [ "B" - True - {} - { "B" ; "B" ; "asdf" ; "C" } ] + [ "B" + True + {} + { "B" ; "B" ; "asdf" ; "C" } ] - location: 33 (remaining gas: 1039961.874 units remaining) - [ { "B" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 21 (remaining gas: 1039961.859 units remaining) - [ "C" - { "B" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ "C" + { "B" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 23 (remaining gas: 1039961.844 units remaining) - [ (Pair "C" { "B" }) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "C" { "B" }) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 24 (remaining gas: 1039961.834 units remaining) - [ (Pair "C" { "B" }) - (Pair "C" { "B" }) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "C" { "B" }) + (Pair "C" { "B" }) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 25 (remaining gas: 1039961.824 units remaining) - [ "C" - (Pair "C" { "B" }) - { "B" ; "B" ; "asdf" ; "C" } ] + [ "C" + (Pair "C" { "B" }) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039961.809 units remaining) - [ (Pair "C" { "B" }) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "C" { "B" }) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 28 (remaining gas: 1039961.799 units remaining) - [ { "B" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039961.769 units remaining) - [ "C" - { "B" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ "C" + { "B" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 29 (remaining gas: 1039961.759 units remaining) - [ True - "C" - { "B" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ True + "C" + { "B" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 32 (remaining gas: 1039961.749 units remaining) - [ "C" - True - { "B" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ "C" + True + { "B" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 33 (remaining gas: 1039961.479 units remaining) - [ { "B" ; "C" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" ; "C" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 21 (remaining gas: 1039961.464 units remaining) - [ "asdf" - { "B" ; "C" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ "asdf" + { "B" ; "C" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 23 (remaining gas: 1039961.449 units remaining) - [ (Pair "asdf" { "B" ; "C" }) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "asdf" { "B" ; "C" }) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 24 (remaining gas: 1039961.439 units remaining) - [ (Pair "asdf" { "B" ; "C" }) - (Pair "asdf" { "B" ; "C" }) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "asdf" { "B" ; "C" }) + (Pair "asdf" { "B" ; "C" }) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 25 (remaining gas: 1039961.429 units remaining) - [ "asdf" - (Pair "asdf" { "B" ; "C" }) - { "B" ; "B" ; "asdf" ; "C" } ] + [ "asdf" + (Pair "asdf" { "B" ; "C" }) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039961.414 units remaining) - [ (Pair "asdf" { "B" ; "C" }) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair "asdf" { "B" ; "C" }) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 28 (remaining gas: 1039961.404 units remaining) - [ { "B" ; "C" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" ; "C" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 26 (remaining gas: 1039961.374 units remaining) - [ "asdf" - { "B" ; "C" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ "asdf" + { "B" ; "C" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 29 (remaining gas: 1039961.364 units remaining) - [ True - "asdf" - { "B" ; "C" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ True + "asdf" + { "B" ; "C" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 32 (remaining gas: 1039961.354 units remaining) - [ "asdf" - True - { "B" ; "C" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ "asdf" + True + { "B" ; "C" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 33 (remaining gas: 1039961.014 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 21 (remaining gas: 1039960.999 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 34 (remaining gas: 1039960.989 units remaining) - [ True - { "B" ; "C" ; "asdf" } - { "B" ; "B" ; "asdf" ; "C" } ] + [ True + { "B" ; "C" ; "asdf" } + { "B" ; "B" ; "asdf" ; "C" } ] - location: 37 (remaining gas: 1039960.979 units remaining) - [ { "B" ; "C" ; "asdf" } - True - { "B" ; "B" ; "asdf" ; "C" } ] + [ { "B" ; "C" ; "asdf" } + True + { "B" ; "B" ; "asdf" ; "C" } ] - location: 38 (remaining gas: 1039960.964 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - { "B" ; "B" ; "asdf" ; "C" } ] + [ (Pair { "B" ; "C" ; "asdf" } True) + { "B" ; "B" ; "asdf" ; "C" } ] - location: 39 (remaining gas: 1039960.954 units remaining) - [ { "B" ; "B" ; "asdf" ; "C" } - (Pair { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "B" ; "asdf" ; "C" } + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039960.954 units remaining) - [ "B" - (Pair { "B" ; "C" ; "asdf" } True) ] + [ "B" + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039960.939 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 43 (remaining gas: 1039960.929 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 44 (remaining gas: 1039960.919 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039960.909 units remaining) - [ "B" - (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ "B" + (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039960.894 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 49 (remaining gas: 1039960.884 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 50 (remaining gas: 1039960.874 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "C" ; "asdf" } + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 51 (remaining gas: 1039960.859 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 54 (remaining gas: 1039960.849 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 55 (remaining gas: 1039960.839 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039960.809 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 56 (remaining gas: 1039960.799 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 46 (remaining gas: 1039960.769 units remaining) - [ "B" - { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ "B" + { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 57 (remaining gas: 1039960.549 units remaining) - [ True - { "B" ; "C" ; "asdf" } - True ] + [ True + { "B" ; "C" ; "asdf" } + True ] - location: 58 (remaining gas: 1039960.534 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 60 (remaining gas: 1039960.524 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 58 (remaining gas: 1039960.494 units remaining) - [ True - True - { "B" ; "C" ; "asdf" } ] + [ True + True + { "B" ; "C" ; "asdf" } ] - location: 61 (remaining gas: 1039960.474 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 62 (remaining gas: 1039960.464 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 63 (remaining gas: 1039960.449 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039960.434 units remaining) - [ "B" - (Pair { "B" ; "C" ; "asdf" } True) ] + [ "B" + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039960.419 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 43 (remaining gas: 1039960.409 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 44 (remaining gas: 1039960.399 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039960.389 units remaining) - [ "B" - (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ "B" + (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039960.374 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 49 (remaining gas: 1039960.364 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 50 (remaining gas: 1039960.354 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "C" ; "asdf" } + (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 51 (remaining gas: 1039960.339 units remaining) - [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "B" { "B" ; "C" ; "asdf" } True) ] - location: 54 (remaining gas: 1039960.329 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 55 (remaining gas: 1039960.319 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039960.289 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 56 (remaining gas: 1039960.279 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 46 (remaining gas: 1039960.249 units remaining) - [ "B" - { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ "B" + { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 57 (remaining gas: 1039960.029 units remaining) - [ True - { "B" ; "C" ; "asdf" } - True ] + [ True + { "B" ; "C" ; "asdf" } + True ] - location: 58 (remaining gas: 1039960.014 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 60 (remaining gas: 1039960.004 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 58 (remaining gas: 1039959.974 units remaining) - [ True - True - { "B" ; "C" ; "asdf" } ] + [ True + True + { "B" ; "C" ; "asdf" } ] - location: 61 (remaining gas: 1039959.954 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 62 (remaining gas: 1039959.944 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 63 (remaining gas: 1039959.929 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039959.914 units remaining) - [ "asdf" - (Pair { "B" ; "C" ; "asdf" } True) ] + [ "asdf" + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039959.899 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 43 (remaining gas: 1039959.889 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 44 (remaining gas: 1039959.879 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039959.869 units remaining) - [ "asdf" - (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ "asdf" + (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039959.854 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 49 (remaining gas: 1039959.844 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 50 (remaining gas: 1039959.834 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "C" ; "asdf" } + (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 51 (remaining gas: 1039959.819 units remaining) - [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "asdf" { "B" ; "C" ; "asdf" } True) ] - location: 54 (remaining gas: 1039959.809 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 55 (remaining gas: 1039959.799 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039959.769 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 56 (remaining gas: 1039959.759 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 46 (remaining gas: 1039959.729 units remaining) - [ "asdf" - { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ "asdf" + { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 57 (remaining gas: 1039959.509 units remaining) - [ True - { "B" ; "C" ; "asdf" } - True ] + [ True + { "B" ; "C" ; "asdf" } + True ] - location: 58 (remaining gas: 1039959.494 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 60 (remaining gas: 1039959.484 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 58 (remaining gas: 1039959.454 units remaining) - [ True - True - { "B" ; "C" ; "asdf" } ] + [ True + True + { "B" ; "C" ; "asdf" } ] - location: 61 (remaining gas: 1039959.434 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 62 (remaining gas: 1039959.424 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 63 (remaining gas: 1039959.409 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039959.394 units remaining) - [ "C" - (Pair { "B" ; "C" ; "asdf" } True) ] + [ "C" + (Pair { "B" ; "C" ; "asdf" } True) ] - location: 42 (remaining gas: 1039959.379 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 43 (remaining gas: 1039959.369 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 44 (remaining gas: 1039959.359 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 45 (remaining gas: 1039959.349 units remaining) - [ "C" - (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ "C" + (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 46 (remaining gas: 1039959.334 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 49 (remaining gas: 1039959.324 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 50 (remaining gas: 1039959.314 units remaining) - [ { "B" ; "C" ; "asdf" } - (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ { "B" ; "C" ; "asdf" } + (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 51 (remaining gas: 1039959.299 units remaining) - [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] + [ (Pair "C" { "B" ; "C" ; "asdf" } True) ] - location: 54 (remaining gas: 1039959.289 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 55 (remaining gas: 1039959.279 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039959.249 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 56 (remaining gas: 1039959.239 units remaining) - [ { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 46 (remaining gas: 1039959.209 units remaining) - [ "C" - { "B" ; "C" ; "asdf" } - { "B" ; "C" ; "asdf" } - True ] + [ "C" + { "B" ; "C" ; "asdf" } + { "B" ; "C" ; "asdf" } + True ] - location: 57 (remaining gas: 1039958.989 units remaining) - [ True - { "B" ; "C" ; "asdf" } - True ] + [ True + { "B" ; "C" ; "asdf" } + True ] - location: 58 (remaining gas: 1039958.974 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 60 (remaining gas: 1039958.964 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 58 (remaining gas: 1039958.934 units remaining) - [ True - True - { "B" ; "C" ; "asdf" } ] + [ True + True + { "B" ; "C" ; "asdf" } ] - location: 61 (remaining gas: 1039958.914 units remaining) - [ True - { "B" ; "C" ; "asdf" } ] + [ True + { "B" ; "C" ; "asdf" } ] - location: 62 (remaining gas: 1039958.904 units remaining) - [ { "B" ; "C" ; "asdf" } - True ] + [ { "B" ; "C" ; "asdf" } + True ] - location: 63 (remaining gas: 1039958.889 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 40 (remaining gas: 1039958.874 units remaining) - [ (Pair { "B" ; "C" ; "asdf" } True) ] + [ (Pair { "B" ; "C" ; "asdf" } True) ] - location: 64 (remaining gas: 1039958.864 units remaining) - [ True ] + [ True ] - location: 65 (remaining gas: 1039958.849 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 66 (remaining gas: 1039958.834 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 68 (remaining gas: 1039958.819 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" } { \"B\" })-(Some True)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" } { \"B\" })-(Some True)].out" index 4dc4eb6a68..17f1e07c7f 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" } { \"B\" })-(Some True)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"B\" } { \"B\" })-(Some True)].out" @@ -8,159 +8,159 @@ big_map diff trace - location: 12 (remaining gas: 1039963.179 units remaining) - [ (Pair (Pair { "B" } { "B" }) None) ] + [ (Pair (Pair { "B" } { "B" }) None) ] - location: 12 (remaining gas: 1039963.169 units remaining) - [ (Pair { "B" } { "B" }) ] + [ (Pair { "B" } { "B" }) ] - location: 13 (remaining gas: 1039963.159 units remaining) - [ (Pair { "B" } { "B" }) - (Pair { "B" } { "B" }) ] + [ (Pair { "B" } { "B" }) + (Pair { "B" } { "B" }) ] - location: 14 (remaining gas: 1039963.149 units remaining) - [ { "B" } - (Pair { "B" } { "B" }) ] + [ { "B" } + (Pair { "B" } { "B" }) ] - location: 15 (remaining gas: 1039963.134 units remaining) - [ (Pair { "B" } { "B" }) ] + [ (Pair { "B" } { "B" }) ] - location: 17 (remaining gas: 1039963.124 units remaining) - [ { "B" } ] + [ { "B" } ] - location: 15 (remaining gas: 1039963.094 units remaining) - [ { "B" } - { "B" } ] + [ { "B" } + { "B" } ] - location: 18 (remaining gas: 1039962.874 units remaining) - [ {} - { "B" } - { "B" } ] + [ {} + { "B" } + { "B" } ] - location: 20 (remaining gas: 1039962.864 units remaining) - [ { "B" } - {} - { "B" } ] + [ { "B" } + {} + { "B" } ] - location: 21 (remaining gas: 1039962.864 units remaining) - [ "B" - {} - { "B" } ] + [ "B" + {} + { "B" } ] - location: 23 (remaining gas: 1039962.849 units remaining) - [ (Pair "B" {}) - { "B" } ] + [ (Pair "B" {}) + { "B" } ] - location: 24 (remaining gas: 1039962.839 units remaining) - [ (Pair "B" {}) - (Pair "B" {}) - { "B" } ] + [ (Pair "B" {}) + (Pair "B" {}) + { "B" } ] - location: 25 (remaining gas: 1039962.829 units remaining) - [ "B" - (Pair "B" {}) - { "B" } ] + [ "B" + (Pair "B" {}) + { "B" } ] - location: 26 (remaining gas: 1039962.814 units remaining) - [ (Pair "B" {}) - { "B" } ] + [ (Pair "B" {}) + { "B" } ] - location: 28 (remaining gas: 1039962.804 units remaining) - [ {} - { "B" } ] + [ {} + { "B" } ] - location: 26 (remaining gas: 1039962.774 units remaining) - [ "B" - {} - { "B" } ] + [ "B" + {} + { "B" } ] - location: 29 (remaining gas: 1039962.764 units remaining) - [ True - "B" - {} - { "B" } ] + [ True + "B" + {} + { "B" } ] - location: 32 (remaining gas: 1039962.754 units remaining) - [ "B" - True - {} - { "B" } ] + [ "B" + True + {} + { "B" } ] - location: 33 (remaining gas: 1039962.554 units remaining) - [ { "B" } - { "B" } ] + [ { "B" } + { "B" } ] - location: 21 (remaining gas: 1039962.539 units remaining) - [ { "B" } - { "B" } ] + [ { "B" } + { "B" } ] - location: 34 (remaining gas: 1039962.529 units remaining) - [ True - { "B" } - { "B" } ] + [ True + { "B" } + { "B" } ] - location: 37 (remaining gas: 1039962.519 units remaining) - [ { "B" } - True - { "B" } ] + [ { "B" } + True + { "B" } ] - location: 38 (remaining gas: 1039962.504 units remaining) - [ (Pair { "B" } True) - { "B" } ] + [ (Pair { "B" } True) + { "B" } ] - location: 39 (remaining gas: 1039962.494 units remaining) - [ { "B" } - (Pair { "B" } True) ] + [ { "B" } + (Pair { "B" } True) ] - location: 40 (remaining gas: 1039962.494 units remaining) - [ "B" - (Pair { "B" } True) ] + [ "B" + (Pair { "B" } True) ] - location: 42 (remaining gas: 1039962.479 units remaining) - [ (Pair "B" { "B" } True) ] + [ (Pair "B" { "B" } True) ] - location: 43 (remaining gas: 1039962.469 units remaining) - [ (Pair "B" { "B" } True) - (Pair "B" { "B" } True) ] + [ (Pair "B" { "B" } True) + (Pair "B" { "B" } True) ] - location: 44 (remaining gas: 1039962.459 units remaining) - [ (Pair "B" { "B" } True) - (Pair "B" { "B" } True) - (Pair "B" { "B" } True) ] + [ (Pair "B" { "B" } True) + (Pair "B" { "B" } True) + (Pair "B" { "B" } True) ] - location: 45 (remaining gas: 1039962.449 units remaining) - [ "B" - (Pair "B" { "B" } True) - (Pair "B" { "B" } True) ] + [ "B" + (Pair "B" { "B" } True) + (Pair "B" { "B" } True) ] - location: 46 (remaining gas: 1039962.434 units remaining) - [ (Pair "B" { "B" } True) - (Pair "B" { "B" } True) ] + [ (Pair "B" { "B" } True) + (Pair "B" { "B" } True) ] - location: 49 (remaining gas: 1039962.424 units remaining) - [ (Pair { "B" } True) - (Pair "B" { "B" } True) ] + [ (Pair { "B" } True) + (Pair "B" { "B" } True) ] - location: 50 (remaining gas: 1039962.414 units remaining) - [ { "B" } - (Pair "B" { "B" } True) ] + [ { "B" } + (Pair "B" { "B" } True) ] - location: 51 (remaining gas: 1039962.399 units remaining) - [ (Pair "B" { "B" } True) ] + [ (Pair "B" { "B" } True) ] - location: 54 (remaining gas: 1039962.389 units remaining) - [ (Pair { "B" } True) ] + [ (Pair { "B" } True) ] - location: 55 (remaining gas: 1039962.379 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039962.349 units remaining) - [ { "B" } - True ] + [ { "B" } + True ] - location: 56 (remaining gas: 1039962.339 units remaining) - [ { "B" } - { "B" } - True ] + [ { "B" } + { "B" } + True ] - location: 46 (remaining gas: 1039962.309 units remaining) - [ "B" - { "B" } - { "B" } - True ] + [ "B" + { "B" } + { "B" } + True ] - location: 57 (remaining gas: 1039962.124 units remaining) - [ True - { "B" } - True ] + [ True + { "B" } + True ] - location: 58 (remaining gas: 1039962.109 units remaining) - [ { "B" } - True ] + [ { "B" } + True ] - location: 60 (remaining gas: 1039962.099 units remaining) - [ True - { "B" } ] + [ True + { "B" } ] - location: 58 (remaining gas: 1039962.069 units remaining) - [ True - True - { "B" } ] + [ True + True + { "B" } ] - location: 61 (remaining gas: 1039962.049 units remaining) - [ True - { "B" } ] + [ True + { "B" } ] - location: 62 (remaining gas: 1039962.039 units remaining) - [ { "B" } - True ] + [ { "B" } + True ] - location: 63 (remaining gas: 1039962.024 units remaining) - [ (Pair { "B" } True) ] + [ (Pair { "B" } True) ] - location: 40 (remaining gas: 1039962.009 units remaining) - [ (Pair { "B" } True) ] + [ (Pair { "B" } True) ] - location: 64 (remaining gas: 1039961.999 units remaining) - [ True ] + [ True ] - location: 65 (remaining gas: 1039961.984 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 66 (remaining gas: 1039961.969 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 68 (remaining gas: 1039961.954 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"c\" } { \"B\" })-(Some False)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"c\" } { \"B\" })-(Some False)].out" index e02f80d28c..ad1d85e8b7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"c\" } { \"B\" })-(Some False)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair { \"c\" } { \"B\" })-(Some False)].out" @@ -8,159 +8,159 @@ big_map diff trace - location: 12 (remaining gas: 1039963.179 units remaining) - [ (Pair (Pair { "c" } { "B" }) None) ] + [ (Pair (Pair { "c" } { "B" }) None) ] - location: 12 (remaining gas: 1039963.169 units remaining) - [ (Pair { "c" } { "B" }) ] + [ (Pair { "c" } { "B" }) ] - location: 13 (remaining gas: 1039963.159 units remaining) - [ (Pair { "c" } { "B" }) - (Pair { "c" } { "B" }) ] + [ (Pair { "c" } { "B" }) + (Pair { "c" } { "B" }) ] - location: 14 (remaining gas: 1039963.149 units remaining) - [ { "c" } - (Pair { "c" } { "B" }) ] + [ { "c" } + (Pair { "c" } { "B" }) ] - location: 15 (remaining gas: 1039963.134 units remaining) - [ (Pair { "c" } { "B" }) ] + [ (Pair { "c" } { "B" }) ] - location: 17 (remaining gas: 1039963.124 units remaining) - [ { "B" } ] + [ { "B" } ] - location: 15 (remaining gas: 1039963.094 units remaining) - [ { "c" } - { "B" } ] + [ { "c" } + { "B" } ] - location: 18 (remaining gas: 1039962.874 units remaining) - [ {} - { "c" } - { "B" } ] + [ {} + { "c" } + { "B" } ] - location: 20 (remaining gas: 1039962.864 units remaining) - [ { "c" } - {} - { "B" } ] + [ { "c" } + {} + { "B" } ] - location: 21 (remaining gas: 1039962.864 units remaining) - [ "c" - {} - { "B" } ] + [ "c" + {} + { "B" } ] - location: 23 (remaining gas: 1039962.849 units remaining) - [ (Pair "c" {}) - { "B" } ] + [ (Pair "c" {}) + { "B" } ] - location: 24 (remaining gas: 1039962.839 units remaining) - [ (Pair "c" {}) - (Pair "c" {}) - { "B" } ] + [ (Pair "c" {}) + (Pair "c" {}) + { "B" } ] - location: 25 (remaining gas: 1039962.829 units remaining) - [ "c" - (Pair "c" {}) - { "B" } ] + [ "c" + (Pair "c" {}) + { "B" } ] - location: 26 (remaining gas: 1039962.814 units remaining) - [ (Pair "c" {}) - { "B" } ] + [ (Pair "c" {}) + { "B" } ] - location: 28 (remaining gas: 1039962.804 units remaining) - [ {} - { "B" } ] + [ {} + { "B" } ] - location: 26 (remaining gas: 1039962.774 units remaining) - [ "c" - {} - { "B" } ] + [ "c" + {} + { "B" } ] - location: 29 (remaining gas: 1039962.764 units remaining) - [ True - "c" - {} - { "B" } ] + [ True + "c" + {} + { "B" } ] - location: 32 (remaining gas: 1039962.754 units remaining) - [ "c" - True - {} - { "B" } ] + [ "c" + True + {} + { "B" } ] - location: 33 (remaining gas: 1039962.554 units remaining) - [ { "c" } - { "B" } ] + [ { "c" } + { "B" } ] - location: 21 (remaining gas: 1039962.539 units remaining) - [ { "c" } - { "B" } ] + [ { "c" } + { "B" } ] - location: 34 (remaining gas: 1039962.529 units remaining) - [ True - { "c" } - { "B" } ] + [ True + { "c" } + { "B" } ] - location: 37 (remaining gas: 1039962.519 units remaining) - [ { "c" } - True - { "B" } ] + [ { "c" } + True + { "B" } ] - location: 38 (remaining gas: 1039962.504 units remaining) - [ (Pair { "c" } True) - { "B" } ] + [ (Pair { "c" } True) + { "B" } ] - location: 39 (remaining gas: 1039962.494 units remaining) - [ { "B" } - (Pair { "c" } True) ] + [ { "B" } + (Pair { "c" } True) ] - location: 40 (remaining gas: 1039962.494 units remaining) - [ "B" - (Pair { "c" } True) ] + [ "B" + (Pair { "c" } True) ] - location: 42 (remaining gas: 1039962.479 units remaining) - [ (Pair "B" { "c" } True) ] + [ (Pair "B" { "c" } True) ] - location: 43 (remaining gas: 1039962.469 units remaining) - [ (Pair "B" { "c" } True) - (Pair "B" { "c" } True) ] + [ (Pair "B" { "c" } True) + (Pair "B" { "c" } True) ] - location: 44 (remaining gas: 1039962.459 units remaining) - [ (Pair "B" { "c" } True) - (Pair "B" { "c" } True) - (Pair "B" { "c" } True) ] + [ (Pair "B" { "c" } True) + (Pair "B" { "c" } True) + (Pair "B" { "c" } True) ] - location: 45 (remaining gas: 1039962.449 units remaining) - [ "B" - (Pair "B" { "c" } True) - (Pair "B" { "c" } True) ] + [ "B" + (Pair "B" { "c" } True) + (Pair "B" { "c" } True) ] - location: 46 (remaining gas: 1039962.434 units remaining) - [ (Pair "B" { "c" } True) - (Pair "B" { "c" } True) ] + [ (Pair "B" { "c" } True) + (Pair "B" { "c" } True) ] - location: 49 (remaining gas: 1039962.424 units remaining) - [ (Pair { "c" } True) - (Pair "B" { "c" } True) ] + [ (Pair { "c" } True) + (Pair "B" { "c" } True) ] - location: 50 (remaining gas: 1039962.414 units remaining) - [ { "c" } - (Pair "B" { "c" } True) ] + [ { "c" } + (Pair "B" { "c" } True) ] - location: 51 (remaining gas: 1039962.399 units remaining) - [ (Pair "B" { "c" } True) ] + [ (Pair "B" { "c" } True) ] - location: 54 (remaining gas: 1039962.389 units remaining) - [ (Pair { "c" } True) ] + [ (Pair { "c" } True) ] - location: 55 (remaining gas: 1039962.379 units remaining) - [ True ] + [ True ] - location: 51 (remaining gas: 1039962.349 units remaining) - [ { "c" } - True ] + [ { "c" } + True ] - location: 56 (remaining gas: 1039962.339 units remaining) - [ { "c" } - { "c" } - True ] + [ { "c" } + { "c" } + True ] - location: 46 (remaining gas: 1039962.309 units remaining) - [ "B" - { "c" } - { "c" } - True ] + [ "B" + { "c" } + { "c" } + True ] - location: 57 (remaining gas: 1039962.124 units remaining) - [ False - { "c" } - True ] + [ False + { "c" } + True ] - location: 58 (remaining gas: 1039962.109 units remaining) - [ { "c" } - True ] + [ { "c" } + True ] - location: 60 (remaining gas: 1039962.099 units remaining) - [ True - { "c" } ] + [ True + { "c" } ] - location: 58 (remaining gas: 1039962.069 units remaining) - [ False - True - { "c" } ] + [ False + True + { "c" } ] - location: 61 (remaining gas: 1039962.049 units remaining) - [ False - { "c" } ] + [ False + { "c" } ] - location: 62 (remaining gas: 1039962.039 units remaining) - [ { "c" } - False ] + [ { "c" } + False ] - location: 63 (remaining gas: 1039962.024 units remaining) - [ (Pair { "c" } False) ] + [ (Pair { "c" } False) ] - location: 40 (remaining gas: 1039962.009 units remaining) - [ (Pair { "c" } False) ] + [ (Pair { "c" } False) ] - location: 64 (remaining gas: 1039961.999 units remaining) - [ False ] + [ False ] - location: 65 (remaining gas: 1039961.984 units remaining) - [ (Some False) ] + [ (Some False) ] - location: 66 (remaining gas: 1039961.969 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 68 (remaining gas: 1039961.954 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair {} {})-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair {} {})-(Some True)].out index aaaa1e9142..41875cbdb7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair {} {})-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contains_all.tz-None-(Pair {} {})-(Some True)].out @@ -8,56 +8,56 @@ big_map diff trace - location: 12 (remaining gas: 1039963.427 units remaining) - [ (Pair (Pair {} {}) None) ] + [ (Pair (Pair {} {}) None) ] - location: 12 (remaining gas: 1039963.417 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] - location: 13 (remaining gas: 1039963.407 units remaining) - [ (Pair {} {}) - (Pair {} {}) ] + [ (Pair {} {}) + (Pair {} {}) ] - location: 14 (remaining gas: 1039963.397 units remaining) - [ {} - (Pair {} {}) ] + [ {} + (Pair {} {}) ] - location: 15 (remaining gas: 1039963.382 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] - location: 17 (remaining gas: 1039963.372 units remaining) - [ {} ] + [ {} ] - location: 15 (remaining gas: 1039963.342 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 18 (remaining gas: 1039963.122 units remaining) - [ {} - {} - {} ] + [ {} + {} + {} ] - location: 20 (remaining gas: 1039963.112 units remaining) - [ {} - {} - {} ] + [ {} + {} + {} ] - location: 21 (remaining gas: 1039963.112 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 34 (remaining gas: 1039963.102 units remaining) - [ True - {} - {} ] + [ True + {} + {} ] - location: 37 (remaining gas: 1039963.092 units remaining) - [ {} - True - {} ] + [ {} + True + {} ] - location: 38 (remaining gas: 1039963.077 units remaining) - [ (Pair {} True) - {} ] + [ (Pair {} True) + {} ] - location: 39 (remaining gas: 1039963.067 units remaining) - [ {} - (Pair {} True) ] + [ {} + (Pair {} True) ] - location: 40 (remaining gas: 1039963.067 units remaining) - [ (Pair {} True) ] + [ (Pair {} True) ] - location: 64 (remaining gas: 1039963.057 units remaining) - [ True ] + [ True ] - location: 65 (remaining gas: 1039963.042 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 66 (remaining gas: 1039963.027 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 68 (remaining gas: 1039963.012 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contract.tz-Unit-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contract.tz-Unit-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" index fa78a318c1..3200576098 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contract.tz-Unit-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[contract.tz-Unit-\"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5\"-Unit].out" @@ -8,22 +8,22 @@ big_map diff trace - location: 7 (remaining gas: 1039340.345 units remaining) - [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" Unit) ] + [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" Unit) ] - location: 7 (remaining gas: 1039340.335 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 8 (remaining gas: 1039340.085 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 11 (remaining gas: 1039340.075 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 11 (remaining gas: 1039340.060 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 17 (remaining gas: 1039340.050 units remaining) [ ] - location: 18 (remaining gas: 1039340.040 units remaining) - [ Unit ] + [ Unit ] - location: 19 (remaining gas: 1039340.025 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 21 (remaining gas: 1039340.010 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[create_contract.tz-None-Unit-(Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[create_contract.tz-None-Unit-(Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" index d19c0feb31..2ed1226ac7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[create_contract.tz-None-Unit-(Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[create_contract.tz-None-Unit-(Some \"KT1Mjjcb6tmSsLm7Cb3.c3984fbc14.out" @@ -14,36 +14,36 @@ emitted operations trace - location: 8 (remaining gas: 1039984.194 units remaining) - [ (Pair Unit None) ] + [ (Pair Unit None) ] - location: 8 (remaining gas: 1039984.184 units remaining) [ ] - location: 9 (remaining gas: 1039984.174 units remaining) - [ Unit ] + [ Unit ] - location: 10 (remaining gas: 1039984.159 units remaining) - [ 50000 - Unit ] + [ 50000 + Unit ] - location: 11 (remaining gas: 1039984.144 units remaining) - [ None - 50000 - Unit ] + [ None + 50000 + Unit ] - location: 13 (remaining gas: 1039983.538 units remaining) - [ 0x011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600000002d08603000000001c02000000170500036c0501036c050202000000080317053d036d034200000002030b - "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm" ] + [ 0x011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600000002d08603000000001c02000000170500036c0501036c050202000000080317053d036d034200000002030b + "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm" ] - location: 25 (remaining gas: 1039983.523 units remaining) - [ "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm" ] + [ "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm" ] - location: 27 (remaining gas: 1039983.508 units remaining) - [ (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm") ] + [ (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm") ] - location: 28 (remaining gas: 1039983.493 units remaining) - [ {} - (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm") ] + [ {} + (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm") ] - location: 25 (remaining gas: 1039983.463 units remaining) - [ 0x011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600000002d08603000000001c02000000170500036c0501036c050202000000080317053d036d034200000002030b - {} - (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm") ] + [ 0x011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600000002d08603000000001c02000000170500036c0501036c050202000000080317053d036d034200000002030b + {} + (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm") ] - location: 30 (remaining gas: 1039983.448 units remaining) - [ { 0x011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600000002d08603000000001c02000000170500036c0501036c050202000000080317053d036d034200000002030b } - (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm") ] + [ { 0x011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600000002d08603000000001c02000000170500036c0501036c050202000000080317053d036d034200000002030b } + (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm") ] - location: 31 (remaining gas: 1039983.433 units remaining) [ (Pair { 0x011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600000002d08603000000001c02000000170500036c0501036c050202000000080317053d036d034200000002030b } - (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm")) ] + (Some "KT1Mjjcb6tmSsLm7Cb3DSQszePjfchPM4Uxm")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair \"1970-01-01T00:03:20Z\" \"19.90e9215d17.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair \"1970-01-01T00:03:20Z\" \"19.90e9215d17.out" index 66ca6f53cf..483caa2add 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair \"1970-01-01T00:03:20Z\" \"19.90e9215d17.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair \"1970-01-01T00:03:20Z\" \"19.90e9215d17.out" @@ -8,27 +8,27 @@ big_map diff trace - location: 9 (remaining gas: 1039991.353 units remaining) - [ (Pair (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") 111) ] + [ (Pair (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") 111) ] - location: 9 (remaining gas: 1039991.343 units remaining) - [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] - location: 10 (remaining gas: 1039991.333 units remaining) - [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") - (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") + (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] - location: 11 (remaining gas: 1039991.323 units remaining) - [ "1970-01-01T00:03:20Z" - (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] + [ "1970-01-01T00:03:20Z" + (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] - location: 12 (remaining gas: 1039991.308 units remaining) - [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:03:20Z" "1970-01-01T00:00:00Z") ] - location: 14 (remaining gas: 1039991.298 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 12 (remaining gas: 1039991.268 units remaining) - [ "1970-01-01T00:03:20Z" - "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:03:20Z" + "1970-01-01T00:00:00Z" ] - location: 15 (remaining gas: 1039991.213 units remaining) - [ 200 ] + [ 200 ] - location: 16 (remaining gas: 1039991.198 units remaining) - [ {} - 200 ] + [ {} + 200 ] - location: 18 (remaining gas: 1039991.183 units remaining) - [ (Pair {} 200) ] + [ (Pair {} 200) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 0)-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 0)-0].out index a433c1e26d..5c58c2ea7e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 0)-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 0)-0].out @@ -8,27 +8,27 @@ big_map diff trace - location: 9 (remaining gas: 1039991.553 units remaining) - [ (Pair (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") 111) ] + [ (Pair (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") 111) ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") - (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") + (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] - location: 11 (remaining gas: 1039991.523 units remaining) - [ "1970-01-01T00:00:00Z" - (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] + [ "1970-01-01T00:00:00Z" + (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:00Z") ] - location: 14 (remaining gas: 1039991.498 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 12 (remaining gas: 1039991.468 units remaining) - [ "1970-01-01T00:00:00Z" - "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" + "1970-01-01T00:00:00Z" ] - location: 15 (remaining gas: 1039991.413 units remaining) - [ 0 ] + [ 0 ] - location: 16 (remaining gas: 1039991.398 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 18 (remaining gas: 1039991.383 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 1)--1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 1)--1].out index 0c2965f5dd..00df34dd87 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 1)--1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 0 1)--1].out @@ -8,27 +8,27 @@ big_map diff trace - location: 9 (remaining gas: 1039991.553 units remaining) - [ (Pair (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") 111) ] + [ (Pair (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") 111) ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") - (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") + (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] - location: 11 (remaining gas: 1039991.523 units remaining) - [ "1970-01-01T00:00:00Z" - (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] + [ "1970-01-01T00:00:00Z" + (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] + [ (Pair "1970-01-01T00:00:00Z" "1970-01-01T00:00:01Z") ] - location: 14 (remaining gas: 1039991.498 units remaining) - [ "1970-01-01T00:00:01Z" ] + [ "1970-01-01T00:00:01Z" ] - location: 12 (remaining gas: 1039991.468 units remaining) - [ "1970-01-01T00:00:00Z" - "1970-01-01T00:00:01Z" ] + [ "1970-01-01T00:00:00Z" + "1970-01-01T00:00:01Z" ] - location: 15 (remaining gas: 1039991.413 units remaining) - [ -1 ] + [ -1 ] - location: 16 (remaining gas: 1039991.398 units remaining) - [ {} - -1 ] + [ {} + -1 ] - location: 18 (remaining gas: 1039991.383 units remaining) - [ (Pair {} -1) ] + [ (Pair {} -1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 1 0)-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 1 0)-1].out index 0c31e3da2c..2573c9d64d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 1 0)-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[diff_timestamps.tz-111-(Pair 1 0)-1].out @@ -8,27 +8,27 @@ big_map diff trace - location: 9 (remaining gas: 1039991.553 units remaining) - [ (Pair (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") 111) ] + [ (Pair (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") 111) ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") - (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") + (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] - location: 11 (remaining gas: 1039991.523 units remaining) - [ "1970-01-01T00:00:01Z" - (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] + [ "1970-01-01T00:00:01Z" + (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] + [ (Pair "1970-01-01T00:00:01Z" "1970-01-01T00:00:00Z") ] - location: 14 (remaining gas: 1039991.498 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 12 (remaining gas: 1039991.468 units remaining) - [ "1970-01-01T00:00:01Z" - "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:01Z" + "1970-01-01T00:00:00Z" ] - location: 15 (remaining gas: 1039991.413 units remaining) - [ 1 ] + [ 1 ] - location: 16 (remaining gas: 1039991.398 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 18 (remaining gas: 1039991.383 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 17 (Pair 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 17 (Pair 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out index bc3fd2b091..7b06f8f50e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 17 (Pair 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 17 (Pair 16 (Pair 15 (Pair 14 (Pai.2794d4782e.out @@ -8,3424 +8,3424 @@ big_map diff trace - location: 24 (remaining gas: 1039868.707 units remaining) - [ (Pair (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) Unit) ] + [ (Pair (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) Unit) ] - location: 24 (remaining gas: 1039868.697 units remaining) - [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 25 (remaining gas: 1039868.687 units remaining) - [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 27 (remaining gas: 1039868.677 units remaining) - [ 17 - (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 28 (remaining gas: 1039868.662 units remaining) - [ (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 30 (remaining gas: 1039868.652 units remaining) - [ 16 - (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 28 (remaining gas: 1039868.622 units remaining) - [ 17 - 16 - (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 31 (remaining gas: 1039868.574 units remaining) - [ (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 34 (remaining gas: 1039868.564 units remaining) - [ 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 31 (remaining gas: 1039868.539 units remaining) - [ 16 - 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 31 (remaining gas: 1039868.529 units remaining) - [ 17 - 16 - 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 31 (remaining gas: 1039868.529 units remaining) - [ 17 - 16 - 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.480 units remaining) - [ (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 38 (remaining gas: 1039868.470 units remaining) - [ 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.445 units remaining) - [ 15 - 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.435 units remaining) - [ 16 - 15 - 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.425 units remaining) - [ 17 - 16 - 15 - 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 35 (remaining gas: 1039868.425 units remaining) - [ 17 - 16 - 15 - 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.374 units remaining) - [ (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 42 (remaining gas: 1039868.364 units remaining) - [ 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.339 units remaining) - [ 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.329 units remaining) - [ 15 - 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.319 units remaining) - [ 16 - 15 - 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.309 units remaining) - [ 17 - 16 - 15 - 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 39 (remaining gas: 1039868.309 units remaining) - [ 17 - 16 - 15 - 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.257 units remaining) - [ (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 46 (remaining gas: 1039868.247 units remaining) - [ 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.222 units remaining) - [ 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.212 units remaining) - [ 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.202 units remaining) - [ 15 - 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.192 units remaining) - [ 16 - 15 - 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.182 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 43 (remaining gas: 1039868.182 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.128 units remaining) - [ (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 50 (remaining gas: 1039868.118 units remaining) - [ 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.093 units remaining) - [ 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.083 units remaining) - [ 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.073 units remaining) - [ 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.063 units remaining) - [ 15 - 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.053 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.043 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 47 (remaining gas: 1039868.043 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.988 units remaining) - [ (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 54 (remaining gas: 1039867.978 units remaining) - [ 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.953 units remaining) - [ 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.943 units remaining) - [ 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.933 units remaining) - [ 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.923 units remaining) - [ 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.913 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.903 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.893 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 51 (remaining gas: 1039867.893 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.835 units remaining) - [ (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 58 (remaining gas: 1039867.825 units remaining) - [ 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.800 units remaining) - [ 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.790 units remaining) - [ 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.780 units remaining) - [ 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.770 units remaining) - [ 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.760 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.750 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.740 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.730 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 55 (remaining gas: 1039867.730 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.671 units remaining) - [ (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 62 (remaining gas: 1039867.661 units remaining) - [ 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.636 units remaining) - [ 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.626 units remaining) - [ 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.616 units remaining) - [ 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.606 units remaining) - [ 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.596 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.586 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.576 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.566 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.556 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 59 (remaining gas: 1039867.556 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.495 units remaining) - [ (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 66 (remaining gas: 1039867.485 units remaining) - [ 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.460 units remaining) - [ 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.450 units remaining) - [ 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.440 units remaining) - [ 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.430 units remaining) - [ 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.420 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.410 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.400 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.390 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.380 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.370 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 63 (remaining gas: 1039867.370 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.308 units remaining) - [ (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 70 (remaining gas: 1039867.298 units remaining) - [ 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.273 units remaining) - [ 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.263 units remaining) - [ 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.253 units remaining) - [ 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.243 units remaining) - [ 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.233 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.223 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.213 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.203 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.193 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.183 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.173 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 67 (remaining gas: 1039867.173 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.109 units remaining) - [ (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 74 (remaining gas: 1039867.099 units remaining) - [ 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.074 units remaining) - [ 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.064 units remaining) - [ 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.054 units remaining) - [ 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.044 units remaining) - [ 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.034 units remaining) - [ 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.024 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.014 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039867.004 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.994 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.984 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.974 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.964 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 71 (remaining gas: 1039866.964 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.899 units remaining) - [ (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 78 (remaining gas: 1039866.889 units remaining) - [ 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.864 units remaining) - [ 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.854 units remaining) - [ 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.844 units remaining) - [ 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.834 units remaining) - [ 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.824 units remaining) - [ 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.814 units remaining) - [ 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.804 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.794 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.784 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.774 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.764 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.754 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.744 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 75 (remaining gas: 1039866.744 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.677 units remaining) - [ (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 82 (remaining gas: 1039866.667 units remaining) - [ 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.642 units remaining) - [ 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.632 units remaining) - [ 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.622 units remaining) - [ 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.612 units remaining) - [ 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.602 units remaining) - [ 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.592 units remaining) - [ 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.582 units remaining) - [ 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.572 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.562 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.552 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.542 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.532 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.522 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.512 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 79 (remaining gas: 1039866.512 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.444 units remaining) - [ (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 86 (remaining gas: 1039866.434 units remaining) - [ 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.409 units remaining) - [ 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.399 units remaining) - [ 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.389 units remaining) - [ 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.379 units remaining) - [ 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.369 units remaining) - [ 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.359 units remaining) - [ 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.349 units remaining) - [ 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.339 units remaining) - [ 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.329 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.319 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.309 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.299 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.289 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.279 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.269 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 83 (remaining gas: 1039866.269 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 87 (remaining gas: 1039866.209 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 89 (remaining gas: 1039866.143 units remaining) - [ 16 - 17 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 17 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 91 (remaining gas: 1039866.070 units remaining) - [ 15 - 16 - 17 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 16 + 17 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 93 (remaining gas: 1039865.991 units remaining) - [ 14 - 15 - 16 - 17 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 15 + 16 + 17 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 95 (remaining gas: 1039865.904 units remaining) - [ 13 - 14 - 15 - 16 - 17 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 14 + 15 + 16 + 17 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 97 (remaining gas: 1039865.811 units remaining) - [ 12 - 13 - 14 - 15 - 16 - 17 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 13 + 14 + 15 + 16 + 17 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 99 (remaining gas: 1039865.711 units remaining) - [ 11 - 12 - 13 - 14 - 15 - 16 - 17 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 12 + 13 + 14 + 15 + 16 + 17 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 101 (remaining gas: 1039865.605 units remaining) - [ 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 103 (remaining gas: 1039865.491 units remaining) - [ 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 105 (remaining gas: 1039865.371 units remaining) - [ 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 107 (remaining gas: 1039865.244 units remaining) - [ 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 109 (remaining gas: 1039865.111 units remaining) - [ 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 111 (remaining gas: 1039864.970 units remaining) - [ 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 113 (remaining gas: 1039864.823 units remaining) - [ 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 115 (remaining gas: 1039864.669 units remaining) - [ 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 117 (remaining gas: 1039864.509 units remaining) - [ 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 119 (remaining gas: 1039864.341 units remaining) - [ 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 121 (remaining gas: 1039864.281 units remaining) - [ 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 123 (remaining gas: 1039864.215 units remaining) - [ 2 - 1 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 2 + 1 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 125 (remaining gas: 1039864.142 units remaining) - [ 3 - 2 - 1 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 3 + 2 + 1 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 127 (remaining gas: 1039864.063 units remaining) - [ 4 - 3 - 2 - 1 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 4 + 3 + 2 + 1 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 129 (remaining gas: 1039863.976 units remaining) - [ 5 - 4 - 3 - 2 - 1 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + 4 + 3 + 2 + 1 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 131 (remaining gas: 1039863.883 units remaining) - [ 6 - 5 - 4 - 3 - 2 - 1 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 5 + 4 + 3 + 2 + 1 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 133 (remaining gas: 1039863.783 units remaining) - [ 7 - 6 - 5 - 4 - 3 - 2 - 1 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + 5 + 4 + 3 + 2 + 1 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 135 (remaining gas: 1039863.677 units remaining) - [ 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 137 (remaining gas: 1039863.563 units remaining) - [ 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 139 (remaining gas: 1039863.443 units remaining) - [ 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 141 (remaining gas: 1039863.316 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 12 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 12 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 143 (remaining gas: 1039863.183 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 13 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 13 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 145 (remaining gas: 1039863.042 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 14 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 14 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 147 (remaining gas: 1039862.895 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 15 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 15 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 149 (remaining gas: 1039862.741 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 16 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 16 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 151 (remaining gas: 1039862.581 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 17 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 17 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 153 (remaining gas: 1039862.413 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.345 units remaining) - [ 2 - 1 - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 2 + 1 + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 159 (remaining gas: 1039862.330 units remaining) - [ (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.305 units remaining) - [ 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.295 units remaining) - [ 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.285 units remaining) - [ 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.275 units remaining) - [ 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.265 units remaining) - [ 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.255 units remaining) - [ 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.245 units remaining) - [ 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.235 units remaining) - [ 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.225 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.215 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.205 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.195 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.185 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.175 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.165 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 156 (remaining gas: 1039862.165 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.098 units remaining) - [ 3 - (Pair 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 3 + (Pair 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 163 (remaining gas: 1039862.083 units remaining) - [ (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.058 units remaining) - [ 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.048 units remaining) - [ 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.038 units remaining) - [ 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.028 units remaining) - [ 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.018 units remaining) - [ 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039862.008 units remaining) - [ 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.998 units remaining) - [ 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.988 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.978 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.968 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.958 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.948 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.938 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.928 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 160 (remaining gas: 1039861.928 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.863 units remaining) - [ 4 - (Pair 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 4 + (Pair 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 167 (remaining gas: 1039861.848 units remaining) - [ (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.823 units remaining) - [ 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.813 units remaining) - [ 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.803 units remaining) - [ 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.793 units remaining) - [ 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.783 units remaining) - [ 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.773 units remaining) - [ 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.763 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.753 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.743 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.733 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.723 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.713 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.703 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 164 (remaining gas: 1039861.703 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.639 units remaining) - [ 5 - (Pair 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 5 + (Pair 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 171 (remaining gas: 1039861.624 units remaining) - [ (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.599 units remaining) - [ 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.589 units remaining) - [ 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.579 units remaining) - [ 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.569 units remaining) - [ 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.559 units remaining) - [ 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.549 units remaining) - [ 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.539 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.529 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.519 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.509 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.499 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.489 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 168 (remaining gas: 1039861.489 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.427 units remaining) - [ 6 - (Pair 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 6 + (Pair 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 175 (remaining gas: 1039861.412 units remaining) - [ (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.387 units remaining) - [ 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.377 units remaining) - [ 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.367 units remaining) - [ 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.357 units remaining) - [ 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.347 units remaining) - [ 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.337 units remaining) - [ 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.327 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.317 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.307 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.297 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.287 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 172 (remaining gas: 1039861.287 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.226 units remaining) - [ 7 - (Pair 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 7 + (Pair 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 179 (remaining gas: 1039861.211 units remaining) - [ (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.186 units remaining) - [ 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.176 units remaining) - [ 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.166 units remaining) - [ 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.156 units remaining) - [ 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.146 units remaining) - [ 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.136 units remaining) - [ 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.126 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.116 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.106 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.096 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 176 (remaining gas: 1039861.096 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039861.037 units remaining) - [ 8 - (Pair 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 8 + (Pair 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 183 (remaining gas: 1039861.022 units remaining) - [ (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.997 units remaining) - [ 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.987 units remaining) - [ 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.977 units remaining) - [ 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.967 units remaining) - [ 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.957 units remaining) - [ 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.947 units remaining) - [ 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.937 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.927 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.917 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 180 (remaining gas: 1039860.917 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.859 units remaining) - [ 9 - (Pair 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 9 + (Pair 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 187 (remaining gas: 1039860.844 units remaining) - [ (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.819 units remaining) - [ 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.809 units remaining) - [ 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.799 units remaining) - [ 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.789 units remaining) - [ 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.779 units remaining) - [ 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.769 units remaining) - [ 15 - 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.759 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.749 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 184 (remaining gas: 1039860.749 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.694 units remaining) - [ 10 - (Pair 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 10 + (Pair 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 191 (remaining gas: 1039860.679 units remaining) - [ (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.654 units remaining) - [ 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.644 units remaining) - [ 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.634 units remaining) - [ 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.624 units remaining) - [ 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.614 units remaining) - [ 15 - 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.604 units remaining) - [ 16 - 15 - 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.594 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 188 (remaining gas: 1039860.594 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.540 units remaining) - [ 11 - (Pair 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 11 + (Pair 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 195 (remaining gas: 1039860.525 units remaining) - [ (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.500 units remaining) - [ 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.490 units remaining) - [ 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.480 units remaining) - [ 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.470 units remaining) - [ 15 - 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.460 units remaining) - [ 16 - 15 - 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.450 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 192 (remaining gas: 1039860.450 units remaining) - [ 17 - 16 - 15 - 14 - 13 - 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.398 units remaining) - [ 12 - (Pair 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 12 + (Pair 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 199 (remaining gas: 1039860.383 units remaining) - [ (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.358 units remaining) - [ 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.348 units remaining) - [ 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.338 units remaining) - [ 15 - 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.328 units remaining) - [ 16 - 15 - 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.318 units remaining) - [ 17 - 16 - 15 - 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 196 (remaining gas: 1039860.318 units remaining) - [ 17 - 16 - 15 - 14 - 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.267 units remaining) - [ 13 - (Pair 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 13 + (Pair 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 203 (remaining gas: 1039860.252 units remaining) - [ (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.227 units remaining) - [ 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.217 units remaining) - [ 15 - 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.207 units remaining) - [ 16 - 15 - 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.197 units remaining) - [ 17 - 16 - 15 - 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 200 (remaining gas: 1039860.197 units remaining) - [ 17 - 16 - 15 - 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.148 units remaining) - [ 14 - (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 14 + (Pair 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 207 (remaining gas: 1039860.133 units remaining) - [ (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.108 units remaining) - [ 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.098 units remaining) - [ 16 - 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.088 units remaining) - [ 17 - 16 - 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 204 (remaining gas: 1039860.088 units remaining) - [ 17 - 16 - 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 208 (remaining gas: 1039860.040 units remaining) - [ 15 - (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 15 + (Pair 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 211 (remaining gas: 1039860.025 units remaining) - [ (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 208 (remaining gas: 1039860 units remaining) - [ 16 - (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 208 (remaining gas: 1039859.990 units remaining) - [ 17 - 16 - (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 208 (remaining gas: 1039859.990 units remaining) - [ 17 - 16 - (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + 16 + (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 212 (remaining gas: 1039859.975 units remaining) - [ 16 - (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 16 + (Pair 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 214 (remaining gas: 1039859.960 units remaining) - [ (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 212 (remaining gas: 1039859.930 units remaining) - [ 17 - (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ 17 + (Pair 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 215 (remaining gas: 1039859.915 units remaining) - [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) - (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] + [ (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) + (Pair 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1) ] - location: 218 (remaining gas: 1039859.160 units remaining) - [ 0 ] + [ 0 ] - location: 219 (remaining gas: 1039859.145 units remaining) - [ True ] + [ True ] - location: 220 (remaining gas: 1039859.135 units remaining) [ ] - location: 220 (remaining gas: 1039859.120 units remaining) [ ] - location: 226 (remaining gas: 1039859.110 units remaining) - [ Unit ] + [ Unit ] - location: 227 (remaining gas: 1039859.095 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 229 (remaining gas: 1039859.080 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 2 (Pair 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 2 (Pair 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out index 67c801c086..5abea80af3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 2 (Pair 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dig_eq.tz-Unit-(Pair 2 (Pair 3 (Pair 12 (Pair 16 (Pair .d473151c0f.out @@ -8,3424 +8,3424 @@ big_map diff trace - location: 24 (remaining gas: 1039868.707 units remaining) - [ (Pair (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) Unit) ] + [ (Pair (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) Unit) ] - location: 24 (remaining gas: 1039868.697 units remaining) - [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 25 (remaining gas: 1039868.687 units remaining) - [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 27 (remaining gas: 1039868.677 units remaining) - [ 2 - (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 28 (remaining gas: 1039868.662 units remaining) - [ (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 30 (remaining gas: 1039868.652 units remaining) - [ 3 - (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 28 (remaining gas: 1039868.622 units remaining) - [ 2 - 3 - (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 31 (remaining gas: 1039868.574 units remaining) - [ (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 34 (remaining gas: 1039868.564 units remaining) - [ 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 31 (remaining gas: 1039868.539 units remaining) - [ 3 - 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 31 (remaining gas: 1039868.529 units remaining) - [ 2 - 3 - 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 31 (remaining gas: 1039868.529 units remaining) - [ 2 - 3 - 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.480 units remaining) - [ (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 38 (remaining gas: 1039868.470 units remaining) - [ 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.445 units remaining) - [ 12 - 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.435 units remaining) - [ 3 - 12 - 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.425 units remaining) - [ 2 - 3 - 12 - 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 35 (remaining gas: 1039868.425 units remaining) - [ 2 - 3 - 12 - 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.374 units remaining) - [ (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 42 (remaining gas: 1039868.364 units remaining) - [ 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.339 units remaining) - [ 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.329 units remaining) - [ 12 - 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.319 units remaining) - [ 3 - 12 - 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.309 units remaining) - [ 2 - 3 - 12 - 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 39 (remaining gas: 1039868.309 units remaining) - [ 2 - 3 - 12 - 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.257 units remaining) - [ (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 46 (remaining gas: 1039868.247 units remaining) - [ 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.222 units remaining) - [ 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.212 units remaining) - [ 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.202 units remaining) - [ 12 - 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.192 units remaining) - [ 3 - 12 - 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.182 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 43 (remaining gas: 1039868.182 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.128 units remaining) - [ (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 50 (remaining gas: 1039868.118 units remaining) - [ 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.093 units remaining) - [ 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.083 units remaining) - [ 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.073 units remaining) - [ 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.063 units remaining) - [ 12 - 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.053 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.043 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 47 (remaining gas: 1039868.043 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.988 units remaining) - [ (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 54 (remaining gas: 1039867.978 units remaining) - [ 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.953 units remaining) - [ 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.943 units remaining) - [ 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.933 units remaining) - [ 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.923 units remaining) - [ 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.913 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.903 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.893 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 51 (remaining gas: 1039867.893 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.835 units remaining) - [ (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 58 (remaining gas: 1039867.825 units remaining) - [ 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.800 units remaining) - [ 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.790 units remaining) - [ 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.780 units remaining) - [ 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.770 units remaining) - [ 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.760 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.750 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.740 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.730 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 55 (remaining gas: 1039867.730 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.671 units remaining) - [ (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 62 (remaining gas: 1039867.661 units remaining) - [ 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.636 units remaining) - [ 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.626 units remaining) - [ 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.616 units remaining) - [ 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.606 units remaining) - [ 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.596 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.586 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.576 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.566 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.556 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 59 (remaining gas: 1039867.556 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.495 units remaining) - [ (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 66 (remaining gas: 1039867.485 units remaining) - [ 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.460 units remaining) - [ 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.450 units remaining) - [ 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.440 units remaining) - [ 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.430 units remaining) - [ 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.420 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.410 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.400 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.390 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.380 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.370 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 63 (remaining gas: 1039867.370 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.308 units remaining) - [ (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 70 (remaining gas: 1039867.298 units remaining) - [ 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.273 units remaining) - [ 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.263 units remaining) - [ 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.253 units remaining) - [ 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.243 units remaining) - [ 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.233 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.223 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.213 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.203 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.193 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.183 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.173 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 67 (remaining gas: 1039867.173 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.109 units remaining) - [ (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 74 (remaining gas: 1039867.099 units remaining) - [ 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.074 units remaining) - [ 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.064 units remaining) - [ 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.054 units remaining) - [ 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.044 units remaining) - [ 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.034 units remaining) - [ 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.024 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.014 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039867.004 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.994 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.984 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.974 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.964 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 71 (remaining gas: 1039866.964 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.899 units remaining) - [ (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 78 (remaining gas: 1039866.889 units remaining) - [ 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.864 units remaining) - [ 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.854 units remaining) - [ 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.844 units remaining) - [ 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.834 units remaining) - [ 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.824 units remaining) - [ 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.814 units remaining) - [ 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.804 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.794 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.784 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.774 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.764 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.754 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.744 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 75 (remaining gas: 1039866.744 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.677 units remaining) - [ (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 82 (remaining gas: 1039866.667 units remaining) - [ 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.642 units remaining) - [ 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.632 units remaining) - [ 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.622 units remaining) - [ 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.612 units remaining) - [ 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.602 units remaining) - [ 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.592 units remaining) - [ 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.582 units remaining) - [ 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.572 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.562 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.552 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.542 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.532 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.522 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.512 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 79 (remaining gas: 1039866.512 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.444 units remaining) - [ (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 86 (remaining gas: 1039866.434 units remaining) - [ 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.409 units remaining) - [ 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.399 units remaining) - [ 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.389 units remaining) - [ 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.379 units remaining) - [ 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.369 units remaining) - [ 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.359 units remaining) - [ 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.349 units remaining) - [ 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.339 units remaining) - [ 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.329 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.319 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.309 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.299 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.289 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.279 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.269 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 83 (remaining gas: 1039866.269 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 87 (remaining gas: 1039866.209 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 89 (remaining gas: 1039866.143 units remaining) - [ 3 - 2 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 2 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 91 (remaining gas: 1039866.070 units remaining) - [ 12 - 3 - 2 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 3 + 2 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 93 (remaining gas: 1039865.991 units remaining) - [ 16 - 12 - 3 - 2 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 12 + 3 + 2 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 95 (remaining gas: 1039865.904 units remaining) - [ 10 - 16 - 12 - 3 - 2 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 16 + 12 + 3 + 2 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 97 (remaining gas: 1039865.811 units remaining) - [ 14 - 10 - 16 - 12 - 3 - 2 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 10 + 16 + 12 + 3 + 2 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 99 (remaining gas: 1039865.711 units remaining) - [ 19 - 14 - 10 - 16 - 12 - 3 - 2 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 14 + 10 + 16 + 12 + 3 + 2 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 101 (remaining gas: 1039865.605 units remaining) - [ 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 103 (remaining gas: 1039865.491 units remaining) - [ 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 105 (remaining gas: 1039865.371 units remaining) - [ 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 107 (remaining gas: 1039865.244 units remaining) - [ 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 109 (remaining gas: 1039865.111 units remaining) - [ 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 111 (remaining gas: 1039864.970 units remaining) - [ 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 113 (remaining gas: 1039864.823 units remaining) - [ 13 - 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 13 + 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 115 (remaining gas: 1039864.669 units remaining) - [ 15 - 13 - 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 15 + 13 + 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 117 (remaining gas: 1039864.509 units remaining) - [ 5 - 15 - 13 - 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 5 + 15 + 13 + 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 119 (remaining gas: 1039864.341 units remaining) - [ 1 - 5 - 15 - 13 - 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 1 + 5 + 15 + 13 + 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 121 (remaining gas: 1039864.281 units remaining) - [ 1 - 5 - 15 - 13 - 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 1 + 5 + 15 + 13 + 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 123 (remaining gas: 1039864.215 units remaining) - [ 5 - 1 - 15 - 13 - 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 5 + 1 + 15 + 13 + 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 125 (remaining gas: 1039864.142 units remaining) - [ 15 - 5 - 1 - 13 - 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 15 + 5 + 1 + 13 + 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 127 (remaining gas: 1039864.063 units remaining) - [ 13 - 15 - 5 - 1 - 4 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 13 + 15 + 5 + 1 + 4 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 129 (remaining gas: 1039863.976 units remaining) - [ 4 - 13 - 15 - 5 - 1 - 11 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + 13 + 15 + 5 + 1 + 11 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 131 (remaining gas: 1039863.883 units remaining) - [ 11 - 4 - 13 - 15 - 5 - 1 - 8 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 4 + 13 + 15 + 5 + 1 + 8 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 133 (remaining gas: 1039863.783 units remaining) - [ 8 - 11 - 4 - 13 - 15 - 5 - 1 - 6 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + 4 + 13 + 15 + 5 + 1 + 6 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 135 (remaining gas: 1039863.677 units remaining) - [ 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 18 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 18 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 137 (remaining gas: 1039863.563 units remaining) - [ 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 9 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 9 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 139 (remaining gas: 1039863.443 units remaining) - [ 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 19 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 19 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 141 (remaining gas: 1039863.316 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 14 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 14 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 143 (remaining gas: 1039863.183 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 10 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 10 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 145 (remaining gas: 1039863.042 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 16 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 16 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 147 (remaining gas: 1039862.895 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 12 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 12 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 149 (remaining gas: 1039862.741 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 3 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 3 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 151 (remaining gas: 1039862.581 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - 2 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + 2 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 153 (remaining gas: 1039862.413 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.345 units remaining) - [ 5 - 1 - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 5 + 1 + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 159 (remaining gas: 1039862.330 units remaining) - [ (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.305 units remaining) - [ 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.295 units remaining) - [ 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.285 units remaining) - [ 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.275 units remaining) - [ 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.265 units remaining) - [ 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.255 units remaining) - [ 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.245 units remaining) - [ 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.235 units remaining) - [ 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.225 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.215 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.205 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.195 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.185 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.175 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.165 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 156 (remaining gas: 1039862.165 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.098 units remaining) - [ 15 - (Pair 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 15 + (Pair 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 163 (remaining gas: 1039862.083 units remaining) - [ (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.058 units remaining) - [ 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.048 units remaining) - [ 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.038 units remaining) - [ 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.028 units remaining) - [ 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.018 units remaining) - [ 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039862.008 units remaining) - [ 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.998 units remaining) - [ 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.988 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.978 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.968 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.958 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.948 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.938 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.928 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 160 (remaining gas: 1039861.928 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.863 units remaining) - [ 13 - (Pair 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 13 + (Pair 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 167 (remaining gas: 1039861.848 units remaining) - [ (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.823 units remaining) - [ 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.813 units remaining) - [ 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.803 units remaining) - [ 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.793 units remaining) - [ 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.783 units remaining) - [ 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.773 units remaining) - [ 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.763 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.753 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.743 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.733 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.723 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.713 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.703 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 164 (remaining gas: 1039861.703 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.639 units remaining) - [ 4 - (Pair 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 4 + (Pair 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 171 (remaining gas: 1039861.624 units remaining) - [ (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.599 units remaining) - [ 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.589 units remaining) - [ 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.579 units remaining) - [ 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.569 units remaining) - [ 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.559 units remaining) - [ 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.549 units remaining) - [ 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.539 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.529 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.519 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.509 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.499 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.489 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 168 (remaining gas: 1039861.489 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.427 units remaining) - [ 11 - (Pair 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 11 + (Pair 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 175 (remaining gas: 1039861.412 units remaining) - [ (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.387 units remaining) - [ 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.377 units remaining) - [ 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.367 units remaining) - [ 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.357 units remaining) - [ 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.347 units remaining) - [ 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.337 units remaining) - [ 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.327 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.317 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.307 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.297 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.287 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 172 (remaining gas: 1039861.287 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.226 units remaining) - [ 8 - (Pair 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 8 + (Pair 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 179 (remaining gas: 1039861.211 units remaining) - [ (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.186 units remaining) - [ 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.176 units remaining) - [ 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.166 units remaining) - [ 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.156 units remaining) - [ 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.146 units remaining) - [ 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.136 units remaining) - [ 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.126 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.116 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.106 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.096 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 176 (remaining gas: 1039861.096 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039861.037 units remaining) - [ 6 - (Pair 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 6 + (Pair 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 183 (remaining gas: 1039861.022 units remaining) - [ (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.997 units remaining) - [ 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.987 units remaining) - [ 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.977 units remaining) - [ 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.967 units remaining) - [ 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.957 units remaining) - [ 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.947 units remaining) - [ 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.937 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.927 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.917 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 180 (remaining gas: 1039860.917 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.859 units remaining) - [ 18 - (Pair 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 18 + (Pair 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 187 (remaining gas: 1039860.844 units remaining) - [ (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.819 units remaining) - [ 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.809 units remaining) - [ 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.799 units remaining) - [ 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.789 units remaining) - [ 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.779 units remaining) - [ 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.769 units remaining) - [ 12 - 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.759 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.749 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 184 (remaining gas: 1039860.749 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.694 units remaining) - [ 9 - (Pair 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 9 + (Pair 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 191 (remaining gas: 1039860.679 units remaining) - [ (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.654 units remaining) - [ 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.644 units remaining) - [ 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.634 units remaining) - [ 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.624 units remaining) - [ 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.614 units remaining) - [ 12 - 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.604 units remaining) - [ 3 - 12 - 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.594 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 188 (remaining gas: 1039860.594 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.540 units remaining) - [ 19 - (Pair 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 19 + (Pair 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 195 (remaining gas: 1039860.525 units remaining) - [ (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.500 units remaining) - [ 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.490 units remaining) - [ 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.480 units remaining) - [ 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.470 units remaining) - [ 12 - 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.460 units remaining) - [ 3 - 12 - 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.450 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 192 (remaining gas: 1039860.450 units remaining) - [ 2 - 3 - 12 - 16 - 10 - 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.398 units remaining) - [ 14 - (Pair 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 14 + (Pair 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 199 (remaining gas: 1039860.383 units remaining) - [ (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.358 units remaining) - [ 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.348 units remaining) - [ 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.338 units remaining) - [ 12 - 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.328 units remaining) - [ 3 - 12 - 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.318 units remaining) - [ 2 - 3 - 12 - 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 196 (remaining gas: 1039860.318 units remaining) - [ 2 - 3 - 12 - 16 - 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.267 units remaining) - [ 10 - (Pair 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 10 + (Pair 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 203 (remaining gas: 1039860.252 units remaining) - [ (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.227 units remaining) - [ 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.217 units remaining) - [ 12 - 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.207 units remaining) - [ 3 - 12 - 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.197 units remaining) - [ 2 - 3 - 12 - 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 200 (remaining gas: 1039860.197 units remaining) - [ 2 - 3 - 12 - 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.148 units remaining) - [ 16 - (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 16 + (Pair 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 207 (remaining gas: 1039860.133 units remaining) - [ (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.108 units remaining) - [ 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.098 units remaining) - [ 3 - 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.088 units remaining) - [ 2 - 3 - 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 204 (remaining gas: 1039860.088 units remaining) - [ 2 - 3 - 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 208 (remaining gas: 1039860.040 units remaining) - [ 12 - (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 12 + (Pair 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 211 (remaining gas: 1039860.025 units remaining) - [ (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 208 (remaining gas: 1039860 units remaining) - [ 3 - (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 208 (remaining gas: 1039859.990 units remaining) - [ 2 - 3 - (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 208 (remaining gas: 1039859.990 units remaining) - [ 2 - 3 - (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + 3 + (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 212 (remaining gas: 1039859.975 units remaining) - [ 3 - (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 3 + (Pair 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 214 (remaining gas: 1039859.960 units remaining) - [ (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 212 (remaining gas: 1039859.930 units remaining) - [ 2 - (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ 2 + (Pair 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 215 (remaining gas: 1039859.915 units remaining) - [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) - (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] + [ (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) + (Pair 2 3 12 16 10 14 19 9 18 6 8 11 4 13 15 5 1) ] - location: 218 (remaining gas: 1039859.160 units remaining) - [ 0 ] + [ 0 ] - location: 219 (remaining gas: 1039859.145 units remaining) - [ True ] + [ True ] - location: 220 (remaining gas: 1039859.135 units remaining) [ ] - location: 220 (remaining gas: 1039859.120 units remaining) [ ] - location: 226 (remaining gas: 1039859.110 units remaining) - [ Unit ] + [ Unit ] - location: 227 (remaining gas: 1039859.095 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 229 (remaining gas: 1039859.080 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dign.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dign.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out index e1d10184f3..ade6c6bd5e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dign.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dign.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out @@ -8,54 +8,54 @@ big_map diff trace - location: 15 (remaining gas: 1039987.170 units remaining) - [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] + [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] - location: 15 (remaining gas: 1039987.160 units remaining) - [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] + [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] - location: 16 (remaining gas: 1039987.150 units remaining) - [ (Pair (Pair (Pair 1 2) 3) 4) - 5 ] + [ (Pair (Pair (Pair 1 2) 3) 4) + 5 ] - location: 17 (remaining gas: 1039987.140 units remaining) - [ (Pair (Pair 1 2) 3) - 4 - 5 ] + [ (Pair (Pair 1 2) 3) + 4 + 5 ] - location: 18 (remaining gas: 1039987.130 units remaining) - [ (Pair 1 2) - 3 - 4 - 5 ] + [ (Pair 1 2) + 3 + 4 + 5 ] - location: 19 (remaining gas: 1039987.120 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 20 (remaining gas: 1039987.033 units remaining) - [ 5 - 1 - 2 - 3 - 4 ] + [ 5 + 1 + 2 + 3 + 4 ] - location: 22 (remaining gas: 1039987.018 units remaining) - [ 1 - 2 - 3 - 4 ] + [ 1 + 2 + 3 + 4 ] - location: 24 (remaining gas: 1039987.008 units remaining) - [ 2 - 3 - 4 ] + [ 2 + 3 + 4 ] - location: 25 (remaining gas: 1039986.998 units remaining) - [ 3 - 4 ] + [ 3 + 4 ] - location: 26 (remaining gas: 1039986.988 units remaining) - [ 4 ] + [ 4 ] - location: 27 (remaining gas: 1039986.978 units remaining) [ ] - location: 22 (remaining gas: 1039986.948 units remaining) - [ 5 ] + [ 5 ] - location: 28 (remaining gas: 1039986.933 units remaining) - [ {} - 5 ] + [ {} + 5 ] - location: 30 (remaining gas: 1039986.918 units remaining) - [ (Pair {} 5) ] + [ (Pair {} 5) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out index b98b2ee007..a7c4a8ebd7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 1 1)-(Pair 1 2)].out @@ -8,29 +8,29 @@ big_map diff trace - location: 11 (remaining gas: 1039990.758 units remaining) - [ (Pair (Pair 1 1) 0 0) ] + [ (Pair (Pair 1 1) 0 0) ] - location: 11 (remaining gas: 1039990.748 units remaining) - [ (Pair 1 1) ] + [ (Pair 1 1) ] - location: 12 (remaining gas: 1039990.738 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 13 (remaining gas: 1039990.728 units remaining) - [ 1 - 1 - 1 ] + [ 1 + 1 + 1 ] - location: 14 (remaining gas: 1039990.713 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 16 (remaining gas: 1039990.658 units remaining) - [ 2 ] + [ 2 ] - location: 14 (remaining gas: 1039990.628 units remaining) - [ 1 - 2 ] + [ 1 + 2 ] - location: 17 (remaining gas: 1039990.613 units remaining) - [ (Pair 1 2) ] + [ (Pair 1 2) ] - location: 18 (remaining gas: 1039990.598 units remaining) - [ {} - (Pair 1 2) ] + [ {} + (Pair 1 2) ] - location: 20 (remaining gas: 1039990.583 units remaining) - [ (Pair {} 1 2) ] + [ (Pair {} 1 2) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out index 615354dba8..3246148af3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dip.tz-(Pair 0 0)-(Pair 15 9)-(Pair 15 24)].out @@ -8,29 +8,29 @@ big_map diff trace - location: 11 (remaining gas: 1039990.758 units remaining) - [ (Pair (Pair 15 9) 0 0) ] + [ (Pair (Pair 15 9) 0 0) ] - location: 11 (remaining gas: 1039990.748 units remaining) - [ (Pair 15 9) ] + [ (Pair 15 9) ] - location: 12 (remaining gas: 1039990.738 units remaining) - [ 15 - 9 ] + [ 15 + 9 ] - location: 13 (remaining gas: 1039990.728 units remaining) - [ 15 - 15 - 9 ] + [ 15 + 15 + 9 ] - location: 14 (remaining gas: 1039990.713 units remaining) - [ 15 - 9 ] + [ 15 + 9 ] - location: 16 (remaining gas: 1039990.658 units remaining) - [ 24 ] + [ 24 ] - location: 14 (remaining gas: 1039990.628 units remaining) - [ 15 - 24 ] + [ 15 + 24 ] - location: 17 (remaining gas: 1039990.613 units remaining) - [ (Pair 15 24) ] + [ (Pair 15 24) ] - location: 18 (remaining gas: 1039990.598 units remaining) - [ {} - (Pair 15 24) ] + [ {} + (Pair 15 24) ] - location: 20 (remaining gas: 1039990.583 units remaining) - [ (Pair {} 15 24) ] + [ (Pair {} 15 24) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dipn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dipn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out index a4e1e7b566..47c2e282f8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dipn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dipn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-6].out @@ -8,86 +8,86 @@ big_map diff trace - location: 15 (remaining gas: 1039986.010 units remaining) - [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] + [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] - location: 15 (remaining gas: 1039986 units remaining) - [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] + [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] - location: 16 (remaining gas: 1039985.990 units remaining) - [ (Pair (Pair (Pair 1 2) 3) 4) - 5 ] + [ (Pair (Pair (Pair 1 2) 3) 4) + 5 ] - location: 17 (remaining gas: 1039985.980 units remaining) - [ (Pair (Pair 1 2) 3) - 4 - 5 ] + [ (Pair (Pair 1 2) 3) + 4 + 5 ] - location: 18 (remaining gas: 1039985.970 units remaining) - [ (Pair 1 2) - 3 - 4 - 5 ] + [ (Pair 1 2) + 3 + 4 + 5 ] - location: 19 (remaining gas: 1039985.960 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 20 (remaining gas: 1039985.908 units remaining) [ ] - location: 23 (remaining gas: 1039985.898 units remaining) - [ 6 ] + [ 6 ] - location: 20 (remaining gas: 1039985.873 units remaining) - [ 5 - 6 ] + [ 5 + 6 ] - location: 20 (remaining gas: 1039985.863 units remaining) - [ 4 - 5 - 6 ] + [ 4 + 5 + 6 ] - location: 20 (remaining gas: 1039985.853 units remaining) - [ 3 - 4 - 5 - 6 ] + [ 3 + 4 + 5 + 6 ] - location: 20 (remaining gas: 1039985.843 units remaining) - [ 2 - 3 - 4 - 5 - 6 ] + [ 2 + 3 + 4 + 5 + 6 ] - location: 20 (remaining gas: 1039985.833 units remaining) - [ 1 - 2 - 3 - 4 - 5 - 6 ] + [ 1 + 2 + 3 + 4 + 5 + 6 ] - location: 20 (remaining gas: 1039985.833 units remaining) - [ 1 - 2 - 3 - 4 - 5 - 6 ] + [ 1 + 2 + 3 + 4 + 5 + 6 ] - location: 26 (remaining gas: 1039985.823 units remaining) - [ 2 - 3 - 4 - 5 - 6 ] + [ 2 + 3 + 4 + 5 + 6 ] - location: 27 (remaining gas: 1039985.813 units remaining) - [ 3 - 4 - 5 - 6 ] + [ 3 + 4 + 5 + 6 ] - location: 28 (remaining gas: 1039985.803 units remaining) - [ 4 - 5 - 6 ] + [ 4 + 5 + 6 ] - location: 29 (remaining gas: 1039985.793 units remaining) - [ 5 - 6 ] + [ 5 + 6 ] - location: 30 (remaining gas: 1039985.783 units remaining) - [ 6 ] + [ 6 ] - location: 31 (remaining gas: 1039985.768 units remaining) - [ {} - 6 ] + [ {} + 6 ] - location: 33 (remaining gas: 1039985.753 units remaining) - [ (Pair {} 6) ] + [ (Pair {} 6) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dropn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dropn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out index 991924cbeb..b25d828355 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dropn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dropn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-5].out @@ -8,32 +8,32 @@ big_map diff trace - location: 15 (remaining gas: 1039990.347 units remaining) - [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] + [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] - location: 15 (remaining gas: 1039990.337 units remaining) - [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] + [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] - location: 16 (remaining gas: 1039990.327 units remaining) - [ (Pair (Pair (Pair 1 2) 3) 4) - 5 ] + [ (Pair (Pair (Pair 1 2) 3) 4) + 5 ] - location: 17 (remaining gas: 1039990.317 units remaining) - [ (Pair (Pair 1 2) 3) - 4 - 5 ] + [ (Pair (Pair 1 2) 3) + 4 + 5 ] - location: 18 (remaining gas: 1039990.307 units remaining) - [ (Pair 1 2) - 3 - 4 - 5 ] + [ (Pair 1 2) + 3 + 4 + 5 ] - location: 19 (remaining gas: 1039990.297 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 20 (remaining gas: 1039990.227 units remaining) - [ 5 ] + [ 5 ] - location: 22 (remaining gas: 1039990.212 units remaining) - [ {} - 5 ] + [ {} + 5 ] - location: 24 (remaining gas: 1039990.197 units remaining) - [ (Pair {} 5) ] + [ (Pair {} 5) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dugn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dugn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out index fd9a9d3586..548d4395ae 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dugn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dugn.tz-0-(Pair (Pair (Pair (Pair 1 2) 3) 4) 5)-1].out @@ -8,50 +8,50 @@ big_map diff trace - location: 15 (remaining gas: 1039987.936 units remaining) - [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] + [ (Pair (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) 0) ] - location: 15 (remaining gas: 1039987.926 units remaining) - [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] + [ (Pair (Pair (Pair (Pair 1 2) 3) 4) 5) ] - location: 16 (remaining gas: 1039987.916 units remaining) - [ (Pair (Pair (Pair 1 2) 3) 4) - 5 ] + [ (Pair (Pair (Pair 1 2) 3) 4) + 5 ] - location: 17 (remaining gas: 1039987.906 units remaining) - [ (Pair (Pair 1 2) 3) - 4 - 5 ] + [ (Pair (Pair 1 2) 3) + 4 + 5 ] - location: 18 (remaining gas: 1039987.896 units remaining) - [ (Pair 1 2) - 3 - 4 - 5 ] + [ (Pair 1 2) + 3 + 4 + 5 ] - location: 19 (remaining gas: 1039987.886 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 20 (remaining gas: 1039987.799 units remaining) - [ 2 - 3 - 4 - 5 - 1 ] + [ 2 + 3 + 4 + 5 + 1 ] - location: 22 (remaining gas: 1039987.789 units remaining) - [ 3 - 4 - 5 - 1 ] + [ 3 + 4 + 5 + 1 ] - location: 23 (remaining gas: 1039987.779 units remaining) - [ 4 - 5 - 1 ] + [ 4 + 5 + 1 ] - location: 24 (remaining gas: 1039987.769 units remaining) - [ 5 - 1 ] + [ 5 + 1 ] - location: 25 (remaining gas: 1039987.759 units remaining) - [ 1 ] + [ 1 ] - location: 26 (remaining gas: 1039987.744 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 28 (remaining gas: 1039987.729 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dup-n.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dup-n.tz-Unit-Unit-Unit].out index 1fe5426e48..203847e7e6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dup-n.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[dup-n.tz-Unit-Unit-Unit].out @@ -8,241 +8,241 @@ big_map diff trace - location: 7 (remaining gas: 1039951.987 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039951.977 units remaining) [ ] - location: 8 (remaining gas: 1039951.967 units remaining) - [ 5 ] + [ 5 ] - location: 11 (remaining gas: 1039951.957 units remaining) - [ 4 - 5 ] + [ 4 + 5 ] - location: 14 (remaining gas: 1039951.947 units remaining) - [ 3 - 4 - 5 ] + [ 3 + 4 + 5 ] - location: 17 (remaining gas: 1039951.937 units remaining) - [ 2 - 3 - 4 - 5 ] + [ 2 + 3 + 4 + 5 ] - location: 20 (remaining gas: 1039951.927 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 23 (remaining gas: 1039951.906 units remaining) - [ 1 - 1 - 2 - 3 - 4 - 5 ] + [ 1 + 1 + 2 + 3 + 4 + 5 ] - location: 25 (remaining gas: 1039951.896 units remaining) - [ 1 - 1 - 1 - 2 - 3 - 4 - 5 ] + [ 1 + 1 + 1 + 2 + 3 + 4 + 5 ] - location: 30 (remaining gas: 1039951.861 units remaining) - [ 0 - 1 - 2 - 3 - 4 - 5 ] + [ 0 + 1 + 2 + 3 + 4 + 5 ] - location: 31 (remaining gas: 1039951.846 units remaining) - [ True - 1 - 2 - 3 - 4 - 5 ] + [ True + 1 + 2 + 3 + 4 + 5 ] - location: 32 (remaining gas: 1039951.836 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 32 (remaining gas: 1039951.821 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 38 (remaining gas: 1039951.799 units remaining) - [ 2 - 1 - 2 - 3 - 4 - 5 ] + [ 2 + 1 + 2 + 3 + 4 + 5 ] - location: 40 (remaining gas: 1039951.789 units remaining) - [ 2 - 2 - 1 - 2 - 3 - 4 - 5 ] + [ 2 + 2 + 1 + 2 + 3 + 4 + 5 ] - location: 45 (remaining gas: 1039951.754 units remaining) - [ 0 - 1 - 2 - 3 - 4 - 5 ] + [ 0 + 1 + 2 + 3 + 4 + 5 ] - location: 46 (remaining gas: 1039951.739 units remaining) - [ True - 1 - 2 - 3 - 4 - 5 ] + [ True + 1 + 2 + 3 + 4 + 5 ] - location: 47 (remaining gas: 1039951.729 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 47 (remaining gas: 1039951.714 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 53 (remaining gas: 1039951.691 units remaining) - [ 3 - 1 - 2 - 3 - 4 - 5 ] + [ 3 + 1 + 2 + 3 + 4 + 5 ] - location: 55 (remaining gas: 1039951.681 units remaining) - [ 3 - 3 - 1 - 2 - 3 - 4 - 5 ] + [ 3 + 3 + 1 + 2 + 3 + 4 + 5 ] - location: 60 (remaining gas: 1039951.646 units remaining) - [ 0 - 1 - 2 - 3 - 4 - 5 ] + [ 0 + 1 + 2 + 3 + 4 + 5 ] - location: 61 (remaining gas: 1039951.631 units remaining) - [ True - 1 - 2 - 3 - 4 - 5 ] + [ True + 1 + 2 + 3 + 4 + 5 ] - location: 62 (remaining gas: 1039951.621 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 62 (remaining gas: 1039951.606 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 68 (remaining gas: 1039951.582 units remaining) - [ 4 - 1 - 2 - 3 - 4 - 5 ] + [ 4 + 1 + 2 + 3 + 4 + 5 ] - location: 70 (remaining gas: 1039951.572 units remaining) - [ 4 - 4 - 1 - 2 - 3 - 4 - 5 ] + [ 4 + 4 + 1 + 2 + 3 + 4 + 5 ] - location: 75 (remaining gas: 1039951.537 units remaining) - [ 0 - 1 - 2 - 3 - 4 - 5 ] + [ 0 + 1 + 2 + 3 + 4 + 5 ] - location: 76 (remaining gas: 1039951.522 units remaining) - [ True - 1 - 2 - 3 - 4 - 5 ] + [ True + 1 + 2 + 3 + 4 + 5 ] - location: 77 (remaining gas: 1039951.512 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 77 (remaining gas: 1039951.497 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 83 (remaining gas: 1039951.472 units remaining) - [ 5 - 1 - 2 - 3 - 4 - 5 ] + [ 5 + 1 + 2 + 3 + 4 + 5 ] - location: 85 (remaining gas: 1039951.462 units remaining) - [ 5 - 5 - 1 - 2 - 3 - 4 - 5 ] + [ 5 + 5 + 1 + 2 + 3 + 4 + 5 ] - location: 90 (remaining gas: 1039951.427 units remaining) - [ 0 - 1 - 2 - 3 - 4 - 5 ] + [ 0 + 1 + 2 + 3 + 4 + 5 ] - location: 91 (remaining gas: 1039951.412 units remaining) - [ True - 1 - 2 - 3 - 4 - 5 ] + [ True + 1 + 2 + 3 + 4 + 5 ] - location: 92 (remaining gas: 1039951.402 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 92 (remaining gas: 1039951.387 units remaining) - [ 1 - 2 - 3 - 4 - 5 ] + [ 1 + 2 + 3 + 4 + 5 ] - location: 98 (remaining gas: 1039951.315 units remaining) [ ] - location: 100 (remaining gas: 1039951.305 units remaining) - [ Unit ] + [ Unit ] - location: 101 (remaining gas: 1039951.290 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 103 (remaining gas: 1039951.275 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out index c46413e02a..f6a21e9db0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair -8 2)-(Pair (S.ecc0e72cbb.out @@ -8,135 +8,135 @@ big_map diff trace - location: 25 (remaining gas: 1039969.963 units remaining) - [ (Pair (Pair -8 2) None None None None) ] + [ (Pair (Pair -8 2) None None None None) ] - location: 25 (remaining gas: 1039969.953 units remaining) - [ (Pair -8 2) ] + [ (Pair -8 2) ] - location: 26 (remaining gas: 1039969.943 units remaining) - [ (Pair -8 2) - (Pair -8 2) ] + [ (Pair -8 2) + (Pair -8 2) ] - location: 27 (remaining gas: 1039969.933 units remaining) - [ -8 - 2 - (Pair -8 2) ] + [ -8 + 2 + (Pair -8 2) ] - location: 28 (remaining gas: 1039969.908 units remaining) - [ 8 - 2 - (Pair -8 2) ] + [ 8 + 2 + (Pair -8 2) ] - location: 29 (remaining gas: 1039969.893 units remaining) - [ 2 - (Pair -8 2) ] + [ 2 + (Pair -8 2) ] - location: 31 (remaining gas: 1039969.868 units remaining) - [ 2 - (Pair -8 2) ] + [ 2 + (Pair -8 2) ] - location: 29 (remaining gas: 1039969.838 units remaining) - [ 8 - 2 - (Pair -8 2) ] + [ 8 + 2 + (Pair -8 2) ] - location: 32 (remaining gas: 1039969.698 units remaining) - [ (Some (Pair 4 0)) - (Pair -8 2) ] + [ (Some (Pair 4 0)) + (Pair -8 2) ] - location: 33 (remaining gas: 1039969.688 units remaining) - [ (Pair -8 2) - (Some (Pair 4 0)) ] + [ (Pair -8 2) + (Some (Pair 4 0)) ] - location: 34 (remaining gas: 1039969.678 units remaining) - [ (Pair -8 2) - (Pair -8 2) - (Some (Pair 4 0)) ] + [ (Pair -8 2) + (Pair -8 2) + (Some (Pair 4 0)) ] - location: 35 (remaining gas: 1039969.668 units remaining) - [ -8 - 2 - (Pair -8 2) - (Some (Pair 4 0)) ] + [ -8 + 2 + (Pair -8 2) + (Some (Pair 4 0)) ] - location: 36 (remaining gas: 1039969.643 units remaining) - [ 8 - 2 - (Pair -8 2) - (Some (Pair 4 0)) ] + [ 8 + 2 + (Pair -8 2) + (Some (Pair 4 0)) ] - location: 37 (remaining gas: 1039969.503 units remaining) - [ (Some (Pair 4 0)) - (Pair -8 2) - (Some (Pair 4 0)) ] + [ (Some (Pair 4 0)) + (Pair -8 2) + (Some (Pair 4 0)) ] - location: 38 (remaining gas: 1039969.493 units remaining) - [ (Pair -8 2) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ (Pair -8 2) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 39 (remaining gas: 1039969.483 units remaining) - [ (Pair -8 2) - (Pair -8 2) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ (Pair -8 2) + (Pair -8 2) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 40 (remaining gas: 1039969.473 units remaining) - [ -8 - 2 - (Pair -8 2) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ -8 + 2 + (Pair -8 2) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 41 (remaining gas: 1039969.458 units remaining) - [ 2 - (Pair -8 2) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ 2 + (Pair -8 2) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 43 (remaining gas: 1039969.433 units remaining) - [ 2 - (Pair -8 2) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ 2 + (Pair -8 2) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 41 (remaining gas: 1039969.403 units remaining) - [ -8 - 2 - (Pair -8 2) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ -8 + 2 + (Pair -8 2) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 44 (remaining gas: 1039969.263 units remaining) - [ (Some (Pair -4 0)) - (Pair -8 2) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ (Some (Pair -4 0)) + (Pair -8 2) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 45 (remaining gas: 1039969.253 units remaining) - [ (Pair -8 2) - (Some (Pair -4 0)) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ (Pair -8 2) + (Some (Pair -4 0)) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 46 (remaining gas: 1039969.243 units remaining) - [ -8 - 2 - (Some (Pair -4 0)) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ -8 + 2 + (Some (Pair -4 0)) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 47 (remaining gas: 1039969.103 units remaining) - [ (Some (Pair -4 0)) - (Some (Pair -4 0)) - (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ (Some (Pair -4 0)) + (Some (Pair -4 0)) + (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 49 (remaining gas: 1039969.055 units remaining) - [ (Some (Pair 4 0)) - (Some (Pair 4 0)) ] + [ (Some (Pair 4 0)) + (Some (Pair 4 0)) ] - location: 52 (remaining gas: 1039969.040 units remaining) - [ (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 49 (remaining gas: 1039969.015 units remaining) - [ (Some (Pair -4 0)) - (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Some (Pair -4 0)) + (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 49 (remaining gas: 1039969.005 units remaining) - [ (Some (Pair -4 0)) - (Some (Pair -4 0)) - (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Some (Pair -4 0)) + (Some (Pair -4 0)) + (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 49 (remaining gas: 1039969.005 units remaining) - [ (Some (Pair -4 0)) - (Some (Pair -4 0)) - (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Some (Pair -4 0)) + (Some (Pair -4 0)) + (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 53 (remaining gas: 1039968.990 units remaining) - [ (Some (Pair -4 0)) - (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Some (Pair -4 0)) + (Pair (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 55 (remaining gas: 1039968.975 units remaining) - [ (Pair (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Pair (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 53 (remaining gas: 1039968.945 units remaining) - [ (Some (Pair -4 0)) - (Pair (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Some (Pair -4 0)) + (Pair (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 56 (remaining gas: 1039968.930 units remaining) - [ (Pair (Some (Pair -4 0)) (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Pair (Some (Pair -4 0)) (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 57 (remaining gas: 1039968.915 units remaining) - [ {} - (Pair (Some (Pair -4 0)) (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ {} + (Pair (Some (Pair -4 0)) (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] - location: 59 (remaining gas: 1039968.900 units remaining) - [ (Pair {} (Some (Pair -4 0)) (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] + [ (Pair {} (Some (Pair -4 0)) (Some (Pair -4 0)) (Some (Pair 4 0)) (Some (Pair 4 0))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 -3)-(Pair (.3caea50555.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 -3)-(Pair (.3caea50555.out index 295db124ac..b2d3aa4b77 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 -3)-(Pair (.3caea50555.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 -3)-(Pair (.3caea50555.out @@ -8,135 +8,135 @@ big_map diff trace - location: 25 (remaining gas: 1039969.963 units remaining) - [ (Pair (Pair 10 -3) None None None None) ] + [ (Pair (Pair 10 -3) None None None None) ] - location: 25 (remaining gas: 1039969.953 units remaining) - [ (Pair 10 -3) ] + [ (Pair 10 -3) ] - location: 26 (remaining gas: 1039969.943 units remaining) - [ (Pair 10 -3) - (Pair 10 -3) ] + [ (Pair 10 -3) + (Pair 10 -3) ] - location: 27 (remaining gas: 1039969.933 units remaining) - [ 10 - -3 - (Pair 10 -3) ] + [ 10 + -3 + (Pair 10 -3) ] - location: 28 (remaining gas: 1039969.908 units remaining) - [ 10 - -3 - (Pair 10 -3) ] + [ 10 + -3 + (Pair 10 -3) ] - location: 29 (remaining gas: 1039969.893 units remaining) - [ -3 - (Pair 10 -3) ] + [ -3 + (Pair 10 -3) ] - location: 31 (remaining gas: 1039969.868 units remaining) - [ 3 - (Pair 10 -3) ] + [ 3 + (Pair 10 -3) ] - location: 29 (remaining gas: 1039969.838 units remaining) - [ 10 - 3 - (Pair 10 -3) ] + [ 10 + 3 + (Pair 10 -3) ] - location: 32 (remaining gas: 1039969.698 units remaining) - [ (Some (Pair 3 1)) - (Pair 10 -3) ] + [ (Some (Pair 3 1)) + (Pair 10 -3) ] - location: 33 (remaining gas: 1039969.688 units remaining) - [ (Pair 10 -3) - (Some (Pair 3 1)) ] + [ (Pair 10 -3) + (Some (Pair 3 1)) ] - location: 34 (remaining gas: 1039969.678 units remaining) - [ (Pair 10 -3) - (Pair 10 -3) - (Some (Pair 3 1)) ] + [ (Pair 10 -3) + (Pair 10 -3) + (Some (Pair 3 1)) ] - location: 35 (remaining gas: 1039969.668 units remaining) - [ 10 - -3 - (Pair 10 -3) - (Some (Pair 3 1)) ] + [ 10 + -3 + (Pair 10 -3) + (Some (Pair 3 1)) ] - location: 36 (remaining gas: 1039969.643 units remaining) - [ 10 - -3 - (Pair 10 -3) - (Some (Pair 3 1)) ] + [ 10 + -3 + (Pair 10 -3) + (Some (Pair 3 1)) ] - location: 37 (remaining gas: 1039969.503 units remaining) - [ (Some (Pair -3 1)) - (Pair 10 -3) - (Some (Pair 3 1)) ] + [ (Some (Pair -3 1)) + (Pair 10 -3) + (Some (Pair 3 1)) ] - location: 38 (remaining gas: 1039969.493 units remaining) - [ (Pair 10 -3) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ (Pair 10 -3) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 39 (remaining gas: 1039969.483 units remaining) - [ (Pair 10 -3) - (Pair 10 -3) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ (Pair 10 -3) + (Pair 10 -3) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 40 (remaining gas: 1039969.473 units remaining) - [ 10 - -3 - (Pair 10 -3) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ 10 + -3 + (Pair 10 -3) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 41 (remaining gas: 1039969.458 units remaining) - [ -3 - (Pair 10 -3) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ -3 + (Pair 10 -3) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 43 (remaining gas: 1039969.433 units remaining) - [ 3 - (Pair 10 -3) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ 3 + (Pair 10 -3) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 41 (remaining gas: 1039969.403 units remaining) - [ 10 - 3 - (Pair 10 -3) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ 10 + 3 + (Pair 10 -3) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 44 (remaining gas: 1039969.263 units remaining) - [ (Some (Pair 3 1)) - (Pair 10 -3) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ (Some (Pair 3 1)) + (Pair 10 -3) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 45 (remaining gas: 1039969.253 units remaining) - [ (Pair 10 -3) - (Some (Pair 3 1)) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ (Pair 10 -3) + (Some (Pair 3 1)) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 46 (remaining gas: 1039969.243 units remaining) - [ 10 - -3 - (Some (Pair 3 1)) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ 10 + -3 + (Some (Pair 3 1)) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 47 (remaining gas: 1039969.103 units remaining) - [ (Some (Pair -3 1)) - (Some (Pair 3 1)) - (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ (Some (Pair -3 1)) + (Some (Pair 3 1)) + (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 49 (remaining gas: 1039969.055 units remaining) - [ (Some (Pair -3 1)) - (Some (Pair 3 1)) ] + [ (Some (Pair -3 1)) + (Some (Pair 3 1)) ] - location: 52 (remaining gas: 1039969.040 units remaining) - [ (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 49 (remaining gas: 1039969.015 units remaining) - [ (Some (Pair 3 1)) - (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Some (Pair 3 1)) + (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 49 (remaining gas: 1039969.005 units remaining) - [ (Some (Pair -3 1)) - (Some (Pair 3 1)) - (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Some (Pair -3 1)) + (Some (Pair 3 1)) + (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 49 (remaining gas: 1039969.005 units remaining) - [ (Some (Pair -3 1)) - (Some (Pair 3 1)) - (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Some (Pair -3 1)) + (Some (Pair 3 1)) + (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 53 (remaining gas: 1039968.990 units remaining) - [ (Some (Pair 3 1)) - (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Some (Pair 3 1)) + (Pair (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 55 (remaining gas: 1039968.975 units remaining) - [ (Pair (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Pair (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 53 (remaining gas: 1039968.945 units remaining) - [ (Some (Pair -3 1)) - (Pair (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Some (Pair -3 1)) + (Pair (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 56 (remaining gas: 1039968.930 units remaining) - [ (Pair (Some (Pair -3 1)) (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Pair (Some (Pair -3 1)) (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 57 (remaining gas: 1039968.915 units remaining) - [ {} - (Pair (Some (Pair -3 1)) (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ {} + (Pair (Some (Pair -3 1)) (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] - location: 59 (remaining gas: 1039968.900 units remaining) - [ (Pair {} (Some (Pair -3 1)) (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] + [ (Pair {} (Some (Pair -3 1)) (Some (Pair 3 1)) (Some (Pair -3 1)) (Some (Pair 3 1))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 0)-(Pair No.f9448c04fb.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 0)-(Pair No.f9448c04fb.out index 0c9837dca3..d60041e6b5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 0)-(Pair No.f9448c04fb.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv.tz-(Pair None None None None)-(Pair 10 0)-(Pair No.f9448c04fb.out @@ -8,135 +8,135 @@ big_map diff trace - location: 25 (remaining gas: 1039969.963 units remaining) - [ (Pair (Pair 10 0) None None None None) ] + [ (Pair (Pair 10 0) None None None None) ] - location: 25 (remaining gas: 1039969.953 units remaining) - [ (Pair 10 0) ] + [ (Pair 10 0) ] - location: 26 (remaining gas: 1039969.943 units remaining) - [ (Pair 10 0) - (Pair 10 0) ] + [ (Pair 10 0) + (Pair 10 0) ] - location: 27 (remaining gas: 1039969.933 units remaining) - [ 10 - 0 - (Pair 10 0) ] + [ 10 + 0 + (Pair 10 0) ] - location: 28 (remaining gas: 1039969.908 units remaining) - [ 10 - 0 - (Pair 10 0) ] + [ 10 + 0 + (Pair 10 0) ] - location: 29 (remaining gas: 1039969.893 units remaining) - [ 0 - (Pair 10 0) ] + [ 0 + (Pair 10 0) ] - location: 31 (remaining gas: 1039969.868 units remaining) - [ 0 - (Pair 10 0) ] + [ 0 + (Pair 10 0) ] - location: 29 (remaining gas: 1039969.838 units remaining) - [ 10 - 0 - (Pair 10 0) ] + [ 10 + 0 + (Pair 10 0) ] - location: 32 (remaining gas: 1039969.698 units remaining) - [ None - (Pair 10 0) ] + [ None + (Pair 10 0) ] - location: 33 (remaining gas: 1039969.688 units remaining) - [ (Pair 10 0) - None ] + [ (Pair 10 0) + None ] - location: 34 (remaining gas: 1039969.678 units remaining) - [ (Pair 10 0) - (Pair 10 0) - None ] + [ (Pair 10 0) + (Pair 10 0) + None ] - location: 35 (remaining gas: 1039969.668 units remaining) - [ 10 - 0 - (Pair 10 0) - None ] + [ 10 + 0 + (Pair 10 0) + None ] - location: 36 (remaining gas: 1039969.643 units remaining) - [ 10 - 0 - (Pair 10 0) - None ] + [ 10 + 0 + (Pair 10 0) + None ] - location: 37 (remaining gas: 1039969.503 units remaining) - [ None - (Pair 10 0) - None ] + [ None + (Pair 10 0) + None ] - location: 38 (remaining gas: 1039969.493 units remaining) - [ (Pair 10 0) - None - None ] + [ (Pair 10 0) + None + None ] - location: 39 (remaining gas: 1039969.483 units remaining) - [ (Pair 10 0) - (Pair 10 0) - None - None ] + [ (Pair 10 0) + (Pair 10 0) + None + None ] - location: 40 (remaining gas: 1039969.473 units remaining) - [ 10 - 0 - (Pair 10 0) - None - None ] + [ 10 + 0 + (Pair 10 0) + None + None ] - location: 41 (remaining gas: 1039969.458 units remaining) - [ 0 - (Pair 10 0) - None - None ] + [ 0 + (Pair 10 0) + None + None ] - location: 43 (remaining gas: 1039969.433 units remaining) - [ 0 - (Pair 10 0) - None - None ] + [ 0 + (Pair 10 0) + None + None ] - location: 41 (remaining gas: 1039969.403 units remaining) - [ 10 - 0 - (Pair 10 0) - None - None ] + [ 10 + 0 + (Pair 10 0) + None + None ] - location: 44 (remaining gas: 1039969.263 units remaining) - [ None - (Pair 10 0) - None - None ] + [ None + (Pair 10 0) + None + None ] - location: 45 (remaining gas: 1039969.253 units remaining) - [ (Pair 10 0) - None - None - None ] + [ (Pair 10 0) + None + None + None ] - location: 46 (remaining gas: 1039969.243 units remaining) - [ 10 - 0 - None - None - None ] + [ 10 + 0 + None + None + None ] - location: 47 (remaining gas: 1039969.103 units remaining) - [ None - None - None - None ] + [ None + None + None + None ] - location: 49 (remaining gas: 1039969.055 units remaining) - [ None - None ] + [ None + None ] - location: 52 (remaining gas: 1039969.040 units remaining) - [ (Pair None None) ] + [ (Pair None None) ] - location: 49 (remaining gas: 1039969.015 units remaining) - [ None - (Pair None None) ] + [ None + (Pair None None) ] - location: 49 (remaining gas: 1039969.005 units remaining) - [ None - None - (Pair None None) ] + [ None + None + (Pair None None) ] - location: 49 (remaining gas: 1039969.005 units remaining) - [ None - None - (Pair None None) ] + [ None + None + (Pair None None) ] - location: 53 (remaining gas: 1039968.990 units remaining) - [ None - (Pair None None) ] + [ None + (Pair None None) ] - location: 55 (remaining gas: 1039968.975 units remaining) - [ (Pair None None None) ] + [ (Pair None None None) ] - location: 53 (remaining gas: 1039968.945 units remaining) - [ None - (Pair None None None) ] + [ None + (Pair None None None) ] - location: 56 (remaining gas: 1039968.930 units remaining) - [ (Pair None None None None) ] + [ (Pair None None None None) ] - location: 57 (remaining gas: 1039968.915 units remaining) - [ {} - (Pair None None None None) ] + [ {} + (Pair None None None None) ] - location: 59 (remaining gas: 1039968.900 units remaining) - [ (Pair {} None None None None) ] + [ (Pair {} None None None None) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 0))-(Left None)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 0))-(Left None)].out index d03218b925..dfd3b44055 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 0))-(Left None)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 0))-(Left None)].out @@ -8,30 +8,30 @@ big_map diff trace - location: 19 (remaining gas: 1039981.901 units remaining) - [ (Pair (Pair 10 (Left 0)) (Left None)) ] + [ (Pair (Pair 10 (Left 0)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Left 0)) ] + [ (Pair 10 (Left 0)) ] - location: 20 (remaining gas: 1039981.881 units remaining) - [ 10 - (Left 0) ] + [ 10 + (Left 0) ] - location: 21 (remaining gas: 1039981.871 units remaining) - [ (Left 0) - 10 ] + [ (Left 0) + 10 ] - location: 22 (remaining gas: 1039981.861 units remaining) - [ 0 - 10 ] + [ 0 + 10 ] - location: 24 (remaining gas: 1039981.851 units remaining) - [ 10 - 0 ] + [ 10 + 0 ] - location: 25 (remaining gas: 1039981.711 units remaining) - [ None ] + [ None ] - location: 26 (remaining gas: 1039981.696 units remaining) - [ (Left None) ] + [ (Left None) ] - location: 22 (remaining gas: 1039981.681 units remaining) - [ (Left None) ] + [ (Left None) ] - location: 39 (remaining gas: 1039981.666 units remaining) - [ {} - (Left None) ] + [ {} + (Left None) ] - location: 41 (remaining gas: 1039981.651 units remaining) - [ (Pair {} (Left None)) ] + [ (Pair {} (Left None)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 10))-(Left (So.f782cc1dec.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 10))-(Left (So.f782cc1dec.out index 0b8dd05a2c..547a688c5b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 10))-(Left (So.f782cc1dec.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 10))-(Left (So.f782cc1dec.out @@ -8,30 +8,30 @@ big_map diff trace - location: 19 (remaining gas: 1039981.901 units remaining) - [ (Pair (Pair 10 (Left 10)) (Left None)) ] + [ (Pair (Pair 10 (Left 10)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Left 10)) ] + [ (Pair 10 (Left 10)) ] - location: 20 (remaining gas: 1039981.881 units remaining) - [ 10 - (Left 10) ] + [ 10 + (Left 10) ] - location: 21 (remaining gas: 1039981.871 units remaining) - [ (Left 10) - 10 ] + [ (Left 10) + 10 ] - location: 22 (remaining gas: 1039981.861 units remaining) - [ 10 - 10 ] + [ 10 + 10 ] - location: 24 (remaining gas: 1039981.851 units remaining) - [ 10 - 10 ] + [ 10 + 10 ] - location: 25 (remaining gas: 1039981.711 units remaining) - [ (Some (Pair 1 0)) ] + [ (Some (Pair 1 0)) ] - location: 26 (remaining gas: 1039981.696 units remaining) - [ (Left (Some (Pair 1 0))) ] + [ (Left (Some (Pair 1 0))) ] - location: 22 (remaining gas: 1039981.681 units remaining) - [ (Left (Some (Pair 1 0))) ] + [ (Left (Some (Pair 1 0))) ] - location: 39 (remaining gas: 1039981.666 units remaining) - [ {} - (Left (Some (Pair 1 0))) ] + [ {} + (Left (Some (Pair 1 0))) ] - location: 41 (remaining gas: 1039981.651 units remaining) - [ (Pair {} (Left (Some (Pair 1 0)))) ] + [ (Pair {} (Left (Some (Pair 1 0)))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 3))-(Left (Som.016b4db96c.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 3))-(Left (Som.016b4db96c.out index f656456cff..7981f7eaf5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 3))-(Left (Som.016b4db96c.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Left 3))-(Left (Som.016b4db96c.out @@ -8,30 +8,30 @@ big_map diff trace - location: 19 (remaining gas: 1039981.901 units remaining) - [ (Pair (Pair 10 (Left 3)) (Left None)) ] + [ (Pair (Pair 10 (Left 3)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Left 3)) ] + [ (Pair 10 (Left 3)) ] - location: 20 (remaining gas: 1039981.881 units remaining) - [ 10 - (Left 3) ] + [ 10 + (Left 3) ] - location: 21 (remaining gas: 1039981.871 units remaining) - [ (Left 3) - 10 ] + [ (Left 3) + 10 ] - location: 22 (remaining gas: 1039981.861 units remaining) - [ 3 - 10 ] + [ 3 + 10 ] - location: 24 (remaining gas: 1039981.851 units remaining) - [ 10 - 3 ] + [ 10 + 3 ] - location: 25 (remaining gas: 1039981.711 units remaining) - [ (Some (Pair 3 1)) ] + [ (Some (Pair 3 1)) ] - location: 26 (remaining gas: 1039981.696 units remaining) - [ (Left (Some (Pair 3 1))) ] + [ (Left (Some (Pair 3 1))) ] - location: 22 (remaining gas: 1039981.681 units remaining) - [ (Left (Some (Pair 3 1))) ] + [ (Left (Some (Pair 3 1))) ] - location: 39 (remaining gas: 1039981.666 units remaining) - [ {} - (Left (Some (Pair 3 1))) ] + [ {} + (Left (Some (Pair 3 1))) ] - location: 41 (remaining gas: 1039981.651 units remaining) - [ (Pair {} (Left (Some (Pair 3 1)))) ] + [ (Pair {} (Left (Some (Pair 3 1)))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 0))-(Right None)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 0))-(Right None)].out index 0891eabab0..349bd9d7f2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 0))-(Right None)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 0))-(Right None)].out @@ -8,30 +8,30 @@ big_map diff trace - location: 19 (remaining gas: 1039981.901 units remaining) - [ (Pair (Pair 10 (Right 0)) (Left None)) ] + [ (Pair (Pair 10 (Right 0)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Right 0)) ] + [ (Pair 10 (Right 0)) ] - location: 20 (remaining gas: 1039981.881 units remaining) - [ 10 - (Right 0) ] + [ 10 + (Right 0) ] - location: 21 (remaining gas: 1039981.871 units remaining) - [ (Right 0) - 10 ] + [ (Right 0) + 10 ] - location: 22 (remaining gas: 1039981.861 units remaining) - [ 0 - 10 ] + [ 0 + 10 ] - location: 32 (remaining gas: 1039981.851 units remaining) - [ 10 - 0 ] + [ 10 + 0 ] - location: 33 (remaining gas: 1039981.711 units remaining) - [ None ] + [ None ] - location: 34 (remaining gas: 1039981.696 units remaining) - [ (Right None) ] + [ (Right None) ] - location: 22 (remaining gas: 1039981.681 units remaining) - [ (Right None) ] + [ (Right None) ] - location: 39 (remaining gas: 1039981.666 units remaining) - [ {} - (Right None) ] + [ {} + (Right None) ] - location: 41 (remaining gas: 1039981.651 units remaining) - [ (Pair {} (Right None)) ] + [ (Pair {} (Right None)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 10))-(Right (.e705a30e07.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 10))-(Right (.e705a30e07.out index 0ea0e02fe8..d3ad8f6991 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 10))-(Right (.e705a30e07.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 10))-(Right (.e705a30e07.out @@ -8,30 +8,30 @@ big_map diff trace - location: 19 (remaining gas: 1039981.901 units remaining) - [ (Pair (Pair 10 (Right 10)) (Left None)) ] + [ (Pair (Pair 10 (Right 10)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Right 10)) ] + [ (Pair 10 (Right 10)) ] - location: 20 (remaining gas: 1039981.881 units remaining) - [ 10 - (Right 10) ] + [ 10 + (Right 10) ] - location: 21 (remaining gas: 1039981.871 units remaining) - [ (Right 10) - 10 ] + [ (Right 10) + 10 ] - location: 22 (remaining gas: 1039981.861 units remaining) - [ 10 - 10 ] + [ 10 + 10 ] - location: 32 (remaining gas: 1039981.851 units remaining) - [ 10 - 10 ] + [ 10 + 10 ] - location: 33 (remaining gas: 1039981.711 units remaining) - [ (Some (Pair 1 0)) ] + [ (Some (Pair 1 0)) ] - location: 34 (remaining gas: 1039981.696 units remaining) - [ (Right (Some (Pair 1 0))) ] + [ (Right (Some (Pair 1 0))) ] - location: 22 (remaining gas: 1039981.681 units remaining) - [ (Right (Some (Pair 1 0))) ] + [ (Right (Some (Pair 1 0))) ] - location: 39 (remaining gas: 1039981.666 units remaining) - [ {} - (Right (Some (Pair 1 0))) ] + [ {} + (Right (Some (Pair 1 0))) ] - location: 41 (remaining gas: 1039981.651 units remaining) - [ (Pair {} (Right (Some (Pair 1 0)))) ] + [ (Pair {} (Right (Some (Pair 1 0)))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 3))-(Right (S.44485eda6a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 3))-(Right (S.44485eda6a.out index 6bc3b0df79..2fa368526f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 3))-(Right (S.44485eda6a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 10 (Right 3))-(Right (S.44485eda6a.out @@ -8,30 +8,30 @@ big_map diff trace - location: 19 (remaining gas: 1039981.901 units remaining) - [ (Pair (Pair 10 (Right 3)) (Left None)) ] + [ (Pair (Pair 10 (Right 3)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 10 (Right 3)) ] + [ (Pair 10 (Right 3)) ] - location: 20 (remaining gas: 1039981.881 units remaining) - [ 10 - (Right 3) ] + [ 10 + (Right 3) ] - location: 21 (remaining gas: 1039981.871 units remaining) - [ (Right 3) - 10 ] + [ (Right 3) + 10 ] - location: 22 (remaining gas: 1039981.861 units remaining) - [ 3 - 10 ] + [ 3 + 10 ] - location: 32 (remaining gas: 1039981.851 units remaining) - [ 10 - 3 ] + [ 10 + 3 ] - location: 33 (remaining gas: 1039981.711 units remaining) - [ (Some (Pair 3 1)) ] + [ (Some (Pair 3 1)) ] - location: 34 (remaining gas: 1039981.696 units remaining) - [ (Right (Some (Pair 3 1))) ] + [ (Right (Some (Pair 3 1))) ] - location: 22 (remaining gas: 1039981.681 units remaining) - [ (Right (Some (Pair 3 1))) ] + [ (Right (Some (Pair 3 1))) ] - location: 39 (remaining gas: 1039981.666 units remaining) - [ {} - (Right (Some (Pair 3 1))) ] + [ {} + (Right (Some (Pair 3 1))) ] - location: 41 (remaining gas: 1039981.651 units remaining) - [ (Pair {} (Right (Some (Pair 3 1)))) ] + [ (Pair {} (Right (Some (Pair 3 1)))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 5 (Right 10))-(Right (S.8ab987af15.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 5 (Right 10))-(Right (S.8ab987af15.out index 63713ec9ab..acdb678ccf 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 5 (Right 10))-(Right (S.8ab987af15.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ediv_mutez.tz-(Left None)-(Pair 5 (Right 10))-(Right (S.8ab987af15.out @@ -8,30 +8,30 @@ big_map diff trace - location: 19 (remaining gas: 1039981.901 units remaining) - [ (Pair (Pair 5 (Right 10)) (Left None)) ] + [ (Pair (Pair 5 (Right 10)) (Left None)) ] - location: 19 (remaining gas: 1039981.891 units remaining) - [ (Pair 5 (Right 10)) ] + [ (Pair 5 (Right 10)) ] - location: 20 (remaining gas: 1039981.881 units remaining) - [ 5 - (Right 10) ] + [ 5 + (Right 10) ] - location: 21 (remaining gas: 1039981.871 units remaining) - [ (Right 10) - 5 ] + [ (Right 10) + 5 ] - location: 22 (remaining gas: 1039981.861 units remaining) - [ 10 - 5 ] + [ 10 + 5 ] - location: 32 (remaining gas: 1039981.851 units remaining) - [ 5 - 10 ] + [ 5 + 10 ] - location: 33 (remaining gas: 1039981.711 units remaining) - [ (Some (Pair 0 5)) ] + [ (Some (Pair 0 5)) ] - location: 34 (remaining gas: 1039981.696 units remaining) - [ (Right (Some (Pair 0 5))) ] + [ (Right (Some (Pair 0 5))) ] - location: 22 (remaining gas: 1039981.681 units remaining) - [ (Right (Some (Pair 0 5))) ] + [ (Right (Some (Pair 0 5))) ] - location: 39 (remaining gas: 1039981.666 units remaining) - [ {} - (Right (Some (Pair 0 5))) ] + [ {} + (Right (Some (Pair 0 5))) ] - location: 41 (remaining gas: 1039981.651 units remaining) - [ (Pair {} (Right (Some (Pair 0 5)))) ] + [ (Pair {} (Right (Some (Pair 0 5)))) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[empty_map.tz-{}-Unit-{ Elt \"hello\" \"world\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[empty_map.tz-{}-Unit-{ Elt \"hello\" \"world\" }].out" index 7580d35e10..1ec854ed7f 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[empty_map.tz-{}-Unit-{ Elt \"hello\" \"world\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[empty_map.tz-{}-Unit-{ Elt \"hello\" \"world\" }].out" @@ -8,26 +8,26 @@ big_map diff trace - location: 9 (remaining gas: 1039989.971 units remaining) - [ (Pair Unit {}) ] + [ (Pair Unit {}) ] - location: 9 (remaining gas: 1039989.961 units remaining) [ ] - location: 10 (remaining gas: 1039989.741 units remaining) - [ {} ] + [ {} ] - location: 13 (remaining gas: 1039989.731 units remaining) - [ "world" - {} ] + [ "world" + {} ] - location: 16 (remaining gas: 1039989.716 units remaining) - [ (Some "world") - {} ] + [ (Some "world") + {} ] - location: 17 (remaining gas: 1039989.706 units remaining) - [ "hello" - (Some "world") - {} ] + [ "hello" + (Some "world") + {} ] - location: 20 (remaining gas: 1039989.556 units remaining) - [ { Elt "hello" "world" } ] + [ { Elt "hello" "world" } ] - location: 21 (remaining gas: 1039989.541 units remaining) - [ {} - { Elt "hello" "world" } ] + [ {} + { Elt "hello" "world" } ] - location: 23 (remaining gas: 1039989.526 units remaining) - [ (Pair {} { Elt "hello" "world" }) ] + [ (Pair {} { Elt "hello" "world" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" index 3c63fd948e..2e05fec539 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"\"-\"_abc\"].out" @@ -8,41 +8,41 @@ big_map diff trace - location: 7 (remaining gas: 1039987.134 units remaining) - [ (Pair "" "?") ] + [ (Pair "" "?") ] - location: 7 (remaining gas: 1039987.124 units remaining) - [ "" ] + [ "" ] - location: 8 (remaining gas: 1039987.114 units remaining) - [ { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } - "" ] + [ { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } + "" ] - location: 22 (remaining gas: 1039987.104 units remaining) - [ "" - { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } ] + [ "" + { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } ] - location: 12 (remaining gas: 1039987.094 units remaining) - [ "_abc" - "" ] + [ "_abc" + "" ] - location: 15 (remaining gas: 1039987.079 units remaining) - [ {} - "_abc" - "" ] + [ {} + "_abc" + "" ] - location: 17 (remaining gas: 1039987.069 units remaining) - [ "_abc" - {} - "" ] + [ "_abc" + {} + "" ] - location: 18 (remaining gas: 1039987.054 units remaining) - [ { "_abc" } - "" ] + [ { "_abc" } + "" ] - location: 19 (remaining gas: 1039987.044 units remaining) - [ "" - { "_abc" } ] + [ "" + { "_abc" } ] - location: 20 (remaining gas: 1039987.029 units remaining) - [ { "" ; "_abc" } ] + [ { "" ; "_abc" } ] - location: 21 (remaining gas: 1039986.909 units remaining) - [ "_abc" ] + [ "_abc" ] - location: 23 (remaining gas: 1039986.879 units remaining) - [ "_abc" ] + [ "_abc" ] - location: 24 (remaining gas: 1039986.864 units remaining) - [ {} - "_abc" ] + [ {} + "_abc" ] - location: 26 (remaining gas: 1039986.849 units remaining) - [ (Pair {} "_abc") ] + [ (Pair {} "_abc") ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"test\"-\"test_abc\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"test\"-\"test_abc\"].out" index 809363aa4c..efbecfee07 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"test\"-\"test_abc\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[exec_concat.tz-\"?\"-\"test\"-\"test_abc\"].out" @@ -8,41 +8,41 @@ big_map diff trace - location: 7 (remaining gas: 1039987.094 units remaining) - [ (Pair "test" "?") ] + [ (Pair "test" "?") ] - location: 7 (remaining gas: 1039987.084 units remaining) - [ "test" ] + [ "test" ] - location: 8 (remaining gas: 1039987.074 units remaining) - [ { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } - "test" ] + [ { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } + "test" ] - location: 22 (remaining gas: 1039987.064 units remaining) - [ "test" - { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } ] + [ "test" + { PUSH string "_abc" ; NIL string ; SWAP ; CONS ; SWAP ; CONS ; CONCAT } ] - location: 12 (remaining gas: 1039987.054 units remaining) - [ "_abc" - "test" ] + [ "_abc" + "test" ] - location: 15 (remaining gas: 1039987.039 units remaining) - [ {} - "_abc" - "test" ] + [ {} + "_abc" + "test" ] - location: 17 (remaining gas: 1039987.029 units remaining) - [ "_abc" - {} - "test" ] + [ "_abc" + {} + "test" ] - location: 18 (remaining gas: 1039987.014 units remaining) - [ { "_abc" } - "test" ] + [ { "_abc" } + "test" ] - location: 19 (remaining gas: 1039987.004 units remaining) - [ "test" - { "_abc" } ] + [ "test" + { "_abc" } ] - location: 20 (remaining gas: 1039986.989 units remaining) - [ { "test" ; "_abc" } ] + [ { "test" ; "_abc" } ] - location: 21 (remaining gas: 1039986.869 units remaining) - [ "test_abc" ] + [ "test_abc" ] - location: 23 (remaining gas: 1039986.839 units remaining) - [ "test_abc" ] + [ "test_abc" ] - location: 24 (remaining gas: 1039986.824 units remaining) - [ {} - "test_abc" ] + [ {} + "test_abc" ] - location: 26 (remaining gas: 1039986.809 units remaining) - [ (Pair {} "test_abc") ] + [ (Pair {} "test_abc") ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out index 83f84401ca..98493699ef 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 1 ; 2 ; 3 ; 4 }-1].out @@ -8,23 +8,23 @@ big_map diff trace - location: 8 (remaining gas: 1039991.033 units remaining) - [ (Pair { 1 ; 2 ; 3 ; 4 } 111) ] + [ (Pair { 1 ; 2 ; 3 ; 4 } 111) ] - location: 8 (remaining gas: 1039991.023 units remaining) - [ { 1 ; 2 ; 3 ; 4 } ] + [ { 1 ; 2 ; 3 ; 4 } ] - location: 9 (remaining gas: 1039991.013 units remaining) - [ 1 - { 2 ; 3 ; 4 } ] + [ 1 + { 2 ; 3 ; 4 } ] - location: 11 (remaining gas: 1039990.998 units remaining) - [ { 2 ; 3 ; 4 } ] + [ { 2 ; 3 ; 4 } ] - location: 13 (remaining gas: 1039990.988 units remaining) [ ] - location: 11 (remaining gas: 1039990.958 units remaining) - [ 1 ] + [ 1 ] - location: 9 (remaining gas: 1039990.943 units remaining) - [ 1 ] + [ 1 ] - location: 18 (remaining gas: 1039990.928 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 20 (remaining gas: 1039990.913 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 4 }-4].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 4 }-4].out index aee64d547d..2379dd4a38 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 4 }-4].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[first.tz-111-{ 4 }-4].out @@ -8,23 +8,23 @@ big_map diff trace - location: 8 (remaining gas: 1039991.333 units remaining) - [ (Pair { 4 } 111) ] + [ (Pair { 4 } 111) ] - location: 8 (remaining gas: 1039991.323 units remaining) - [ { 4 } ] + [ { 4 } ] - location: 9 (remaining gas: 1039991.313 units remaining) - [ 4 - {} ] + [ 4 + {} ] - location: 11 (remaining gas: 1039991.298 units remaining) - [ {} ] + [ {} ] - location: 13 (remaining gas: 1039991.288 units remaining) [ ] - location: 11 (remaining gas: 1039991.258 units remaining) - [ 4 ] + [ 4 ] - location: 9 (remaining gas: 1039991.243 units remaining) - [ 4 ] + [ 4 ] - location: 18 (remaining gas: 1039991.228 units remaining) - [ {} - 4 ] + [ {} + 4 ] - location: 20 (remaining gas: 1039991.213 units remaining) - [ (Pair {} 4) ] + [ (Pair {} 4) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 4) {})-\"hello\"-(Pair .161d86cef6.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 4) {})-\"hello\"-(Pair .161d86cef6.out" index 80c5813fb3..2f62f59c3b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 4) {})-\"hello\"-(Pair .161d86cef6.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 4) {})-\"hello\"-(Pair .161d86cef6.out" @@ -8,27 +8,27 @@ big_map diff trace - location: 13 (remaining gas: 1039989.746 units remaining) - [ (Pair "hello" (Some 4) {}) ] + [ (Pair "hello" (Some 4) {}) ] - location: 13 (remaining gas: 1039989.736 units remaining) - [ "hello" - (Pair (Some 4) {}) ] + [ "hello" + (Pair (Some 4) {}) ] - location: 14 (remaining gas: 1039989.721 units remaining) - [ (Pair (Some 4) {}) ] + [ (Pair (Some 4) {}) ] - location: 16 (remaining gas: 1039989.711 units remaining) - [ (Some 4) - {} ] + [ (Some 4) + {} ] - location: 14 (remaining gas: 1039989.681 units remaining) - [ "hello" - (Some 4) - {} ] + [ "hello" + (Some 4) + {} ] - location: 17 (remaining gas: 1039989.496 units remaining) - [ None - { Elt "hello" 4 } ] + [ None + { Elt "hello" 4 } ] - location: 18 (remaining gas: 1039989.481 units remaining) - [ (Pair None { Elt "hello" 4 }) ] + [ (Pair None { Elt "hello" 4 }) ] - location: 19 (remaining gas: 1039989.466 units remaining) - [ {} - (Pair None { Elt "hello" 4 }) ] + [ {} + (Pair None { Elt "hello" 4 }) ] - location: 21 (remaining gas: 1039989.451 units remaining) - [ (Pair {} None { Elt "hello" 4 }) ] + [ (Pair {} None { Elt "hello" 4 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).684ab7e326.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).684ab7e326.out" index 38555de5e3..c2dc9980db 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).684ab7e326.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).684ab7e326.out" @@ -8,27 +8,27 @@ big_map diff trace - location: 13 (remaining gas: 1039989.362 units remaining) - [ (Pair "hi" (Some 5) { Elt "hello" 4 }) ] + [ (Pair "hi" (Some 5) { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039989.352 units remaining) - [ "hi" - (Pair (Some 5) { Elt "hello" 4 }) ] + [ "hi" + (Pair (Some 5) { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039989.337 units remaining) - [ (Pair (Some 5) { Elt "hello" 4 }) ] + [ (Pair (Some 5) { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039989.327 units remaining) - [ (Some 5) - { Elt "hello" 4 } ] + [ (Some 5) + { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039989.297 units remaining) - [ "hi" - (Some 5) - { Elt "hello" 4 } ] + [ "hi" + (Some 5) + { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039989.007 units remaining) - [ None - { Elt "hello" 4 ; Elt "hi" 5 } ] + [ None + { Elt "hello" 4 ; Elt "hi" 5 } ] - location: 18 (remaining gas: 1039988.992 units remaining) - [ (Pair None { Elt "hello" 4 ; Elt "hi" 5 }) ] + [ (Pair None { Elt "hello" 4 ; Elt "hi" 5 }) ] - location: 19 (remaining gas: 1039988.977 units remaining) - [ {} - (Pair None { Elt "hello" 4 ; Elt "hi" 5 }) ] + [ {} + (Pair None { Elt "hello" 4 ; Elt "hi" 5 }) ] - location: 21 (remaining gas: 1039988.962 units remaining) - [ (Pair {} None { Elt "hello" 4 ; Elt "hi" 5 }) ] + [ (Pair {} None { Elt "hello" 4 ; Elt "hi" 5 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).d49817fb83.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).d49817fb83.out" index 0d59859b73..278285df4c 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).d49817fb83.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair (Some 5) { Elt \"hello\" 4 }).d49817fb83.out" @@ -8,27 +8,27 @@ big_map diff trace - location: 13 (remaining gas: 1039989.332 units remaining) - [ (Pair "hello" (Some 5) { Elt "hello" 4 }) ] + [ (Pair "hello" (Some 5) { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039989.322 units remaining) - [ "hello" - (Pair (Some 5) { Elt "hello" 4 }) ] + [ "hello" + (Pair (Some 5) { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039989.307 units remaining) - [ (Pair (Some 5) { Elt "hello" 4 }) ] + [ (Pair (Some 5) { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039989.297 units remaining) - [ (Some 5) - { Elt "hello" 4 } ] + [ (Some 5) + { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039989.267 units remaining) - [ "hello" - (Some 5) - { Elt "hello" 4 } ] + [ "hello" + (Some 5) + { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039988.977 units remaining) - [ (Some 4) - { Elt "hello" 5 } ] + [ (Some 4) + { Elt "hello" 5 } ] - location: 18 (remaining gas: 1039988.962 units remaining) - [ (Pair (Some 4) { Elt "hello" 5 }) ] + [ (Pair (Some 4) { Elt "hello" 5 }) ] - location: 19 (remaining gas: 1039988.947 units remaining) - [ {} - (Pair (Some 4) { Elt "hello" 5 }) ] + [ {} + (Pair (Some 4) { Elt "hello" 5 }) ] - location: 21 (remaining gas: 1039988.932 units remaining) - [ (Pair {} (Some 4) { Elt "hello" 5 }) ] + [ (Pair {} (Some 4) { Elt "hello" 5 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .6900b1da14.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .6900b1da14.out" index 0d516b3b87..821f58aa9d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .6900b1da14.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .6900b1da14.out" @@ -8,27 +8,27 @@ big_map diff trace - location: 13 (remaining gas: 1039989.033 units remaining) - [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] + [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 13 (remaining gas: 1039989.023 units remaining) - [ "1" - (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] + [ "1" + (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 14 (remaining gas: 1039989.008 units remaining) - [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] + [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 16 (remaining gas: 1039988.998 units remaining) - [ None - { Elt "1" 1 ; Elt "2" 2 } ] + [ None + { Elt "1" 1 ; Elt "2" 2 } ] - location: 14 (remaining gas: 1039988.968 units remaining) - [ "1" - None - { Elt "1" 1 ; Elt "2" 2 } ] + [ "1" + None + { Elt "1" 1 ; Elt "2" 2 } ] - location: 17 (remaining gas: 1039988.573 units remaining) - [ (Some 1) - { Elt "2" 2 } ] + [ (Some 1) + { Elt "2" 2 } ] - location: 18 (remaining gas: 1039988.558 units remaining) - [ (Pair (Some 1) { Elt "2" 2 }) ] + [ (Pair (Some 1) { Elt "2" 2 }) ] - location: 19 (remaining gas: 1039988.543 units remaining) - [ {} - (Pair (Some 1) { Elt "2" 2 }) ] + [ {} + (Pair (Some 1) { Elt "2" 2 }) ] - location: 21 (remaining gas: 1039988.528 units remaining) - [ (Pair {} (Some 1) { Elt "2" 2 }) ] + [ (Pair {} (Some 1) { Elt "2" 2 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .bca0ede8be.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .bca0ede8be.out" index 07bde688a1..487825f06e 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .bca0ede8be.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"1\" 1 ; .bca0ede8be.out" @@ -8,27 +8,27 @@ big_map diff trace - location: 13 (remaining gas: 1039989.033 units remaining) - [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] + [ (Pair "1" None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 13 (remaining gas: 1039989.023 units remaining) - [ "1" - (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] + [ "1" + (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 14 (remaining gas: 1039989.008 units remaining) - [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] + [ (Pair None { Elt "1" 1 ; Elt "2" 2 }) ] - location: 16 (remaining gas: 1039988.998 units remaining) - [ None - { Elt "1" 1 ; Elt "2" 2 } ] + [ None + { Elt "1" 1 ; Elt "2" 2 } ] - location: 14 (remaining gas: 1039988.968 units remaining) - [ "1" - None - { Elt "1" 1 ; Elt "2" 2 } ] + [ "1" + None + { Elt "1" 1 ; Elt "2" 2 } ] - location: 17 (remaining gas: 1039988.573 units remaining) - [ (Some 1) - { Elt "2" 2 } ] + [ (Some 1) + { Elt "2" 2 } ] - location: 18 (remaining gas: 1039988.558 units remaining) - [ (Pair (Some 1) { Elt "2" 2 }) ] + [ (Pair (Some 1) { Elt "2" 2 }) ] - location: 19 (remaining gas: 1039988.543 units remaining) - [ {} - (Pair (Some 1) { Elt "2" 2 }) ] + [ {} + (Pair (Some 1) { Elt "2" 2 }) ] - location: 21 (remaining gas: 1039988.528 units remaining) - [ (Pair {} (Some 1) { Elt "2" 2 }) ] + [ (Pair {} (Some 1) { Elt "2" 2 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" index 55750ee46d..1ecdc175d2 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None { Elt \"hello\" 4 })-\"he.c1b4e1d6dc.out" @@ -8,27 +8,27 @@ big_map diff trace - location: 13 (remaining gas: 1039989.432 units remaining) - [ (Pair "hello" None { Elt "hello" 4 }) ] + [ (Pair "hello" None { Elt "hello" 4 }) ] - location: 13 (remaining gas: 1039989.422 units remaining) - [ "hello" - (Pair None { Elt "hello" 4 }) ] + [ "hello" + (Pair None { Elt "hello" 4 }) ] - location: 14 (remaining gas: 1039989.407 units remaining) - [ (Pair None { Elt "hello" 4 }) ] + [ (Pair None { Elt "hello" 4 }) ] - location: 16 (remaining gas: 1039989.397 units remaining) - [ None - { Elt "hello" 4 } ] + [ None + { Elt "hello" 4 } ] - location: 14 (remaining gas: 1039989.367 units remaining) - [ "hello" - None - { Elt "hello" 4 } ] + [ "hello" + None + { Elt "hello" 4 } ] - location: 17 (remaining gas: 1039989.077 units remaining) - [ (Some 4) - {} ] + [ (Some 4) + {} ] - location: 18 (remaining gas: 1039989.062 units remaining) - [ (Pair (Some 4) {}) ] + [ (Pair (Some 4) {}) ] - location: 19 (remaining gas: 1039989.047 units remaining) - [ {} - (Pair (Some 4) {}) ] + [ {} + (Pair (Some 4) {}) ] - location: 21 (remaining gas: 1039989.032 units remaining) - [ (Pair {} (Some 4) {}) ] + [ (Pair {} (Some 4) {}) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None {})-\"hello\"-(Pair None {})].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None {})-\"hello\"-(Pair None {})].out" index 0fe838d7a2..d20d43daa6 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None {})-\"hello\"-(Pair None {})].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_and_update_map.tz-(Pair None {})-\"hello\"-(Pair None {})].out" @@ -8,27 +8,27 @@ big_map diff trace - location: 13 (remaining gas: 1039989.846 units remaining) - [ (Pair "hello" None {}) ] + [ (Pair "hello" None {}) ] - location: 13 (remaining gas: 1039989.836 units remaining) - [ "hello" - (Pair None {}) ] + [ "hello" + (Pair None {}) ] - location: 14 (remaining gas: 1039989.821 units remaining) - [ (Pair None {}) ] + [ (Pair None {}) ] - location: 16 (remaining gas: 1039989.811 units remaining) - [ None - {} ] + [ None + {} ] - location: 14 (remaining gas: 1039989.781 units remaining) - [ "hello" - None - {} ] + [ "hello" + None + {} ] - location: 17 (remaining gas: 1039989.596 units remaining) - [ None - {} ] + [ None + {} ] - location: 18 (remaining gas: 1039989.581 units remaining) - [ (Pair None {}) ] + [ (Pair None {}) ] - location: 19 (remaining gas: 1039989.566 units remaining) - [ {} - (Pair None {}) ] + [ {} + (Pair None {}) ] - location: 21 (remaining gas: 1039989.551 units remaining) - [ (Pair {} None {}) ] + [ (Pair {} None {}) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"1\" \"one\" ; .bc4127094e.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"1\" \"one\" ; .bc4127094e.out" index 0af169aa3a..21fb40db2d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"1\" \"one\" ; .bc4127094e.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"1\" \"one\" ; .bc4127094e.out" @@ -8,34 +8,34 @@ big_map diff trace - location: 12 (remaining gas: 1039986.547 units remaining) - [ (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] + [ (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 12 (remaining gas: 1039986.537 units remaining) - [ (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) - (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] + [ (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) + (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 13 (remaining gas: 1039986.527 units remaining) - [ "1" - (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] + [ "1" + (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 14 (remaining gas: 1039986.512 units remaining) - [ (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] + [ (Pair "1" None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 17 (remaining gas: 1039986.502 units remaining) - [ (Pair None { Elt "1" "one" ; Elt "2" "two" }) ] + [ (Pair None { Elt "1" "one" ; Elt "2" "two" }) ] - location: 18 (remaining gas: 1039986.492 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } ] + [ { Elt "1" "one" ; Elt "2" "two" } ] - location: 19 (remaining gas: 1039986.482 units remaining) - [ { Elt "1" "one" ; Elt "2" "two" } - { Elt "1" "one" ; Elt "2" "two" } ] + [ { Elt "1" "one" ; Elt "2" "two" } + { Elt "1" "one" ; Elt "2" "two" } ] - location: 14 (remaining gas: 1039986.452 units remaining) - [ "1" - { Elt "1" "one" ; Elt "2" "two" } - { Elt "1" "one" ; Elt "2" "two" } ] + [ "1" + { Elt "1" "one" ; Elt "2" "two" } + { Elt "1" "one" ; Elt "2" "two" } ] - location: 20 (remaining gas: 1039986.267 units remaining) - [ (Some "one") - { Elt "1" "one" ; Elt "2" "two" } ] + [ (Some "one") + { Elt "1" "one" ; Elt "2" "two" } ] - location: 21 (remaining gas: 1039986.252 units remaining) - [ (Pair (Some "one") { Elt "1" "one" ; Elt "2" "two" }) ] + [ (Pair (Some "one") { Elt "1" "one" ; Elt "2" "two" }) ] - location: 22 (remaining gas: 1039986.237 units remaining) - [ {} - (Pair (Some "one") { Elt "1" "one" ; Elt "2" "two" }) ] + [ {} + (Pair (Some "one") { Elt "1" "one" ; Elt "2" "two" }) ] - location: 24 (remaining gas: 1039986.222 units remaining) - [ (Pair {} (Some "one") { Elt "1" "one" ; Elt "2" "two" }) ] + [ (Pair {} (Some "one") { Elt "1" "one" ; Elt "2" "two" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"\"-(P.0c03056487.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"\"-(P.0c03056487.out" index 23ea6d60b0..661527f607 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"\"-(P.0c03056487.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"\"-(P.0c03056487.out" @@ -8,34 +8,34 @@ big_map diff trace - location: 12 (remaining gas: 1039987.050 units remaining) - [ (Pair "" None { Elt "hello" "hi" }) ] + [ (Pair "" None { Elt "hello" "hi" }) ] - location: 12 (remaining gas: 1039987.040 units remaining) - [ (Pair "" None { Elt "hello" "hi" }) - (Pair "" None { Elt "hello" "hi" }) ] + [ (Pair "" None { Elt "hello" "hi" }) + (Pair "" None { Elt "hello" "hi" }) ] - location: 13 (remaining gas: 1039987.030 units remaining) - [ "" - (Pair "" None { Elt "hello" "hi" }) ] + [ "" + (Pair "" None { Elt "hello" "hi" }) ] - location: 14 (remaining gas: 1039987.015 units remaining) - [ (Pair "" None { Elt "hello" "hi" }) ] + [ (Pair "" None { Elt "hello" "hi" }) ] - location: 17 (remaining gas: 1039987.005 units remaining) - [ (Pair None { Elt "hello" "hi" }) ] + [ (Pair None { Elt "hello" "hi" }) ] - location: 18 (remaining gas: 1039986.995 units remaining) - [ { Elt "hello" "hi" } ] + [ { Elt "hello" "hi" } ] - location: 19 (remaining gas: 1039986.985 units remaining) - [ { Elt "hello" "hi" } - { Elt "hello" "hi" } ] + [ { Elt "hello" "hi" } + { Elt "hello" "hi" } ] - location: 14 (remaining gas: 1039986.955 units remaining) - [ "" - { Elt "hello" "hi" } - { Elt "hello" "hi" } ] + [ "" + { Elt "hello" "hi" } + { Elt "hello" "hi" } ] - location: 20 (remaining gas: 1039986.805 units remaining) - [ None - { Elt "hello" "hi" } ] + [ None + { Elt "hello" "hi" } ] - location: 21 (remaining gas: 1039986.790 units remaining) - [ (Pair None { Elt "hello" "hi" }) ] + [ (Pair None { Elt "hello" "hi" }) ] - location: 22 (remaining gas: 1039986.775 units remaining) - [ {} - (Pair None { Elt "hello" "hi" }) ] + [ {} + (Pair None { Elt "hello" "hi" }) ] - location: 24 (remaining gas: 1039986.760 units remaining) - [ (Pair {} None { Elt "hello" "hi" }) ] + [ (Pair {} None { Elt "hello" "hi" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"hell.cc45544c66.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"hell.cc45544c66.out" index d15efb73b7..47b5f1d0a7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"hell.cc45544c66.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[get_map_value.tz-(Pair None { Elt \"hello\" \"hi\" })-\"hell.cc45544c66.out" @@ -8,34 +8,34 @@ big_map diff trace - location: 12 (remaining gas: 1039987 units remaining) - [ (Pair "hello" None { Elt "hello" "hi" }) ] + [ (Pair "hello" None { Elt "hello" "hi" }) ] - location: 12 (remaining gas: 1039986.990 units remaining) - [ (Pair "hello" None { Elt "hello" "hi" }) - (Pair "hello" None { Elt "hello" "hi" }) ] + [ (Pair "hello" None { Elt "hello" "hi" }) + (Pair "hello" None { Elt "hello" "hi" }) ] - location: 13 (remaining gas: 1039986.980 units remaining) - [ "hello" - (Pair "hello" None { Elt "hello" "hi" }) ] + [ "hello" + (Pair "hello" None { Elt "hello" "hi" }) ] - location: 14 (remaining gas: 1039986.965 units remaining) - [ (Pair "hello" None { Elt "hello" "hi" }) ] + [ (Pair "hello" None { Elt "hello" "hi" }) ] - location: 17 (remaining gas: 1039986.955 units remaining) - [ (Pair None { Elt "hello" "hi" }) ] + [ (Pair None { Elt "hello" "hi" }) ] - location: 18 (remaining gas: 1039986.945 units remaining) - [ { Elt "hello" "hi" } ] + [ { Elt "hello" "hi" } ] - location: 19 (remaining gas: 1039986.935 units remaining) - [ { Elt "hello" "hi" } - { Elt "hello" "hi" } ] + [ { Elt "hello" "hi" } + { Elt "hello" "hi" } ] - location: 14 (remaining gas: 1039986.905 units remaining) - [ "hello" - { Elt "hello" "hi" } - { Elt "hello" "hi" } ] + [ "hello" + { Elt "hello" "hi" } + { Elt "hello" "hi" } ] - location: 20 (remaining gas: 1039986.755 units remaining) - [ (Some "hi") - { Elt "hello" "hi" } ] + [ (Some "hi") + { Elt "hello" "hi" } ] - location: 21 (remaining gas: 1039986.740 units remaining) - [ (Pair (Some "hi") { Elt "hello" "hi" }) ] + [ (Pair (Some "hi") { Elt "hello" "hi" }) ] - location: 22 (remaining gas: 1039986.725 units remaining) - [ {} - (Pair (Some "hi") { Elt "hello" "hi" }) ] + [ {} + (Pair (Some "hi") { Elt "hello" "hi" }) ] - location: 24 (remaining gas: 1039986.710 units remaining) - [ (Pair {} (Some "hi") { Elt "hello" "hi" }) ] + [ (Pair {} (Some "hi") { Elt "hello" "hi" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" index f800fb08ec..962bc6cd74 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAb.613ad6b637.out" @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039668.957 units remaining) - [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" None) ] + [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" None) ] - location: 8 (remaining gas: 1039668.947 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" ] + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" ] - location: 9 (remaining gas: 1039668.292 units remaining) - [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] + [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] - location: 10 (remaining gas: 1039668.277 units remaining) - [ (Some "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx") ] + [ (Some "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx") ] - location: 11 (remaining gas: 1039668.262 units remaining) - [ {} - (Some "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx") ] + [ {} + (Some "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx") ] - location: 13 (remaining gas: 1039668.247 units remaining) - [ (Pair {} (Some "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx")) ] + [ (Pair {} (Some "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" index a385023af5..0a5b1b75d2 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_key.tz-None-\"edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTa.da50984e8d.out" @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039668.957 units remaining) - [ (Pair "edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTawUPqR8vZTAMcx61ES" None) ] + [ (Pair "edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTawUPqR8vZTAMcx61ES" None) ] - location: 8 (remaining gas: 1039668.947 units remaining) - [ "edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTawUPqR8vZTAMcx61ES" ] + [ "edpkuJqtDcA2m2muMxViSM47MPsGQzmyjnNTawUPqR8vZTAMcx61ES" ] - location: 9 (remaining gas: 1039668.292 units remaining) - [ "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k" ] + [ "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k" ] - location: 10 (remaining gas: 1039668.277 units remaining) - [ (Some "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k") ] + [ (Some "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k") ] - location: 11 (remaining gas: 1039668.262 units remaining) - [ {} - (Some "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k") ] + [ {} + (Some "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k") ] - location: 13 (remaining gas: 1039668.247 units remaining) - [ (Pair {} (Some "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k")) ] + [ (Pair {} (Some "tz1XPTDmvT3vVE5Uunngmixm7gj7zmdbPq6k")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"12345\"-0xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"12345\"-0xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" index ed0093d778..d1bae668b0 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"12345\"-0xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"12345\"-0xb4c26c20de52a4eaf0d8a340d.2bba28b0bf.out" @@ -8,16 +8,16 @@ big_map diff trace - location: 7 (remaining gas: 1039994.241 units remaining) - [ (Pair "12345" 0x00) ] + [ (Pair "12345" 0x00) ] - location: 7 (remaining gas: 1039994.231 units remaining) - [ "12345" ] + [ "12345" ] - location: 8 (remaining gas: 1039993.740 units remaining) - [ 0x0501000000053132333435 ] + [ 0x0501000000053132333435 ] - location: 9 (remaining gas: 1039993.298 units remaining) - [ 0xb4c26c20de52a4eaf0d8a340db47ad8cb1e74049570859c9a9a3952b204c772f ] + [ 0xb4c26c20de52a4eaf0d8a340db47ad8cb1e74049570859c9a9a3952b204c772f ] - location: 10 (remaining gas: 1039993.283 units remaining) - [ {} - 0xb4c26c20de52a4eaf0d8a340db47ad8cb1e74049570859c9a9a3952b204c772f ] + [ {} + 0xb4c26c20de52a4eaf0d8a340db47ad8cb1e74049570859c9a9a3952b204c772f ] - location: 12 (remaining gas: 1039993.268 units remaining) - [ (Pair {} 0xb4c26c20de52a4eaf0d8a340db47ad8cb1e74049570859c9a9a3952b204c772f) ] + [ (Pair {} 0xb4c26c20de52a4eaf0d8a340db47ad8cb1e74049570859c9a9a3952b204c772f) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"abcdefg\"-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"abcdefg\"-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" index 3eeab4cf2a..4bdd4b8c90 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"abcdefg\"-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[hash_string.tz-0x00-\"abcdefg\"-0x46fdbcb4ea4eadad5615cda.acc82cd954.out" @@ -8,16 +8,16 @@ big_map diff trace - location: 7 (remaining gas: 1039994.221 units remaining) - [ (Pair "abcdefg" 0x00) ] + [ (Pair "abcdefg" 0x00) ] - location: 7 (remaining gas: 1039994.211 units remaining) - [ "abcdefg" ] + [ "abcdefg" ] - location: 8 (remaining gas: 1039993.654 units remaining) - [ 0x05010000000761626364656667 ] + [ 0x05010000000761626364656667 ] - location: 9 (remaining gas: 1039993.210 units remaining) - [ 0x46fdbcb4ea4eadad5615cdaa17d67f783e01e21149ce2b27de497600b4cd8f4e ] + [ 0x46fdbcb4ea4eadad5615cdaa17d67f783e01e21149ce2b27de497600b4cd8f4e ] - location: 10 (remaining gas: 1039993.195 units remaining) - [ {} - 0x46fdbcb4ea4eadad5615cdaa17d67f783e01e21149ce2b27de497600b4cd8f4e ] + [ {} + 0x46fdbcb4ea4eadad5615cdaa17d67f783e01e21149ce2b27de497600b4cd8f4e ] - location: 12 (remaining gas: 1039993.180 units remaining) - [ (Pair {} 0x46fdbcb4ea4eadad5615cdaa17d67f783e01e21149ce2b27de497600b4cd8f4e) ] + [ (Pair {} 0x46fdbcb4ea4eadad5615cdaa17d67f783e01e21149ce2b27de497600b4cd8f4e) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-False-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-False-(Some False)].out index 65bc46d8f5..78000447bc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-False-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-False-(Some False)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039991.305 units remaining) - [ (Pair False None) ] + [ (Pair False None) ] - location: 8 (remaining gas: 1039991.295 units remaining) - [ False ] + [ False ] - location: 9 (remaining gas: 1039991.285 units remaining) [ ] - location: 15 (remaining gas: 1039991.275 units remaining) - [ False ] + [ False ] - location: 9 (remaining gas: 1039991.260 units remaining) - [ False ] + [ False ] - location: 18 (remaining gas: 1039991.245 units remaining) - [ (Some False) ] + [ (Some False) ] - location: 19 (remaining gas: 1039991.230 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 21 (remaining gas: 1039991.215 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-True-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-True-(Some True)].out index ac0ecede9c..c5bbb20cc5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-True-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if.tz-None-True-(Some True)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039991.305 units remaining) - [ (Pair True None) ] + [ (Pair True None) ] - location: 8 (remaining gas: 1039991.295 units remaining) - [ True ] + [ True ] - location: 9 (remaining gas: 1039991.285 units remaining) [ ] - location: 11 (remaining gas: 1039991.275 units remaining) - [ True ] + [ True ] - location: 9 (remaining gas: 1039991.260 units remaining) - [ True ] + [ True ] - location: 18 (remaining gas: 1039991.245 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 19 (remaining gas: 1039991.230 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 21 (remaining gas: 1039991.215 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-(Some \"hello\")-\"hello\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-(Some \"hello\")-\"hello\"].out" index b8dfcab8f0..4de67a4117 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-(Some \"hello\")-\"hello\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-(Some \"hello\")-\"hello\"].out" @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039992.411 units remaining) - [ (Pair (Some "hello") "?") ] + [ (Pair (Some "hello") "?") ] - location: 8 (remaining gas: 1039992.401 units remaining) - [ (Some "hello") ] + [ (Some "hello") ] - location: 10 (remaining gas: 1039992.391 units remaining) - [ "hello" ] + [ "hello" ] - location: 10 (remaining gas: 1039992.376 units remaining) - [ "hello" ] + [ "hello" ] - location: 16 (remaining gas: 1039992.361 units remaining) - [ {} - "hello" ] + [ {} + "hello" ] - location: 18 (remaining gas: 1039992.346 units remaining) - [ (Pair {} "hello") ] + [ (Pair {} "hello") ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-None-\"\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-None-\"\"].out" index c9aeb55c20..f0aeb837b1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-None-\"\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[if_some.tz-\"?\"-None-\"\"].out" @@ -8,18 +8,18 @@ big_map diff trace - location: 8 (remaining gas: 1039992.575 units remaining) - [ (Pair None "?") ] + [ (Pair None "?") ] - location: 8 (remaining gas: 1039992.565 units remaining) - [ None ] + [ None ] - location: 10 (remaining gas: 1039992.555 units remaining) [ ] - location: 12 (remaining gas: 1039992.545 units remaining) - [ "" ] + [ "" ] - location: 10 (remaining gas: 1039992.530 units remaining) - [ "" ] + [ "" ] - location: 16 (remaining gas: 1039992.515 units remaining) - [ {} - "" ] + [ {} + "" ] - location: 18 (remaining gas: 1039992.500 units remaining) - [ (Pair {} "") ] + [ (Pair {} "") ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-0-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-0-(Some 0)].out index f7af5422bd..1059a78650 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-0-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-0-(Some 0)].out @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039993.957 units remaining) - [ (Pair 0 None) ] + [ (Pair 0 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 0 ] + [ 0 ] - location: 9 (remaining gas: 1039993.932 units remaining) - [ 0 ] + [ 0 ] - location: 10 (remaining gas: 1039993.917 units remaining) - [ (Some 0) ] + [ (Some 0) ] - location: 11 (remaining gas: 1039993.902 units remaining) - [ {} - (Some 0) ] + [ {} + (Some 0) ] - location: 13 (remaining gas: 1039993.887 units remaining) - [ (Pair {} (Some 0)) ] + [ (Pair {} (Some 0)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-1-(Some 1)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-1-(Some 1)].out index 2daa1a980a..1c24805d4b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-1-(Some 1)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-1-(Some 1)].out @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039993.957 units remaining) - [ (Pair 1 None) ] + [ (Pair 1 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 1 ] + [ 1 ] - location: 9 (remaining gas: 1039993.932 units remaining) - [ 1 ] + [ 1 ] - location: 10 (remaining gas: 1039993.917 units remaining) - [ (Some 1) ] + [ (Some 1) ] - location: 11 (remaining gas: 1039993.902 units remaining) - [ {} - (Some 1) ] + [ {} + (Some 1) ] - location: 13 (remaining gas: 1039993.887 units remaining) - [ (Pair {} (Some 1)) ] + [ (Pair {} (Some 1)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-9999-(Some 9999)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-9999-(Some 9999)].out index 9e1c33548e..578f60d987 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-9999-(Some 9999)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[int.tz-None-9999-(Some 9999)].out @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039993.957 units remaining) - [ (Pair 9999 None) ] + [ (Pair 9999 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 9999 ] + [ 9999 ] - location: 9 (remaining gas: 1039993.932 units remaining) - [ 9999 ] + [ 9999 ] - location: 10 (remaining gas: 1039993.917 units remaining) - [ (Some 9999) ] + [ (Some 9999) ] - location: 11 (remaining gas: 1039993.902 units remaining) - [ {} - (Some 9999) ] + [ {} + (Some 9999) ] - location: 13 (remaining gas: 1039993.887 units remaining) - [ (Pair {} (Some 9999)) ] + [ (Pair {} (Some 9999)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[keccak.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xb6e.34c02678c9.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[keccak.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xb6e.34c02678c9.out index bcf4f56a90..25fae40bf9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[keccak.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xb6e.34c02678c9.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[keccak.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xb6e.34c02678c9.out @@ -8,17 +8,17 @@ big_map diff trace - location: 8 (remaining gas: 1039993.957 units remaining) - [ (Pair 0x48656c6c6f2c20776f726c6421 None) ] + [ (Pair 0x48656c6c6f2c20776f726c6421 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 0x48656c6c6f2c20776f726c6421 ] + [ 0x48656c6c6f2c20776f726c6421 ] - location: 9 (remaining gas: 1039992.490 units remaining) - [ 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4 ] + [ 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4 ] - location: 10 (remaining gas: 1039992.475 units remaining) - [ (Some 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4) ] + [ (Some 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4) ] - location: 11 (remaining gas: 1039992.460 units remaining) - [ {} - (Some 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4) ] + [ {} + (Some 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4) ] - location: 13 (remaining gas: 1039992.445 units remaining) [ (Pair {} - (Some 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4)) ] + (Some 0xb6e16d27ac5ab427a7f68900ac5559ce272dc6c37c82b3e052246c82244c50e4)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Left True)-(Right True)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Left True)-(Right True)].out" index b6314ede3c..512b3b7498 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Left True)-(Right True)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Left True)-(Right True)].out" @@ -8,18 +8,18 @@ big_map diff trace - location: 11 (remaining gas: 1039990.926 units remaining) - [ (Pair (Left True) (Left "X")) ] + [ (Pair (Left True) (Left "X")) ] - location: 11 (remaining gas: 1039990.916 units remaining) - [ (Left True) ] + [ (Left True) ] - location: 12 (remaining gas: 1039990.906 units remaining) - [ True ] + [ True ] - location: 14 (remaining gas: 1039990.891 units remaining) - [ (Right True) ] + [ (Right True) ] - location: 12 (remaining gas: 1039990.876 units remaining) - [ (Right True) ] + [ (Right True) ] - location: 19 (remaining gas: 1039990.861 units remaining) - [ {} - (Right True) ] + [ {} + (Right True) ] - location: 21 (remaining gas: 1039990.846 units remaining) - [ (Pair {} (Right True)) ] + [ (Pair {} (Right True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Right \"a\")-(Left \"a\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Right \"a\")-(Left \"a\")].out" index be4206f955..1a22dd4c63 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Right \"a\")-(Left \"a\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[left_right.tz-(Left \"X\")-(Right \"a\")-(Left \"a\")].out" @@ -8,18 +8,18 @@ big_map diff trace - location: 11 (remaining gas: 1039990.902 units remaining) - [ (Pair (Right "a") (Left "X")) ] + [ (Pair (Right "a") (Left "X")) ] - location: 11 (remaining gas: 1039990.892 units remaining) - [ (Right "a") ] + [ (Right "a") ] - location: 12 (remaining gas: 1039990.882 units remaining) - [ "a" ] + [ "a" ] - location: 17 (remaining gas: 1039990.867 units remaining) - [ (Left "a") ] + [ (Left "a") ] - location: 12 (remaining gas: 1039990.852 units remaining) - [ (Left "a") ] + [ (Left "a") ] - location: 19 (remaining gas: 1039990.837 units remaining) - [ {} - (Left "a") ] + [ {} + (Left "a") ] - location: 21 (remaining gas: 1039990.822 units remaining) - [ (Pair {} (Left "a")) ] + [ (Pair {} (Left "a")) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[level.tz-111-Unit-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[level.tz-111-Unit-1].out index ae0044aef7..d9be7a6b46 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[level.tz-111-Unit-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[level.tz-111-Unit-1].out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 111) ] + [ (Pair Unit 111) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039994.923 units remaining) - [ 1 ] + [ 1 ] - location: 9 (remaining gas: 1039994.908 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 11 (remaining gas: 1039994.893 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" index 71d9953451..b06bba5cdf 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{ \"d\" ; \"e\" ; \"f\" }-\"abcdef\"].out" @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039992.898 units remaining) - [ (Pair { "d" ; "e" ; "f" } "abc") ] + [ (Pair { "d" ; "e" ; "f" } "abc") ] - location: 8 (remaining gas: 1039992.888 units remaining) - [ { "d" ; "e" ; "f" } - "abc" ] + [ { "d" ; "e" ; "f" } + "abc" ] - location: 9 (remaining gas: 1039992.878 units remaining) - [ "abc" - { "d" ; "e" ; "f" } ] + [ "abc" + { "d" ; "e" ; "f" } ] - location: 10 (remaining gas: 1039992.863 units remaining) - [ { "abc" ; "d" ; "e" ; "f" } ] + [ { "abc" ; "d" ; "e" ; "f" } ] - location: 11 (remaining gas: 1039992.723 units remaining) - [ "abcdef" ] + [ "abcdef" ] - location: 12 (remaining gas: 1039992.708 units remaining) - [ {} - "abcdef" ] + [ {} + "abcdef" ] - location: 14 (remaining gas: 1039992.693 units remaining) - [ (Pair {} "abcdef") ] + [ (Pair {} "abcdef") ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{}-\"abc\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{}-\"abc\"].out" index bde91d38ba..150760d683 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{}-\"abc\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat.tz-\"abc\"-{}-\"abc\"].out" @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039993.270 units remaining) - [ (Pair {} "abc") ] + [ (Pair {} "abc") ] - location: 8 (remaining gas: 1039993.260 units remaining) - [ {} - "abc" ] + [ {} + "abc" ] - location: 9 (remaining gas: 1039993.250 units remaining) - [ "abc" - {} ] + [ "abc" + {} ] - location: 10 (remaining gas: 1039993.235 units remaining) - [ { "abc" } ] + [ { "abc" } ] - location: 11 (remaining gas: 1039993.125 units remaining) - [ "abc" ] + [ "abc" ] - location: 12 (remaining gas: 1039993.110 units remaining) - [ {} - "abc" ] + [ {} + "abc" ] - location: 14 (remaining gas: 1039993.095 units remaining) - [ (Pair {} "abc") ] + [ (Pair {} "abc") ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out index 60eca6eb14..338ab9e96d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{ 0x00 ; 0x11 ; 0x00 }-0x001100].out @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039993.014 units remaining) - [ (Pair { 0x00 ; 0x11 ; 0x00 } 0x) ] + [ (Pair { 0x00 ; 0x11 ; 0x00 } 0x) ] - location: 8 (remaining gas: 1039993.004 units remaining) - [ { 0x00 ; 0x11 ; 0x00 } - 0x ] + [ { 0x00 ; 0x11 ; 0x00 } + 0x ] - location: 9 (remaining gas: 1039992.994 units remaining) - [ 0x - { 0x00 ; 0x11 ; 0x00 } ] + [ 0x + { 0x00 ; 0x11 ; 0x00 } ] - location: 10 (remaining gas: 1039992.979 units remaining) - [ { 0x ; 0x00 ; 0x11 ; 0x00 } ] + [ { 0x ; 0x00 ; 0x11 ; 0x00 } ] - location: 11 (remaining gas: 1039992.839 units remaining) - [ 0x001100 ] + [ 0x001100 ] - location: 12 (remaining gas: 1039992.824 units remaining) - [ {} - 0x001100 ] + [ {} + 0x001100 ] - location: 14 (remaining gas: 1039992.809 units remaining) - [ (Pair {} 0x001100) ] + [ (Pair {} 0x001100) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{}-0x].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{}-0x].out index 183bb53491..127d27fa0e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{}-0x].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x-{}-0x].out @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039993.314 units remaining) - [ (Pair {} 0x) ] + [ (Pair {} 0x) ] - location: 8 (remaining gas: 1039993.304 units remaining) - [ {} - 0x ] + [ {} + 0x ] - location: 9 (remaining gas: 1039993.294 units remaining) - [ 0x - {} ] + [ 0x + {} ] - location: 10 (remaining gas: 1039993.279 units remaining) - [ { 0x } ] + [ { 0x } ] - location: 11 (remaining gas: 1039993.169 units remaining) - [ 0x ] + [ 0x ] - location: 12 (remaining gas: 1039993.154 units remaining) - [ {} - 0x ] + [ {} + 0x ] - location: 14 (remaining gas: 1039993.139 units remaining) - [ (Pair {} 0x) ] + [ (Pair {} 0x) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x00ab-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x00ab-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out index 30bfcfc39b..bd7f5da25b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x00ab-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0x00ab-{ 0xcd ; 0xef ; 0x00 }-0x00abcdef00].out @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039993.014 units remaining) - [ (Pair { 0xcd ; 0xef ; 0x00 } 0x00ab) ] + [ (Pair { 0xcd ; 0xef ; 0x00 } 0x00ab) ] - location: 8 (remaining gas: 1039993.004 units remaining) - [ { 0xcd ; 0xef ; 0x00 } - 0x00ab ] + [ { 0xcd ; 0xef ; 0x00 } + 0x00ab ] - location: 9 (remaining gas: 1039992.994 units remaining) - [ 0x00ab - { 0xcd ; 0xef ; 0x00 } ] + [ 0x00ab + { 0xcd ; 0xef ; 0x00 } ] - location: 10 (remaining gas: 1039992.979 units remaining) - [ { 0x00ab ; 0xcd ; 0xef ; 0x00 } ] + [ { 0x00ab ; 0xcd ; 0xef ; 0x00 } ] - location: 11 (remaining gas: 1039992.839 units remaining) - [ 0x00abcdef00 ] + [ 0x00abcdef00 ] - location: 12 (remaining gas: 1039992.824 units remaining) - [ {} - 0x00abcdef00 ] + [ {} + 0x00abcdef00 ] - location: 14 (remaining gas: 1039992.809 units remaining) - [ (Pair {} 0x00abcdef00) ] + [ (Pair {} 0x00abcdef00) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0xabcd-{}-0xabcd].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0xabcd-{}-0xabcd].out index 6ba8ad2d6c..3020010ddb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0xabcd-{}-0xabcd].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_concat_bytes.tz-0xabcd-{}-0xabcd].out @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039993.314 units remaining) - [ (Pair {} 0xabcd) ] + [ (Pair {} 0xabcd) ] - location: 8 (remaining gas: 1039993.304 units remaining) - [ {} - 0xabcd ] + [ {} + 0xabcd ] - location: 9 (remaining gas: 1039993.294 units remaining) - [ 0xabcd - {} ] + [ 0xabcd + {} ] - location: 10 (remaining gas: 1039993.279 units remaining) - [ { 0xabcd } ] + [ { 0xabcd } ] - location: 11 (remaining gas: 1039993.169 units remaining) - [ 0xabcd ] + [ 0xabcd ] - location: 12 (remaining gas: 1039993.154 units remaining) - [ {} - 0xabcd ] + [ {} + 0xabcd ] - location: 14 (remaining gas: 1039993.139 units remaining) - [ (Pair {} 0xabcd) ] + [ (Pair {} 0xabcd) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" index a0012cd4b7..0bedb95ed4 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" @@ -8,12 +8,12 @@ big_map diff trace - location: 9 (remaining gas: 1039994.539 units remaining) - [ (Pair { "1" ; "2" ; "3" } { "" }) ] + [ (Pair { "1" ; "2" ; "3" } { "" }) ] - location: 9 (remaining gas: 1039994.529 units remaining) - [ { "1" ; "2" ; "3" } ] + [ { "1" ; "2" ; "3" } ] - location: 10 (remaining gas: 1039994.514 units remaining) - [ {} - { "1" ; "2" ; "3" } ] + [ {} + { "1" ; "2" ; "3" } ] - location: 12 (remaining gas: 1039994.499 units remaining) - [ (Pair {} { "1" ; "2" ; "3" }) ] + [ (Pair {} { "1" ; "2" ; "3" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index fb905b75e4..c3c30cc378 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -8,12 +8,12 @@ big_map diff trace - location: 9 (remaining gas: 1039994.539 units remaining) - [ (Pair { "a" ; "b" ; "c" } { "" }) ] + [ (Pair { "a" ; "b" ; "c" } { "" }) ] - location: 9 (remaining gas: 1039994.529 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 10 (remaining gas: 1039994.514 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 12 (remaining gas: 1039994.499 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{}-{}].out" index 1e996e5fa5..6deb204e20 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id.tz-{\"\"}-{}-{}].out" @@ -8,12 +8,12 @@ big_map diff trace - location: 9 (remaining gas: 1039994.911 units remaining) - [ (Pair {} { "" }) ] + [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039994.901 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039994.886 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 12 (remaining gas: 1039994.871 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" index 7cda833ccb..85f6274d0a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"1\" ; \"2\" ; \"3\" }-{ \"1\" ; \"2\" ; \"3\" }].out" @@ -8,20 +8,20 @@ big_map diff trace - location: 9 (remaining gas: 1039993.518 units remaining) - [ (Pair { "1" ; "2" ; "3" } { "" }) ] + [ (Pair { "1" ; "2" ; "3" } { "" }) ] - location: 9 (remaining gas: 1039993.508 units remaining) - [ { "1" ; "2" ; "3" } ] + [ { "1" ; "2" ; "3" } ] - location: 10 (remaining gas: 1039993.508 units remaining) - [ "1" ] + [ "1" ] - location: 10 (remaining gas: 1039993.493 units remaining) - [ "2" ] + [ "2" ] - location: 10 (remaining gas: 1039993.478 units remaining) - [ "3" ] + [ "3" ] - location: 10 (remaining gas: 1039993.463 units remaining) - [ { "1" ; "2" ; "3" } ] + [ { "1" ; "2" ; "3" } ] - location: 12 (remaining gas: 1039993.448 units remaining) - [ {} - { "1" ; "2" ; "3" } ] + [ {} + { "1" ; "2" ; "3" } ] - location: 14 (remaining gas: 1039993.433 units remaining) - [ (Pair {} { "1" ; "2" ; "3" }) ] + [ (Pair {} { "1" ; "2" ; "3" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index 8b5d6c57de..6f971cdfea 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -8,20 +8,20 @@ big_map diff trace - location: 9 (remaining gas: 1039993.518 units remaining) - [ (Pair { "a" ; "b" ; "c" } { "" }) ] + [ (Pair { "a" ; "b" ; "c" } { "" }) ] - location: 9 (remaining gas: 1039993.508 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 10 (remaining gas: 1039993.508 units remaining) - [ "a" ] + [ "a" ] - location: 10 (remaining gas: 1039993.493 units remaining) - [ "b" ] + [ "b" ] - location: 10 (remaining gas: 1039993.478 units remaining) - [ "c" ] + [ "c" ] - location: 10 (remaining gas: 1039993.463 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 12 (remaining gas: 1039993.448 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 14 (remaining gas: 1039993.433 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{}-{}].out" index e8cef35019..afdb1ab433 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_id_map.tz-{\"\"}-{}-{}].out" @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039993.890 units remaining) - [ (Pair {} { "" }) ] + [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039993.880 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039993.880 units remaining) - [ {} ] + [ {} ] - location: 12 (remaining gas: 1039993.865 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 14 (remaining gas: 1039993.850 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out index db1f2c635b..9887e15868 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 10 ; 2 ; 1 }-20].out @@ -8,35 +8,35 @@ big_map diff trace - location: 8 (remaining gas: 1039991.873 units remaining) - [ (Pair { 10 ; 2 ; 1 } 0) ] + [ (Pair { 10 ; 2 ; 1 } 0) ] - location: 8 (remaining gas: 1039991.863 units remaining) - [ { 10 ; 2 ; 1 } ] + [ { 10 ; 2 ; 1 } ] - location: 9 (remaining gas: 1039991.853 units remaining) - [ 1 - { 10 ; 2 ; 1 } ] + [ 1 + { 10 ; 2 ; 1 } ] - location: 12 (remaining gas: 1039991.843 units remaining) - [ { 10 ; 2 ; 1 } - 1 ] + [ { 10 ; 2 ; 1 } + 1 ] - location: 13 (remaining gas: 1039991.843 units remaining) - [ 10 - 1 ] + [ 10 + 1 ] - location: 15 (remaining gas: 1039991.739 units remaining) - [ 10 ] + [ 10 ] - location: 13 (remaining gas: 1039991.724 units remaining) - [ 2 - 10 ] + [ 2 + 10 ] - location: 15 (remaining gas: 1039991.620 units remaining) - [ 20 ] + [ 20 ] - location: 13 (remaining gas: 1039991.605 units remaining) - [ 1 - 20 ] + [ 1 + 20 ] - location: 15 (remaining gas: 1039991.501 units remaining) - [ 20 ] + [ 20 ] - location: 13 (remaining gas: 1039991.486 units remaining) - [ 20 ] + [ 20 ] - location: 16 (remaining gas: 1039991.471 units remaining) - [ {} - 20 ] + [ {} + 20 ] - location: 18 (remaining gas: 1039991.456 units remaining) - [ (Pair {} 20) ] + [ (Pair {} 20) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out index 367f7ba2a8..eda57844eb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_iter.tz-0-{ 3 ; 6 ; 9 }-162].out @@ -8,35 +8,35 @@ big_map diff trace - location: 8 (remaining gas: 1039991.873 units remaining) - [ (Pair { 3 ; 6 ; 9 } 0) ] + [ (Pair { 3 ; 6 ; 9 } 0) ] - location: 8 (remaining gas: 1039991.863 units remaining) - [ { 3 ; 6 ; 9 } ] + [ { 3 ; 6 ; 9 } ] - location: 9 (remaining gas: 1039991.853 units remaining) - [ 1 - { 3 ; 6 ; 9 } ] + [ 1 + { 3 ; 6 ; 9 } ] - location: 12 (remaining gas: 1039991.843 units remaining) - [ { 3 ; 6 ; 9 } - 1 ] + [ { 3 ; 6 ; 9 } + 1 ] - location: 13 (remaining gas: 1039991.843 units remaining) - [ 3 - 1 ] + [ 3 + 1 ] - location: 15 (remaining gas: 1039991.739 units remaining) - [ 3 ] + [ 3 ] - location: 13 (remaining gas: 1039991.724 units remaining) - [ 6 - 3 ] + [ 6 + 3 ] - location: 15 (remaining gas: 1039991.620 units remaining) - [ 18 ] + [ 18 ] - location: 13 (remaining gas: 1039991.605 units remaining) - [ 9 - 18 ] + [ 9 + 18 ] - location: 15 (remaining gas: 1039991.501 units remaining) - [ 162 ] + [ 162 ] - location: 13 (remaining gas: 1039991.486 units remaining) - [ 162 ] + [ 162 ] - location: 16 (remaining gas: 1039991.471 units remaining) - [ {} - 162 ] + [ {} + 162 ] - location: 18 (remaining gas: 1039991.456 units remaining) - [ (Pair {} 162) ] + [ (Pair {} 162) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out index f975e57d50..a21be156f6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 1 ; 1 ; 1 }-{ 1 ; 2 ; 3 ; 4 }].out @@ -8,129 +8,129 @@ big_map diff trace - location: 9 (remaining gas: 1039985.969 units remaining) - [ (Pair { 1 ; 1 ; 1 ; 1 } { 0 }) ] + [ (Pair { 1 ; 1 ; 1 ; 1 } { 0 }) ] - location: 9 (remaining gas: 1039985.959 units remaining) - [ { 1 ; 1 ; 1 ; 1 } ] + [ { 1 ; 1 ; 1 ; 1 } ] - location: 10 (remaining gas: 1039985.949 units remaining) - [ 0 - { 1 ; 1 ; 1 ; 1 } ] + [ 0 + { 1 ; 1 ; 1 ; 1 } ] - location: 13 (remaining gas: 1039985.939 units remaining) - [ { 1 ; 1 ; 1 ; 1 } - 0 ] + [ { 1 ; 1 ; 1 ; 1 } + 0 ] - location: 14 (remaining gas: 1039985.939 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 16 (remaining gas: 1039985.924 units remaining) - [ 0 ] + [ 0 ] - location: 18 (remaining gas: 1039985.914 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 16 (remaining gas: 1039985.884 units remaining) - [ 1 - 0 - 0 ] + [ 1 + 0 + 0 ] - location: 19 (remaining gas: 1039985.829 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 20 (remaining gas: 1039985.814 units remaining) - [ 0 ] + [ 0 ] - location: 22 (remaining gas: 1039985.804 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 25 (remaining gas: 1039985.749 units remaining) - [ 1 ] + [ 1 ] - location: 20 (remaining gas: 1039985.719 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 14 (remaining gas: 1039985.704 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 16 (remaining gas: 1039985.689 units remaining) - [ 1 ] + [ 1 ] - location: 18 (remaining gas: 1039985.679 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 16 (remaining gas: 1039985.649 units remaining) - [ 1 - 1 - 1 ] + [ 1 + 1 + 1 ] - location: 19 (remaining gas: 1039985.594 units remaining) - [ 2 - 1 ] + [ 2 + 1 ] - location: 20 (remaining gas: 1039985.579 units remaining) - [ 1 ] + [ 1 ] - location: 22 (remaining gas: 1039985.569 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 25 (remaining gas: 1039985.514 units remaining) - [ 2 ] + [ 2 ] - location: 20 (remaining gas: 1039985.484 units remaining) - [ 2 - 2 ] + [ 2 + 2 ] - location: 14 (remaining gas: 1039985.469 units remaining) - [ 1 - 2 ] + [ 1 + 2 ] - location: 16 (remaining gas: 1039985.454 units remaining) - [ 2 ] + [ 2 ] - location: 18 (remaining gas: 1039985.444 units remaining) - [ 2 - 2 ] + [ 2 + 2 ] - location: 16 (remaining gas: 1039985.414 units remaining) - [ 1 - 2 - 2 ] + [ 1 + 2 + 2 ] - location: 19 (remaining gas: 1039985.359 units remaining) - [ 3 - 2 ] + [ 3 + 2 ] - location: 20 (remaining gas: 1039985.344 units remaining) - [ 2 ] + [ 2 ] - location: 22 (remaining gas: 1039985.334 units remaining) - [ 1 - 2 ] + [ 1 + 2 ] - location: 25 (remaining gas: 1039985.279 units remaining) - [ 3 ] + [ 3 ] - location: 20 (remaining gas: 1039985.249 units remaining) - [ 3 - 3 ] + [ 3 + 3 ] - location: 14 (remaining gas: 1039985.234 units remaining) - [ 1 - 3 ] + [ 1 + 3 ] - location: 16 (remaining gas: 1039985.219 units remaining) - [ 3 ] + [ 3 ] - location: 18 (remaining gas: 1039985.209 units remaining) - [ 3 - 3 ] + [ 3 + 3 ] - location: 16 (remaining gas: 1039985.179 units remaining) - [ 1 - 3 - 3 ] + [ 1 + 3 + 3 ] - location: 19 (remaining gas: 1039985.124 units remaining) - [ 4 - 3 ] + [ 4 + 3 ] - location: 20 (remaining gas: 1039985.109 units remaining) - [ 3 ] + [ 3 ] - location: 22 (remaining gas: 1039985.099 units remaining) - [ 1 - 3 ] + [ 1 + 3 ] - location: 25 (remaining gas: 1039985.044 units remaining) - [ 4 ] + [ 4 ] - location: 20 (remaining gas: 1039985.014 units remaining) - [ 4 - 4 ] + [ 4 + 4 ] - location: 14 (remaining gas: 1039984.999 units remaining) - [ { 1 ; 2 ; 3 ; 4 } - 4 ] + [ { 1 ; 2 ; 3 ; 4 } + 4 ] - location: 26 (remaining gas: 1039984.984 units remaining) - [ {} - { 1 ; 2 ; 3 ; 4 } - 4 ] + [ {} + { 1 ; 2 ; 3 ; 4 } + 4 ] - location: 28 (remaining gas: 1039984.969 units remaining) - [ (Pair {} { 1 ; 2 ; 3 ; 4 }) - 4 ] + [ (Pair {} { 1 ; 2 ; 3 ; 4 }) + 4 ] - location: 29 (remaining gas: 1039984.954 units remaining) - [ 4 ] + [ 4 ] - location: 31 (remaining gas: 1039984.944 units remaining) [ ] - location: 29 (remaining gas: 1039984.914 units remaining) - [ (Pair {} { 1 ; 2 ; 3 ; 4 }) ] + [ (Pair {} { 1 ; 2 ; 3 ; 4 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out index 31e06d8b1e..37cadd2fbd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{ 1 ; 2 ; 3 ; 0 }-{ 1 ; 3 ; 5 ; 3 }].out @@ -8,129 +8,129 @@ big_map diff trace - location: 9 (remaining gas: 1039985.969 units remaining) - [ (Pair { 1 ; 2 ; 3 ; 0 } { 0 }) ] + [ (Pair { 1 ; 2 ; 3 ; 0 } { 0 }) ] - location: 9 (remaining gas: 1039985.959 units remaining) - [ { 1 ; 2 ; 3 ; 0 } ] + [ { 1 ; 2 ; 3 ; 0 } ] - location: 10 (remaining gas: 1039985.949 units remaining) - [ 0 - { 1 ; 2 ; 3 ; 0 } ] + [ 0 + { 1 ; 2 ; 3 ; 0 } ] - location: 13 (remaining gas: 1039985.939 units remaining) - [ { 1 ; 2 ; 3 ; 0 } - 0 ] + [ { 1 ; 2 ; 3 ; 0 } + 0 ] - location: 14 (remaining gas: 1039985.939 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 16 (remaining gas: 1039985.924 units remaining) - [ 0 ] + [ 0 ] - location: 18 (remaining gas: 1039985.914 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 16 (remaining gas: 1039985.884 units remaining) - [ 1 - 0 - 0 ] + [ 1 + 0 + 0 ] - location: 19 (remaining gas: 1039985.829 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 20 (remaining gas: 1039985.814 units remaining) - [ 0 ] + [ 0 ] - location: 22 (remaining gas: 1039985.804 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 25 (remaining gas: 1039985.749 units remaining) - [ 1 ] + [ 1 ] - location: 20 (remaining gas: 1039985.719 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 14 (remaining gas: 1039985.704 units remaining) - [ 2 - 1 ] + [ 2 + 1 ] - location: 16 (remaining gas: 1039985.689 units remaining) - [ 1 ] + [ 1 ] - location: 18 (remaining gas: 1039985.679 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 16 (remaining gas: 1039985.649 units remaining) - [ 2 - 1 - 1 ] + [ 2 + 1 + 1 ] - location: 19 (remaining gas: 1039985.594 units remaining) - [ 3 - 1 ] + [ 3 + 1 ] - location: 20 (remaining gas: 1039985.579 units remaining) - [ 1 ] + [ 1 ] - location: 22 (remaining gas: 1039985.569 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 25 (remaining gas: 1039985.514 units remaining) - [ 2 ] + [ 2 ] - location: 20 (remaining gas: 1039985.484 units remaining) - [ 3 - 2 ] + [ 3 + 2 ] - location: 14 (remaining gas: 1039985.469 units remaining) - [ 3 - 2 ] + [ 3 + 2 ] - location: 16 (remaining gas: 1039985.454 units remaining) - [ 2 ] + [ 2 ] - location: 18 (remaining gas: 1039985.444 units remaining) - [ 2 - 2 ] + [ 2 + 2 ] - location: 16 (remaining gas: 1039985.414 units remaining) - [ 3 - 2 - 2 ] + [ 3 + 2 + 2 ] - location: 19 (remaining gas: 1039985.359 units remaining) - [ 5 - 2 ] + [ 5 + 2 ] - location: 20 (remaining gas: 1039985.344 units remaining) - [ 2 ] + [ 2 ] - location: 22 (remaining gas: 1039985.334 units remaining) - [ 1 - 2 ] + [ 1 + 2 ] - location: 25 (remaining gas: 1039985.279 units remaining) - [ 3 ] + [ 3 ] - location: 20 (remaining gas: 1039985.249 units remaining) - [ 5 - 3 ] + [ 5 + 3 ] - location: 14 (remaining gas: 1039985.234 units remaining) - [ 0 - 3 ] + [ 0 + 3 ] - location: 16 (remaining gas: 1039985.219 units remaining) - [ 3 ] + [ 3 ] - location: 18 (remaining gas: 1039985.209 units remaining) - [ 3 - 3 ] + [ 3 + 3 ] - location: 16 (remaining gas: 1039985.179 units remaining) - [ 0 - 3 - 3 ] + [ 0 + 3 + 3 ] - location: 19 (remaining gas: 1039985.124 units remaining) - [ 3 - 3 ] + [ 3 + 3 ] - location: 20 (remaining gas: 1039985.109 units remaining) - [ 3 ] + [ 3 ] - location: 22 (remaining gas: 1039985.099 units remaining) - [ 1 - 3 ] + [ 1 + 3 ] - location: 25 (remaining gas: 1039985.044 units remaining) - [ 4 ] + [ 4 ] - location: 20 (remaining gas: 1039985.014 units remaining) - [ 3 - 4 ] + [ 3 + 4 ] - location: 14 (remaining gas: 1039984.999 units remaining) - [ { 1 ; 3 ; 5 ; 3 } - 4 ] + [ { 1 ; 3 ; 5 ; 3 } + 4 ] - location: 26 (remaining gas: 1039984.984 units remaining) - [ {} - { 1 ; 3 ; 5 ; 3 } - 4 ] + [ {} + { 1 ; 3 ; 5 ; 3 } + 4 ] - location: 28 (remaining gas: 1039984.969 units remaining) - [ (Pair {} { 1 ; 3 ; 5 ; 3 }) - 4 ] + [ (Pair {} { 1 ; 3 ; 5 ; 3 }) + 4 ] - location: 29 (remaining gas: 1039984.954 units remaining) - [ 4 ] + [ 4 ] - location: 31 (remaining gas: 1039984.944 units remaining) [ ] - location: 29 (remaining gas: 1039984.914 units remaining) - [ (Pair {} { 1 ; 3 ; 5 ; 3 }) ] + [ (Pair {} { 1 ; 3 ; 5 ; 3 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{}-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{}-{}].out index 1b1de13823..cab0bbf5e0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{}-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_map_block.tz-{0}-{}-{}].out @@ -8,29 +8,29 @@ big_map diff trace - location: 9 (remaining gas: 1039986.369 units remaining) - [ (Pair {} { 0 }) ] + [ (Pair {} { 0 }) ] - location: 9 (remaining gas: 1039986.359 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039986.349 units remaining) - [ 0 - {} ] + [ 0 + {} ] - location: 13 (remaining gas: 1039986.339 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 14 (remaining gas: 1039986.339 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 26 (remaining gas: 1039986.324 units remaining) - [ {} - {} - 0 ] + [ {} + {} + 0 ] - location: 28 (remaining gas: 1039986.309 units remaining) - [ (Pair {} {}) - 0 ] + [ (Pair {} {}) + 0 ] - location: 29 (remaining gas: 1039986.294 units remaining) - [ 0 ] + [ 0 ] - location: 31 (remaining gas: 1039986.284 units remaining) [ ] - location: 29 (remaining gas: 1039986.254 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out index 31cb3b9633..b09709703d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.220 units remaining) - [ (Pair { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } 111) ] + [ (Pair { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } 111) ] - location: 8 (remaining gas: 1039994.210 units remaining) - [ { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } ] + [ { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } ] - location: 9 (remaining gas: 1039994.195 units remaining) - [ 6 ] + [ 6 ] - location: 10 (remaining gas: 1039994.180 units remaining) - [ {} - 6 ] + [ {} + 6 ] - location: 12 (remaining gas: 1039994.165 units remaining) - [ (Pair {} 6) ] + [ (Pair {} 6) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out index ddbb611ef9..e0d9021dfb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 ; 2 ; 3 }-3].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.520 units remaining) - [ (Pair { 1 ; 2 ; 3 } 111) ] + [ (Pair { 1 ; 2 ; 3 } 111) ] - location: 8 (remaining gas: 1039994.510 units remaining) - [ { 1 ; 2 ; 3 } ] + [ { 1 ; 2 ; 3 } ] - location: 9 (remaining gas: 1039994.495 units remaining) - [ 3 ] + [ 3 ] - location: 10 (remaining gas: 1039994.480 units remaining) - [ {} - 3 ] + [ {} + 3 ] - location: 12 (remaining gas: 1039994.465 units remaining) - [ (Pair {} 3) ] + [ (Pair {} 3) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 }-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 }-1].out index 11e89dfc0a..10654a706a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 }-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{ 1 }-1].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.720 units remaining) - [ (Pair { 1 } 111) ] + [ (Pair { 1 } 111) ] - location: 8 (remaining gas: 1039994.710 units remaining) - [ { 1 } ] + [ { 1 } ] - location: 9 (remaining gas: 1039994.695 units remaining) - [ 1 ] + [ 1 ] - location: 10 (remaining gas: 1039994.680 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 12 (remaining gas: 1039994.665 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{}-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{}-0].out index b0075b0afd..68e11d5ca1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{}-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[list_size.tz-111-{}-0].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.820 units remaining) - [ (Pair {} 111) ] + [ (Pair {} 111) ] - location: 8 (remaining gas: 1039994.810 units remaining) - [ {} ] + [ {} ] - location: 9 (remaining gas: 1039994.795 units remaining) - [ 0 ] + [ 0 ] - location: 10 (remaining gas: 1039994.780 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 12 (remaining gas: 1039994.765 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index 48cef89f59..eb75db54d1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -8,156 +8,156 @@ big_map diff trace - location: 9 (remaining gas: 1039977.710 units remaining) - [ (Pair { "c" ; "b" ; "a" } { "" }) ] + [ (Pair { "c" ; "b" ; "a" } { "" }) ] - location: 9 (remaining gas: 1039977.700 units remaining) - [ { "c" ; "b" ; "a" } ] + [ { "c" ; "b" ; "a" } ] - location: 10 (remaining gas: 1039977.685 units remaining) - [ {} - { "c" ; "b" ; "a" } ] + [ {} + { "c" ; "b" ; "a" } ] - location: 12 (remaining gas: 1039977.675 units remaining) - [ { "c" ; "b" ; "a" } - {} ] + [ { "c" ; "b" ; "a" } + {} ] - location: 13 (remaining gas: 1039977.660 units remaining) - [ (Pair { "c" ; "b" ; "a" } {}) ] + [ (Pair { "c" ; "b" ; "a" } {}) ] - location: 14 (remaining gas: 1039977.645 units remaining) - [ (Left (Pair { "c" ; "b" ; "a" } {})) ] + [ (Left (Pair { "c" ; "b" ; "a" } {})) ] - location: 17 (remaining gas: 1039977.645 units remaining) - [ (Pair { "c" ; "b" ; "a" } {}) ] + [ (Pair { "c" ; "b" ; "a" } {}) ] - location: 19 (remaining gas: 1039977.635 units remaining) - [ (Pair { "c" ; "b" ; "a" } {}) - (Pair { "c" ; "b" ; "a" } {}) ] + [ (Pair { "c" ; "b" ; "a" } {}) + (Pair { "c" ; "b" ; "a" } {}) ] - location: 20 (remaining gas: 1039977.625 units remaining) - [ { "c" ; "b" ; "a" } - (Pair { "c" ; "b" ; "a" } {}) ] + [ { "c" ; "b" ; "a" } + (Pair { "c" ; "b" ; "a" } {}) ] - location: 21 (remaining gas: 1039977.610 units remaining) - [ (Pair { "c" ; "b" ; "a" } {}) ] + [ (Pair { "c" ; "b" ; "a" } {}) ] - location: 23 (remaining gas: 1039977.600 units remaining) - [ {} ] + [ {} ] - location: 21 (remaining gas: 1039977.570 units remaining) - [ { "c" ; "b" ; "a" } - {} ] + [ { "c" ; "b" ; "a" } + {} ] - location: 24 (remaining gas: 1039977.560 units remaining) - [ "c" - { "b" ; "a" } - {} ] + [ "c" + { "b" ; "a" } + {} ] - location: 26 (remaining gas: 1039977.550 units remaining) - [ { "b" ; "a" } - "c" - {} ] + [ { "b" ; "a" } + "c" + {} ] - location: 27 (remaining gas: 1039977.535 units remaining) - [ "c" - {} ] + [ "c" + {} ] - location: 29 (remaining gas: 1039977.520 units remaining) - [ { "c" } ] + [ { "c" } ] - location: 27 (remaining gas: 1039977.490 units remaining) - [ { "b" ; "a" } - { "c" } ] + [ { "b" ; "a" } + { "c" } ] - location: 30 (remaining gas: 1039977.475 units remaining) - [ (Pair { "b" ; "a" } { "c" }) ] + [ (Pair { "b" ; "a" } { "c" }) ] - location: 31 (remaining gas: 1039977.460 units remaining) - [ (Left (Pair { "b" ; "a" } { "c" })) ] + [ (Left (Pair { "b" ; "a" } { "c" })) ] - location: 24 (remaining gas: 1039977.445 units remaining) - [ (Left (Pair { "b" ; "a" } { "c" })) ] + [ (Left (Pair { "b" ; "a" } { "c" })) ] - location: 17 (remaining gas: 1039977.430 units remaining) - [ (Pair { "b" ; "a" } { "c" }) ] + [ (Pair { "b" ; "a" } { "c" }) ] - location: 19 (remaining gas: 1039977.420 units remaining) - [ (Pair { "b" ; "a" } { "c" }) - (Pair { "b" ; "a" } { "c" }) ] + [ (Pair { "b" ; "a" } { "c" }) + (Pair { "b" ; "a" } { "c" }) ] - location: 20 (remaining gas: 1039977.410 units remaining) - [ { "b" ; "a" } - (Pair { "b" ; "a" } { "c" }) ] + [ { "b" ; "a" } + (Pair { "b" ; "a" } { "c" }) ] - location: 21 (remaining gas: 1039977.395 units remaining) - [ (Pair { "b" ; "a" } { "c" }) ] + [ (Pair { "b" ; "a" } { "c" }) ] - location: 23 (remaining gas: 1039977.385 units remaining) - [ { "c" } ] + [ { "c" } ] - location: 21 (remaining gas: 1039977.355 units remaining) - [ { "b" ; "a" } - { "c" } ] + [ { "b" ; "a" } + { "c" } ] - location: 24 (remaining gas: 1039977.345 units remaining) - [ "b" - { "a" } - { "c" } ] + [ "b" + { "a" } + { "c" } ] - location: 26 (remaining gas: 1039977.335 units remaining) - [ { "a" } - "b" - { "c" } ] + [ { "a" } + "b" + { "c" } ] - location: 27 (remaining gas: 1039977.320 units remaining) - [ "b" - { "c" } ] + [ "b" + { "c" } ] - location: 29 (remaining gas: 1039977.305 units remaining) - [ { "b" ; "c" } ] + [ { "b" ; "c" } ] - location: 27 (remaining gas: 1039977.275 units remaining) - [ { "a" } - { "b" ; "c" } ] + [ { "a" } + { "b" ; "c" } ] - location: 30 (remaining gas: 1039977.260 units remaining) - [ (Pair { "a" } { "b" ; "c" }) ] + [ (Pair { "a" } { "b" ; "c" }) ] - location: 31 (remaining gas: 1039977.245 units remaining) - [ (Left (Pair { "a" } { "b" ; "c" })) ] + [ (Left (Pair { "a" } { "b" ; "c" })) ] - location: 24 (remaining gas: 1039977.230 units remaining) - [ (Left (Pair { "a" } { "b" ; "c" })) ] + [ (Left (Pair { "a" } { "b" ; "c" })) ] - location: 17 (remaining gas: 1039977.215 units remaining) - [ (Pair { "a" } { "b" ; "c" }) ] + [ (Pair { "a" } { "b" ; "c" }) ] - location: 19 (remaining gas: 1039977.205 units remaining) - [ (Pair { "a" } { "b" ; "c" }) - (Pair { "a" } { "b" ; "c" }) ] + [ (Pair { "a" } { "b" ; "c" }) + (Pair { "a" } { "b" ; "c" }) ] - location: 20 (remaining gas: 1039977.195 units remaining) - [ { "a" } - (Pair { "a" } { "b" ; "c" }) ] + [ { "a" } + (Pair { "a" } { "b" ; "c" }) ] - location: 21 (remaining gas: 1039977.180 units remaining) - [ (Pair { "a" } { "b" ; "c" }) ] + [ (Pair { "a" } { "b" ; "c" }) ] - location: 23 (remaining gas: 1039977.170 units remaining) - [ { "b" ; "c" } ] + [ { "b" ; "c" } ] - location: 21 (remaining gas: 1039977.140 units remaining) - [ { "a" } - { "b" ; "c" } ] + [ { "a" } + { "b" ; "c" } ] - location: 24 (remaining gas: 1039977.130 units remaining) - [ "a" - {} - { "b" ; "c" } ] + [ "a" + {} + { "b" ; "c" } ] - location: 26 (remaining gas: 1039977.120 units remaining) - [ {} - "a" - { "b" ; "c" } ] + [ {} + "a" + { "b" ; "c" } ] - location: 27 (remaining gas: 1039977.105 units remaining) - [ "a" - { "b" ; "c" } ] + [ "a" + { "b" ; "c" } ] - location: 29 (remaining gas: 1039977.090 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 27 (remaining gas: 1039977.060 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 30 (remaining gas: 1039977.045 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] - location: 31 (remaining gas: 1039977.030 units remaining) - [ (Left (Pair {} { "a" ; "b" ; "c" })) ] + [ (Left (Pair {} { "a" ; "b" ; "c" })) ] - location: 24 (remaining gas: 1039977.015 units remaining) - [ (Left (Pair {} { "a" ; "b" ; "c" })) ] + [ (Left (Pair {} { "a" ; "b" ; "c" })) ] - location: 17 (remaining gas: 1039977 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] - location: 19 (remaining gas: 1039976.990 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) - (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) + (Pair {} { "a" ; "b" ; "c" }) ] - location: 20 (remaining gas: 1039976.980 units remaining) - [ {} - (Pair {} { "a" ; "b" ; "c" }) ] + [ {} + (Pair {} { "a" ; "b" ; "c" }) ] - location: 21 (remaining gas: 1039976.965 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] - location: 23 (remaining gas: 1039976.955 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 21 (remaining gas: 1039976.925 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 24 (remaining gas: 1039976.915 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 35 (remaining gas: 1039976.900 units remaining) - [ (Right { "a" ; "b" ; "c" }) ] + [ (Right { "a" ; "b" ; "c" }) ] - location: 24 (remaining gas: 1039976.885 units remaining) - [ (Right { "a" ; "b" ; "c" }) ] + [ (Right { "a" ; "b" ; "c" }) ] - location: 17 (remaining gas: 1039976.870 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 41 (remaining gas: 1039976.855 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 43 (remaining gas: 1039976.840 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{}-{}].out" index a21e3c0f09..7f462a9179 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[loop_left.tz-{\"\"}-{}-{}].out" @@ -8,45 +8,45 @@ big_map diff trace - location: 9 (remaining gas: 1039978.082 units remaining) - [ (Pair {} { "" }) ] + [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039978.072 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039978.057 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 12 (remaining gas: 1039978.047 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039978.032 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] - location: 14 (remaining gas: 1039978.017 units remaining) - [ (Left (Pair {} {})) ] + [ (Left (Pair {} {})) ] - location: 17 (remaining gas: 1039978.017 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] - location: 19 (remaining gas: 1039978.007 units remaining) - [ (Pair {} {}) - (Pair {} {}) ] + [ (Pair {} {}) + (Pair {} {}) ] - location: 20 (remaining gas: 1039977.997 units remaining) - [ {} - (Pair {} {}) ] + [ {} + (Pair {} {}) ] - location: 21 (remaining gas: 1039977.982 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] - location: 23 (remaining gas: 1039977.972 units remaining) - [ {} ] + [ {} ] - location: 21 (remaining gas: 1039977.942 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 24 (remaining gas: 1039977.932 units remaining) - [ {} ] + [ {} ] - location: 35 (remaining gas: 1039977.917 units remaining) - [ (Right {}) ] + [ (Right {}) ] - location: 24 (remaining gas: 1039977.902 units remaining) - [ (Right {}) ] + [ (Right {}) ] - location: 17 (remaining gas: 1039977.887 units remaining) - [ {} ] + [ {} ] - location: 41 (remaining gas: 1039977.872 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 43 (remaining gas: 1039977.857 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out index 7ae28a043f..c82e1f9d78 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 ; Elt 3 4 }-{ Elt 0 0 ; Elt 3 4 }].out @@ -8,12 +8,12 @@ big_map diff trace - location: 11 (remaining gas: 1039993.699 units remaining) - [ (Pair { Elt 0 0 ; Elt 3 4 } {}) ] + [ (Pair { Elt 0 0 ; Elt 3 4 } {}) ] - location: 11 (remaining gas: 1039993.689 units remaining) - [ { Elt 0 0 ; Elt 3 4 } ] + [ { Elt 0 0 ; Elt 3 4 } ] - location: 12 (remaining gas: 1039993.674 units remaining) - [ {} - { Elt 0 0 ; Elt 3 4 } ] + [ {} + { Elt 0 0 ; Elt 3 4 } ] - location: 14 (remaining gas: 1039993.659 units remaining) - [ (Pair {} { Elt 0 0 ; Elt 3 4 }) ] + [ (Pair {} { Elt 0 0 ; Elt 3 4 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out index f85745c829..f12c37d60a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 0 }-{ Elt 0 0 }].out @@ -8,12 +8,12 @@ big_map diff trace - location: 11 (remaining gas: 1039994.154 units remaining) - [ (Pair { Elt 0 0 } {}) ] + [ (Pair { Elt 0 0 } {}) ] - location: 11 (remaining gas: 1039994.144 units remaining) - [ { Elt 0 0 } ] + [ { Elt 0 0 } ] - location: 12 (remaining gas: 1039994.129 units remaining) - [ {} - { Elt 0 0 } ] + [ {} + { Elt 0 0 } ] - location: 14 (remaining gas: 1039994.114 units remaining) - [ (Pair {} { Elt 0 0 }) ] + [ (Pair {} { Elt 0 0 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out index 230c2e7ed1..d73d851b21 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_id.tz-{}-{ Elt 0 1 }-{ Elt 0 1 }].out @@ -8,12 +8,12 @@ big_map diff trace - location: 11 (remaining gas: 1039994.154 units remaining) - [ (Pair { Elt 0 1 } {}) ] + [ (Pair { Elt 0 1 } {}) ] - location: 11 (remaining gas: 1039994.144 units remaining) - [ { Elt 0 1 } ] + [ { Elt 0 1 } ] - location: 12 (remaining gas: 1039994.129 units remaining) - [ {} - { Elt 0 1 } ] + [ {} + { Elt 0 1 } ] - location: 14 (remaining gas: 1039994.114 units remaining) - [ (Pair {} { Elt 0 1 }) ] + [ (Pair {} { Elt 0 1 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out index 4cb25109ad..60478164d7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 0 100 ; Elt 2 100 }-(Pair 2 200)].out @@ -8,145 +8,145 @@ big_map diff trace - location: 11 (remaining gas: 1039978.509 units remaining) - [ (Pair { Elt 0 100 ; Elt 2 100 } 0 0) ] + [ (Pair { Elt 0 100 ; Elt 2 100 } 0 0) ] - location: 11 (remaining gas: 1039978.499 units remaining) - [ { Elt 0 100 ; Elt 2 100 } ] + [ { Elt 0 100 ; Elt 2 100 } ] - location: 12 (remaining gas: 1039978.489 units remaining) - [ 0 - { Elt 0 100 ; Elt 2 100 } ] + [ 0 + { Elt 0 100 ; Elt 2 100 } ] - location: 15 (remaining gas: 1039978.479 units remaining) - [ 0 - 0 - { Elt 0 100 ; Elt 2 100 } ] + [ 0 + 0 + { Elt 0 100 ; Elt 2 100 } ] - location: 18 (remaining gas: 1039978.464 units remaining) - [ (Pair 0 0) - { Elt 0 100 ; Elt 2 100 } ] + [ (Pair 0 0) + { Elt 0 100 ; Elt 2 100 } ] - location: 19 (remaining gas: 1039978.454 units remaining) - [ { Elt 0 100 ; Elt 2 100 } - (Pair 0 0) ] + [ { Elt 0 100 ; Elt 2 100 } + (Pair 0 0) ] - location: 20 (remaining gas: 1039978.454 units remaining) - [ (Pair 0 100) - (Pair 0 0) ] + [ (Pair 0 100) + (Pair 0 0) ] - location: 22 (remaining gas: 1039978.439 units remaining) - [ (Pair 0 0) ] + [ (Pair 0 0) ] - location: 24 (remaining gas: 1039978.429 units remaining) - [ (Pair 0 0) - (Pair 0 0) ] + [ (Pair 0 0) + (Pair 0 0) ] - location: 25 (remaining gas: 1039978.419 units remaining) - [ 0 - (Pair 0 0) ] + [ 0 + (Pair 0 0) ] - location: 26 (remaining gas: 1039978.404 units remaining) - [ (Pair 0 0) ] + [ (Pair 0 0) ] - location: 28 (remaining gas: 1039978.394 units remaining) - [ 0 ] + [ 0 ] - location: 26 (remaining gas: 1039978.364 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 22 (remaining gas: 1039978.334 units remaining) - [ (Pair 0 100) - 0 - 0 ] + [ (Pair 0 100) + 0 + 0 ] - location: 29 (remaining gas: 1039978.324 units remaining) - [ (Pair 0 100) - (Pair 0 100) - 0 - 0 ] + [ (Pair 0 100) + (Pair 0 100) + 0 + 0 ] - location: 30 (remaining gas: 1039978.309 units remaining) - [ (Pair 0 100) - 0 - 0 ] + [ (Pair 0 100) + 0 + 0 ] - location: 32 (remaining gas: 1039978.299 units remaining) - [ 0 - 0 - 0 ] + [ 0 + 0 + 0 ] - location: 33 (remaining gas: 1039978.244 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 30 (remaining gas: 1039978.214 units remaining) - [ (Pair 0 100) - 0 - 0 ] + [ (Pair 0 100) + 0 + 0 ] - location: 34 (remaining gas: 1039978.204 units remaining) - [ 0 - (Pair 0 100) - 0 ] + [ 0 + (Pair 0 100) + 0 ] - location: 35 (remaining gas: 1039978.189 units remaining) - [ (Pair 0 100) - 0 ] + [ (Pair 0 100) + 0 ] - location: 37 (remaining gas: 1039978.179 units remaining) - [ 100 - 0 ] + [ 100 + 0 ] - location: 38 (remaining gas: 1039978.124 units remaining) - [ 100 ] + [ 100 ] - location: 35 (remaining gas: 1039978.094 units remaining) - [ 0 - 100 ] + [ 0 + 100 ] - location: 39 (remaining gas: 1039978.079 units remaining) - [ (Pair 0 100) ] + [ (Pair 0 100) ] - location: 20 (remaining gas: 1039978.064 units remaining) - [ (Pair 2 100) - (Pair 0 100) ] + [ (Pair 2 100) + (Pair 0 100) ] - location: 22 (remaining gas: 1039978.049 units remaining) - [ (Pair 0 100) ] + [ (Pair 0 100) ] - location: 24 (remaining gas: 1039978.039 units remaining) - [ (Pair 0 100) - (Pair 0 100) ] + [ (Pair 0 100) + (Pair 0 100) ] - location: 25 (remaining gas: 1039978.029 units remaining) - [ 0 - (Pair 0 100) ] + [ 0 + (Pair 0 100) ] - location: 26 (remaining gas: 1039978.014 units remaining) - [ (Pair 0 100) ] + [ (Pair 0 100) ] - location: 28 (remaining gas: 1039978.004 units remaining) - [ 100 ] + [ 100 ] - location: 26 (remaining gas: 1039977.974 units remaining) - [ 0 - 100 ] + [ 0 + 100 ] - location: 22 (remaining gas: 1039977.944 units remaining) - [ (Pair 2 100) - 0 - 100 ] + [ (Pair 2 100) + 0 + 100 ] - location: 29 (remaining gas: 1039977.934 units remaining) - [ (Pair 2 100) - (Pair 2 100) - 0 - 100 ] + [ (Pair 2 100) + (Pair 2 100) + 0 + 100 ] - location: 30 (remaining gas: 1039977.919 units remaining) - [ (Pair 2 100) - 0 - 100 ] + [ (Pair 2 100) + 0 + 100 ] - location: 32 (remaining gas: 1039977.909 units remaining) - [ 2 - 0 - 100 ] + [ 2 + 0 + 100 ] - location: 33 (remaining gas: 1039977.854 units remaining) - [ 2 - 100 ] + [ 2 + 100 ] - location: 30 (remaining gas: 1039977.824 units remaining) - [ (Pair 2 100) - 2 - 100 ] + [ (Pair 2 100) + 2 + 100 ] - location: 34 (remaining gas: 1039977.814 units remaining) - [ 2 - (Pair 2 100) - 100 ] + [ 2 + (Pair 2 100) + 100 ] - location: 35 (remaining gas: 1039977.799 units remaining) - [ (Pair 2 100) - 100 ] + [ (Pair 2 100) + 100 ] - location: 37 (remaining gas: 1039977.789 units remaining) - [ 100 - 100 ] + [ 100 + 100 ] - location: 38 (remaining gas: 1039977.734 units remaining) - [ 200 ] + [ 200 ] - location: 35 (remaining gas: 1039977.704 units remaining) - [ 2 - 200 ] + [ 2 + 200 ] - location: 39 (remaining gas: 1039977.689 units remaining) - [ (Pair 2 200) ] + [ (Pair 2 200) ] - location: 20 (remaining gas: 1039977.674 units remaining) - [ (Pair 2 200) ] + [ (Pair 2 200) ] - location: 40 (remaining gas: 1039977.659 units remaining) - [ {} - (Pair 2 200) ] + [ {} + (Pair 2 200) ] - location: 42 (remaining gas: 1039977.644 units remaining) - [ (Pair {} 2 200) ] + [ (Pair {} 2 200) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out index 1150a5a6e6..0935fc6df6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_iter.tz-(Pair 0 0)-{ Elt 1 1 ; Elt 2 100 }-(Pair 3 101)].out @@ -8,145 +8,145 @@ big_map diff trace - location: 11 (remaining gas: 1039978.509 units remaining) - [ (Pair { Elt 1 1 ; Elt 2 100 } 0 0) ] + [ (Pair { Elt 1 1 ; Elt 2 100 } 0 0) ] - location: 11 (remaining gas: 1039978.499 units remaining) - [ { Elt 1 1 ; Elt 2 100 } ] + [ { Elt 1 1 ; Elt 2 100 } ] - location: 12 (remaining gas: 1039978.489 units remaining) - [ 0 - { Elt 1 1 ; Elt 2 100 } ] + [ 0 + { Elt 1 1 ; Elt 2 100 } ] - location: 15 (remaining gas: 1039978.479 units remaining) - [ 0 - 0 - { Elt 1 1 ; Elt 2 100 } ] + [ 0 + 0 + { Elt 1 1 ; Elt 2 100 } ] - location: 18 (remaining gas: 1039978.464 units remaining) - [ (Pair 0 0) - { Elt 1 1 ; Elt 2 100 } ] + [ (Pair 0 0) + { Elt 1 1 ; Elt 2 100 } ] - location: 19 (remaining gas: 1039978.454 units remaining) - [ { Elt 1 1 ; Elt 2 100 } - (Pair 0 0) ] + [ { Elt 1 1 ; Elt 2 100 } + (Pair 0 0) ] - location: 20 (remaining gas: 1039978.454 units remaining) - [ (Pair 1 1) - (Pair 0 0) ] + [ (Pair 1 1) + (Pair 0 0) ] - location: 22 (remaining gas: 1039978.439 units remaining) - [ (Pair 0 0) ] + [ (Pair 0 0) ] - location: 24 (remaining gas: 1039978.429 units remaining) - [ (Pair 0 0) - (Pair 0 0) ] + [ (Pair 0 0) + (Pair 0 0) ] - location: 25 (remaining gas: 1039978.419 units remaining) - [ 0 - (Pair 0 0) ] + [ 0 + (Pair 0 0) ] - location: 26 (remaining gas: 1039978.404 units remaining) - [ (Pair 0 0) ] + [ (Pair 0 0) ] - location: 28 (remaining gas: 1039978.394 units remaining) - [ 0 ] + [ 0 ] - location: 26 (remaining gas: 1039978.364 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 22 (remaining gas: 1039978.334 units remaining) - [ (Pair 1 1) - 0 - 0 ] + [ (Pair 1 1) + 0 + 0 ] - location: 29 (remaining gas: 1039978.324 units remaining) - [ (Pair 1 1) - (Pair 1 1) - 0 - 0 ] + [ (Pair 1 1) + (Pair 1 1) + 0 + 0 ] - location: 30 (remaining gas: 1039978.309 units remaining) - [ (Pair 1 1) - 0 - 0 ] + [ (Pair 1 1) + 0 + 0 ] - location: 32 (remaining gas: 1039978.299 units remaining) - [ 1 - 0 - 0 ] + [ 1 + 0 + 0 ] - location: 33 (remaining gas: 1039978.244 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 30 (remaining gas: 1039978.214 units remaining) - [ (Pair 1 1) - 1 - 0 ] + [ (Pair 1 1) + 1 + 0 ] - location: 34 (remaining gas: 1039978.204 units remaining) - [ 1 - (Pair 1 1) - 0 ] + [ 1 + (Pair 1 1) + 0 ] - location: 35 (remaining gas: 1039978.189 units remaining) - [ (Pair 1 1) - 0 ] + [ (Pair 1 1) + 0 ] - location: 37 (remaining gas: 1039978.179 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 38 (remaining gas: 1039978.124 units remaining) - [ 1 ] + [ 1 ] - location: 35 (remaining gas: 1039978.094 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 39 (remaining gas: 1039978.079 units remaining) - [ (Pair 1 1) ] + [ (Pair 1 1) ] - location: 20 (remaining gas: 1039978.064 units remaining) - [ (Pair 2 100) - (Pair 1 1) ] + [ (Pair 2 100) + (Pair 1 1) ] - location: 22 (remaining gas: 1039978.049 units remaining) - [ (Pair 1 1) ] + [ (Pair 1 1) ] - location: 24 (remaining gas: 1039978.039 units remaining) - [ (Pair 1 1) - (Pair 1 1) ] + [ (Pair 1 1) + (Pair 1 1) ] - location: 25 (remaining gas: 1039978.029 units remaining) - [ 1 - (Pair 1 1) ] + [ 1 + (Pair 1 1) ] - location: 26 (remaining gas: 1039978.014 units remaining) - [ (Pair 1 1) ] + [ (Pair 1 1) ] - location: 28 (remaining gas: 1039978.004 units remaining) - [ 1 ] + [ 1 ] - location: 26 (remaining gas: 1039977.974 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 22 (remaining gas: 1039977.944 units remaining) - [ (Pair 2 100) - 1 - 1 ] + [ (Pair 2 100) + 1 + 1 ] - location: 29 (remaining gas: 1039977.934 units remaining) - [ (Pair 2 100) - (Pair 2 100) - 1 - 1 ] + [ (Pair 2 100) + (Pair 2 100) + 1 + 1 ] - location: 30 (remaining gas: 1039977.919 units remaining) - [ (Pair 2 100) - 1 - 1 ] + [ (Pair 2 100) + 1 + 1 ] - location: 32 (remaining gas: 1039977.909 units remaining) - [ 2 - 1 - 1 ] + [ 2 + 1 + 1 ] - location: 33 (remaining gas: 1039977.854 units remaining) - [ 3 - 1 ] + [ 3 + 1 ] - location: 30 (remaining gas: 1039977.824 units remaining) - [ (Pair 2 100) - 3 - 1 ] + [ (Pair 2 100) + 3 + 1 ] - location: 34 (remaining gas: 1039977.814 units remaining) - [ 3 - (Pair 2 100) - 1 ] + [ 3 + (Pair 2 100) + 1 ] - location: 35 (remaining gas: 1039977.799 units remaining) - [ (Pair 2 100) - 1 ] + [ (Pair 2 100) + 1 ] - location: 37 (remaining gas: 1039977.789 units remaining) - [ 100 - 1 ] + [ 100 + 1 ] - location: 38 (remaining gas: 1039977.734 units remaining) - [ 101 ] + [ 101 ] - location: 35 (remaining gas: 1039977.704 units remaining) - [ 3 - 101 ] + [ 3 + 101 ] - location: 39 (remaining gas: 1039977.689 units remaining) - [ (Pair 3 101) ] + [ (Pair 3 101) ] - location: 20 (remaining gas: 1039977.674 units remaining) - [ (Pair 3 101) ] + [ (Pair 3 101) ] - location: 40 (remaining gas: 1039977.659 units remaining) - [ {} - (Pair 3 101) ] + [ {} + (Pair 3 101) ] - location: 42 (remaining gas: 1039977.644 units remaining) - [ (Pair {} 3 101) ] + [ (Pair {} 3 101) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"bar\" 5 ; Elt \"foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"bar\" 5 ; Elt \"foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" index 87857063f8..8cfcbddf28 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"bar\" 5 ; Elt \"foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"bar\" 5 ; Elt \"foo\" 1 }-15-{ Elt \"bar\".12b9d73d5a.out" @@ -8,61 +8,61 @@ big_map diff trace - location: 9 (remaining gas: 1039988.041 units remaining) - [ (Pair 15 { Elt "bar" 5 ; Elt "foo" 1 }) ] + [ (Pair 15 { Elt "bar" 5 ; Elt "foo" 1 }) ] - location: 9 (remaining gas: 1039988.031 units remaining) - [ 15 - { Elt "bar" 5 ; Elt "foo" 1 } ] + [ 15 + { Elt "bar" 5 ; Elt "foo" 1 } ] - location: 10 (remaining gas: 1039988.021 units remaining) - [ { Elt "bar" 5 ; Elt "foo" 1 } - 15 ] + [ { Elt "bar" 5 ; Elt "foo" 1 } + 15 ] - location: 11 (remaining gas: 1039988.021 units remaining) - [ (Pair "bar" 5) - 15 ] + [ (Pair "bar" 5) + 15 ] - location: 13 (remaining gas: 1039988.011 units remaining) - [ 5 - 15 ] + [ 5 + 15 ] - location: 14 (remaining gas: 1039987.996 units remaining) - [ 15 ] + [ 15 ] - location: 16 (remaining gas: 1039987.986 units remaining) - [ 15 - 15 ] + [ 15 + 15 ] - location: 14 (remaining gas: 1039987.956 units remaining) - [ 5 - 15 - 15 ] + [ 5 + 15 + 15 ] - location: 17 (remaining gas: 1039987.901 units remaining) - [ 20 - 15 ] + [ 20 + 15 ] - location: 11 (remaining gas: 1039987.886 units remaining) - [ (Pair "foo" 1) - 15 ] + [ (Pair "foo" 1) + 15 ] - location: 13 (remaining gas: 1039987.876 units remaining) - [ 1 - 15 ] + [ 1 + 15 ] - location: 14 (remaining gas: 1039987.861 units remaining) - [ 15 ] + [ 15 ] - location: 16 (remaining gas: 1039987.851 units remaining) - [ 15 - 15 ] + [ 15 + 15 ] - location: 14 (remaining gas: 1039987.821 units remaining) - [ 1 - 15 - 15 ] + [ 1 + 15 + 15 ] - location: 17 (remaining gas: 1039987.766 units remaining) - [ 16 - 15 ] + [ 16 + 15 ] - location: 11 (remaining gas: 1039987.751 units remaining) - [ { Elt "bar" 20 ; Elt "foo" 16 } - 15 ] + [ { Elt "bar" 20 ; Elt "foo" 16 } + 15 ] - location: 18 (remaining gas: 1039987.736 units remaining) - [ 15 ] + [ 15 ] - location: 20 (remaining gas: 1039987.726 units remaining) [ ] - location: 18 (remaining gas: 1039987.696 units remaining) - [ { Elt "bar" 20 ; Elt "foo" 16 } ] + [ { Elt "bar" 20 ; Elt "foo" 16 } ] - location: 21 (remaining gas: 1039987.681 units remaining) - [ {} - { Elt "bar" 20 ; Elt "foo" 16 } ] + [ {} + { Elt "bar" 20 ; Elt "foo" 16 } ] - location: 23 (remaining gas: 1039987.666 units remaining) - [ (Pair {} { Elt "bar" 20 ; Elt "foo" 16 }) ] + [ (Pair {} { Elt "bar" 20 ; Elt "foo" 16 }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" index 655c363584..5897851b7f 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{ Elt \"foo\" 1 }-10-{ Elt \"foo\" 11 }].out" @@ -8,43 +8,43 @@ big_map diff trace - location: 9 (remaining gas: 1039988.540 units remaining) - [ (Pair 10 { Elt "foo" 1 }) ] + [ (Pair 10 { Elt "foo" 1 }) ] - location: 9 (remaining gas: 1039988.530 units remaining) - [ 10 - { Elt "foo" 1 } ] + [ 10 + { Elt "foo" 1 } ] - location: 10 (remaining gas: 1039988.520 units remaining) - [ { Elt "foo" 1 } - 10 ] + [ { Elt "foo" 1 } + 10 ] - location: 11 (remaining gas: 1039988.520 units remaining) - [ (Pair "foo" 1) - 10 ] + [ (Pair "foo" 1) + 10 ] - location: 13 (remaining gas: 1039988.510 units remaining) - [ 1 - 10 ] + [ 1 + 10 ] - location: 14 (remaining gas: 1039988.495 units remaining) - [ 10 ] + [ 10 ] - location: 16 (remaining gas: 1039988.485 units remaining) - [ 10 - 10 ] + [ 10 + 10 ] - location: 14 (remaining gas: 1039988.455 units remaining) - [ 1 - 10 - 10 ] + [ 1 + 10 + 10 ] - location: 17 (remaining gas: 1039988.400 units remaining) - [ 11 - 10 ] + [ 11 + 10 ] - location: 11 (remaining gas: 1039988.385 units remaining) - [ { Elt "foo" 11 } - 10 ] + [ { Elt "foo" 11 } + 10 ] - location: 18 (remaining gas: 1039988.370 units remaining) - [ 10 ] + [ 10 ] - location: 20 (remaining gas: 1039988.360 units remaining) [ ] - location: 18 (remaining gas: 1039988.330 units remaining) - [ { Elt "foo" 11 } ] + [ { Elt "foo" 11 } ] - location: 21 (remaining gas: 1039988.315 units remaining) - [ {} - { Elt "foo" 11 } ] + [ {} + { Elt "foo" 11 } ] - location: 23 (remaining gas: 1039988.300 units remaining) - [ (Pair {} { Elt "foo" 11 }) ] + [ (Pair {} { Elt "foo" 11 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{}-10-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{}-10-{}].out index f5c60c85a4..0ca64ebf5d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{}-10-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_map.tz-{}-10-{}].out @@ -8,25 +8,25 @@ big_map diff trace - location: 9 (remaining gas: 1039988.934 units remaining) - [ (Pair 10 {}) ] + [ (Pair 10 {}) ] - location: 9 (remaining gas: 1039988.924 units remaining) - [ 10 - {} ] + [ 10 + {} ] - location: 10 (remaining gas: 1039988.914 units remaining) - [ {} - 10 ] + [ {} + 10 ] - location: 11 (remaining gas: 1039988.914 units remaining) - [ {} - 10 ] + [ {} + 10 ] - location: 18 (remaining gas: 1039988.899 units remaining) - [ 10 ] + [ 10 ] - location: 20 (remaining gas: 1039988.889 units remaining) [ ] - location: 18 (remaining gas: 1039988.859 units remaining) - [ {} ] + [ {} ] - location: 21 (remaining gas: 1039988.844 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 23 (remaining gas: 1039988.829 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair { Elt 0 .7396e5f090.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair { Elt 0 .7396e5f090.out index 7c19df198c..c5f013f840 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair { Elt 0 .7396e5f090.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 0 1 } None)-1-(Pair { Elt 0 .7396e5f090.out @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039988.154 units remaining) - [ (Pair 1 { Elt 0 1 } None) ] + [ (Pair 1 { Elt 0 1 } None) ] - location: 12 (remaining gas: 1039988.144 units remaining) - [ 1 - (Pair { Elt 0 1 } None) ] + [ 1 + (Pair { Elt 0 1 } None) ] - location: 13 (remaining gas: 1039988.129 units remaining) - [ (Pair { Elt 0 1 } None) ] + [ (Pair { Elt 0 1 } None) ] - location: 15 (remaining gas: 1039988.119 units remaining) - [ { Elt 0 1 } ] + [ { Elt 0 1 } ] - location: 16 (remaining gas: 1039988.109 units remaining) - [ { Elt 0 1 } - { Elt 0 1 } ] + [ { Elt 0 1 } + { Elt 0 1 } ] - location: 13 (remaining gas: 1039988.079 units remaining) - [ 1 - { Elt 0 1 } - { Elt 0 1 } ] + [ 1 + { Elt 0 1 } + { Elt 0 1 } ] - location: 17 (remaining gas: 1039987.929 units remaining) - [ False - { Elt 0 1 } ] + [ False + { Elt 0 1 } ] - location: 18 (remaining gas: 1039987.914 units remaining) - [ (Some False) - { Elt 0 1 } ] + [ (Some False) + { Elt 0 1 } ] - location: 19 (remaining gas: 1039987.904 units remaining) - [ { Elt 0 1 } - (Some False) ] + [ { Elt 0 1 } + (Some False) ] - location: 20 (remaining gas: 1039987.889 units remaining) - [ (Pair { Elt 0 1 } (Some False)) ] + [ (Pair { Elt 0 1 } (Some False)) ] - location: 21 (remaining gas: 1039987.874 units remaining) - [ {} - (Pair { Elt 0 1 } (Some False)) ] + [ {} + (Pair { Elt 0 1 } (Some False)) ] - location: 23 (remaining gas: 1039987.859 units remaining) - [ (Pair {} { Elt 0 1 } (Some False)) ] + [ (Pair {} { Elt 0 1 } (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out index 112cc66091..0ae9faf00e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 0 } None)-1-(Pair { Elt 1 .cef8ce601a.out @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039988.154 units remaining) - [ (Pair 1 { Elt 1 0 } None) ] + [ (Pair 1 { Elt 1 0 } None) ] - location: 12 (remaining gas: 1039988.144 units remaining) - [ 1 - (Pair { Elt 1 0 } None) ] + [ 1 + (Pair { Elt 1 0 } None) ] - location: 13 (remaining gas: 1039988.129 units remaining) - [ (Pair { Elt 1 0 } None) ] + [ (Pair { Elt 1 0 } None) ] - location: 15 (remaining gas: 1039988.119 units remaining) - [ { Elt 1 0 } ] + [ { Elt 1 0 } ] - location: 16 (remaining gas: 1039988.109 units remaining) - [ { Elt 1 0 } - { Elt 1 0 } ] + [ { Elt 1 0 } + { Elt 1 0 } ] - location: 13 (remaining gas: 1039988.079 units remaining) - [ 1 - { Elt 1 0 } - { Elt 1 0 } ] + [ 1 + { Elt 1 0 } + { Elt 1 0 } ] - location: 17 (remaining gas: 1039987.929 units remaining) - [ True - { Elt 1 0 } ] + [ True + { Elt 1 0 } ] - location: 18 (remaining gas: 1039987.914 units remaining) - [ (Some True) - { Elt 1 0 } ] + [ (Some True) + { Elt 1 0 } ] - location: 19 (remaining gas: 1039987.904 units remaining) - [ { Elt 1 0 } - (Some True) ] + [ { Elt 1 0 } + (Some True) ] - location: 20 (remaining gas: 1039987.889 units remaining) - [ (Pair { Elt 1 0 } (Some True)) ] + [ (Pair { Elt 1 0 } (Some True)) ] - location: 21 (remaining gas: 1039987.874 units remaining) - [ {} - (Pair { Elt 1 0 } (Some True)) ] + [ {} + (Pair { Elt 1 0 } (Some True)) ] - location: 23 (remaining gas: 1039987.859 units remaining) - [ (Pair {} { Elt 1 0 } (Some True)) ] + [ (Pair {} { Elt 1 0 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out index d772844354..fbfcb4b062 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-1-(Pa.1a55a5bfa5.out @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039987.699 units remaining) - [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 1 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039987.689 units remaining) - [ 1 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 1 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039987.674 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039987.664 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039987.654 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039987.624 units remaining) - [ 1 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 1 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039987.439 units remaining) - [ True - { Elt 1 4 ; Elt 2 11 } ] + [ True + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039987.424 units remaining) - [ (Some True) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some True) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039987.414 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some True) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some True) ] - location: 20 (remaining gas: 1039987.399 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 21 (remaining gas: 1039987.384 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 23 (remaining gas: 1039987.369 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out index 7be6a7ac23..258a7023a4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-2-(Pa.89cc24d256.out @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039987.699 units remaining) - [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 2 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039987.689 units remaining) - [ 2 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 2 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039987.674 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039987.664 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039987.654 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039987.624 units remaining) - [ 2 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 2 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039987.439 units remaining) - [ True - { Elt 1 4 ; Elt 2 11 } ] + [ True + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039987.424 units remaining) - [ (Some True) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some True) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039987.414 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some True) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some True) ] - location: 20 (remaining gas: 1039987.399 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 21 (remaining gas: 1039987.384 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some True)) ] - location: 23 (remaining gas: 1039987.369 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out index 30c9112baa..a4e8a62b75 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair { Elt 1 4 ; Elt 2 11 } None)-3-(Pa.2fba3165c0.out @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039987.699 units remaining) - [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair 3 { Elt 1 4 ; Elt 2 11 } None) ] - location: 12 (remaining gas: 1039987.689 units remaining) - [ 3 - (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ 3 + (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 13 (remaining gas: 1039987.674 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } None) ] - location: 15 (remaining gas: 1039987.664 units remaining) - [ { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } ] - location: 16 (remaining gas: 1039987.654 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 13 (remaining gas: 1039987.624 units remaining) - [ 3 - { Elt 1 4 ; Elt 2 11 } - { Elt 1 4 ; Elt 2 11 } ] + [ 3 + { Elt 1 4 ; Elt 2 11 } + { Elt 1 4 ; Elt 2 11 } ] - location: 17 (remaining gas: 1039987.439 units remaining) - [ False - { Elt 1 4 ; Elt 2 11 } ] + [ False + { Elt 1 4 ; Elt 2 11 } ] - location: 18 (remaining gas: 1039987.424 units remaining) - [ (Some False) - { Elt 1 4 ; Elt 2 11 } ] + [ (Some False) + { Elt 1 4 ; Elt 2 11 } ] - location: 19 (remaining gas: 1039987.414 units remaining) - [ { Elt 1 4 ; Elt 2 11 } - (Some False) ] + [ { Elt 1 4 ; Elt 2 11 } + (Some False) ] - location: 20 (remaining gas: 1039987.399 units remaining) - [ (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] - location: 21 (remaining gas: 1039987.384 units remaining) - [ {} - (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ {} + (Pair { Elt 1 4 ; Elt 2 11 } (Some False)) ] - location: 23 (remaining gas: 1039987.369 units remaining) - [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some False)) ] + [ (Pair {} { Elt 1 4 ; Elt 2 11 } (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair {} None)-1-(Pair {} (Some False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair {} None)-1-(Pair {} (Some False))].out index 8e3894a348..6d5c95773c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair {} None)-1-(Pair {} (Some False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_nat.tz-(Pair {} None)-1-(Pair {} (Some False))].out @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039988.504 units remaining) - [ (Pair 1 {} None) ] + [ (Pair 1 {} None) ] - location: 12 (remaining gas: 1039988.494 units remaining) - [ 1 - (Pair {} None) ] + [ 1 + (Pair {} None) ] - location: 13 (remaining gas: 1039988.479 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039988.469 units remaining) - [ {} ] + [ {} ] - location: 16 (remaining gas: 1039988.459 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039988.429 units remaining) - [ 1 - {} - {} ] + [ 1 + {} + {} ] - location: 17 (remaining gas: 1039988.314 units remaining) - [ False - {} ] + [ False + {} ] - location: 18 (remaining gas: 1039988.299 units remaining) - [ (Some False) - {} ] + [ (Some False) + {} ] - location: 19 (remaining gas: 1039988.289 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 20 (remaining gas: 1039988.274 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 21 (remaining gas: 1039988.259 units remaining) - [ {} - (Pair {} (Some False)) ] + [ {} + (Pair {} (Some False)) ] - location: 23 (remaining gas: 1039988.244 units remaining) - [ (Pair {} {} (Some False)) ] + [ (Pair {} {} (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" index c90067d0fb..23c7eb8734 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .6d625e02a5.out" @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039987.567 units remaining) - [ (Pair "bar" { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair "bar" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039987.557 units remaining) - [ "bar" - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ "bar" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039987.542 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039987.532 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039987.522 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039987.492 units remaining) - [ "bar" - { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ "bar" + { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039987.307 units remaining) - [ True - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ True + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 18 (remaining gas: 1039987.292 units remaining) - [ (Some True) - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ (Some True) + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 19 (remaining gas: 1039987.282 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - (Some True) ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + (Some True) ] - location: 20 (remaining gas: 1039987.267 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] - location: 21 (remaining gas: 1039987.252 units remaining) - [ {} - (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ {} + (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] - location: 23 (remaining gas: 1039987.237 units remaining) - [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" index 1711e929a0..281368a764 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .a7e3837a82.out" @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039987.567 units remaining) - [ (Pair "foo" { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair "foo" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039987.557 units remaining) - [ "foo" - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ "foo" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039987.542 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039987.532 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039987.522 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039987.492 units remaining) - [ "foo" - { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ "foo" + { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039987.307 units remaining) - [ True - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ True + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 18 (remaining gas: 1039987.292 units remaining) - [ (Some True) - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ (Some True) + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 19 (remaining gas: 1039987.282 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - (Some True) ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + (Some True) ] - location: 20 (remaining gas: 1039987.267 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] - location: 21 (remaining gas: 1039987.252 units remaining) - [ {} - (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ {} + (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] - location: 23 (remaining gas: 1039987.237 units remaining) - [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] + [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" index aa11b1f42f..8a566fac9d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"bar\" 4 ; Elt \"foo\" 11 } .c7716fe79e.out" @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039987.567 units remaining) - [ (Pair "baz" { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair "baz" { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 12 (remaining gas: 1039987.557 units remaining) - [ "baz" - (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ "baz" + (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 13 (remaining gas: 1039987.542 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } None) ] - location: 15 (remaining gas: 1039987.532 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 16 (remaining gas: 1039987.522 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 13 (remaining gas: 1039987.492 units remaining) - [ "baz" - { Elt "bar" 4 ; Elt "foo" 11 } - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ "baz" + { Elt "bar" 4 ; Elt "foo" 11 } + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 17 (remaining gas: 1039987.307 units remaining) - [ False - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ False + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 18 (remaining gas: 1039987.292 units remaining) - [ (Some False) - { Elt "bar" 4 ; Elt "foo" 11 } ] + [ (Some False) + { Elt "bar" 4 ; Elt "foo" 11 } ] - location: 19 (remaining gas: 1039987.282 units remaining) - [ { Elt "bar" 4 ; Elt "foo" 11 } - (Some False) ] + [ { Elt "bar" 4 ; Elt "foo" 11 } + (Some False) ] - location: 20 (remaining gas: 1039987.267 units remaining) - [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] + [ (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] - location: 21 (remaining gas: 1039987.252 units remaining) - [ {} - (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] + [ {} + (Pair { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] - location: 23 (remaining gas: 1039987.237 units remaining) - [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] + [ (Pair {} { Elt "bar" 4 ; Elt "foo" 11 } (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" index f027be34db..9ecfc7adbf 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 0 } None)-\"foo\"-(Pa.7861a3b1e2.out" @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039988.066 units remaining) - [ (Pair "foo" { Elt "foo" 0 } None) ] + [ (Pair "foo" { Elt "foo" 0 } None) ] - location: 12 (remaining gas: 1039988.056 units remaining) - [ "foo" - (Pair { Elt "foo" 0 } None) ] + [ "foo" + (Pair { Elt "foo" 0 } None) ] - location: 13 (remaining gas: 1039988.041 units remaining) - [ (Pair { Elt "foo" 0 } None) ] + [ (Pair { Elt "foo" 0 } None) ] - location: 15 (remaining gas: 1039988.031 units remaining) - [ { Elt "foo" 0 } ] + [ { Elt "foo" 0 } ] - location: 16 (remaining gas: 1039988.021 units remaining) - [ { Elt "foo" 0 } - { Elt "foo" 0 } ] + [ { Elt "foo" 0 } + { Elt "foo" 0 } ] - location: 13 (remaining gas: 1039987.991 units remaining) - [ "foo" - { Elt "foo" 0 } - { Elt "foo" 0 } ] + [ "foo" + { Elt "foo" 0 } + { Elt "foo" 0 } ] - location: 17 (remaining gas: 1039987.841 units remaining) - [ True - { Elt "foo" 0 } ] + [ True + { Elt "foo" 0 } ] - location: 18 (remaining gas: 1039987.826 units remaining) - [ (Some True) - { Elt "foo" 0 } ] + [ (Some True) + { Elt "foo" 0 } ] - location: 19 (remaining gas: 1039987.816 units remaining) - [ { Elt "foo" 0 } - (Some True) ] + [ { Elt "foo" 0 } + (Some True) ] - location: 20 (remaining gas: 1039987.801 units remaining) - [ (Pair { Elt "foo" 0 } (Some True)) ] + [ (Pair { Elt "foo" 0 } (Some True)) ] - location: 21 (remaining gas: 1039987.786 units remaining) - [ {} - (Pair { Elt "foo" 0 } (Some True)) ] + [ {} + (Pair { Elt "foo" 0 } (Some True)) ] - location: 23 (remaining gas: 1039987.771 units remaining) - [ (Pair {} { Elt "foo" 0 } (Some True)) ] + [ (Pair {} { Elt "foo" 0 } (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" index 51ff7af992..6a2472436b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair { Elt \"foo\" 1 } None)-\"bar\"-(Pa.fa8366e8a8.out" @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039988.066 units remaining) - [ (Pair "bar" { Elt "foo" 1 } None) ] + [ (Pair "bar" { Elt "foo" 1 } None) ] - location: 12 (remaining gas: 1039988.056 units remaining) - [ "bar" - (Pair { Elt "foo" 1 } None) ] + [ "bar" + (Pair { Elt "foo" 1 } None) ] - location: 13 (remaining gas: 1039988.041 units remaining) - [ (Pair { Elt "foo" 1 } None) ] + [ (Pair { Elt "foo" 1 } None) ] - location: 15 (remaining gas: 1039988.031 units remaining) - [ { Elt "foo" 1 } ] + [ { Elt "foo" 1 } ] - location: 16 (remaining gas: 1039988.021 units remaining) - [ { Elt "foo" 1 } - { Elt "foo" 1 } ] + [ { Elt "foo" 1 } + { Elt "foo" 1 } ] - location: 13 (remaining gas: 1039987.991 units remaining) - [ "bar" - { Elt "foo" 1 } - { Elt "foo" 1 } ] + [ "bar" + { Elt "foo" 1 } + { Elt "foo" 1 } ] - location: 17 (remaining gas: 1039987.841 units remaining) - [ False - { Elt "foo" 1 } ] + [ False + { Elt "foo" 1 } ] - location: 18 (remaining gas: 1039987.826 units remaining) - [ (Some False) - { Elt "foo" 1 } ] + [ (Some False) + { Elt "foo" 1 } ] - location: 19 (remaining gas: 1039987.816 units remaining) - [ { Elt "foo" 1 } - (Some False) ] + [ { Elt "foo" 1 } + (Some False) ] - location: 20 (remaining gas: 1039987.801 units remaining) - [ (Pair { Elt "foo" 1 } (Some False)) ] + [ (Pair { Elt "foo" 1 } (Some False)) ] - location: 21 (remaining gas: 1039987.786 units remaining) - [ {} - (Pair { Elt "foo" 1 } (Some False)) ] + [ {} + (Pair { Elt "foo" 1 } (Some False)) ] - location: 23 (remaining gas: 1039987.771 units remaining) - [ (Pair {} { Elt "foo" 1 } (Some False)) ] + [ (Pair {} { Elt "foo" 1 } (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair {} (Some False))].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair {} (Some False))].out" index 38000ca076..1747fa6136 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair {} (Some False))].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_mem_string.tz-(Pair {} None)-\"bar\"-(Pair {} (Some False))].out" @@ -8,35 +8,35 @@ big_map diff trace - location: 12 (remaining gas: 1039988.460 units remaining) - [ (Pair "bar" {} None) ] + [ (Pair "bar" {} None) ] - location: 12 (remaining gas: 1039988.450 units remaining) - [ "bar" - (Pair {} None) ] + [ "bar" + (Pair {} None) ] - location: 13 (remaining gas: 1039988.435 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] - location: 15 (remaining gas: 1039988.425 units remaining) - [ {} ] + [ {} ] - location: 16 (remaining gas: 1039988.415 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039988.385 units remaining) - [ "bar" - {} - {} ] + [ "bar" + {} + {} ] - location: 17 (remaining gas: 1039988.270 units remaining) - [ False - {} ] + [ False + {} ] - location: 18 (remaining gas: 1039988.255 units remaining) - [ (Some False) - {} ] + [ (Some False) + {} ] - location: 19 (remaining gas: 1039988.245 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 20 (remaining gas: 1039988.230 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 21 (remaining gas: 1039988.215 units remaining) - [ {} - (Pair {} (Some False)) ] + [ {} + (Pair {} (Some False)) ] - location: 23 (remaining gas: 1039988.200 units remaining) - [ (Pair {} {} (Some False)) ] + [ (Pair {} {} (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" index ba3ede7a54..bfe70cf6aa 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 ; .1da2c2c3fa.out" @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039991.503 units remaining) - [ (Pair { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 ; Elt "d" 4 ; Elt "e" 5 ; Elt "f" 6 } 111) ] + [ (Pair { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 ; Elt "d" 4 ; Elt "e" 5 ; Elt "f" 6 } 111) ] - location: 9 (remaining gas: 1039991.493 units remaining) - [ { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 ; Elt "d" 4 ; Elt "e" 5 ; Elt "f" 6 } ] + [ { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 ; Elt "d" 4 ; Elt "e" 5 ; Elt "f" 6 } ] - location: 10 (remaining gas: 1039991.478 units remaining) - [ 6 ] + [ 6 ] - location: 11 (remaining gas: 1039991.463 units remaining) - [ {} - 6 ] + [ {} + 6 ] - location: 13 (remaining gas: 1039991.448 units remaining) - [ (Pair {} 6) ] + [ (Pair {} 6) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" index 8310f15e26..0142891737 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 ; Elt \"b\" 2 ; Elt \"c\" 3 }-3].out" @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039993.290 units remaining) - [ (Pair { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 } 111) ] + [ (Pair { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 } 111) ] - location: 9 (remaining gas: 1039993.280 units remaining) - [ { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 } ] + [ { Elt "a" 1 ; Elt "b" 2 ; Elt "c" 3 } ] - location: 10 (remaining gas: 1039993.265 units remaining) - [ 3 ] + [ 3 ] - location: 11 (remaining gas: 1039993.250 units remaining) - [ {} - 3 ] + [ {} + 3 ] - location: 13 (remaining gas: 1039993.235 units remaining) - [ (Pair {} 3) ] + [ (Pair {} 3) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 }-1].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 }-1].out" index 60c751d37f..2c18a90983 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 }-1].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{ Elt \"a\" 1 }-1].out" @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039994.318 units remaining) - [ (Pair { Elt "a" 1 } 111) ] + [ (Pair { Elt "a" 1 } 111) ] - location: 9 (remaining gas: 1039994.308 units remaining) - [ { Elt "a" 1 } ] + [ { Elt "a" 1 } ] - location: 10 (remaining gas: 1039994.293 units remaining) - [ 1 ] + [ 1 ] - location: 11 (remaining gas: 1039994.278 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 13 (remaining gas: 1039994.263 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{}-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{}-0].out index 1fcc8b627c..33a295f617 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{}-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[map_size.tz-111-{}-0].out @@ -8,14 +8,14 @@ big_map diff trace - location: 9 (remaining gas: 1039994.692 units remaining) - [ (Pair {} 111) ] + [ (Pair {} 111) ] - location: 9 (remaining gas: 1039994.682 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039994.667 units remaining) - [ 0 ] + [ 0 ] - location: 11 (remaining gas: 1039994.652 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 13 (remaining gas: 1039994.637 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mul.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mul.tz-Unit-Unit-Unit].out index 5d345cdc2f..256307a9aa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mul.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mul.tz-Unit-Unit-Unit].out @@ -8,124 +8,124 @@ big_map diff trace - location: 7 (remaining gas: 1039944.576 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039944.566 units remaining) - [ Unit ] + [ Unit ] - location: 8 (remaining gas: 1039944.556 units remaining) [ ] - location: 9 (remaining gas: 1039944.546 units remaining) - [ 7987 ] + [ 7987 ] - location: 12 (remaining gas: 1039944.536 units remaining) - [ 10 - 7987 ] + [ 10 + 7987 ] - location: 15 (remaining gas: 1039944.536 units remaining) - [ 79870 ] + [ 79870 ] - location: 16 (remaining gas: 1039944.526 units remaining) - [ 79870 - 79870 ] + [ 79870 + 79870 ] - location: 19 (remaining gas: 1039944.491 units remaining) - [ 0 ] + [ 0 ] - location: 21 (remaining gas: 1039944.476 units remaining) - [ True ] + [ True ] - location: 22 (remaining gas: 1039944.466 units remaining) [ ] - location: 22 (remaining gas: 1039944.451 units remaining) [ ] - location: 28 (remaining gas: 1039944.441 units remaining) - [ 10 ] + [ 10 ] - location: 31 (remaining gas: 1039944.431 units remaining) - [ 7987 - 10 ] + [ 7987 + 10 ] - location: 34 (remaining gas: 1039944.431 units remaining) - [ 79870 ] + [ 79870 ] - location: 35 (remaining gas: 1039944.421 units remaining) - [ 79870 - 79870 ] + [ 79870 + 79870 ] - location: 38 (remaining gas: 1039944.386 units remaining) - [ 0 ] + [ 0 ] - location: 40 (remaining gas: 1039944.371 units remaining) - [ True ] + [ True ] - location: 41 (remaining gas: 1039944.361 units remaining) [ ] - location: 41 (remaining gas: 1039944.346 units remaining) [ ] - location: 47 (remaining gas: 1039944.336 units remaining) - [ 10 ] + [ 10 ] - location: 50 (remaining gas: 1039944.326 units remaining) - [ -7987 - 10 ] + [ -7987 + 10 ] - location: 53 (remaining gas: 1039944.220 units remaining) - [ -79870 ] + [ -79870 ] - location: 54 (remaining gas: 1039944.210 units remaining) - [ -79870 - -79870 ] + [ -79870 + -79870 ] - location: 57 (remaining gas: 1039944.175 units remaining) - [ 0 ] + [ 0 ] - location: 59 (remaining gas: 1039944.160 units remaining) - [ True ] + [ True ] - location: 60 (remaining gas: 1039944.150 units remaining) [ ] - location: 60 (remaining gas: 1039944.135 units remaining) [ ] - location: 66 (remaining gas: 1039944.125 units remaining) - [ 10 ] + [ 10 ] - location: 69 (remaining gas: 1039944.115 units remaining) - [ -7987 - 10 ] + [ -7987 + 10 ] - location: 72 (remaining gas: 1039944.009 units remaining) - [ -79870 ] + [ -79870 ] - location: 73 (remaining gas: 1039943.999 units remaining) - [ -79870 - -79870 ] + [ -79870 + -79870 ] - location: 76 (remaining gas: 1039943.964 units remaining) - [ 0 ] + [ 0 ] - location: 78 (remaining gas: 1039943.949 units remaining) - [ True ] + [ True ] - location: 79 (remaining gas: 1039943.939 units remaining) [ ] - location: 79 (remaining gas: 1039943.924 units remaining) [ ] - location: 85 (remaining gas: 1039943.914 units remaining) - [ -10 ] + [ -10 ] - location: 88 (remaining gas: 1039943.904 units remaining) - [ 7987 - -10 ] + [ 7987 + -10 ] - location: 91 (remaining gas: 1039943.798 units remaining) - [ -79870 ] + [ -79870 ] - location: 92 (remaining gas: 1039943.788 units remaining) - [ -79870 - -79870 ] + [ -79870 + -79870 ] - location: 95 (remaining gas: 1039943.753 units remaining) - [ 0 ] + [ 0 ] - location: 97 (remaining gas: 1039943.738 units remaining) - [ True ] + [ True ] - location: 98 (remaining gas: 1039943.728 units remaining) [ ] - location: 98 (remaining gas: 1039943.713 units remaining) [ ] - location: 104 (remaining gas: 1039943.703 units remaining) - [ 10 ] + [ 10 ] - location: 107 (remaining gas: 1039943.693 units remaining) - [ 7987 - 10 ] + [ 7987 + 10 ] - location: 110 (remaining gas: 1039943.587 units remaining) - [ 79870 ] + [ 79870 ] - location: 111 (remaining gas: 1039943.577 units remaining) - [ 79870 - 79870 ] + [ 79870 + 79870 ] - location: 114 (remaining gas: 1039943.542 units remaining) - [ 0 ] + [ 0 ] - location: 116 (remaining gas: 1039943.527 units remaining) - [ True ] + [ True ] - location: 117 (remaining gas: 1039943.517 units remaining) [ ] - location: 117 (remaining gas: 1039943.502 units remaining) [ ] - location: 123 (remaining gas: 1039943.492 units remaining) - [ Unit ] + [ Unit ] - location: 124 (remaining gas: 1039943.477 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 126 (remaining gas: 1039943.462 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x00-257-0x0101000000000000000.be11332c7f.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x00-257-0x0101000000000000000.be11332c7f.out index b106914476..6192d4f1bf 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x00-257-0x0101000000000000000.be11332c7f.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x00-257-0x0101000000000000000.be11332c7f.out @@ -8,31 +8,31 @@ big_map diff trace - location: 7 (remaining gas: 1039987.713 units remaining) - [ (Pair 257 0x0000000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 257 0x0000000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039987.703 units remaining) - [ 257 ] + [ 257 ] - location: 8 (remaining gas: 1039987.693 units remaining) - [ 1 - 257 ] + [ 1 + 257 ] - location: 11 (remaining gas: 1039987.683 units remaining) - [ 257 - 1 ] + [ 257 + 1 ] - location: 12 (remaining gas: 1039987.543 units remaining) - [ (Some (Pair 257 0)) ] + [ (Some (Pair 257 0)) ] - location: 14 (remaining gas: 1039987.533 units remaining) - [ (Pair 257 0) ] + [ (Pair 257 0) ] - location: 14 (remaining gas: 1039987.518 units remaining) - [ (Pair 257 0) ] + [ (Pair 257 0) ] - location: 20 (remaining gas: 1039987.508 units remaining) - [ 257 ] + [ 257 ] - location: 21 (remaining gas: 1039987.498 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 257 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 257 ] - location: 24 (remaining gas: 1039987.166 units remaining) - [ 0x0101000000000000000000000000000000000000000000000000000000000000 ] + [ 0x0101000000000000000000000000000000000000000000000000000000000000 ] - location: 25 (remaining gas: 1039987.151 units remaining) - [ {} - 0x0101000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x0101000000000000000000000000000000000000000000000000000000000000 ] - location: 27 (remaining gas: 1039987.136 units remaining) - [ (Pair {} 0x0101000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x0101000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x02-16-0x10000000000000000000.8230fb4fac.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x02-16-0x10000000000000000000.8230fb4fac.out index 18773f0bd2..56e069daa2 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x02-16-0x10000000000000000000.8230fb4fac.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[mutez_to_bls12_381_fr.tz-0x02-16-0x10000000000000000000.8230fb4fac.out @@ -8,31 +8,31 @@ big_map diff trace - location: 7 (remaining gas: 1039987.713 units remaining) - [ (Pair 16 0x0200000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair 16 0x0200000000000000000000000000000000000000000000000000000000000000) ] - location: 7 (remaining gas: 1039987.703 units remaining) - [ 16 ] + [ 16 ] - location: 8 (remaining gas: 1039987.693 units remaining) - [ 1 - 16 ] + [ 1 + 16 ] - location: 11 (remaining gas: 1039987.683 units remaining) - [ 16 - 1 ] + [ 16 + 1 ] - location: 12 (remaining gas: 1039987.543 units remaining) - [ (Some (Pair 16 0)) ] + [ (Some (Pair 16 0)) ] - location: 14 (remaining gas: 1039987.533 units remaining) - [ (Pair 16 0) ] + [ (Pair 16 0) ] - location: 14 (remaining gas: 1039987.518 units remaining) - [ (Pair 16 0) ] + [ (Pair 16 0) ] - location: 20 (remaining gas: 1039987.508 units remaining) - [ 16 ] + [ 16 ] - location: 21 (remaining gas: 1039987.498 units remaining) - [ 0x0100000000000000000000000000000000000000000000000000000000000000 - 16 ] + [ 0x0100000000000000000000000000000000000000000000000000000000000000 + 16 ] - location: 24 (remaining gas: 1039987.167 units remaining) - [ 0x1000000000000000000000000000000000000000000000000000000000000000 ] + [ 0x1000000000000000000000000000000000000000000000000000000000000000 ] - location: 25 (remaining gas: 1039987.152 units remaining) - [ {} - 0x1000000000000000000000000000000000000000000000000000000000000000 ] + [ {} + 0x1000000000000000000000000000000000000000000000000000000000000000 ] - location: 27 (remaining gas: 1039987.137 units remaining) - [ (Pair {} 0x1000000000000000000000000000000000000000000000000000000000000000) ] + [ (Pair {} 0x1000000000000000000000000000000000000000000000000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left -2)-2].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left -2)-2].out index 8c176e5f2e..b7bcb1bd13 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left -2)-2].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left -2)-2].out @@ -8,18 +8,18 @@ big_map diff trace - location: 9 (remaining gas: 1039992.641 units remaining) - [ (Pair (Left -2) 0) ] + [ (Pair (Left -2) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Left -2) ] + [ (Left -2) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ -2 ] + [ -2 ] - location: 12 (remaining gas: 1039992.581 units remaining) - [ 2 ] + [ 2 ] - location: 10 (remaining gas: 1039992.566 units remaining) - [ 2 ] + [ 2 ] - location: 15 (remaining gas: 1039992.551 units remaining) - [ {} - 2 ] + [ {} + 2 ] - location: 17 (remaining gas: 1039992.536 units remaining) - [ (Pair {} 2) ] + [ (Pair {} 2) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 0)-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 0)-0].out index 6fa2b91327..e920ea30d1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 0)-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 0)-0].out @@ -8,18 +8,18 @@ big_map diff trace - location: 9 (remaining gas: 1039992.641 units remaining) - [ (Pair (Left 0) 0) ] + [ (Pair (Left 0) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Left 0) ] + [ (Left 0) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ 0 ] + [ 0 ] - location: 12 (remaining gas: 1039992.581 units remaining) - [ 0 ] + [ 0 ] - location: 10 (remaining gas: 1039992.566 units remaining) - [ 0 ] + [ 0 ] - location: 15 (remaining gas: 1039992.551 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 17 (remaining gas: 1039992.536 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 2)--2].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 2)--2].out index 067fdeb439..0e2abe4804 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 2)--2].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Left 2)--2].out @@ -8,18 +8,18 @@ big_map diff trace - location: 9 (remaining gas: 1039992.641 units remaining) - [ (Pair (Left 2) 0) ] + [ (Pair (Left 2) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Left 2) ] + [ (Left 2) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ 2 ] + [ 2 ] - location: 12 (remaining gas: 1039992.581 units remaining) - [ -2 ] + [ -2 ] - location: 10 (remaining gas: 1039992.566 units remaining) - [ -2 ] + [ -2 ] - location: 15 (remaining gas: 1039992.551 units remaining) - [ {} - -2 ] + [ {} + -2 ] - location: 17 (remaining gas: 1039992.536 units remaining) - [ (Pair {} -2) ] + [ (Pair {} -2) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 0)-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 0)-0].out index 046d77c810..41e4517b3f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 0)-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 0)-0].out @@ -8,18 +8,18 @@ big_map diff trace - location: 9 (remaining gas: 1039992.641 units remaining) - [ (Pair (Right 0) 0) ] + [ (Pair (Right 0) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Right 0) ] + [ (Right 0) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ 0 ] + [ 0 ] - location: 14 (remaining gas: 1039992.581 units remaining) - [ 0 ] + [ 0 ] - location: 10 (remaining gas: 1039992.566 units remaining) - [ 0 ] + [ 0 ] - location: 15 (remaining gas: 1039992.551 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 17 (remaining gas: 1039992.536 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 2)--2].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 2)--2].out index 131c8218a5..a86d80d254 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 2)--2].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[neg.tz-0-(Right 2)--2].out @@ -8,18 +8,18 @@ big_map diff trace - location: 9 (remaining gas: 1039992.641 units remaining) - [ (Pair (Right 2) 0) ] + [ (Pair (Right 2) 0) ] - location: 9 (remaining gas: 1039992.631 units remaining) - [ (Right 2) ] + [ (Right 2) ] - location: 10 (remaining gas: 1039992.621 units remaining) - [ 2 ] + [ 2 ] - location: 14 (remaining gas: 1039992.581 units remaining) - [ -2 ] + [ -2 ] - location: 10 (remaining gas: 1039992.566 units remaining) - [ -2 ] + [ -2 ] - location: 15 (remaining gas: 1039992.551 units remaining) - [ {} - -2 ] + [ {} + -2 ] - location: 17 (remaining gas: 1039992.536 units remaining) - [ (Pair {} -2) ] + [ (Pair {} -2) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[none.tz-Some 10-Unit-None].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[none.tz-Some 10-Unit-None].out index dcaa6f03e1..47adcfb5b6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[none.tz-Some 10-Unit-None].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[none.tz-Some 10-Unit-None].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.327 units remaining) - [ (Pair Unit (Some 10)) ] + [ (Pair Unit (Some 10)) ] - location: 8 (remaining gas: 1039994.317 units remaining) [ ] - location: 9 (remaining gas: 1039994.302 units remaining) - [ None ] + [ None ] - location: 11 (remaining gas: 1039994.287 units remaining) - [ {} - None ] + [ {} + None ] - location: 13 (remaining gas: 1039994.272 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-False-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-False-(Some True)].out index 705a78df93..5db82f3f26 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-False-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-False-(Some True)].out @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039993.957 units remaining) - [ (Pair False None) ] + [ (Pair False None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ False ] + [ False ] - location: 9 (remaining gas: 1039993.937 units remaining) - [ True ] + [ True ] - location: 10 (remaining gas: 1039993.922 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 11 (remaining gas: 1039993.907 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 13 (remaining gas: 1039993.892 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-True-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-True-(Some False)].out index f1a2055b36..02d7b0a455 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-True-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not.tz-None-True-(Some False)].out @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039993.957 units remaining) - [ (Pair True None) ] + [ (Pair True None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ True ] + [ True ] - location: 9 (remaining gas: 1039993.937 units remaining) - [ False ] + [ False ] - location: 10 (remaining gas: 1039993.922 units remaining) - [ (Some False) ] + [ (Some False) ] - location: 11 (remaining gas: 1039993.907 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 13 (remaining gas: 1039993.892 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -8)-(Some 7)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -8)-(Some 7)].out index 027bc9dd13..236d7e4647 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -8)-(Some 7)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -8)-(Some 7)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 10 (remaining gas: 1039991.640 units remaining) - [ (Pair (Left -8) None) ] + [ (Pair (Left -8) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left -8) ] + [ (Left -8) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ -8 ] + [ -8 ] - location: 13 (remaining gas: 1039991.570 units remaining) - [ 7 ] + [ 7 ] - location: 11 (remaining gas: 1039991.555 units remaining) - [ 7 ] + [ 7 ] - location: 16 (remaining gas: 1039991.540 units remaining) - [ (Some 7) ] + [ (Some 7) ] - location: 17 (remaining gas: 1039991.525 units remaining) - [ {} - (Some 7) ] + [ {} + (Some 7) ] - location: 19 (remaining gas: 1039991.510 units remaining) - [ (Pair {} (Some 7)) ] + [ (Pair {} (Some 7)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -9)-(Some 8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -9)-(Some 8)].out index 5c977428a7..b86d5364e8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -9)-(Some 8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left -9)-(Some 8)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 10 (remaining gas: 1039991.640 units remaining) - [ (Pair (Left -9) None) ] + [ (Pair (Left -9) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left -9) ] + [ (Left -9) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ -9 ] + [ -9 ] - location: 13 (remaining gas: 1039991.570 units remaining) - [ 8 ] + [ 8 ] - location: 11 (remaining gas: 1039991.555 units remaining) - [ 8 ] + [ 8 ] - location: 16 (remaining gas: 1039991.540 units remaining) - [ (Some 8) ] + [ (Some 8) ] - location: 17 (remaining gas: 1039991.525 units remaining) - [ {} - (Some 8) ] + [ {} + (Some 8) ] - location: 19 (remaining gas: 1039991.510 units remaining) - [ (Pair {} (Some 8)) ] + [ (Pair {} (Some 8)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 0)-(Some -1)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 0)-(Some -1)].out index e1063d1d8d..335c27f4e0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 0)-(Some -1)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 0)-(Some -1)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 10 (remaining gas: 1039991.640 units remaining) - [ (Pair (Left 0) None) ] + [ (Pair (Left 0) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left 0) ] + [ (Left 0) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 0 ] + [ 0 ] - location: 13 (remaining gas: 1039991.570 units remaining) - [ -1 ] + [ -1 ] - location: 11 (remaining gas: 1039991.555 units remaining) - [ -1 ] + [ -1 ] - location: 16 (remaining gas: 1039991.540 units remaining) - [ (Some -1) ] + [ (Some -1) ] - location: 17 (remaining gas: 1039991.525 units remaining) - [ {} - (Some -1) ] + [ {} + (Some -1) ] - location: 19 (remaining gas: 1039991.510 units remaining) - [ (Pair {} (Some -1)) ] + [ (Pair {} (Some -1)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 7)-(Some -8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 7)-(Some -8)].out index fc0b8aaed2..f6450b7e67 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 7)-(Some -8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 7)-(Some -8)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 10 (remaining gas: 1039991.640 units remaining) - [ (Pair (Left 7) None) ] + [ (Pair (Left 7) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left 7) ] + [ (Left 7) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 7 ] + [ 7 ] - location: 13 (remaining gas: 1039991.570 units remaining) - [ -8 ] + [ -8 ] - location: 11 (remaining gas: 1039991.555 units remaining) - [ -8 ] + [ -8 ] - location: 16 (remaining gas: 1039991.540 units remaining) - [ (Some -8) ] + [ (Some -8) ] - location: 17 (remaining gas: 1039991.525 units remaining) - [ {} - (Some -8) ] + [ {} + (Some -8) ] - location: 19 (remaining gas: 1039991.510 units remaining) - [ (Pair {} (Some -8)) ] + [ (Pair {} (Some -8)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 8)-(Some -9)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 8)-(Some -9)].out index 69b10e9314..e9f9849226 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 8)-(Some -9)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Left 8)-(Some -9)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 10 (remaining gas: 1039991.640 units remaining) - [ (Pair (Left 8) None) ] + [ (Pair (Left 8) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Left 8) ] + [ (Left 8) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 8 ] + [ 8 ] - location: 13 (remaining gas: 1039991.570 units remaining) - [ -9 ] + [ -9 ] - location: 11 (remaining gas: 1039991.555 units remaining) - [ -9 ] + [ -9 ] - location: 16 (remaining gas: 1039991.540 units remaining) - [ (Some -9) ] + [ (Some -9) ] - location: 17 (remaining gas: 1039991.525 units remaining) - [ {} - (Some -9) ] + [ {} + (Some -9) ] - location: 19 (remaining gas: 1039991.510 units remaining) - [ (Pair {} (Some -9)) ] + [ (Pair {} (Some -9)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 0)-(Some -1)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 0)-(Some -1)].out index 46a79e7f2b..cc26e4c692 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 0)-(Some -1)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 0)-(Some -1)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 10 (remaining gas: 1039991.640 units remaining) - [ (Pair (Right 0) None) ] + [ (Pair (Right 0) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Right 0) ] + [ (Right 0) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 0 ] + [ 0 ] - location: 15 (remaining gas: 1039991.570 units remaining) - [ -1 ] + [ -1 ] - location: 11 (remaining gas: 1039991.555 units remaining) - [ -1 ] + [ -1 ] - location: 16 (remaining gas: 1039991.540 units remaining) - [ (Some -1) ] + [ (Some -1) ] - location: 17 (remaining gas: 1039991.525 units remaining) - [ {} - (Some -1) ] + [ {} + (Some -1) ] - location: 19 (remaining gas: 1039991.510 units remaining) - [ (Pair {} (Some -1)) ] + [ (Pair {} (Some -1)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 7)-(Some -8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 7)-(Some -8)].out index b8df3be050..0f59b80912 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 7)-(Some -8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 7)-(Some -8)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 10 (remaining gas: 1039991.640 units remaining) - [ (Pair (Right 7) None) ] + [ (Pair (Right 7) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Right 7) ] + [ (Right 7) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 7 ] + [ 7 ] - location: 15 (remaining gas: 1039991.570 units remaining) - [ -8 ] + [ -8 ] - location: 11 (remaining gas: 1039991.555 units remaining) - [ -8 ] + [ -8 ] - location: 16 (remaining gas: 1039991.540 units remaining) - [ (Some -8) ] + [ (Some -8) ] - location: 17 (remaining gas: 1039991.525 units remaining) - [ {} - (Some -8) ] + [ {} + (Some -8) ] - location: 19 (remaining gas: 1039991.510 units remaining) - [ (Pair {} (Some -8)) ] + [ (Pair {} (Some -8)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 8)-(Some -9)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 8)-(Some -9)].out index 22b4db9f10..91239643b8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 8)-(Some -9)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[not_binary.tz-None-(Right 8)-(Some -9)].out @@ -8,20 +8,20 @@ big_map diff trace - location: 10 (remaining gas: 1039991.640 units remaining) - [ (Pair (Right 8) None) ] + [ (Pair (Right 8) None) ] - location: 10 (remaining gas: 1039991.630 units remaining) - [ (Right 8) ] + [ (Right 8) ] - location: 11 (remaining gas: 1039991.620 units remaining) - [ 8 ] + [ 8 ] - location: 15 (remaining gas: 1039991.570 units remaining) - [ -9 ] + [ -9 ] - location: 11 (remaining gas: 1039991.555 units remaining) - [ -9 ] + [ -9 ] - location: 16 (remaining gas: 1039991.540 units remaining) - [ (Some -9) ] + [ (Some -9) ] - location: 17 (remaining gas: 1039991.525 units remaining) - [ {} - (Some -9) ] + [ {} + (Some -9) ] - location: 19 (remaining gas: 1039991.510 units remaining) - [ (Pair {} (Some -9)) ] + [ (Pair {} (Some -9)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False False)-(Some False)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False False)-(Some False)].out index 504a0a8378..d55e810c31 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False False)-(Some False)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False False)-(Some False)].out @@ -8,28 +8,28 @@ big_map diff trace - location: 10 (remaining gas: 1039990.715 units remaining) - [ (Pair (Pair False False) None) ] + [ (Pair (Pair False False) None) ] - location: 10 (remaining gas: 1039990.705 units remaining) - [ (Pair False False) ] + [ (Pair False False) ] - location: 11 (remaining gas: 1039990.695 units remaining) - [ (Pair False False) - (Pair False False) ] + [ (Pair False False) + (Pair False False) ] - location: 12 (remaining gas: 1039990.685 units remaining) - [ False - (Pair False False) ] + [ False + (Pair False False) ] - location: 13 (remaining gas: 1039990.675 units remaining) - [ (Pair False False) - False ] + [ (Pair False False) + False ] - location: 14 (remaining gas: 1039990.665 units remaining) - [ False - False ] + [ False + False ] - location: 15 (remaining gas: 1039990.650 units remaining) - [ False ] + [ False ] - location: 16 (remaining gas: 1039990.635 units remaining) - [ (Some False) ] + [ (Some False) ] - location: 17 (remaining gas: 1039990.620 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 19 (remaining gas: 1039990.605 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False True)-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False True)-(Some True)].out index a697272947..7d17223ca9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False True)-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair False True)-(Some True)].out @@ -8,28 +8,28 @@ big_map diff trace - location: 10 (remaining gas: 1039990.715 units remaining) - [ (Pair (Pair False True) None) ] + [ (Pair (Pair False True) None) ] - location: 10 (remaining gas: 1039990.705 units remaining) - [ (Pair False True) ] + [ (Pair False True) ] - location: 11 (remaining gas: 1039990.695 units remaining) - [ (Pair False True) - (Pair False True) ] + [ (Pair False True) + (Pair False True) ] - location: 12 (remaining gas: 1039990.685 units remaining) - [ False - (Pair False True) ] + [ False + (Pair False True) ] - location: 13 (remaining gas: 1039990.675 units remaining) - [ (Pair False True) - False ] + [ (Pair False True) + False ] - location: 14 (remaining gas: 1039990.665 units remaining) - [ True - False ] + [ True + False ] - location: 15 (remaining gas: 1039990.650 units remaining) - [ True ] + [ True ] - location: 16 (remaining gas: 1039990.635 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 17 (remaining gas: 1039990.620 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 19 (remaining gas: 1039990.605 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True False)-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True False)-(Some True)].out index a648b43575..81cc0bf90d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True False)-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True False)-(Some True)].out @@ -8,28 +8,28 @@ big_map diff trace - location: 10 (remaining gas: 1039990.715 units remaining) - [ (Pair (Pair True False) None) ] + [ (Pair (Pair True False) None) ] - location: 10 (remaining gas: 1039990.705 units remaining) - [ (Pair True False) ] + [ (Pair True False) ] - location: 11 (remaining gas: 1039990.695 units remaining) - [ (Pair True False) - (Pair True False) ] + [ (Pair True False) + (Pair True False) ] - location: 12 (remaining gas: 1039990.685 units remaining) - [ True - (Pair True False) ] + [ True + (Pair True False) ] - location: 13 (remaining gas: 1039990.675 units remaining) - [ (Pair True False) - True ] + [ (Pair True False) + True ] - location: 14 (remaining gas: 1039990.665 units remaining) - [ False - True ] + [ False + True ] - location: 15 (remaining gas: 1039990.650 units remaining) - [ True ] + [ True ] - location: 16 (remaining gas: 1039990.635 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 17 (remaining gas: 1039990.620 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 19 (remaining gas: 1039990.605 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True True)-(Some True)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True True)-(Some True)].out index 7bc0539cae..50735e670c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True True)-(Some True)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or.tz-None-(Pair True True)-(Some True)].out @@ -8,28 +8,28 @@ big_map diff trace - location: 10 (remaining gas: 1039990.715 units remaining) - [ (Pair (Pair True True) None) ] + [ (Pair (Pair True True) None) ] - location: 10 (remaining gas: 1039990.705 units remaining) - [ (Pair True True) ] + [ (Pair True True) ] - location: 11 (remaining gas: 1039990.695 units remaining) - [ (Pair True True) - (Pair True True) ] + [ (Pair True True) + (Pair True True) ] - location: 12 (remaining gas: 1039990.685 units remaining) - [ True - (Pair True True) ] + [ True + (Pair True True) ] - location: 13 (remaining gas: 1039990.675 units remaining) - [ (Pair True True) - True ] + [ (Pair True True) + True ] - location: 14 (remaining gas: 1039990.665 units remaining) - [ True - True ] + [ True + True ] - location: 15 (remaining gas: 1039990.650 units remaining) - [ True ] + [ True ] - location: 16 (remaining gas: 1039990.635 units remaining) - [ (Some True) ] + [ (Some True) ] - location: 17 (remaining gas: 1039990.620 units remaining) - [ {} - (Some True) ] + [ {} + (Some True) ] - location: 19 (remaining gas: 1039990.605 units remaining) - [ (Pair {} (Some True)) ] + [ (Pair {} (Some True)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 0 8)-(Some 8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 0 8)-(Some 8)].out index ab5913c76c..1e36e29749 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 0 8)-(Some 8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 0 8)-(Some 8)].out @@ -8,19 +8,19 @@ big_map diff trace - location: 10 (remaining gas: 1039992.824 units remaining) - [ (Pair (Pair 0 8) None) ] + [ (Pair (Pair 0 8) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 0 8) ] + [ (Pair 0 8) ] - location: 11 (remaining gas: 1039992.804 units remaining) - [ 0 - 8 ] + [ 0 + 8 ] - location: 12 (remaining gas: 1039992.749 units remaining) - [ 8 ] + [ 8 ] - location: 13 (remaining gas: 1039992.734 units remaining) - [ (Some 8) ] + [ (Some 8) ] - location: 14 (remaining gas: 1039992.719 units remaining) - [ {} - (Some 8) ] + [ {} + (Some 8) ] - location: 16 (remaining gas: 1039992.704 units remaining) - [ (Pair {} (Some 8)) ] + [ (Pair {} (Some 8)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 14 1)-(Some 15)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 14 1)-(Some 15)].out index 6490633766..080987a3a6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 14 1)-(Some 15)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 14 1)-(Some 15)].out @@ -8,19 +8,19 @@ big_map diff trace - location: 10 (remaining gas: 1039992.824 units remaining) - [ (Pair (Pair 14 1) None) ] + [ (Pair (Pair 14 1) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 14 1) ] + [ (Pair 14 1) ] - location: 11 (remaining gas: 1039992.804 units remaining) - [ 14 - 1 ] + [ 14 + 1 ] - location: 12 (remaining gas: 1039992.749 units remaining) - [ 15 ] + [ 15 ] - location: 13 (remaining gas: 1039992.734 units remaining) - [ (Some 15) ] + [ (Some 15) ] - location: 14 (remaining gas: 1039992.719 units remaining) - [ {} - (Some 15) ] + [ {} + (Some 15) ] - location: 16 (remaining gas: 1039992.704 units remaining) - [ (Pair {} (Some 15)) ] + [ (Pair {} (Some 15)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 15 4)-(Some 15)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 15 4)-(Some 15)].out index 49bf8f4783..0fdfdbc56b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 15 4)-(Some 15)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 15 4)-(Some 15)].out @@ -8,19 +8,19 @@ big_map diff trace - location: 10 (remaining gas: 1039992.824 units remaining) - [ (Pair (Pair 15 4) None) ] + [ (Pair (Pair 15 4) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 15 4) ] + [ (Pair 15 4) ] - location: 11 (remaining gas: 1039992.804 units remaining) - [ 15 - 4 ] + [ 15 + 4 ] - location: 12 (remaining gas: 1039992.749 units remaining) - [ 15 ] + [ 15 ] - location: 13 (remaining gas: 1039992.734 units remaining) - [ (Some 15) ] + [ (Some 15) ] - location: 14 (remaining gas: 1039992.719 units remaining) - [ {} - (Some 15) ] + [ {} + (Some 15) ] - location: 16 (remaining gas: 1039992.704 units remaining) - [ (Pair {} (Some 15)) ] + [ (Pair {} (Some 15)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 4 8)-(Some 12)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 4 8)-(Some 12)].out index a0ad9e92ed..b1617f9c8d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 4 8)-(Some 12)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 4 8)-(Some 12)].out @@ -8,19 +8,19 @@ big_map diff trace - location: 10 (remaining gas: 1039992.824 units remaining) - [ (Pair (Pair 4 8) None) ] + [ (Pair (Pair 4 8) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 4 8) ] + [ (Pair 4 8) ] - location: 11 (remaining gas: 1039992.804 units remaining) - [ 4 - 8 ] + [ 4 + 8 ] - location: 12 (remaining gas: 1039992.749 units remaining) - [ 12 ] + [ 12 ] - location: 13 (remaining gas: 1039992.734 units remaining) - [ (Some 12) ] + [ (Some 12) ] - location: 14 (remaining gas: 1039992.719 units remaining) - [ {} - (Some 12) ] + [ {} + (Some 12) ] - location: 16 (remaining gas: 1039992.704 units remaining) - [ (Pair {} (Some 12)) ] + [ (Pair {} (Some 12)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 7 7)-(Some 7)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 7 7)-(Some 7)].out index 4a6a990136..1d631c0f25 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 7 7)-(Some 7)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 7 7)-(Some 7)].out @@ -8,19 +8,19 @@ big_map diff trace - location: 10 (remaining gas: 1039992.824 units remaining) - [ (Pair (Pair 7 7) None) ] + [ (Pair (Pair 7 7) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 7 7) ] + [ (Pair 7 7) ] - location: 11 (remaining gas: 1039992.804 units remaining) - [ 7 - 7 ] + [ 7 + 7 ] - location: 12 (remaining gas: 1039992.749 units remaining) - [ 7 ] + [ 7 ] - location: 13 (remaining gas: 1039992.734 units remaining) - [ (Some 7) ] + [ (Some 7) ] - location: 14 (remaining gas: 1039992.719 units remaining) - [ {} - (Some 7) ] + [ {} + (Some 7) ] - location: 16 (remaining gas: 1039992.704 units remaining) - [ (Pair {} (Some 7)) ] + [ (Pair {} (Some 7)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 8 0)-(Some 8)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 8 0)-(Some 8)].out index e8f565308a..c2afc7fa24 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 8 0)-(Some 8)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[or_binary.tz-None-(Pair 8 0)-(Some 8)].out @@ -8,19 +8,19 @@ big_map diff trace - location: 10 (remaining gas: 1039992.824 units remaining) - [ (Pair (Pair 8 0) None) ] + [ (Pair (Pair 8 0) None) ] - location: 10 (remaining gas: 1039992.814 units remaining) - [ (Pair 8 0) ] + [ (Pair 8 0) ] - location: 11 (remaining gas: 1039992.804 units remaining) - [ 8 - 0 ] + [ 8 + 0 ] - location: 12 (remaining gas: 1039992.749 units remaining) - [ 8 ] + [ 8 ] - location: 13 (remaining gas: 1039992.734 units remaining) - [ (Some 8) ] + [ (Some 8) ] - location: 14 (remaining gas: 1039992.719 units remaining) - [ {} - (Some 8) ] + [ {} + (Some 8) ] - location: 16 (remaining gas: 1039992.704 units remaining) - [ (Pair {} (Some 8)) ] + [ (Pair {} (Some 8)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".368bdfd73a.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".368bdfd73a.out" index 0c1780cfa0..d5ff5550e3 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".368bdfd73a.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".368bdfd73a.out" @@ -17,7 +17,7 @@ trace "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - Unit) ] + Unit) ] - location: 16 (remaining gas: 1039185.295 units remaining) [ (Pair -1 1 @@ -27,7 +27,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 17 (remaining gas: 1039185.285 units remaining) [ (Pair -1 1 @@ -37,7 +37,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair -1 1 "foobar" @@ -46,9 +46,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 18 (remaining gas: 1039185.275 units remaining) - [ -1 + [ -1 (Pair -1 1 "foobar" @@ -57,7 +57,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 19 (remaining gas: 1039185.260 units remaining) [ (Pair -1 1 @@ -67,9 +67,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 21 (remaining gas: 1039185.250 units remaining) - [ -1 + [ -1 (Pair 1 "foobar" 0x00aabbcc @@ -77,10 +77,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 19 (remaining gas: 1039185.220 units remaining) - [ -1 - -1 + [ -1 + -1 (Pair 1 "foobar" 0x00aabbcc @@ -88,10 +88,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 22 (remaining gas: 1039184.993 units remaining) - [ 0x050041 - -1 + [ 0x050041 + -1 (Pair 1 "foobar" 0x00aabbcc @@ -99,10 +99,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 23 (remaining gas: 1039184.573 units remaining) - [ (Some -1) - -1 + [ (Some -1) + -1 (Pair 1 "foobar" 0x00aabbcc @@ -110,10 +110,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 26 (remaining gas: 1039184.563 units remaining) - [ -1 - -1 + [ -1 + -1 (Pair 1 "foobar" 0x00aabbcc @@ -121,10 +121,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 26 (remaining gas: 1039184.548 units remaining) - [ -1 - -1 + [ -1 + -1 (Pair 1 "foobar" 0x00aabbcc @@ -132,9 +132,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 34 (remaining gas: 1039184.513 units remaining) - [ 0 + [ 0 (Pair 1 "foobar" 0x00aabbcc @@ -142,9 +142,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 35 (remaining gas: 1039184.498 units remaining) - [ True + [ True (Pair 1 "foobar" 0x00aabbcc @@ -152,7 +152,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 36 (remaining gas: 1039184.488 units remaining) [ (Pair 1 "foobar" @@ -161,7 +161,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 36 (remaining gas: 1039184.473 units remaining) [ (Pair 1 "foobar" @@ -170,7 +170,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 42 (remaining gas: 1039184.463 units remaining) [ (Pair 1 "foobar" @@ -179,7 +179,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair 1 "foobar" 0x00aabbcc @@ -187,9 +187,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 43 (remaining gas: 1039184.453 units remaining) - [ 1 + [ 1 (Pair 1 "foobar" 0x00aabbcc @@ -197,7 +197,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 44 (remaining gas: 1039184.438 units remaining) [ (Pair 1 "foobar" @@ -206,84 +206,84 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 46 (remaining gas: 1039184.428 units remaining) - [ 1 + [ 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 44 (remaining gas: 1039184.398 units remaining) - [ 1 - 1 + [ 1 + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 47 (remaining gas: 1039184.171 units remaining) - [ 0x050001 - 1 + [ 0x050001 + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 48 (remaining gas: 1039183.751 units remaining) - [ (Some 1) - 1 + [ (Some 1) + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 51 (remaining gas: 1039183.741 units remaining) - [ 1 - 1 + [ 1 + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 51 (remaining gas: 1039183.726 units remaining) - [ 1 - 1 + [ 1 + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 59 (remaining gas: 1039183.691 units remaining) - [ 0 + [ 0 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 60 (remaining gas: 1039183.676 units remaining) - [ True + [ True (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 61 (remaining gas: 1039183.666 units remaining) [ (Pair "foobar" 0x00aabbcc @@ -291,7 +291,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 61 (remaining gas: 1039183.651 units remaining) [ (Pair "foobar" 0x00aabbcc @@ -299,7 +299,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 67 (remaining gas: 1039183.641 units remaining) [ (Pair "foobar" 0x00aabbcc @@ -307,23 +307,23 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 68 (remaining gas: 1039183.631 units remaining) - [ "foobar" + [ "foobar" (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 69 (remaining gas: 1039183.616 units remaining) [ (Pair "foobar" 0x00aabbcc @@ -331,515 +331,515 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 71 (remaining gas: 1039183.606 units remaining) - [ "foobar" + [ "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 69 (remaining gas: 1039183.576 units remaining) - [ "foobar" - "foobar" + [ "foobar" + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 72 (remaining gas: 1039183.052 units remaining) - [ 0x050100000006666f6f626172 - "foobar" + [ 0x050100000006666f6f626172 + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 73 (remaining gas: 1039182.377 units remaining) - [ (Some "foobar") - "foobar" + [ (Some "foobar") + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 76 (remaining gas: 1039182.367 units remaining) - [ "foobar" - "foobar" + [ "foobar" + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 76 (remaining gas: 1039182.352 units remaining) - [ "foobar" - "foobar" + [ "foobar" + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 84 (remaining gas: 1039182.317 units remaining) - [ 0 + [ 0 (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 85 (remaining gas: 1039182.302 units remaining) - [ True + [ True (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 86 (remaining gas: 1039182.292 units remaining) [ (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 86 (remaining gas: 1039182.277 units remaining) [ (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 92 (remaining gas: 1039182.267 units remaining) [ (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 93 (remaining gas: 1039182.257 units remaining) - [ 0x00aabbcc + [ 0x00aabbcc (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 94 (remaining gas: 1039182.242 units remaining) [ (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 96 (remaining gas: 1039182.232 units remaining) - [ 0x00aabbcc + [ 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 94 (remaining gas: 1039182.202 units remaining) - [ 0x00aabbcc - 0x00aabbcc + [ 0x00aabbcc + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 97 (remaining gas: 1039181.744 units remaining) - [ 0x050a0000000400aabbcc - 0x00aabbcc + [ 0x050a0000000400aabbcc + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 98 (remaining gas: 1039181.183 units remaining) - [ (Some 0x00aabbcc) - 0x00aabbcc + [ (Some 0x00aabbcc) + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 101 (remaining gas: 1039181.173 units remaining) - [ 0x00aabbcc - 0x00aabbcc + [ 0x00aabbcc + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 101 (remaining gas: 1039181.158 units remaining) - [ 0x00aabbcc - 0x00aabbcc + [ 0x00aabbcc + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 109 (remaining gas: 1039181.123 units remaining) - [ 0 + [ 0 (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 110 (remaining gas: 1039181.108 units remaining) - [ True + [ True (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 111 (remaining gas: 1039181.098 units remaining) [ (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 111 (remaining gas: 1039181.083 units remaining) [ (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 117 (remaining gas: 1039181.073 units remaining) [ (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 118 (remaining gas: 1039181.063 units remaining) - [ 1000 + [ 1000 (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 119 (remaining gas: 1039181.048 units remaining) [ (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 121 (remaining gas: 1039181.038 units remaining) - [ 1000 + [ 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 119 (remaining gas: 1039181.008 units remaining) - [ 1000 - 1000 + [ 1000 + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 122 (remaining gas: 1039180.748 units remaining) - [ 0x0500a80f - 1000 + [ 0x0500a80f + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 123 (remaining gas: 1039180.308 units remaining) - [ (Some 1000) - 1000 + [ (Some 1000) + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 126 (remaining gas: 1039180.298 units remaining) - [ 1000 - 1000 + [ 1000 + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 126 (remaining gas: 1039180.283 units remaining) - [ 1000 - 1000 + [ 1000 + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 134 (remaining gas: 1039180.248 units remaining) - [ 0 + [ 0 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 135 (remaining gas: 1039180.233 units remaining) - [ True + [ True (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 136 (remaining gas: 1039180.223 units remaining) [ (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 136 (remaining gas: 1039180.208 units remaining) [ (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 142 (remaining gas: 1039180.198 units remaining) [ (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 143 (remaining gas: 1039180.188 units remaining) - [ False + [ False (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 144 (remaining gas: 1039180.173 units remaining) [ (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 146 (remaining gas: 1039180.163 units remaining) - [ False + [ False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 144 (remaining gas: 1039180.133 units remaining) - [ False - False + [ False + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 147 (remaining gas: 1039179.906 units remaining) - [ 0x050303 - False + [ 0x050303 + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 148 (remaining gas: 1039179.486 units remaining) - [ (Some False) - False + [ (Some False) + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 151 (remaining gas: 1039179.476 units remaining) - [ False - False + [ False + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 151 (remaining gas: 1039179.461 units remaining) - [ False - False + [ False + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 159 (remaining gas: 1039179.426 units remaining) - [ 0 + [ 0 (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 160 (remaining gas: 1039179.411 units remaining) - [ True + [ True (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 161 (remaining gas: 1039179.401 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 161 (remaining gas: 1039179.386 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 167 (remaining gas: 1039179.376 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 168 (remaining gas: 1039179.366 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 169 (remaining gas: 1039179.351 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 171 (remaining gas: 1039179.341 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 169 (remaining gas: 1039179.311 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 172 (remaining gas: 1039178.221 units remaining) - [ 0x050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ 0x050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 173 (remaining gas: 1039177.268 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 176 (remaining gas: 1039177.258 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 176 (remaining gas: 1039177.243 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 184 (remaining gas: 1039177.207 units remaining) - [ 0 - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ 0 + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 185 (remaining gas: 1039177.192 units remaining) - [ True - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ True + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 186 (remaining gas: 1039177.182 units remaining) - [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 186 (remaining gas: 1039177.167 units remaining) - [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 192 (remaining gas: 1039177.157 units remaining) - [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 193 (remaining gas: 1039177.147 units remaining) - [ "2019-09-09T08:35:33Z" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "2019-09-09T08:35:33Z" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 194 (remaining gas: 1039177.132 units remaining) - [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 196 (remaining gas: 1039177.122 units remaining) - [ "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 194 (remaining gas: 1039177.092 units remaining) - [ "2019-09-09T08:35:33Z" - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "2019-09-09T08:35:33Z" + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 197 (remaining gas: 1039176.733 units remaining) - [ 0x050095bbb0d70b - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ 0x050095bbb0d70b + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 198 (remaining gas: 1039176.233 units remaining) - [ (Some "2019-09-09T08:35:33Z") - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ (Some "2019-09-09T08:35:33Z") + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 201 (remaining gas: 1039176.223 units remaining) - [ "2019-09-09T08:35:33Z" - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "2019-09-09T08:35:33Z" + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 201 (remaining gas: 1039176.208 units remaining) - [ "2019-09-09T08:35:33Z" - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "2019-09-09T08:35:33Z" + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 209 (remaining gas: 1039176.173 units remaining) - [ 0 - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ 0 + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 210 (remaining gas: 1039176.158 units remaining) - [ True - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ True + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 211 (remaining gas: 1039176.148 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 211 (remaining gas: 1039176.133 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 217 (remaining gas: 1039176.123 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 218 (remaining gas: 1039165.170 units remaining) - [ 0x050a000000160000bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ 0x050a000000160000bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 219 (remaining gas: 1038514.247 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 222 (remaining gas: 1038514.237 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 222 (remaining gas: 1038514.222 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 230 (remaining gas: 1038514.186 units remaining) - [ 0 ] + [ 0 ] - location: 231 (remaining gas: 1038514.171 units remaining) - [ True ] + [ True ] - location: 232 (remaining gas: 1038514.161 units remaining) [ ] - location: 232 (remaining gas: 1038514.146 units remaining) [ ] - location: 238 (remaining gas: 1038514.136 units remaining) - [ 0 ] + [ 0 ] - location: 241 (remaining gas: 1038513.909 units remaining) - [ 0x050000 ] + [ 0x050000 ] - location: 242 (remaining gas: 1038513.489 units remaining) - [ (Some 0) ] + [ (Some 0) ] - location: 245 (remaining gas: 1038513.479 units remaining) - [ 0 ] + [ 0 ] - location: 245 (remaining gas: 1038513.464 units remaining) - [ 0 ] + [ 0 ] - location: 251 (remaining gas: 1038513.454 units remaining) [ ] - location: 252 (remaining gas: 1038513.444 units remaining) - [ -1 ] + [ -1 ] - location: 255 (remaining gas: 1038513.217 units remaining) - [ 0x050041 ] + [ 0x050041 ] - location: 256 (remaining gas: 1038416.897 units remaining) - [ None ] + [ None ] - location: 259 (remaining gas: 1038416.887 units remaining) [ ] - location: 259 (remaining gas: 1038416.872 units remaining) [ ] - location: 265 (remaining gas: 1038416.862 units remaining) - [ 0x ] + [ 0x ] - location: 268 (remaining gas: 1038416.602 units remaining) - [ None ] + [ None ] - location: 271 (remaining gas: 1038416.592 units remaining) [ ] - location: 271 (remaining gas: 1038416.577 units remaining) [ ] - location: 277 (remaining gas: 1038416.567 units remaining) - [ 0x04 ] + [ 0x04 ] - location: 280 (remaining gas: 1038416.287 units remaining) - [ None ] + [ None ] - location: 283 (remaining gas: 1038416.277 units remaining) [ ] - location: 283 (remaining gas: 1038416.262 units remaining) [ ] - location: 289 (remaining gas: 1038416.252 units remaining) - [ 0x05 ] + [ 0x05 ] - location: 292 (remaining gas: 1038415.972 units remaining) - [ None ] + [ None ] - location: 295 (remaining gas: 1038415.962 units remaining) [ ] - location: 295 (remaining gas: 1038415.947 units remaining) [ ] - location: 301 (remaining gas: 1038415.937 units remaining) - [ Unit ] + [ Unit ] - location: 302 (remaining gas: 1038415.922 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 304 (remaining gas: 1038415.907 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".735d9ae802.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".735d9ae802.out" index eb4ffcb762..f609a0094a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".735d9ae802.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev.tz-Unit-(Pair -1 (Pair 1 (Pair \"foobar\".735d9ae802.out" @@ -17,7 +17,7 @@ trace "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - Unit) ] + Unit) ] - location: 16 (remaining gas: 1039185.295 units remaining) [ (Pair -1 1 @@ -27,7 +27,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 17 (remaining gas: 1039185.285 units remaining) [ (Pair -1 1 @@ -37,7 +37,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair -1 1 "foobar" @@ -46,9 +46,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 18 (remaining gas: 1039185.275 units remaining) - [ -1 + [ -1 (Pair -1 1 "foobar" @@ -57,7 +57,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 19 (remaining gas: 1039185.260 units remaining) [ (Pair -1 1 @@ -67,9 +67,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 21 (remaining gas: 1039185.250 units remaining) - [ -1 + [ -1 (Pair 1 "foobar" 0x00aabbcc @@ -77,10 +77,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 19 (remaining gas: 1039185.220 units remaining) - [ -1 - -1 + [ -1 + -1 (Pair 1 "foobar" 0x00aabbcc @@ -88,10 +88,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 22 (remaining gas: 1039184.993 units remaining) - [ 0x050041 - -1 + [ 0x050041 + -1 (Pair 1 "foobar" 0x00aabbcc @@ -99,10 +99,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 23 (remaining gas: 1039184.573 units remaining) - [ (Some -1) - -1 + [ (Some -1) + -1 (Pair 1 "foobar" 0x00aabbcc @@ -110,10 +110,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 26 (remaining gas: 1039184.563 units remaining) - [ -1 - -1 + [ -1 + -1 (Pair 1 "foobar" 0x00aabbcc @@ -121,10 +121,10 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 26 (remaining gas: 1039184.548 units remaining) - [ -1 - -1 + [ -1 + -1 (Pair 1 "foobar" 0x00aabbcc @@ -132,9 +132,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 34 (remaining gas: 1039184.513 units remaining) - [ 0 + [ 0 (Pair 1 "foobar" 0x00aabbcc @@ -142,9 +142,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 35 (remaining gas: 1039184.498 units remaining) - [ True + [ True (Pair 1 "foobar" 0x00aabbcc @@ -152,7 +152,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 36 (remaining gas: 1039184.488 units remaining) [ (Pair 1 "foobar" @@ -161,7 +161,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 36 (remaining gas: 1039184.473 units remaining) [ (Pair 1 "foobar" @@ -170,7 +170,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 42 (remaining gas: 1039184.463 units remaining) [ (Pair 1 "foobar" @@ -179,7 +179,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair 1 "foobar" 0x00aabbcc @@ -187,9 +187,9 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 43 (remaining gas: 1039184.453 units remaining) - [ 1 + [ 1 (Pair 1 "foobar" 0x00aabbcc @@ -197,7 +197,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 44 (remaining gas: 1039184.438 units remaining) [ (Pair 1 "foobar" @@ -206,84 +206,84 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 46 (remaining gas: 1039184.428 units remaining) - [ 1 + [ 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 44 (remaining gas: 1039184.398 units remaining) - [ 1 - 1 + [ 1 + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 47 (remaining gas: 1039184.171 units remaining) - [ 0x050001 - 1 + [ 0x050001 + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 48 (remaining gas: 1039183.751 units remaining) - [ (Some 1) - 1 + [ (Some 1) + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 51 (remaining gas: 1039183.741 units remaining) - [ 1 - 1 + [ 1 + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 51 (remaining gas: 1039183.726 units remaining) - [ 1 - 1 + [ 1 + 1 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 59 (remaining gas: 1039183.691 units remaining) - [ 0 + [ 0 (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 60 (remaining gas: 1039183.676 units remaining) - [ True + [ True (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 61 (remaining gas: 1039183.666 units remaining) [ (Pair "foobar" 0x00aabbcc @@ -291,7 +291,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 61 (remaining gas: 1039183.651 units remaining) [ (Pair "foobar" 0x00aabbcc @@ -299,7 +299,7 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 67 (remaining gas: 1039183.641 units remaining) [ (Pair "foobar" 0x00aabbcc @@ -307,23 +307,23 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 68 (remaining gas: 1039183.631 units remaining) - [ "foobar" + [ "foobar" (Pair "foobar" 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 69 (remaining gas: 1039183.616 units remaining) [ (Pair "foobar" 0x00aabbcc @@ -331,515 +331,515 @@ trace False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 71 (remaining gas: 1039183.606 units remaining) - [ "foobar" + [ "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 69 (remaining gas: 1039183.576 units remaining) - [ "foobar" - "foobar" + [ "foobar" + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 72 (remaining gas: 1039183.052 units remaining) - [ 0x050100000006666f6f626172 - "foobar" + [ 0x050100000006666f6f626172 + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 73 (remaining gas: 1039182.377 units remaining) - [ (Some "foobar") - "foobar" + [ (Some "foobar") + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 76 (remaining gas: 1039182.367 units remaining) - [ "foobar" - "foobar" + [ "foobar" + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 76 (remaining gas: 1039182.352 units remaining) - [ "foobar" - "foobar" + [ "foobar" + "foobar" (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 84 (remaining gas: 1039182.317 units remaining) - [ 0 + [ 0 (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 85 (remaining gas: 1039182.302 units remaining) - [ True + [ True (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 86 (remaining gas: 1039182.292 units remaining) [ (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 86 (remaining gas: 1039182.277 units remaining) [ (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 92 (remaining gas: 1039182.267 units remaining) [ (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 93 (remaining gas: 1039182.257 units remaining) - [ 0x00aabbcc + [ 0x00aabbcc (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 94 (remaining gas: 1039182.242 units remaining) [ (Pair 0x00aabbcc 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 96 (remaining gas: 1039182.232 units remaining) - [ 0x00aabbcc + [ 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 94 (remaining gas: 1039182.202 units remaining) - [ 0x00aabbcc - 0x00aabbcc + [ 0x00aabbcc + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 97 (remaining gas: 1039181.744 units remaining) - [ 0x050a0000000400aabbcc - 0x00aabbcc + [ 0x050a0000000400aabbcc + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 98 (remaining gas: 1039181.183 units remaining) - [ (Some 0x00aabbcc) - 0x00aabbcc + [ (Some 0x00aabbcc) + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 101 (remaining gas: 1039181.173 units remaining) - [ 0x00aabbcc - 0x00aabbcc + [ 0x00aabbcc + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 101 (remaining gas: 1039181.158 units remaining) - [ 0x00aabbcc - 0x00aabbcc + [ 0x00aabbcc + 0x00aabbcc (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 109 (remaining gas: 1039181.123 units remaining) - [ 0 + [ 0 (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 110 (remaining gas: 1039181.108 units remaining) - [ True + [ True (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 111 (remaining gas: 1039181.098 units remaining) [ (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 111 (remaining gas: 1039181.083 units remaining) [ (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 117 (remaining gas: 1039181.073 units remaining) [ (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 118 (remaining gas: 1039181.063 units remaining) - [ 1000 + [ 1000 (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 119 (remaining gas: 1039181.048 units remaining) [ (Pair 1000 False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 121 (remaining gas: 1039181.038 units remaining) - [ 1000 + [ 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 119 (remaining gas: 1039181.008 units remaining) - [ 1000 - 1000 + [ 1000 + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 122 (remaining gas: 1039180.748 units remaining) - [ 0x0500a80f - 1000 + [ 0x0500a80f + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 123 (remaining gas: 1039180.308 units remaining) - [ (Some 1000) - 1000 + [ (Some 1000) + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 126 (remaining gas: 1039180.298 units remaining) - [ 1000 - 1000 + [ 1000 + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 126 (remaining gas: 1039180.283 units remaining) - [ 1000 - 1000 + [ 1000 + 1000 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 134 (remaining gas: 1039180.248 units remaining) - [ 0 + [ 0 (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 135 (remaining gas: 1039180.233 units remaining) - [ True + [ True (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 136 (remaining gas: 1039180.223 units remaining) [ (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 136 (remaining gas: 1039180.208 units remaining) [ (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 142 (remaining gas: 1039180.198 units remaining) [ (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 143 (remaining gas: 1039180.188 units remaining) - [ False + [ False (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 144 (remaining gas: 1039180.173 units remaining) [ (Pair False "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 146 (remaining gas: 1039180.163 units remaining) - [ False + [ False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 144 (remaining gas: 1039180.133 units remaining) - [ False - False + [ False + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 147 (remaining gas: 1039179.906 units remaining) - [ 0x050303 - False + [ 0x050303 + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 148 (remaining gas: 1039179.486 units remaining) - [ (Some False) - False + [ (Some False) + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 151 (remaining gas: 1039179.476 units remaining) - [ False - False + [ False + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 151 (remaining gas: 1039179.461 units remaining) - [ False - False + [ False + False (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 159 (remaining gas: 1039179.426 units remaining) - [ 0 + [ 0 (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 160 (remaining gas: 1039179.411 units remaining) - [ True + [ True (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 161 (remaining gas: 1039179.401 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 161 (remaining gas: 1039179.386 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 167 (remaining gas: 1039179.376 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 168 (remaining gas: 1039179.366 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 169 (remaining gas: 1039179.351 units remaining) [ (Pair "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 171 (remaining gas: 1039179.341 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 169 (remaining gas: 1039179.311 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 172 (remaining gas: 1039178.221 units remaining) - [ 0x050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ 0x050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 173 (remaining gas: 1039177.268 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 176 (remaining gas: 1039177.258 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 176 (remaining gas: 1039177.243 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 184 (remaining gas: 1039177.207 units remaining) - [ 0 - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ 0 + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 185 (remaining gas: 1039177.192 units remaining) - [ True - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ True + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 186 (remaining gas: 1039177.182 units remaining) - [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 186 (remaining gas: 1039177.167 units remaining) - [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 192 (remaining gas: 1039177.157 units remaining) - [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 193 (remaining gas: 1039177.147 units remaining) - [ "2019-09-09T08:35:33Z" - (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ "2019-09-09T08:35:33Z" + (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 194 (remaining gas: 1039177.132 units remaining) - [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] + [ (Pair "2019-09-09T08:35:33Z" "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") ] - location: 196 (remaining gas: 1039177.122 units remaining) - [ "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 194 (remaining gas: 1039177.092 units remaining) - [ "2019-09-09T08:35:33Z" - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "2019-09-09T08:35:33Z" + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 197 (remaining gas: 1039176.733 units remaining) - [ 0x050095bbb0d70b - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ 0x050095bbb0d70b + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 198 (remaining gas: 1039176.233 units remaining) - [ (Some "2019-09-09T08:35:33Z") - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ (Some "2019-09-09T08:35:33Z") + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 201 (remaining gas: 1039176.223 units remaining) - [ "2019-09-09T08:35:33Z" - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "2019-09-09T08:35:33Z" + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 201 (remaining gas: 1039176.208 units remaining) - [ "2019-09-09T08:35:33Z" - "2019-09-09T08:35:33Z" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "2019-09-09T08:35:33Z" + "2019-09-09T08:35:33Z" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 209 (remaining gas: 1039176.173 units remaining) - [ 0 - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ 0 + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 210 (remaining gas: 1039176.158 units remaining) - [ True - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ True + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 211 (remaining gas: 1039176.148 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 211 (remaining gas: 1039176.133 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 217 (remaining gas: 1039176.123 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 218 (remaining gas: 1039165.170 units remaining) - [ 0x050a000000160000bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ 0x050a000000160000bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 219 (remaining gas: 1038514.247 units remaining) - [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ (Some "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 222 (remaining gas: 1038514.237 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 222 (remaining gas: 1038514.222 units remaining) - [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] + [ "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" ] - location: 230 (remaining gas: 1038514.186 units remaining) - [ 0 ] + [ 0 ] - location: 231 (remaining gas: 1038514.171 units remaining) - [ True ] + [ True ] - location: 232 (remaining gas: 1038514.161 units remaining) [ ] - location: 232 (remaining gas: 1038514.146 units remaining) [ ] - location: 238 (remaining gas: 1038514.136 units remaining) - [ 0 ] + [ 0 ] - location: 241 (remaining gas: 1038513.909 units remaining) - [ 0x050000 ] + [ 0x050000 ] - location: 242 (remaining gas: 1038513.489 units remaining) - [ (Some 0) ] + [ (Some 0) ] - location: 245 (remaining gas: 1038513.479 units remaining) - [ 0 ] + [ 0 ] - location: 245 (remaining gas: 1038513.464 units remaining) - [ 0 ] + [ 0 ] - location: 251 (remaining gas: 1038513.454 units remaining) [ ] - location: 252 (remaining gas: 1038513.444 units remaining) - [ -1 ] + [ -1 ] - location: 255 (remaining gas: 1038513.217 units remaining) - [ 0x050041 ] + [ 0x050041 ] - location: 256 (remaining gas: 1038416.897 units remaining) - [ None ] + [ None ] - location: 259 (remaining gas: 1038416.887 units remaining) [ ] - location: 259 (remaining gas: 1038416.872 units remaining) [ ] - location: 265 (remaining gas: 1038416.862 units remaining) - [ 0x ] + [ 0x ] - location: 268 (remaining gas: 1038416.602 units remaining) - [ None ] + [ None ] - location: 271 (remaining gas: 1038416.592 units remaining) [ ] - location: 271 (remaining gas: 1038416.577 units remaining) [ ] - location: 277 (remaining gas: 1038416.567 units remaining) - [ 0x04 ] + [ 0x04 ] - location: 280 (remaining gas: 1038416.287 units remaining) - [ None ] + [ None ] - location: 283 (remaining gas: 1038416.277 units remaining) [ ] - location: 283 (remaining gas: 1038416.262 units remaining) [ ] - location: 289 (remaining gas: 1038416.252 units remaining) - [ 0x05 ] + [ 0x05 ] - location: 292 (remaining gas: 1038415.972 units remaining) - [ None ] + [ None ] - location: 295 (remaining gas: 1038415.962 units remaining) [ ] - location: 295 (remaining gas: 1038415.947 units remaining) [ ] - location: 301 (remaining gas: 1038415.937 units remaining) - [ Unit ] + [ Unit ] - location: 302 (remaining gas: 1038415.922 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 304 (remaining gas: 1038415.907 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" index cc3d90a14b..5c63b603a7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.1ac5de50fb.out" @@ -18,7 +18,7 @@ trace (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) - Unit) ] + Unit) ] - location: 28 (remaining gas: 1039468.010 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -29,7 +29,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 29 (remaining gas: 1039468 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -40,7 +40,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) + { PACK }) (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -50,9 +50,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 30 (remaining gas: 1039467.990 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -62,7 +62,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 31 (remaining gas: 1039467.975 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -73,9 +73,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 33 (remaining gas: 1039467.965 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -84,10 +84,10 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 31 (remaining gas: 1039467.935 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" - "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -96,10 +96,10 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 34 (remaining gas: 1039466.063 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f - "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -108,9 +108,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 35 (remaining gas: 1039466.048 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -119,9 +119,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 37 (remaining gas: 1039464.176 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -130,9 +130,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 38 (remaining gas: 1039143.032 units remaining) - [ (Some "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav") + [ (Some "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav") (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -141,9 +141,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 41 (remaining gas: 1039143.022 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -152,9 +152,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 41 (remaining gas: 1039143.007 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -163,9 +163,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 47 (remaining gas: 1039141.135 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -174,10 +174,10 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 35 (remaining gas: 1039141.105 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f - 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -186,9 +186,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 50 (remaining gas: 1039141.070 units remaining) - [ 0 + [ 0 (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -197,9 +197,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 51 (remaining gas: 1039141.055 units remaining) - [ True + [ True (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -208,7 +208,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 52 (remaining gas: 1039141.045 units remaining) [ (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -218,7 +218,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 52 (remaining gas: 1039141.030 units remaining) [ (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -228,7 +228,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 58 (remaining gas: 1039141.020 units remaining) [ (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -238,7 +238,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) + { PACK }) (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -247,9 +247,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 59 (remaining gas: 1039141.010 units remaining) - [ Unit + [ Unit (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -258,7 +258,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 60 (remaining gas: 1039140.995 units remaining) [ (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -268,9 +268,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 62 (remaining gas: 1039140.985 units remaining) - [ Unit + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -278,10 +278,10 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 60 (remaining gas: 1039140.955 units remaining) - [ Unit - Unit + [ Unit + Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -289,10 +289,10 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 63 (remaining gas: 1039140.728 units remaining) - [ 0x05030b - Unit + [ 0x05030b + Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -300,9 +300,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 64 (remaining gas: 1039140.713 units remaining) - [ Unit + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -310,9 +310,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 66 (remaining gas: 1039140.486 units remaining) - [ 0x05030b + [ 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -320,9 +320,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 67 (remaining gas: 1039140.066 units remaining) - [ (Some Unit) + [ (Some Unit) (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -330,9 +330,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 70 (remaining gas: 1039140.056 units remaining) - [ Unit + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -340,9 +340,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 70 (remaining gas: 1039140.041 units remaining) - [ Unit + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -350,9 +350,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 76 (remaining gas: 1039139.814 units remaining) - [ 0x05030b + [ 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -360,10 +360,10 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 64 (remaining gas: 1039139.784 units remaining) - [ 0x05030b - 0x05030b + [ 0x05030b + 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -371,9 +371,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 79 (remaining gas: 1039139.749 units remaining) - [ 0 + [ 0 (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -381,9 +381,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 80 (remaining gas: 1039139.734 units remaining) - [ True + [ True (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -391,7 +391,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 81 (remaining gas: 1039139.724 units remaining) [ (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -400,7 +400,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 81 (remaining gas: 1039139.709 units remaining) [ (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -409,7 +409,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 87 (remaining gas: 1039139.699 units remaining) [ (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -418,7 +418,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) + { PACK }) (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -426,9 +426,9 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 88 (remaining gas: 1039139.689 units remaining) - [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -436,7 +436,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 89 (remaining gas: 1039139.674 units remaining) [ (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") @@ -445,118 +445,118 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 91 (remaining gas: 1039139.664 units remaining) - [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 89 (remaining gas: 1039139.634 units remaining) - [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" - "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 92 (remaining gas: 1039137.147 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 - "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 93 (remaining gas: 1039137.132 units remaining) - [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 95 (remaining gas: 1039134.645 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 96 (remaining gas: 1039132.842 units remaining) - [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") + [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 99 (remaining gas: 1039132.832 units remaining) - [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" + [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 99 (remaining gas: 1039132.817 units remaining) - [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" + [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 105 (remaining gas: 1039130.330 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 93 (remaining gas: 1039130.300 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 - 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 108 (remaining gas: 1039130.264 units remaining) - [ 0 + [ 0 (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 109 (remaining gas: 1039130.249 units remaining) - [ True + [ True (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 110 (remaining gas: 1039130.239 units remaining) [ (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -564,7 +564,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 110 (remaining gas: 1039130.224 units remaining) [ (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -572,7 +572,7 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 116 (remaining gas: 1039130.214 units remaining) [ (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -580,23 +580,23 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) + { PACK }) (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 117 (remaining gas: 1039130.204 units remaining) - [ (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") + [ (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 118 (remaining gas: 1039130.189 units remaining) [ (Pair (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") { Unit } @@ -604,591 +604,591 @@ trace (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 120 (remaining gas: 1039130.179 units remaining) - [ (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") + [ (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 118 (remaining gas: 1039130.149 units remaining) - [ (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") - (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") + [ (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") + (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 121 (remaining gas: 1039127.500 units remaining) - [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 - (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") + [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 122 (remaining gas: 1039127.485 units remaining) - [ (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") + [ (Some "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7") (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 124 (remaining gas: 1039124.836 units remaining) - [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 125 (remaining gas: 1039122.892 units remaining) - [ (Some (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe")) + [ (Some (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe")) (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 129 (remaining gas: 1039122.882 units remaining) - [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") + [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 129 (remaining gas: 1039122.867 units remaining) - [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") + [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 135 (remaining gas: 1039120.218 units remaining) - [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 122 (remaining gas: 1039120.188 units remaining) - [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 - 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + 0x0505090a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 138 (remaining gas: 1039120.152 units remaining) - [ 0 + [ 0 (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 139 (remaining gas: 1039120.137 units remaining) - [ True + [ True (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 140 (remaining gas: 1039120.127 units remaining) [ (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 140 (remaining gas: 1039120.112 units remaining) [ (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 146 (remaining gas: 1039120.102 units remaining) [ (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) + { PACK }) (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 147 (remaining gas: 1039120.092 units remaining) - [ { Unit } + [ { Unit } (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 148 (remaining gas: 1039120.077 units remaining) [ (Pair { Unit } { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 150 (remaining gas: 1039120.067 units remaining) - [ { Unit } + [ { Unit } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 148 (remaining gas: 1039120.037 units remaining) - [ { Unit } - { Unit } + [ { Unit } + { Unit } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 151 (remaining gas: 1039119.549 units remaining) - [ 0x050200000002030b - { Unit } + [ 0x050200000002030b + { Unit } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 152 (remaining gas: 1039119.534 units remaining) - [ { Unit } + [ { Unit } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 154 (remaining gas: 1039119.046 units remaining) - [ 0x050200000002030b + [ 0x050200000002030b (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 155 (remaining gas: 1039118.425 units remaining) - [ (Some { Unit }) + [ (Some { Unit }) (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 159 (remaining gas: 1039118.415 units remaining) - [ { Unit } + [ { Unit } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 159 (remaining gas: 1039118.400 units remaining) - [ { Unit } + [ { Unit } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 165 (remaining gas: 1039117.912 units remaining) - [ 0x050200000002030b + [ 0x050200000002030b (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 152 (remaining gas: 1039117.882 units remaining) - [ 0x050200000002030b - 0x050200000002030b + [ 0x050200000002030b + 0x050200000002030b (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 168 (remaining gas: 1039117.847 units remaining) - [ 0 + [ 0 (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 169 (remaining gas: 1039117.832 units remaining) - [ True + [ True (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 170 (remaining gas: 1039117.822 units remaining) [ (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 170 (remaining gas: 1039117.807 units remaining) [ (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 176 (remaining gas: 1039117.797 units remaining) [ (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) + { PACK }) (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 177 (remaining gas: 1039117.787 units remaining) - [ { True } + [ { True } (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 178 (remaining gas: 1039117.772 units remaining) [ (Pair { True } (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 180 (remaining gas: 1039117.762 units remaining) - [ { True } + [ { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 178 (remaining gas: 1039117.732 units remaining) - [ { True } - { True } + [ { True } + { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 181 (remaining gas: 1039117.244 units remaining) - [ 0x050200000002030a - { True } + [ 0x050200000002030a + { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 182 (remaining gas: 1039117.229 units remaining) - [ { True } + [ { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 184 (remaining gas: 1039116.741 units remaining) - [ 0x050200000002030a + [ 0x050200000002030a (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 185 (remaining gas: 1039115.920 units remaining) - [ (Some { True }) + [ (Some { True }) (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 189 (remaining gas: 1039115.910 units remaining) - [ { True } + [ { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 189 (remaining gas: 1039115.895 units remaining) - [ { True } + [ { True } (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 195 (remaining gas: 1039115.407 units remaining) - [ 0x050200000002030a + [ 0x050200000002030a (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 182 (remaining gas: 1039115.377 units remaining) - [ 0x050200000002030a - 0x050200000002030a + [ 0x050200000002030a + 0x050200000002030a (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 198 (remaining gas: 1039115.342 units remaining) - [ 0 + [ 0 (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 199 (remaining gas: 1039115.327 units remaining) - [ True + [ True (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 200 (remaining gas: 1039115.317 units remaining) [ (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 200 (remaining gas: 1039115.302 units remaining) [ (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 206 (remaining gas: 1039115.292 units remaining) [ (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) + { PACK }) (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 207 (remaining gas: 1039115.282 units remaining) - [ (Pair 19 10) + [ (Pair 19 10) (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 208 (remaining gas: 1039115.267 units remaining) [ (Pair (Pair 19 10) (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 210 (remaining gas: 1039115.257 units remaining) - [ (Pair 19 10) + [ (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 208 (remaining gas: 1039115.227 units remaining) - [ (Pair 19 10) - (Pair 19 10) + [ (Pair 19 10) + (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 211 (remaining gas: 1039114.676 units remaining) - [ 0x0507070013000a - (Pair 19 10) + [ 0x0507070013000a + (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 212 (remaining gas: 1039114.661 units remaining) - [ (Pair 19 10) + [ (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 214 (remaining gas: 1039114.110 units remaining) - [ 0x0507070013000a + [ 0x0507070013000a (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 215 (remaining gas: 1039113.410 units remaining) - [ (Some (Pair 19 10)) + [ (Some (Pair 19 10)) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 220 (remaining gas: 1039113.400 units remaining) - [ (Pair 19 10) + [ (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 220 (remaining gas: 1039113.385 units remaining) - [ (Pair 19 10) + [ (Pair 19 10) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 226 (remaining gas: 1039112.834 units remaining) - [ 0x0507070013000a + [ 0x0507070013000a (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 212 (remaining gas: 1039112.804 units remaining) - [ 0x0507070013000a - 0x0507070013000a + [ 0x0507070013000a + 0x0507070013000a (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 229 (remaining gas: 1039112.769 units remaining) - [ 0 + [ 0 (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 230 (remaining gas: 1039112.754 units remaining) - [ True + [ True (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 231 (remaining gas: 1039112.744 units remaining) [ (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 231 (remaining gas: 1039112.729 units remaining) [ (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 237 (remaining gas: 1039112.719 units remaining) [ (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) + { PACK }) (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 238 (remaining gas: 1039112.709 units remaining) - [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 239 (remaining gas: 1039112.694 units remaining) [ (Pair (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") { Elt 0 "foo" ; Elt 1 "bar" } - { PACK }) ] + { PACK }) ] - location: 241 (remaining gas: 1039112.684 units remaining) - [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 239 (remaining gas: 1039112.654 units remaining) - [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 242 (remaining gas: 1039111.402 units remaining) - [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 243 (remaining gas: 1039111.387 units remaining) - [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 245 (remaining gas: 1039110.135 units remaining) - [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 246 (remaining gas: 1039109.042 units remaining) - [ (Some (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5")) - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Some (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5")) + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 251 (remaining gas: 1039109.032 units remaining) - [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 251 (remaining gas: 1039109.017 units remaining) - [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Left "tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5") + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 257 (remaining gas: 1039107.765 units remaining) - [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 243 (remaining gas: 1039107.735 units remaining) - [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + 0x0505050a0000001500bdfe3885e846fdea23c9acbe3bb1cfcca9c03e4a + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 260 (remaining gas: 1039107.700 units remaining) - [ 0 - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ 0 + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 261 (remaining gas: 1039107.685 units remaining) - [ True - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ True + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 262 (remaining gas: 1039107.675 units remaining) - [ (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 262 (remaining gas: 1039107.660 units remaining) - [ (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 268 (remaining gas: 1039107.650 units remaining) - [ (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 269 (remaining gas: 1039107.640 units remaining) - [ { Elt 0 "foo" ; Elt 1 "bar" } - (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ { Elt 0 "foo" ; Elt 1 "bar" } + (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 270 (remaining gas: 1039107.625 units remaining) - [ (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] + [ (Pair { Elt 0 "foo" ; Elt 1 "bar" } { PACK }) ] - location: 272 (remaining gas: 1039107.615 units remaining) - [ { Elt 0 "foo" ; Elt 1 "bar" } - { PACK } ] + [ { Elt 0 "foo" ; Elt 1 "bar" } + { PACK } ] - location: 270 (remaining gas: 1039107.585 units remaining) - [ { Elt 0 "foo" ; Elt 1 "bar" } - { Elt 0 "foo" ; Elt 1 "bar" } - { PACK } ] + [ { Elt 0 "foo" ; Elt 1 "bar" } + { Elt 0 "foo" ; Elt 1 "bar" } + { PACK } ] - location: 273 (remaining gas: 1039105.980 units remaining) - [ 0x050200000018070400000100000003666f6f070400010100000003626172 - { Elt 0 "foo" ; Elt 1 "bar" } - { PACK } ] + [ 0x050200000018070400000100000003666f6f070400010100000003626172 + { Elt 0 "foo" ; Elt 1 "bar" } + { PACK } ] - location: 274 (remaining gas: 1039105.965 units remaining) - [ { Elt 0 "foo" ; Elt 1 "bar" } - { PACK } ] + [ { Elt 0 "foo" ; Elt 1 "bar" } + { PACK } ] - location: 276 (remaining gas: 1039104.360 units remaining) - [ 0x050200000018070400000100000003666f6f070400010100000003626172 - { PACK } ] + [ 0x050200000018070400000100000003666f6f070400010100000003626172 + { PACK } ] - location: 277 (remaining gas: 1039102.504 units remaining) - [ (Some { Elt 0 "foo" ; Elt 1 "bar" }) - { PACK } ] + [ (Some { Elt 0 "foo" ; Elt 1 "bar" }) + { PACK } ] - location: 282 (remaining gas: 1039102.494 units remaining) - [ { Elt 0 "foo" ; Elt 1 "bar" } - { PACK } ] + [ { Elt 0 "foo" ; Elt 1 "bar" } + { PACK } ] - location: 282 (remaining gas: 1039102.479 units remaining) - [ { Elt 0 "foo" ; Elt 1 "bar" } - { PACK } ] + [ { Elt 0 "foo" ; Elt 1 "bar" } + { PACK } ] - location: 288 (remaining gas: 1039100.874 units remaining) - [ 0x050200000018070400000100000003666f6f070400010100000003626172 - { PACK } ] + [ 0x050200000018070400000100000003666f6f070400010100000003626172 + { PACK } ] - location: 274 (remaining gas: 1039100.844 units remaining) - [ 0x050200000018070400000100000003666f6f070400010100000003626172 - 0x050200000018070400000100000003666f6f070400010100000003626172 - { PACK } ] + [ 0x050200000018070400000100000003666f6f070400010100000003626172 + 0x050200000018070400000100000003666f6f070400010100000003626172 + { PACK } ] - location: 291 (remaining gas: 1039100.809 units remaining) - [ 0 - { PACK } ] + [ 0 + { PACK } ] - location: 292 (remaining gas: 1039100.794 units remaining) - [ True - { PACK } ] + [ True + { PACK } ] - location: 293 (remaining gas: 1039100.784 units remaining) - [ { PACK } ] + [ { PACK } ] - location: 293 (remaining gas: 1039100.769 units remaining) - [ { PACK } ] + [ { PACK } ] - location: 299 (remaining gas: 1039100.759 units remaining) - [ { PACK } - { PACK } ] + [ { PACK } + { PACK } ] - location: 300 (remaining gas: 1039100.086 units remaining) - [ 0x050200000002030c - { PACK } ] + [ 0x050200000002030c + { PACK } ] - location: 301 (remaining gas: 1039100.071 units remaining) - [ { PACK } ] + [ { PACK } ] - location: 303 (remaining gas: 1039099.398 units remaining) - [ 0x050200000002030c ] + [ 0x050200000002030c ] - location: 304 (remaining gas: 1039098.217 units remaining) - [ (Some { PACK }) ] + [ (Some { PACK }) ] - location: 309 (remaining gas: 1039098.207 units remaining) - [ { PACK } ] + [ { PACK } ] - location: 309 (remaining gas: 1039098.192 units remaining) - [ { PACK } ] + [ { PACK } ] - location: 315 (remaining gas: 1039097.519 units remaining) - [ 0x050200000002030c ] + [ 0x050200000002030c ] - location: 301 (remaining gas: 1039097.489 units remaining) - [ 0x050200000002030c - 0x050200000002030c ] + [ 0x050200000002030c + 0x050200000002030c ] - location: 318 (remaining gas: 1039097.454 units remaining) - [ 0 ] + [ 0 ] - location: 319 (remaining gas: 1039097.439 units remaining) - [ True ] + [ True ] - location: 320 (remaining gas: 1039097.429 units remaining) [ ] - location: 320 (remaining gas: 1039097.414 units remaining) [ ] - location: 326 (remaining gas: 1039097.404 units remaining) - [ Unit ] + [ Unit ] - location: 327 (remaining gas: 1039097.389 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 329 (remaining gas: 1039097.374 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.4e20b52378.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.4e20b52378.out" index 8370889dd7..5d88b07652 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.4e20b52378.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[packunpack_rev_cty.tz-Unit-(Pair \"edpkuBknW28nW72KG6RoH.4e20b52378.out" @@ -18,7 +18,7 @@ trace (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) - Unit) ] + Unit) ] - location: 28 (remaining gas: 1039478.023 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -29,7 +29,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 29 (remaining gas: 1039478.013 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -40,7 +40,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) + { DUP ; DROP ; PACK }) (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -50,9 +50,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 30 (remaining gas: 1039478.003 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -62,7 +62,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 31 (remaining gas: 1039477.988 units remaining) [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" Unit @@ -73,9 +73,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 33 (remaining gas: 1039477.978 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -84,10 +84,10 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 31 (remaining gas: 1039477.948 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" - "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -96,10 +96,10 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 34 (remaining gas: 1039476.076 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f - "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -108,9 +108,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 35 (remaining gas: 1039476.061 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -119,9 +119,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 37 (remaining gas: 1039474.189 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -130,9 +130,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 38 (remaining gas: 1039153.045 units remaining) - [ (Some "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav") + [ (Some "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav") (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -141,9 +141,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 41 (remaining gas: 1039153.035 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -152,9 +152,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 41 (remaining gas: 1039153.020 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -163,9 +163,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 47 (remaining gas: 1039151.148 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -174,10 +174,10 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 35 (remaining gas: 1039151.118 units remaining) - [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f - 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + [ 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f + 0x050a00000021004798d2cc98473d7e250c898885718afd2e4efbcb1a1595ab9730761ed830de0f (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -186,9 +186,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 50 (remaining gas: 1039151.083 units remaining) - [ 0 + [ 0 (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -197,9 +197,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 51 (remaining gas: 1039151.068 units remaining) - [ True + [ True (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -208,7 +208,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 52 (remaining gas: 1039151.058 units remaining) [ (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -218,7 +218,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 52 (remaining gas: 1039151.043 units remaining) [ (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -228,7 +228,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 58 (remaining gas: 1039151.033 units remaining) [ (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -238,7 +238,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) + { DUP ; DROP ; PACK }) (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -247,9 +247,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 59 (remaining gas: 1039151.023 units remaining) - [ Unit + [ Unit (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -258,7 +258,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 60 (remaining gas: 1039151.008 units remaining) [ (Pair Unit "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" @@ -268,9 +268,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 62 (remaining gas: 1039150.998 units remaining) - [ Unit + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -278,10 +278,10 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 60 (remaining gas: 1039150.968 units remaining) - [ Unit - Unit + [ Unit + Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -289,10 +289,10 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 63 (remaining gas: 1039150.741 units remaining) - [ 0x05030b - Unit + [ 0x05030b + Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -300,9 +300,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 64 (remaining gas: 1039150.726 units remaining) - [ Unit + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -310,9 +310,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 66 (remaining gas: 1039150.499 units remaining) - [ 0x05030b + [ 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -320,9 +320,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 67 (remaining gas: 1039150.079 units remaining) - [ (Some Unit) + [ (Some Unit) (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -330,9 +330,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 70 (remaining gas: 1039150.069 units remaining) - [ Unit + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -340,9 +340,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 70 (remaining gas: 1039150.054 units remaining) - [ Unit + [ Unit (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -350,9 +350,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 76 (remaining gas: 1039149.827 units remaining) - [ 0x05030b + [ 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -360,10 +360,10 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 64 (remaining gas: 1039149.797 units remaining) - [ 0x05030b - 0x05030b + [ 0x05030b + 0x05030b (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -371,9 +371,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 79 (remaining gas: 1039149.762 units remaining) - [ 0 + [ 0 (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -381,9 +381,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 80 (remaining gas: 1039149.747 units remaining) - [ True + [ True (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -391,7 +391,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 81 (remaining gas: 1039149.737 units remaining) [ (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -400,7 +400,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 81 (remaining gas: 1039149.722 units remaining) [ (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -409,7 +409,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 87 (remaining gas: 1039149.712 units remaining) [ (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -418,7 +418,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) + { DUP ; DROP ; PACK }) (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -426,9 +426,9 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 88 (remaining gas: 1039149.702 units remaining) - [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None {} @@ -436,7 +436,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 89 (remaining gas: 1039149.687 units remaining) [ (Pair "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" None @@ -445,118 +445,118 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 91 (remaining gas: 1039149.677 units remaining) - [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 89 (remaining gas: 1039149.647 units remaining) - [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" - "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 92 (remaining gas: 1039147.160 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 - "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 93 (remaining gas: 1039147.145 units remaining) - [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" + [ "edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 95 (remaining gas: 1039144.658 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 96 (remaining gas: 1039142.855 units remaining) - [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") + [ (Some "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe") (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 99 (remaining gas: 1039142.845 units remaining) - [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" + [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 99 (remaining gas: 1039142.830 units remaining) - [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" + [ "sigXeXB5JD5TaLb3xgTPKjgf9W45judiCmNP9UBdZBdmtHSGBxL1M8ZSUb6LpjGP2MdfUBTB4WHs5APnvyRV1LooU6QHJuDe" (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 105 (remaining gas: 1039140.343 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 93 (remaining gas: 1039140.313 units remaining) - [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 - 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + [ 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 + 0x050a0000004049d47dba27bd76208b092f3e500f64818920c817491b8b9094f28c2c2b9c6721b257b8878ce47182122b8ea84aeacd84a8aa28cb1f1fe48a26355a7bca4b8306 (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 108 (remaining gas: 1039140.277 units remaining) - [ 0 + [ 0 (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 109 (remaining gas: 1039140.262 units remaining) - [ True + [ True (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 110 (remaining gas: 1039140.252 units remaining) [ (Pair None {} @@ -564,7 +564,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 110 (remaining gas: 1039140.237 units remaining) [ (Pair None {} @@ -572,7 +572,7 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 116 (remaining gas: 1039140.227 units remaining) [ (Pair None {} @@ -580,23 +580,23 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) + { DUP ; DROP ; PACK }) (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 117 (remaining gas: 1039140.217 units remaining) - [ None + [ None (Pair None {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 118 (remaining gas: 1039140.202 units remaining) [ (Pair None {} @@ -604,429 +604,429 @@ trace (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 120 (remaining gas: 1039140.192 units remaining) - [ None + [ None (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 118 (remaining gas: 1039140.162 units remaining) - [ None - None + [ None + None (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 121 (remaining gas: 1039139.935 units remaining) - [ 0x050306 - None + [ 0x050306 + None (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 122 (remaining gas: 1039139.920 units remaining) - [ None + [ None (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 124 (remaining gas: 1039139.693 units remaining) - [ 0x050306 + [ 0x050306 (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 125 (remaining gas: 1039139.273 units remaining) - [ (Some None) + [ (Some None) (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 129 (remaining gas: 1039139.263 units remaining) - [ None + [ None (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 129 (remaining gas: 1039139.248 units remaining) - [ None + [ None (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 135 (remaining gas: 1039139.021 units remaining) - [ 0x050306 + [ 0x050306 (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 122 (remaining gas: 1039138.991 units remaining) - [ 0x050306 - 0x050306 + [ 0x050306 + 0x050306 (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 138 (remaining gas: 1039138.956 units remaining) - [ 0 + [ 0 (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 139 (remaining gas: 1039138.941 units remaining) - [ True + [ True (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 140 (remaining gas: 1039138.931 units remaining) [ (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 140 (remaining gas: 1039138.916 units remaining) [ (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 146 (remaining gas: 1039138.906 units remaining) [ (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) + { DUP ; DROP ; PACK }) (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 147 (remaining gas: 1039138.896 units remaining) - [ {} + [ {} (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 148 (remaining gas: 1039138.881 units remaining) [ (Pair {} {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} - { DUP ; DROP ; PACK }) ] + { DUP ; DROP ; PACK }) ] - location: 150 (remaining gas: 1039138.871 units remaining) - [ {} - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 148 (remaining gas: 1039138.841 units remaining) - [ {} - {} - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + {} + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 151 (remaining gas: 1039138.515 units remaining) - [ 0x050200000000 - {} - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x050200000000 + {} + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 152 (remaining gas: 1039138.500 units remaining) - [ {} - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 154 (remaining gas: 1039138.174 units remaining) - [ 0x050200000000 - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x050200000000 + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 155 (remaining gas: 1039137.694 units remaining) - [ (Some {}) - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Some {}) + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 159 (remaining gas: 1039137.684 units remaining) - [ {} - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 159 (remaining gas: 1039137.669 units remaining) - [ {} - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 165 (remaining gas: 1039137.343 units remaining) - [ 0x050200000000 - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x050200000000 + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 152 (remaining gas: 1039137.313 units remaining) - [ 0x050200000000 - 0x050200000000 - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x050200000000 + 0x050200000000 + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 168 (remaining gas: 1039137.278 units remaining) - [ 0 - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0 + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 169 (remaining gas: 1039137.263 units remaining) - [ True - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ True + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 170 (remaining gas: 1039137.253 units remaining) - [ (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 170 (remaining gas: 1039137.238 units remaining) - [ (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 176 (remaining gas: 1039137.228 units remaining) - [ (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 177 (remaining gas: 1039137.218 units remaining) - [ {} - (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 178 (remaining gas: 1039137.203 units remaining) - [ (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair {} (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 180 (remaining gas: 1039137.193 units remaining) - [ {} - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 178 (remaining gas: 1039137.163 units remaining) - [ {} - {} - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + {} + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 181 (remaining gas: 1039136.837 units remaining) - [ 0x050200000000 - {} - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x050200000000 + {} + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 182 (remaining gas: 1039136.822 units remaining) - [ {} - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 184 (remaining gas: 1039136.496 units remaining) - [ 0x050200000000 - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x050200000000 + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 185 (remaining gas: 1039136.016 units remaining) - [ (Some {}) - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Some {}) + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 189 (remaining gas: 1039136.006 units remaining) - [ {} - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 189 (remaining gas: 1039135.991 units remaining) - [ {} - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 195 (remaining gas: 1039135.665 units remaining) - [ 0x050200000000 - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x050200000000 + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 182 (remaining gas: 1039135.635 units remaining) - [ 0x050200000000 - 0x050200000000 - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x050200000000 + 0x050200000000 + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 198 (remaining gas: 1039135.600 units remaining) - [ 0 - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0 + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 199 (remaining gas: 1039135.585 units remaining) - [ True - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ True + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 200 (remaining gas: 1039135.575 units remaining) - [ (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 200 (remaining gas: 1039135.560 units remaining) - [ (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 206 (remaining gas: 1039135.550 units remaining) - [ (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 207 (remaining gas: 1039135.540 units remaining) - [ (Pair 40 -10) - (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair 40 -10) + (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 208 (remaining gas: 1039135.525 units remaining) - [ (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair (Pair 40 -10) (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 210 (remaining gas: 1039135.515 units remaining) - [ (Pair 40 -10) - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair 40 -10) + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 208 (remaining gas: 1039135.485 units remaining) - [ (Pair 40 -10) - (Pair 40 -10) - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair 40 -10) + (Pair 40 -10) + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 211 (remaining gas: 1039134.934 units remaining) - [ 0x0507070028004a - (Pair 40 -10) - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x0507070028004a + (Pair 40 -10) + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 212 (remaining gas: 1039134.919 units remaining) - [ (Pair 40 -10) - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair 40 -10) + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 214 (remaining gas: 1039134.368 units remaining) - [ 0x0507070028004a - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x0507070028004a + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 215 (remaining gas: 1039133.668 units remaining) - [ (Some (Pair 40 -10)) - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Some (Pair 40 -10)) + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 220 (remaining gas: 1039133.658 units remaining) - [ (Pair 40 -10) - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair 40 -10) + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 220 (remaining gas: 1039133.643 units remaining) - [ (Pair 40 -10) - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair 40 -10) + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 226 (remaining gas: 1039133.092 units remaining) - [ 0x0507070028004a - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x0507070028004a + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 212 (remaining gas: 1039133.062 units remaining) - [ 0x0507070028004a - 0x0507070028004a - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0x0507070028004a + 0x0507070028004a + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 229 (remaining gas: 1039133.027 units remaining) - [ 0 - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ 0 + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 230 (remaining gas: 1039133.012 units remaining) - [ True - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ True + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 231 (remaining gas: 1039133.002 units remaining) - [ (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 231 (remaining gas: 1039132.987 units remaining) - [ (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 237 (remaining gas: 1039132.977 units remaining) - [ (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 238 (remaining gas: 1039132.967 units remaining) - [ (Right "2019-09-09T08:35:33Z") - (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Right "2019-09-09T08:35:33Z") + (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 239 (remaining gas: 1039132.952 units remaining) - [ (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] + [ (Pair (Right "2019-09-09T08:35:33Z") {} { DUP ; DROP ; PACK }) ] - location: 241 (remaining gas: 1039132.942 units remaining) - [ (Right "2019-09-09T08:35:33Z") - (Pair {} { DUP ; DROP ; PACK }) ] + [ (Right "2019-09-09T08:35:33Z") + (Pair {} { DUP ; DROP ; PACK }) ] - location: 239 (remaining gas: 1039132.912 units remaining) - [ (Right "2019-09-09T08:35:33Z") - (Right "2019-09-09T08:35:33Z") - (Pair {} { DUP ; DROP ; PACK }) ] + [ (Right "2019-09-09T08:35:33Z") + (Right "2019-09-09T08:35:33Z") + (Pair {} { DUP ; DROP ; PACK }) ] - location: 242 (remaining gas: 1039132.391 units remaining) - [ 0x0505080095bbb0d70b - (Right "2019-09-09T08:35:33Z") - (Pair {} { DUP ; DROP ; PACK }) ] + [ 0x0505080095bbb0d70b + (Right "2019-09-09T08:35:33Z") + (Pair {} { DUP ; DROP ; PACK }) ] - location: 243 (remaining gas: 1039132.376 units remaining) - [ (Right "2019-09-09T08:35:33Z") - (Pair {} { DUP ; DROP ; PACK }) ] + [ (Right "2019-09-09T08:35:33Z") + (Pair {} { DUP ; DROP ; PACK }) ] - location: 245 (remaining gas: 1039131.855 units remaining) - [ 0x0505080095bbb0d70b - (Pair {} { DUP ; DROP ; PACK }) ] + [ 0x0505080095bbb0d70b + (Pair {} { DUP ; DROP ; PACK }) ] - location: 246 (remaining gas: 1039131.214 units remaining) - [ (Some (Right "2019-09-09T08:35:33Z")) - (Pair {} { DUP ; DROP ; PACK }) ] + [ (Some (Right "2019-09-09T08:35:33Z")) + (Pair {} { DUP ; DROP ; PACK }) ] - location: 251 (remaining gas: 1039131.204 units remaining) - [ (Right "2019-09-09T08:35:33Z") - (Pair {} { DUP ; DROP ; PACK }) ] + [ (Right "2019-09-09T08:35:33Z") + (Pair {} { DUP ; DROP ; PACK }) ] - location: 251 (remaining gas: 1039131.189 units remaining) - [ (Right "2019-09-09T08:35:33Z") - (Pair {} { DUP ; DROP ; PACK }) ] + [ (Right "2019-09-09T08:35:33Z") + (Pair {} { DUP ; DROP ; PACK }) ] - location: 257 (remaining gas: 1039130.668 units remaining) - [ 0x0505080095bbb0d70b - (Pair {} { DUP ; DROP ; PACK }) ] + [ 0x0505080095bbb0d70b + (Pair {} { DUP ; DROP ; PACK }) ] - location: 243 (remaining gas: 1039130.638 units remaining) - [ 0x0505080095bbb0d70b - 0x0505080095bbb0d70b - (Pair {} { DUP ; DROP ; PACK }) ] + [ 0x0505080095bbb0d70b + 0x0505080095bbb0d70b + (Pair {} { DUP ; DROP ; PACK }) ] - location: 260 (remaining gas: 1039130.603 units remaining) - [ 0 - (Pair {} { DUP ; DROP ; PACK }) ] + [ 0 + (Pair {} { DUP ; DROP ; PACK }) ] - location: 261 (remaining gas: 1039130.588 units remaining) - [ True - (Pair {} { DUP ; DROP ; PACK }) ] + [ True + (Pair {} { DUP ; DROP ; PACK }) ] - location: 262 (remaining gas: 1039130.578 units remaining) - [ (Pair {} { DUP ; DROP ; PACK }) ] + [ (Pair {} { DUP ; DROP ; PACK }) ] - location: 262 (remaining gas: 1039130.563 units remaining) - [ (Pair {} { DUP ; DROP ; PACK }) ] + [ (Pair {} { DUP ; DROP ; PACK }) ] - location: 268 (remaining gas: 1039130.553 units remaining) - [ (Pair {} { DUP ; DROP ; PACK }) - (Pair {} { DUP ; DROP ; PACK }) ] + [ (Pair {} { DUP ; DROP ; PACK }) + (Pair {} { DUP ; DROP ; PACK }) ] - location: 269 (remaining gas: 1039130.543 units remaining) - [ {} - (Pair {} { DUP ; DROP ; PACK }) ] + [ {} + (Pair {} { DUP ; DROP ; PACK }) ] - location: 270 (remaining gas: 1039130.528 units remaining) - [ (Pair {} { DUP ; DROP ; PACK }) ] + [ (Pair {} { DUP ; DROP ; PACK }) ] - location: 272 (remaining gas: 1039130.518 units remaining) - [ {} - { DUP ; DROP ; PACK } ] + [ {} + { DUP ; DROP ; PACK } ] - location: 270 (remaining gas: 1039130.488 units remaining) - [ {} - {} - { DUP ; DROP ; PACK } ] + [ {} + {} + { DUP ; DROP ; PACK } ] - location: 273 (remaining gas: 1039130.162 units remaining) - [ 0x050200000000 - {} - { DUP ; DROP ; PACK } ] + [ 0x050200000000 + {} + { DUP ; DROP ; PACK } ] - location: 274 (remaining gas: 1039130.147 units remaining) - [ {} - { DUP ; DROP ; PACK } ] + [ {} + { DUP ; DROP ; PACK } ] - location: 276 (remaining gas: 1039129.821 units remaining) - [ 0x050200000000 - { DUP ; DROP ; PACK } ] + [ 0x050200000000 + { DUP ; DROP ; PACK } ] - location: 277 (remaining gas: 1039129.341 units remaining) - [ (Some {}) - { DUP ; DROP ; PACK } ] + [ (Some {}) + { DUP ; DROP ; PACK } ] - location: 282 (remaining gas: 1039129.331 units remaining) - [ {} - { DUP ; DROP ; PACK } ] + [ {} + { DUP ; DROP ; PACK } ] - location: 282 (remaining gas: 1039129.316 units remaining) - [ {} - { DUP ; DROP ; PACK } ] + [ {} + { DUP ; DROP ; PACK } ] - location: 288 (remaining gas: 1039128.990 units remaining) - [ 0x050200000000 - { DUP ; DROP ; PACK } ] + [ 0x050200000000 + { DUP ; DROP ; PACK } ] - location: 274 (remaining gas: 1039128.960 units remaining) - [ 0x050200000000 - 0x050200000000 - { DUP ; DROP ; PACK } ] + [ 0x050200000000 + 0x050200000000 + { DUP ; DROP ; PACK } ] - location: 291 (remaining gas: 1039128.925 units remaining) - [ 0 - { DUP ; DROP ; PACK } ] + [ 0 + { DUP ; DROP ; PACK } ] - location: 292 (remaining gas: 1039128.910 units remaining) - [ True - { DUP ; DROP ; PACK } ] + [ True + { DUP ; DROP ; PACK } ] - location: 293 (remaining gas: 1039128.900 units remaining) - [ { DUP ; DROP ; PACK } ] + [ { DUP ; DROP ; PACK } ] - location: 293 (remaining gas: 1039128.885 units remaining) - [ { DUP ; DROP ; PACK } ] + [ { DUP ; DROP ; PACK } ] - location: 299 (remaining gas: 1039128.875 units remaining) - [ { DUP ; DROP ; PACK } - { DUP ; DROP ; PACK } ] + [ { DUP ; DROP ; PACK } + { DUP ; DROP ; PACK } ] - location: 300 (remaining gas: 1039127.738 units remaining) - [ 0x05020000000603210320030c - { DUP ; DROP ; PACK } ] + [ 0x05020000000603210320030c + { DUP ; DROP ; PACK } ] - location: 301 (remaining gas: 1039127.723 units remaining) - [ { DUP ; DROP ; PACK } ] + [ { DUP ; DROP ; PACK } ] - location: 303 (remaining gas: 1039126.586 units remaining) - [ 0x05020000000603210320030c ] + [ 0x05020000000603210320030c ] - location: 304 (remaining gas: 1039124.345 units remaining) - [ (Some { DUP ; DROP ; PACK }) ] + [ (Some { DUP ; DROP ; PACK }) ] - location: 309 (remaining gas: 1039124.335 units remaining) - [ { DUP ; DROP ; PACK } ] + [ { DUP ; DROP ; PACK } ] - location: 309 (remaining gas: 1039124.320 units remaining) - [ { DUP ; DROP ; PACK } ] + [ { DUP ; DROP ; PACK } ] - location: 315 (remaining gas: 1039123.183 units remaining) - [ 0x05020000000603210320030c ] + [ 0x05020000000603210320030c ] - location: 301 (remaining gas: 1039123.153 units remaining) - [ 0x05020000000603210320030c - 0x05020000000603210320030c ] + [ 0x05020000000603210320030c + 0x05020000000603210320030c ] - location: 318 (remaining gas: 1039123.118 units remaining) - [ 0 ] + [ 0 ] - location: 319 (remaining gas: 1039123.103 units remaining) - [ True ] + [ True ] - location: 320 (remaining gas: 1039123.093 units remaining) [ ] - location: 320 (remaining gas: 1039123.078 units remaining) [ ] - location: 326 (remaining gas: 1039123.068 units remaining) - [ Unit ] + [ Unit ] - location: 327 (remaining gas: 1039123.053 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 329 (remaining gas: 1039123.038 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False False)-(Some (Pair False False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False False)-(Some (Pair False False))].out index e3f3b1fd9c..f5b495d106 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False False)-(Some (Pair False False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False False)-(Some (Pair False False))].out @@ -8,14 +8,14 @@ big_map diff trace - location: 12 (remaining gas: 1039993.234 units remaining) - [ (Pair (Pair False False) None) ] + [ (Pair (Pair False False) None) ] - location: 12 (remaining gas: 1039993.224 units remaining) - [ (Pair False False) ] + [ (Pair False False) ] - location: 13 (remaining gas: 1039993.209 units remaining) - [ (Some (Pair False False)) ] + [ (Some (Pair False False)) ] - location: 14 (remaining gas: 1039993.194 units remaining) - [ {} - (Some (Pair False False)) ] + [ {} + (Some (Pair False False)) ] - location: 16 (remaining gas: 1039993.179 units remaining) - [ (Pair {} (Some (Pair False False))) ] + [ (Pair {} (Some (Pair False False))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False True)-(Some (Pair False True))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False True)-(Some (Pair False True))].out index dfdc30f1db..b720033e0a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False True)-(Some (Pair False True))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair False True)-(Some (Pair False True))].out @@ -8,14 +8,14 @@ big_map diff trace - location: 12 (remaining gas: 1039993.234 units remaining) - [ (Pair (Pair False True) None) ] + [ (Pair (Pair False True) None) ] - location: 12 (remaining gas: 1039993.224 units remaining) - [ (Pair False True) ] + [ (Pair False True) ] - location: 13 (remaining gas: 1039993.209 units remaining) - [ (Some (Pair False True)) ] + [ (Some (Pair False True)) ] - location: 14 (remaining gas: 1039993.194 units remaining) - [ {} - (Some (Pair False True)) ] + [ {} + (Some (Pair False True)) ] - location: 16 (remaining gas: 1039993.179 units remaining) - [ (Pair {} (Some (Pair False True))) ] + [ (Pair {} (Some (Pair False True))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True False)-(Some (Pair True False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True False)-(Some (Pair True False))].out index 643b65d499..b71fe71bfa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True False)-(Some (Pair True False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True False)-(Some (Pair True False))].out @@ -8,14 +8,14 @@ big_map diff trace - location: 12 (remaining gas: 1039993.234 units remaining) - [ (Pair (Pair True False) None) ] + [ (Pair (Pair True False) None) ] - location: 12 (remaining gas: 1039993.224 units remaining) - [ (Pair True False) ] + [ (Pair True False) ] - location: 13 (remaining gas: 1039993.209 units remaining) - [ (Some (Pair True False)) ] + [ (Some (Pair True False)) ] - location: 14 (remaining gas: 1039993.194 units remaining) - [ {} - (Some (Pair True False)) ] + [ {} + (Some (Pair True False)) ] - location: 16 (remaining gas: 1039993.179 units remaining) - [ (Pair {} (Some (Pair True False))) ] + [ (Pair {} (Some (Pair True False))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True True)-(Some (Pair True True))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True True)-(Some (Pair True True))].out index 44f9f436f6..ae810aeb4c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True True)-(Some (Pair True True))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pair_id.tz-None-(Pair True True)-(Some (Pair True True))].out @@ -8,14 +8,14 @@ big_map diff trace - location: 12 (remaining gas: 1039993.234 units remaining) - [ (Pair (Pair True True) None) ] + [ (Pair (Pair True True) None) ] - location: 12 (remaining gas: 1039993.224 units remaining) - [ (Pair True True) ] + [ (Pair True True) ] - location: 13 (remaining gas: 1039993.209 units remaining) - [ (Some (Pair True True)) ] + [ (Some (Pair True True)) ] - location: 14 (remaining gas: 1039993.194 units remaining) - [ {} - (Some (Pair True True)) ] + [ {} + (Some (Pair True True)) ] - location: 16 (remaining gas: 1039993.179 units remaining) - [ (Pair {} (Some (Pair True True))) ] + [ (Pair {} (Some (Pair True True))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec.tz-14-38-52].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec.tz-14-38-52].out index 9141ea4d86..c1083e7a28 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec.tz-14-38-52].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec.tz-14-38-52].out @@ -8,40 +8,40 @@ big_map diff trace - location: 7 (remaining gas: 1039989.309 units remaining) - [ (Pair 38 14) ] + [ (Pair 38 14) ] - location: 7 (remaining gas: 1039989.299 units remaining) - [ { UNPAIR ; ADD } - (Pair 38 14) ] + [ { UNPAIR ; ADD } + (Pair 38 14) ] - location: 15 (remaining gas: 1039989.289 units remaining) - [ (Pair 38 14) - { UNPAIR ; ADD } ] + [ (Pair 38 14) + { UNPAIR ; ADD } ] - location: 16 (remaining gas: 1039989.279 units remaining) - [ 38 - 14 - { UNPAIR ; ADD } ] + [ 38 + 14 + { UNPAIR ; ADD } ] - location: 17 (remaining gas: 1039989.264 units remaining) - [ 14 - { UNPAIR ; ADD } ] + [ 14 + { UNPAIR ; ADD } ] - location: 19 (remaining gas: 1039989.039 units remaining) - [ { PUSH nat 14 ; PAIR ; { UNPAIR ; ADD } } ] + [ { PUSH nat 14 ; PAIR ; { UNPAIR ; ADD } } ] - location: 17 (remaining gas: 1039989.009 units remaining) - [ 38 - { PUSH nat 14 ; PAIR ; { UNPAIR ; ADD } } ] + [ 38 + { PUSH nat 14 ; PAIR ; { UNPAIR ; ADD } } ] - location: 12 (remaining gas: 1039988.999 units remaining) - [ 14 - 38 ] + [ 14 + 38 ] - location: 12 (remaining gas: 1039988.984 units remaining) - [ (Pair 14 38) ] + [ (Pair 14 38) ] - location: 13 (remaining gas: 1039988.974 units remaining) - [ 14 - 38 ] + [ 14 + 38 ] - location: 14 (remaining gas: 1039988.919 units remaining) - [ 52 ] + [ 52 ] - location: 20 (remaining gas: 1039988.889 units remaining) - [ 52 ] + [ 52 ] - location: 21 (remaining gas: 1039988.874 units remaining) - [ {} - 52 ] + [ {} + 52 ] - location: 23 (remaining gas: 1039988.859 units remaining) - [ (Pair {} 52) ] + [ (Pair {} 52) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec_2.tz-{ 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec_2.tz-{ 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out index b497c3c52f..b34efcabf6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec_2.tz-{ 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[pexec_2.tz-{ 0 ; 1 ; 2 ; 3}-4-{ 0 ; 7 ; 14 ; 21 }].out @@ -8,275 +8,275 @@ big_map diff trace - location: 8 (remaining gas: 1039979.891 units remaining) - [ (Pair 4 { 0 ; 1 ; 2 ; 3 }) ] + [ (Pair 4 { 0 ; 1 ; 2 ; 3 }) ] - location: 8 (remaining gas: 1039979.881 units remaining) - [ 4 - { 0 ; 1 ; 2 ; 3 } ] + [ 4 + { 0 ; 1 ; 2 ; 3 } ] - location: 9 (remaining gas: 1039979.871 units remaining) - [ { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } - 4 - { 0 ; 1 ; 2 ; 3 } ] + [ { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } + 4 + { 0 ; 1 ; 2 ; 3 } ] - location: 23 (remaining gas: 1039979.861 units remaining) - [ 4 - { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } - { 0 ; 1 ; 2 ; 3 } ] + [ 4 + { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } + { 0 ; 1 ; 2 ; 3 } ] - location: 24 (remaining gas: 1039979.636 units remaining) - [ { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } - { 0 ; 1 ; 2 ; 3 } ] + [ { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } + { 0 ; 1 ; 2 ; 3 } ] - location: 25 (remaining gas: 1039979.626 units remaining) - [ 3 - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } - { 0 ; 1 ; 2 ; 3 } ] + [ 3 + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } + { 0 ; 1 ; 2 ; 3 } ] - location: 28 (remaining gas: 1039979.401 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } - { 0 ; 1 ; 2 ; 3 } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { 0 ; 1 ; 2 ; 3 } ] - location: 29 (remaining gas: 1039979.391 units remaining) - [ { 0 ; 1 ; 2 ; 3 } + [ { 0 ; 1 ; 2 ; 3 } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039979.391 units remaining) - [ 0 + [ 0 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039979.376 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 34 (remaining gas: 1039979.366 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039979.336 units remaining) - [ 0 + [ 0 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 16 (remaining gas: 1039979.326 units remaining) - [ 3 - 0 ] + [ 3 + 0 ] - location: 16 (remaining gas: 1039979.311 units remaining) - [ (Pair 3 0) ] + [ (Pair 3 0) ] - location: 16 (remaining gas: 1039979.301 units remaining) - [ 4 - (Pair 3 0) ] + [ 4 + (Pair 3 0) ] - location: 16 (remaining gas: 1039979.286 units remaining) - [ (Pair 4 3 0) ] + [ (Pair 4 3 0) ] - location: 17 (remaining gas: 1039979.276 units remaining) - [ 4 - (Pair 3 0) ] + [ 4 + (Pair 3 0) ] - location: 18 (remaining gas: 1039979.261 units remaining) - [ (Pair 3 0) ] + [ (Pair 3 0) ] - location: 20 (remaining gas: 1039979.251 units remaining) - [ 3 - 0 ] + [ 3 + 0 ] - location: 18 (remaining gas: 1039979.221 units remaining) - [ 4 - 3 - 0 ] + [ 4 + 3 + 0 ] - location: 21 (remaining gas: 1039979.166 units remaining) - [ 7 - 0 ] + [ 7 + 0 ] - location: 22 (remaining gas: 1039979.065 units remaining) - [ 0 ] + [ 0 ] - location: 35 (remaining gas: 1039979.035 units remaining) - [ 0 + [ 0 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039979.020 units remaining) - [ 1 + [ 1 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039979.005 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 34 (remaining gas: 1039978.995 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039978.965 units remaining) - [ 1 + [ 1 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 16 (remaining gas: 1039978.955 units remaining) - [ 3 - 1 ] + [ 3 + 1 ] - location: 16 (remaining gas: 1039978.940 units remaining) - [ (Pair 3 1) ] + [ (Pair 3 1) ] - location: 16 (remaining gas: 1039978.930 units remaining) - [ 4 - (Pair 3 1) ] + [ 4 + (Pair 3 1) ] - location: 16 (remaining gas: 1039978.915 units remaining) - [ (Pair 4 3 1) ] + [ (Pair 4 3 1) ] - location: 17 (remaining gas: 1039978.905 units remaining) - [ 4 - (Pair 3 1) ] + [ 4 + (Pair 3 1) ] - location: 18 (remaining gas: 1039978.890 units remaining) - [ (Pair 3 1) ] + [ (Pair 3 1) ] - location: 20 (remaining gas: 1039978.880 units remaining) - [ 3 - 1 ] + [ 3 + 1 ] - location: 18 (remaining gas: 1039978.850 units remaining) - [ 4 - 3 - 1 ] + [ 4 + 3 + 1 ] - location: 21 (remaining gas: 1039978.795 units remaining) - [ 7 - 1 ] + [ 7 + 1 ] - location: 22 (remaining gas: 1039978.691 units remaining) - [ 7 ] + [ 7 ] - location: 35 (remaining gas: 1039978.661 units remaining) - [ 7 + [ 7 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039978.646 units remaining) - [ 2 + [ 2 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039978.631 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 34 (remaining gas: 1039978.621 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039978.591 units remaining) - [ 2 + [ 2 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 16 (remaining gas: 1039978.581 units remaining) - [ 3 - 2 ] + [ 3 + 2 ] - location: 16 (remaining gas: 1039978.566 units remaining) - [ (Pair 3 2) ] + [ (Pair 3 2) ] - location: 16 (remaining gas: 1039978.556 units remaining) - [ 4 - (Pair 3 2) ] + [ 4 + (Pair 3 2) ] - location: 16 (remaining gas: 1039978.541 units remaining) - [ (Pair 4 3 2) ] + [ (Pair 4 3 2) ] - location: 17 (remaining gas: 1039978.531 units remaining) - [ 4 - (Pair 3 2) ] + [ 4 + (Pair 3 2) ] - location: 18 (remaining gas: 1039978.516 units remaining) - [ (Pair 3 2) ] + [ (Pair 3 2) ] - location: 20 (remaining gas: 1039978.506 units remaining) - [ 3 - 2 ] + [ 3 + 2 ] - location: 18 (remaining gas: 1039978.476 units remaining) - [ 4 - 3 - 2 ] + [ 4 + 3 + 2 ] - location: 21 (remaining gas: 1039978.421 units remaining) - [ 7 - 2 ] + [ 7 + 2 ] - location: 22 (remaining gas: 1039978.317 units remaining) - [ 14 ] + [ 14 ] - location: 35 (remaining gas: 1039978.287 units remaining) - [ 14 + [ 14 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039978.272 units remaining) - [ 3 + [ 3 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039978.257 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 34 (remaining gas: 1039978.247 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 32 (remaining gas: 1039978.217 units remaining) - [ 3 + [ 3 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 16 (remaining gas: 1039978.207 units remaining) - [ 3 - 3 ] + [ 3 + 3 ] - location: 16 (remaining gas: 1039978.192 units remaining) - [ (Pair 3 3) ] + [ (Pair 3 3) ] - location: 16 (remaining gas: 1039978.182 units remaining) - [ 4 - (Pair 3 3) ] + [ 4 + (Pair 3 3) ] - location: 16 (remaining gas: 1039978.167 units remaining) - [ (Pair 4 3 3) ] + [ (Pair 4 3 3) ] - location: 17 (remaining gas: 1039978.157 units remaining) - [ 4 - (Pair 3 3) ] + [ 4 + (Pair 3 3) ] - location: 18 (remaining gas: 1039978.142 units remaining) - [ (Pair 3 3) ] + [ (Pair 3 3) ] - location: 20 (remaining gas: 1039978.132 units remaining) - [ 3 - 3 ] + [ 3 + 3 ] - location: 18 (remaining gas: 1039978.102 units remaining) - [ 4 - 3 - 3 ] + [ 4 + 3 + 3 ] - location: 21 (remaining gas: 1039978.047 units remaining) - [ 7 - 3 ] + [ 7 + 3 ] - location: 22 (remaining gas: 1039977.943 units remaining) - [ 21 ] + [ 21 ] - location: 35 (remaining gas: 1039977.913 units remaining) - [ 21 + [ 21 { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 30 (remaining gas: 1039977.898 units remaining) - [ { 0 ; 7 ; 14 ; 21 } + [ { 0 ; 7 ; 14 ; 21 } { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 36 (remaining gas: 1039977.883 units remaining) [ { PUSH int 3 ; PAIR ; - { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] + { PUSH int 4 ; PAIR ; { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL } } } ] - location: 38 (remaining gas: 1039977.873 units remaining) [ ] - location: 36 (remaining gas: 1039977.843 units remaining) - [ { 0 ; 7 ; 14 ; 21 } ] + [ { 0 ; 7 ; 14 ; 21 } ] - location: 39 (remaining gas: 1039977.828 units remaining) - [ {} - { 0 ; 7 ; 14 ; 21 } ] + [ {} + { 0 ; 7 ; 14 ; 21 } ] - location: 41 (remaining gas: 1039977.813 units remaining) - [ (Pair {} { 0 ; 7 ; 14 ; 21 }) ] + [ (Pair {} { 0 ; 7 ; 14 ; 21 }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ret_int.tz-None-Unit-(Some 300)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ret_int.tz-None-Unit-(Some 300)].out index 44514a1ea4..5ccc4d0bc9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ret_int.tz-None-Unit-(Some 300)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[ret_int.tz-None-Unit-(Some 300)].out @@ -8,16 +8,16 @@ big_map diff trace - location: 8 (remaining gas: 1039993.541 units remaining) - [ (Pair Unit None) ] + [ (Pair Unit None) ] - location: 8 (remaining gas: 1039993.531 units remaining) [ ] - location: 9 (remaining gas: 1039993.521 units remaining) - [ 300 ] + [ 300 ] - location: 12 (remaining gas: 1039993.506 units remaining) - [ (Some 300) ] + [ (Some 300) ] - location: 13 (remaining gas: 1039993.491 units remaining) - [ {} - (Some 300) ] + [ {} + (Some 300) ] - location: 15 (remaining gas: 1039993.476 units remaining) - [ (Pair {} (Some 300)) ] + [ (Pair {} (Some 300)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index 9230c50f08..055db4acc2 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -8,35 +8,35 @@ big_map diff trace - location: 9 (remaining gas: 1039990.977 units remaining) - [ (Pair { "c" ; "b" ; "a" } { "" }) ] + [ (Pair { "c" ; "b" ; "a" } { "" }) ] - location: 9 (remaining gas: 1039990.967 units remaining) - [ { "c" ; "b" ; "a" } ] + [ { "c" ; "b" ; "a" } ] - location: 10 (remaining gas: 1039990.952 units remaining) - [ {} - { "c" ; "b" ; "a" } ] + [ {} + { "c" ; "b" ; "a" } ] - location: 12 (remaining gas: 1039990.942 units remaining) - [ { "c" ; "b" ; "a" } - {} ] + [ { "c" ; "b" ; "a" } + {} ] - location: 13 (remaining gas: 1039990.942 units remaining) - [ "c" - {} ] + [ "c" + {} ] - location: 15 (remaining gas: 1039990.927 units remaining) - [ { "c" } ] + [ { "c" } ] - location: 13 (remaining gas: 1039990.912 units remaining) - [ "b" - { "c" } ] + [ "b" + { "c" } ] - location: 15 (remaining gas: 1039990.897 units remaining) - [ { "b" ; "c" } ] + [ { "b" ; "c" } ] - location: 13 (remaining gas: 1039990.882 units remaining) - [ "a" - { "b" ; "c" } ] + [ "a" + { "b" ; "c" } ] - location: 15 (remaining gas: 1039990.867 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 13 (remaining gas: 1039990.852 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 16 (remaining gas: 1039990.837 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 18 (remaining gas: 1039990.822 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{}-{}].out" index 30c8cbb40f..9ffcd7995b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse.tz-{\"\"}-{}-{}].out" @@ -8,20 +8,20 @@ big_map diff trace - location: 9 (remaining gas: 1039991.349 units remaining) - [ (Pair {} { "" }) ] + [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039991.339 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039991.324 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 12 (remaining gas: 1039991.314 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039991.314 units remaining) - [ {} ] + [ {} ] - location: 16 (remaining gas: 1039991.299 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 18 (remaining gas: 1039991.284 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index ea2ad6533d..633d6da2d7 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{ \"c\" ; \"b\" ; \"a\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -8,124 +8,124 @@ big_map diff trace - location: 9 (remaining gas: 1039982.192 units remaining) - [ (Pair { "c" ; "b" ; "a" } { "" }) ] + [ (Pair { "c" ; "b" ; "a" } { "" }) ] - location: 9 (remaining gas: 1039982.182 units remaining) - [ { "c" ; "b" ; "a" } ] + [ { "c" ; "b" ; "a" } ] - location: 10 (remaining gas: 1039982.167 units remaining) - [ {} - { "c" ; "b" ; "a" } ] + [ {} + { "c" ; "b" ; "a" } ] - location: 12 (remaining gas: 1039982.157 units remaining) - [ { "c" ; "b" ; "a" } - {} ] + [ { "c" ; "b" ; "a" } + {} ] - location: 13 (remaining gas: 1039982.147 units remaining) - [ True - { "c" ; "b" ; "a" } - {} ] + [ True + { "c" ; "b" ; "a" } + {} ] - location: 16 (remaining gas: 1039982.147 units remaining) - [ { "c" ; "b" ; "a" } - {} ] + [ { "c" ; "b" ; "a" } + {} ] - location: 18 (remaining gas: 1039982.137 units remaining) - [ "c" - { "b" ; "a" } - {} ] + [ "c" + { "b" ; "a" } + {} ] - location: 20 (remaining gas: 1039982.127 units remaining) - [ { "b" ; "a" } - "c" - {} ] + [ { "b" ; "a" } + "c" + {} ] - location: 21 (remaining gas: 1039982.112 units remaining) - [ "c" - {} ] + [ "c" + {} ] - location: 23 (remaining gas: 1039982.097 units remaining) - [ { "c" } ] + [ { "c" } ] - location: 21 (remaining gas: 1039982.067 units remaining) - [ { "b" ; "a" } - { "c" } ] + [ { "b" ; "a" } + { "c" } ] - location: 24 (remaining gas: 1039982.057 units remaining) - [ True - { "b" ; "a" } - { "c" } ] + [ True + { "b" ; "a" } + { "c" } ] - location: 18 (remaining gas: 1039982.042 units remaining) - [ True - { "b" ; "a" } - { "c" } ] + [ True + { "b" ; "a" } + { "c" } ] - location: 16 (remaining gas: 1039982.027 units remaining) - [ { "b" ; "a" } - { "c" } ] + [ { "b" ; "a" } + { "c" } ] - location: 18 (remaining gas: 1039982.017 units remaining) - [ "b" - { "a" } - { "c" } ] + [ "b" + { "a" } + { "c" } ] - location: 20 (remaining gas: 1039982.007 units remaining) - [ { "a" } - "b" - { "c" } ] + [ { "a" } + "b" + { "c" } ] - location: 21 (remaining gas: 1039981.992 units remaining) - [ "b" - { "c" } ] + [ "b" + { "c" } ] - location: 23 (remaining gas: 1039981.977 units remaining) - [ { "b" ; "c" } ] + [ { "b" ; "c" } ] - location: 21 (remaining gas: 1039981.947 units remaining) - [ { "a" } - { "b" ; "c" } ] + [ { "a" } + { "b" ; "c" } ] - location: 24 (remaining gas: 1039981.937 units remaining) - [ True - { "a" } - { "b" ; "c" } ] + [ True + { "a" } + { "b" ; "c" } ] - location: 18 (remaining gas: 1039981.922 units remaining) - [ True - { "a" } - { "b" ; "c" } ] + [ True + { "a" } + { "b" ; "c" } ] - location: 16 (remaining gas: 1039981.907 units remaining) - [ { "a" } - { "b" ; "c" } ] + [ { "a" } + { "b" ; "c" } ] - location: 18 (remaining gas: 1039981.897 units remaining) - [ "a" - {} - { "b" ; "c" } ] + [ "a" + {} + { "b" ; "c" } ] - location: 20 (remaining gas: 1039981.887 units remaining) - [ {} - "a" - { "b" ; "c" } ] + [ {} + "a" + { "b" ; "c" } ] - location: 21 (remaining gas: 1039981.872 units remaining) - [ "a" - { "b" ; "c" } ] + [ "a" + { "b" ; "c" } ] - location: 23 (remaining gas: 1039981.857 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 21 (remaining gas: 1039981.827 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 24 (remaining gas: 1039981.817 units remaining) - [ True - {} - { "a" ; "b" ; "c" } ] + [ True + {} + { "a" ; "b" ; "c" } ] - location: 18 (remaining gas: 1039981.802 units remaining) - [ True - {} - { "a" ; "b" ; "c" } ] + [ True + {} + { "a" ; "b" ; "c" } ] - location: 16 (remaining gas: 1039981.787 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 18 (remaining gas: 1039981.777 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 28 (remaining gas: 1039981.762 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 30 (remaining gas: 1039981.752 units remaining) - [ False - {} - { "a" ; "b" ; "c" } ] + [ False + {} + { "a" ; "b" ; "c" } ] - location: 18 (remaining gas: 1039981.737 units remaining) - [ False - {} - { "a" ; "b" ; "c" } ] + [ False + {} + { "a" ; "b" ; "c" } ] - location: 16 (remaining gas: 1039981.722 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 33 (remaining gas: 1039981.712 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 34 (remaining gas: 1039981.697 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 36 (remaining gas: 1039981.682 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{}-{}].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{}-{}].out" index 9837759860..08e0aada69 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{}-{}].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[reverse_loop.tz-{\"\"}-{}-{}].out" @@ -8,43 +8,43 @@ big_map diff trace - location: 9 (remaining gas: 1039982.564 units remaining) - [ (Pair {} { "" }) ] + [ (Pair {} { "" }) ] - location: 9 (remaining gas: 1039982.554 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039982.539 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 12 (remaining gas: 1039982.529 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039982.519 units remaining) - [ True - {} - {} ] + [ True + {} + {} ] - location: 16 (remaining gas: 1039982.519 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 18 (remaining gas: 1039982.509 units remaining) - [ {} ] + [ {} ] - location: 28 (remaining gas: 1039982.494 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 30 (remaining gas: 1039982.484 units remaining) - [ False - {} - {} ] + [ False + {} + {} ] - location: 18 (remaining gas: 1039982.469 units remaining) - [ False - {} - {} ] + [ False + {} + {} ] - location: 16 (remaining gas: 1039982.454 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 33 (remaining gas: 1039982.444 units remaining) - [ {} ] + [ {} ] - location: 34 (remaining gas: 1039982.429 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 36 (remaining gas: 1039982.414 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sapling_empty_state.tz-{}-Unit-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sapling_empty_state.tz-{}-Unit-0].out index dbe6de2ddb..65bd131c0f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sapling_empty_state.tz-{}-Unit-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sapling_empty_state.tz-{}-Unit-0].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.857 units remaining) - [ (Pair Unit {}) ] + [ (Pair Unit {}) ] - location: 8 (remaining gas: 1039994.847 units remaining) [ ] - location: 9 (remaining gas: 1039994.832 units remaining) - [ {} ] + [ {} ] - location: 11 (remaining gas: 1039994.817 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 13 (remaining gas: 1039994.802 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_address.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_address.tz-Unit-Unit-Unit].out index aace306d54..cd4edf2e27 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_address.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_address.tz-Unit-Unit-Unit].out @@ -8,39 +8,39 @@ big_map diff trace - location: 7 (remaining gas: 1039984.339 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039984.329 units remaining) [ ] - location: 8 (remaining gas: 1039984.319 units remaining) - [ { DROP ; SELF_ADDRESS } ] + [ { DROP ; SELF_ADDRESS } ] - location: 14 (remaining gas: 1039984.309 units remaining) - [ Unit - { DROP ; SELF_ADDRESS } ] + [ Unit + { DROP ; SELF_ADDRESS } ] - location: 12 (remaining gas: 1039984.299 units remaining) [ ] - location: 13 (remaining gas: 1039984.284 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 15 (remaining gas: 1039984.254 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 16 (remaining gas: 1039984.239 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" - "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" + "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 17 (remaining gas: 1039984.229 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" - "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" + "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 20 (remaining gas: 1039984.193 units remaining) - [ 0 ] + [ 0 ] - location: 21 (remaining gas: 1039984.178 units remaining) - [ True ] + [ True ] - location: 22 (remaining gas: 1039984.168 units remaining) [ ] - location: 22 (remaining gas: 1039984.153 units remaining) [ ] - location: 28 (remaining gas: 1039984.143 units remaining) - [ Unit ] + [ Unit ] - location: 29 (remaining gas: 1039984.128 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 31 (remaining gas: 1039984.113 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_default_entrypoint.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_default_entrypoint.tz-Unit-Unit-Unit].out index 8ad3c234e0..fb138d3ee3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_default_entrypoint.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_default_entrypoint.tz-Unit-Unit-Unit].out @@ -8,40 +8,40 @@ big_map diff trace - location: 13 (remaining gas: 1039983.500 units remaining) - [ (Pair (Right (Left Unit)) Unit) ] + [ (Pair (Right (Left Unit)) Unit) ] - location: 13 (remaining gas: 1039983.490 units remaining) [ ] - location: 14 (remaining gas: 1039983.475 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 15 (remaining gas: 1039983.465 units remaining) [ ] - location: 16 (remaining gas: 1039983.450 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] - location: 17 (remaining gas: 1039983.440 units remaining) [ ] - location: 18 (remaining gas: 1039983.425 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 19 (remaining gas: 1039972.472 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 20 (remaining gas: 1039972.457 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 21 (remaining gas: 1039961.504 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 24 (remaining gas: 1039961.469 units remaining) - [ 0 ] + [ 0 ] - location: 25 (remaining gas: 1039961.454 units remaining) - [ True ] + [ True ] - location: 26 (remaining gas: 1039961.444 units remaining) [ ] - location: 26 (remaining gas: 1039961.429 units remaining) [ ] - location: 32 (remaining gas: 1039961.419 units remaining) - [ Unit ] + [ Unit ] - location: 33 (remaining gas: 1039961.404 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 35 (remaining gas: 1039961.389 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_entrypoint.tz-Unit-Left (Left 0)-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_entrypoint.tz-Unit-Left (Left 0)-Unit].out index 82d4d0d938..75ac09514e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_entrypoint.tz-Unit-Left (Left 0)-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[self_with_entrypoint.tz-Unit-Left (Left 0)-Unit].out @@ -8,86 +8,86 @@ big_map diff trace - location: 13 (remaining gas: 1039954.631 units remaining) - [ (Pair (Left (Left 0)) Unit) ] + [ (Pair (Left (Left 0)) Unit) ] - location: 13 (remaining gas: 1039954.621 units remaining) [ ] - location: 14 (remaining gas: 1039954.606 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] - location: 15 (remaining gas: 1039943.620 units remaining) - [ 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] + [ 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 16 (remaining gas: 1039943.605 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 17 (remaining gas: 1039932.652 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 18 (remaining gas: 1039932.642 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 19 (remaining gas: 1039932.627 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 ] - location: 21 (remaining gas: 1039932.617 units remaining) - [ 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 19 (remaining gas: 1039932.587 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 - 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000017011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe60041 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 24 (remaining gas: 1039932.552 units remaining) - [ -1 - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ -1 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 25 (remaining gas: 1039932.537 units remaining) - [ True - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ True + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 26 (remaining gas: 1039932.527 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 26 (remaining gas: 1039932.512 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 32 (remaining gas: 1039932.497 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 33 (remaining gas: 1039921.544 units remaining) - [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 - 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] + [ 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 + 0x050a00000016011d23c1d3d2f8a4ea5e8784b8f7ecf2ad304c0fe600 ] - location: 36 (remaining gas: 1039921.509 units remaining) - [ 0 ] + [ 0 ] - location: 37 (remaining gas: 1039921.494 units remaining) - [ True ] + [ True ] - location: 38 (remaining gas: 1039921.484 units remaining) [ ] - location: 38 (remaining gas: 1039921.469 units remaining) [ ] - location: 44 (remaining gas: 1039921.454 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%A" ] - location: 48 (remaining gas: 1039921.444 units remaining) [ ] - location: 49 (remaining gas: 1039921.429 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%B" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%B" ] - location: 53 (remaining gas: 1039921.419 units remaining) [ ] - location: 54 (remaining gas: 1039921.404 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%maybe_C" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%maybe_C" ] - location: 60 (remaining gas: 1039921.394 units remaining) [ ] - location: 61 (remaining gas: 1039921.379 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%Z" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi%Z" ] - location: 65 (remaining gas: 1039921.369 units remaining) [ ] - location: 66 (remaining gas: 1039921.354 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 76 (remaining gas: 1039921.344 units remaining) [ ] - location: 77 (remaining gas: 1039921.329 units remaining) - [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] + [ "KT1BEqzn5Wx8uJrZNvuS9DVHmLvG9td3fDLi" ] - location: 87 (remaining gas: 1039921.319 units remaining) [ ] - location: 88 (remaining gas: 1039921.309 units remaining) - [ Unit ] + [ Unit ] - location: 89 (remaining gas: 1039921.294 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 91 (remaining gas: 1039921.279 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" index 05f706bdcd..b52075bceb 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"\"-(Pair \"\" 0)].out" @@ -8,42 +8,42 @@ big_map diff trace - location: 9 (remaining gas: 1039987.561 units remaining) - [ (Pair "" "hello" 0) ] + [ (Pair "" "hello" 0) ] - location: 9 (remaining gas: 1039987.551 units remaining) - [ (Pair "" "hello" 0) - (Pair "" "hello" 0) ] + [ (Pair "" "hello" 0) + (Pair "" "hello" 0) ] - location: 10 (remaining gas: 1039987.541 units remaining) - [ (Pair "hello" 0) - (Pair "" "hello" 0) ] + [ (Pair "hello" 0) + (Pair "" "hello" 0) ] - location: 11 (remaining gas: 1039987.526 units remaining) - [ (Pair "" "hello" 0) ] + [ (Pair "" "hello" 0) ] - location: 13 (remaining gas: 1039987.516 units remaining) - [ "" ] + [ "" ] - location: 11 (remaining gas: 1039987.486 units remaining) - [ (Pair "hello" 0) - "" ] + [ (Pair "hello" 0) + "" ] - location: 15 (remaining gas: 1039987.476 units remaining) - [ (Pair "hello" 0) - (Pair "hello" 0) - "" ] + [ (Pair "hello" 0) + (Pair "hello" 0) + "" ] - location: 16 (remaining gas: 1039987.466 units remaining) - [ "hello" - (Pair "hello" 0) - "" ] + [ "hello" + (Pair "hello" 0) + "" ] - location: 17 (remaining gas: 1039987.456 units remaining) - [ (Pair "hello" 0) - "" ] + [ (Pair "hello" 0) + "" ] - location: 18 (remaining gas: 1039987.446 units remaining) - [ 0 - "" ] + [ 0 + "" ] - location: 19 (remaining gas: 1039987.436 units remaining) - [ "" - 0 ] + [ "" + 0 ] - location: 20 (remaining gas: 1039987.421 units remaining) - [ (Pair "" 0) ] + [ (Pair "" 0) ] - location: 21 (remaining gas: 1039987.406 units remaining) - [ {} - (Pair "" 0) ] + [ {} + (Pair "" 0) ] - location: 23 (remaining gas: 1039987.391 units remaining) - [ (Pair {} "" 0) ] + [ (Pair {} "" 0) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" index 7aa7e30add..58358307a6 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"abc\"-(Pair \"abc\" 0)].out" @@ -8,42 +8,42 @@ big_map diff trace - location: 9 (remaining gas: 1039987.531 units remaining) - [ (Pair "abc" "hello" 0) ] + [ (Pair "abc" "hello" 0) ] - location: 9 (remaining gas: 1039987.521 units remaining) - [ (Pair "abc" "hello" 0) - (Pair "abc" "hello" 0) ] + [ (Pair "abc" "hello" 0) + (Pair "abc" "hello" 0) ] - location: 10 (remaining gas: 1039987.511 units remaining) - [ (Pair "hello" 0) - (Pair "abc" "hello" 0) ] + [ (Pair "hello" 0) + (Pair "abc" "hello" 0) ] - location: 11 (remaining gas: 1039987.496 units remaining) - [ (Pair "abc" "hello" 0) ] + [ (Pair "abc" "hello" 0) ] - location: 13 (remaining gas: 1039987.486 units remaining) - [ "abc" ] + [ "abc" ] - location: 11 (remaining gas: 1039987.456 units remaining) - [ (Pair "hello" 0) - "abc" ] + [ (Pair "hello" 0) + "abc" ] - location: 15 (remaining gas: 1039987.446 units remaining) - [ (Pair "hello" 0) - (Pair "hello" 0) - "abc" ] + [ (Pair "hello" 0) + (Pair "hello" 0) + "abc" ] - location: 16 (remaining gas: 1039987.436 units remaining) - [ "hello" - (Pair "hello" 0) - "abc" ] + [ "hello" + (Pair "hello" 0) + "abc" ] - location: 17 (remaining gas: 1039987.426 units remaining) - [ (Pair "hello" 0) - "abc" ] + [ (Pair "hello" 0) + "abc" ] - location: 18 (remaining gas: 1039987.416 units remaining) - [ 0 - "abc" ] + [ 0 + "abc" ] - location: 19 (remaining gas: 1039987.406 units remaining) - [ "abc" - 0 ] + [ "abc" + 0 ] - location: 20 (remaining gas: 1039987.391 units remaining) - [ (Pair "abc" 0) ] + [ (Pair "abc" 0) ] - location: 21 (remaining gas: 1039987.376 units remaining) - [ {} - (Pair "abc" 0) ] + [ {} + (Pair "abc" 0) ] - location: 23 (remaining gas: 1039987.361 units remaining) - [ (Pair {} "abc" 0) ] + [ (Pair {} "abc" 0) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"world\"-(Pair \"world\" 0)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"world\"-(Pair \"world\" 0)].out" index 209613e571..8cea6ca5aa 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"world\"-(Pair \"world\" 0)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_car.tz-(Pair \"hello\" 0)-\"world\"-(Pair \"world\" 0)].out" @@ -8,42 +8,42 @@ big_map diff trace - location: 9 (remaining gas: 1039987.511 units remaining) - [ (Pair "world" "hello" 0) ] + [ (Pair "world" "hello" 0) ] - location: 9 (remaining gas: 1039987.501 units remaining) - [ (Pair "world" "hello" 0) - (Pair "world" "hello" 0) ] + [ (Pair "world" "hello" 0) + (Pair "world" "hello" 0) ] - location: 10 (remaining gas: 1039987.491 units remaining) - [ (Pair "hello" 0) - (Pair "world" "hello" 0) ] + [ (Pair "hello" 0) + (Pair "world" "hello" 0) ] - location: 11 (remaining gas: 1039987.476 units remaining) - [ (Pair "world" "hello" 0) ] + [ (Pair "world" "hello" 0) ] - location: 13 (remaining gas: 1039987.466 units remaining) - [ "world" ] + [ "world" ] - location: 11 (remaining gas: 1039987.436 units remaining) - [ (Pair "hello" 0) - "world" ] + [ (Pair "hello" 0) + "world" ] - location: 15 (remaining gas: 1039987.426 units remaining) - [ (Pair "hello" 0) - (Pair "hello" 0) - "world" ] + [ (Pair "hello" 0) + (Pair "hello" 0) + "world" ] - location: 16 (remaining gas: 1039987.416 units remaining) - [ "hello" - (Pair "hello" 0) - "world" ] + [ "hello" + (Pair "hello" 0) + "world" ] - location: 17 (remaining gas: 1039987.406 units remaining) - [ (Pair "hello" 0) - "world" ] + [ (Pair "hello" 0) + "world" ] - location: 18 (remaining gas: 1039987.396 units remaining) - [ 0 - "world" ] + [ 0 + "world" ] - location: 19 (remaining gas: 1039987.386 units remaining) - [ "world" - 0 ] + [ "world" + 0 ] - location: 20 (remaining gas: 1039987.371 units remaining) - [ (Pair "world" 0) ] + [ (Pair "world" 0) ] - location: 21 (remaining gas: 1039987.356 units remaining) - [ {} - (Pair "world" 0) ] + [ {} + (Pair "world" 0) ] - location: 23 (remaining gas: 1039987.341 units remaining) - [ (Pair {} "world" 0) ] + [ (Pair {} "world" 0) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 0)-1-(Pair \"hello\" 1)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 0)-1-(Pair \"hello\" 1)].out" index fb0d3ede36..abcb3d0f87 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 0)-1-(Pair \"hello\" 1)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 0)-1-(Pair \"hello\" 1)].out" @@ -8,39 +8,39 @@ big_map diff trace - location: 9 (remaining gas: 1039988.178 units remaining) - [ (Pair 1 "hello" 0) ] + [ (Pair 1 "hello" 0) ] - location: 9 (remaining gas: 1039988.168 units remaining) - [ (Pair 1 "hello" 0) - (Pair 1 "hello" 0) ] + [ (Pair 1 "hello" 0) + (Pair 1 "hello" 0) ] - location: 10 (remaining gas: 1039988.158 units remaining) - [ (Pair "hello" 0) - (Pair 1 "hello" 0) ] + [ (Pair "hello" 0) + (Pair 1 "hello" 0) ] - location: 11 (remaining gas: 1039988.143 units remaining) - [ (Pair 1 "hello" 0) ] + [ (Pair 1 "hello" 0) ] - location: 13 (remaining gas: 1039988.133 units remaining) - [ 1 ] + [ 1 ] - location: 11 (remaining gas: 1039988.103 units remaining) - [ (Pair "hello" 0) - 1 ] + [ (Pair "hello" 0) + 1 ] - location: 15 (remaining gas: 1039988.093 units remaining) - [ (Pair "hello" 0) - (Pair "hello" 0) - 1 ] + [ (Pair "hello" 0) + (Pair "hello" 0) + 1 ] - location: 16 (remaining gas: 1039988.083 units remaining) - [ 0 - (Pair "hello" 0) - 1 ] + [ 0 + (Pair "hello" 0) + 1 ] - location: 17 (remaining gas: 1039988.073 units remaining) - [ (Pair "hello" 0) - 1 ] + [ (Pair "hello" 0) + 1 ] - location: 18 (remaining gas: 1039988.063 units remaining) - [ "hello" - 1 ] + [ "hello" + 1 ] - location: 19 (remaining gas: 1039988.048 units remaining) - [ (Pair "hello" 1) ] + [ (Pair "hello" 1) ] - location: 20 (remaining gas: 1039988.033 units remaining) - [ {} - (Pair "hello" 1) ] + [ {} + (Pair "hello" 1) ] - location: 22 (remaining gas: 1039988.018 units remaining) - [ (Pair {} "hello" 1) ] + [ (Pair {} "hello" 1) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 500)-3-(Pair \"hello\" 3)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 500)-3-(Pair \"hello\" 3)].out" index 9c87b488d0..9b0e7122fd 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 500)-3-(Pair \"hello\" 3)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 500)-3-(Pair \"hello\" 3)].out" @@ -8,39 +8,39 @@ big_map diff trace - location: 9 (remaining gas: 1039988.178 units remaining) - [ (Pair 3 "hello" 500) ] + [ (Pair 3 "hello" 500) ] - location: 9 (remaining gas: 1039988.168 units remaining) - [ (Pair 3 "hello" 500) - (Pair 3 "hello" 500) ] + [ (Pair 3 "hello" 500) + (Pair 3 "hello" 500) ] - location: 10 (remaining gas: 1039988.158 units remaining) - [ (Pair "hello" 500) - (Pair 3 "hello" 500) ] + [ (Pair "hello" 500) + (Pair 3 "hello" 500) ] - location: 11 (remaining gas: 1039988.143 units remaining) - [ (Pair 3 "hello" 500) ] + [ (Pair 3 "hello" 500) ] - location: 13 (remaining gas: 1039988.133 units remaining) - [ 3 ] + [ 3 ] - location: 11 (remaining gas: 1039988.103 units remaining) - [ (Pair "hello" 500) - 3 ] + [ (Pair "hello" 500) + 3 ] - location: 15 (remaining gas: 1039988.093 units remaining) - [ (Pair "hello" 500) - (Pair "hello" 500) - 3 ] + [ (Pair "hello" 500) + (Pair "hello" 500) + 3 ] - location: 16 (remaining gas: 1039988.083 units remaining) - [ 500 - (Pair "hello" 500) - 3 ] + [ 500 + (Pair "hello" 500) + 3 ] - location: 17 (remaining gas: 1039988.073 units remaining) - [ (Pair "hello" 500) - 3 ] + [ (Pair "hello" 500) + 3 ] - location: 18 (remaining gas: 1039988.063 units remaining) - [ "hello" - 3 ] + [ "hello" + 3 ] - location: 19 (remaining gas: 1039988.048 units remaining) - [ (Pair "hello" 3) ] + [ (Pair "hello" 3) ] - location: 20 (remaining gas: 1039988.033 units remaining) - [ {} - (Pair "hello" 3) ] + [ {} + (Pair "hello" 3) ] - location: 22 (remaining gas: 1039988.018 units remaining) - [ (Pair {} "hello" 3) ] + [ (Pair {} "hello" 3) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 7)-100-(Pair \"hello\" 100)].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 7)-100-(Pair \"hello\" 100)].out" index 73ffe70d77..34dda4f6de 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 7)-100-(Pair \"hello\" 100)].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_cdr.tz-(Pair \"hello\" 7)-100-(Pair \"hello\" 100)].out" @@ -8,39 +8,39 @@ big_map diff trace - location: 9 (remaining gas: 1039988.178 units remaining) - [ (Pair 100 "hello" 7) ] + [ (Pair 100 "hello" 7) ] - location: 9 (remaining gas: 1039988.168 units remaining) - [ (Pair 100 "hello" 7) - (Pair 100 "hello" 7) ] + [ (Pair 100 "hello" 7) + (Pair 100 "hello" 7) ] - location: 10 (remaining gas: 1039988.158 units remaining) - [ (Pair "hello" 7) - (Pair 100 "hello" 7) ] + [ (Pair "hello" 7) + (Pair 100 "hello" 7) ] - location: 11 (remaining gas: 1039988.143 units remaining) - [ (Pair 100 "hello" 7) ] + [ (Pair 100 "hello" 7) ] - location: 13 (remaining gas: 1039988.133 units remaining) - [ 100 ] + [ 100 ] - location: 11 (remaining gas: 1039988.103 units remaining) - [ (Pair "hello" 7) - 100 ] + [ (Pair "hello" 7) + 100 ] - location: 15 (remaining gas: 1039988.093 units remaining) - [ (Pair "hello" 7) - (Pair "hello" 7) - 100 ] + [ (Pair "hello" 7) + (Pair "hello" 7) + 100 ] - location: 16 (remaining gas: 1039988.083 units remaining) - [ 7 - (Pair "hello" 7) - 100 ] + [ 7 + (Pair "hello" 7) + 100 ] - location: 17 (remaining gas: 1039988.073 units remaining) - [ (Pair "hello" 7) - 100 ] + [ (Pair "hello" 7) + 100 ] - location: 18 (remaining gas: 1039988.063 units remaining) - [ "hello" - 100 ] + [ "hello" + 100 ] - location: 19 (remaining gas: 1039988.048 units remaining) - [ (Pair "hello" 100) ] + [ (Pair "hello" 100) ] - location: 20 (remaining gas: 1039988.033 units remaining) - [ {} - (Pair "hello" 100) ] + [ {} + (Pair "hello" 100) ] - location: 22 (remaining gas: 1039988.018 units remaining) - [ (Pair {} "hello" 100) ] + [ (Pair {} "hello" 100) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" index 88751834ec..5cc952222a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"a\" ; \"b\" ; \"c\" }-{ \"a\" ; \"b\" ; \"c\" }].out" @@ -8,12 +8,12 @@ big_map diff trace - location: 9 (remaining gas: 1039993.773 units remaining) - [ (Pair { "a" ; "b" ; "c" } {}) ] + [ (Pair { "a" ; "b" ; "c" } {}) ] - location: 9 (remaining gas: 1039993.763 units remaining) - [ { "a" ; "b" ; "c" } ] + [ { "a" ; "b" ; "c" } ] - location: 10 (remaining gas: 1039993.748 units remaining) - [ {} - { "a" ; "b" ; "c" } ] + [ {} + { "a" ; "b" ; "c" } ] - location: 12 (remaining gas: 1039993.733 units remaining) - [ (Pair {} { "a" ; "b" ; "c" }) ] + [ (Pair {} { "a" ; "b" ; "c" }) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"asdf\" ; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"asdf\" ; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" index 3cdd999dbc..98b4125d00 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"asdf\" ; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{ \"asdf\" ; \"bcde\" }-{ \"asdf\" ; \"bcde\" }].out" @@ -8,12 +8,12 @@ big_map diff trace - location: 9 (remaining gas: 1039994.212 units remaining) - [ (Pair { "asdf" ; "bcde" } {}) ] + [ (Pair { "asdf" ; "bcde" } {}) ] - location: 9 (remaining gas: 1039994.202 units remaining) - [ { "asdf" ; "bcde" } ] + [ { "asdf" ; "bcde" } ] - location: 10 (remaining gas: 1039994.187 units remaining) - [ {} - { "asdf" ; "bcde" } ] + [ {} + { "asdf" ; "bcde" } ] - location: 12 (remaining gas: 1039994.172 units remaining) - [ (Pair {} { "asdf" ; "bcde" }) ] + [ (Pair {} { "asdf" ; "bcde" }) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{}-{}].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{}-{}].out index 5ccce502fc..184f982b58 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{}-{}].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_id.tz-{}-{}-{}].out @@ -8,12 +8,12 @@ big_map diff trace - location: 9 (remaining gas: 1039995.025 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] - location: 9 (remaining gas: 1039995.015 units remaining) - [ {} ] + [ {} ] - location: 10 (remaining gas: 1039995 units remaining) - [ {} - {} ] + [ {} + {} ] - location: 12 (remaining gas: 1039994.985 units remaining) - [ (Pair {} {}) ] + [ (Pair {} {}) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out index 4ccecfc9f6..2fbb3eeffb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ -100 ; 1 ; 2 ; 3 }--94].out @@ -8,40 +8,40 @@ big_map diff trace - location: 8 (remaining gas: 1039990.518 units remaining) - [ (Pair { -100 ; 1 ; 2 ; 3 } 111) ] + [ (Pair { -100 ; 1 ; 2 ; 3 } 111) ] - location: 8 (remaining gas: 1039990.508 units remaining) - [ { -100 ; 1 ; 2 ; 3 } ] + [ { -100 ; 1 ; 2 ; 3 } ] - location: 9 (remaining gas: 1039990.498 units remaining) - [ 0 - { -100 ; 1 ; 2 ; 3 } ] + [ 0 + { -100 ; 1 ; 2 ; 3 } ] - location: 12 (remaining gas: 1039990.488 units remaining) - [ { -100 ; 1 ; 2 ; 3 } - 0 ] + [ { -100 ; 1 ; 2 ; 3 } + 0 ] - location: 13 (remaining gas: 1039990.488 units remaining) - [ -100 - 0 ] + [ -100 + 0 ] - location: 15 (remaining gas: 1039990.433 units remaining) - [ -100 ] + [ -100 ] - location: 13 (remaining gas: 1039990.418 units remaining) - [ 1 - -100 ] + [ 1 + -100 ] - location: 15 (remaining gas: 1039990.363 units remaining) - [ -99 ] + [ -99 ] - location: 13 (remaining gas: 1039990.348 units remaining) - [ 2 - -99 ] + [ 2 + -99 ] - location: 15 (remaining gas: 1039990.293 units remaining) - [ -97 ] + [ -97 ] - location: 13 (remaining gas: 1039990.278 units remaining) - [ 3 - -97 ] + [ 3 + -97 ] - location: 15 (remaining gas: 1039990.223 units remaining) - [ -94 ] + [ -94 ] - location: 13 (remaining gas: 1039990.208 units remaining) - [ -94 ] + [ -94 ] - location: 16 (remaining gas: 1039990.193 units remaining) - [ {} - -94 ] + [ {} + -94 ] - location: 18 (remaining gas: 1039990.178 units remaining) - [ (Pair {} -94) ] + [ (Pair {} -94) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ 1 }-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ 1 }-1].out index 15ac0c0590..1dc128f3c8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ 1 }-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{ 1 }-1].out @@ -8,25 +8,25 @@ big_map diff trace - location: 8 (remaining gas: 1039991.873 units remaining) - [ (Pair { 1 } 111) ] + [ (Pair { 1 } 111) ] - location: 8 (remaining gas: 1039991.863 units remaining) - [ { 1 } ] + [ { 1 } ] - location: 9 (remaining gas: 1039991.853 units remaining) - [ 0 - { 1 } ] + [ 0 + { 1 } ] - location: 12 (remaining gas: 1039991.843 units remaining) - [ { 1 } - 0 ] + [ { 1 } + 0 ] - location: 13 (remaining gas: 1039991.843 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 15 (remaining gas: 1039991.788 units remaining) - [ 1 ] + [ 1 ] - location: 13 (remaining gas: 1039991.773 units remaining) - [ 1 ] + [ 1 ] - location: 16 (remaining gas: 1039991.758 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 18 (remaining gas: 1039991.743 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{}-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{}-0].out index 7ed8ceee7b..8aa528cfa8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{}-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_iter.tz-111-{}-0].out @@ -8,20 +8,20 @@ big_map diff trace - location: 8 (remaining gas: 1039992.173 units remaining) - [ (Pair {} 111) ] + [ (Pair {} 111) ] - location: 8 (remaining gas: 1039992.163 units remaining) - [ {} ] + [ {} ] - location: 9 (remaining gas: 1039992.153 units remaining) - [ 0 - {} ] + [ 0 + {} ] - location: 12 (remaining gas: 1039992.143 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 13 (remaining gas: 1039992.143 units remaining) - [ 0 ] + [ 0 ] - location: 16 (remaining gas: 1039992.128 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 18 (remaining gas: 1039992.113 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hello\" ; \"World\" } None)-\"\"-(Pai.3d2044726e.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hello\" ; \"World\" } None)-\"\"-(Pai.3d2044726e.out" index 6cf013df5c..e562ab5981 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hello\" ; \"World\" } None)-\"\"-(Pai.3d2044726e.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hello\" ; \"World\" } None)-\"\"-(Pai.3d2044726e.out" @@ -8,54 +8,54 @@ big_map diff trace - location: 11 (remaining gas: 1039983.293 units remaining) - [ (Pair "" { "Hello" ; "World" } None) ] + [ (Pair "" { "Hello" ; "World" } None) ] - location: 11 (remaining gas: 1039983.283 units remaining) - [ (Pair "" { "Hello" ; "World" } None) - (Pair "" { "Hello" ; "World" } None) ] + [ (Pair "" { "Hello" ; "World" } None) + (Pair "" { "Hello" ; "World" } None) ] - location: 12 (remaining gas: 1039983.273 units remaining) - [ (Pair "" { "Hello" ; "World" } None) - (Pair "" { "Hello" ; "World" } None) - (Pair "" { "Hello" ; "World" } None) ] + [ (Pair "" { "Hello" ; "World" } None) + (Pair "" { "Hello" ; "World" } None) + (Pair "" { "Hello" ; "World" } None) ] - location: 13 (remaining gas: 1039983.263 units remaining) - [ "" - (Pair "" { "Hello" ; "World" } None) - (Pair "" { "Hello" ; "World" } None) ] + [ "" + (Pair "" { "Hello" ; "World" } None) + (Pair "" { "Hello" ; "World" } None) ] - location: 14 (remaining gas: 1039983.248 units remaining) - [ (Pair "" { "Hello" ; "World" } None) - (Pair "" { "Hello" ; "World" } None) ] + [ (Pair "" { "Hello" ; "World" } None) + (Pair "" { "Hello" ; "World" } None) ] - location: 17 (remaining gas: 1039983.238 units remaining) - [ (Pair { "Hello" ; "World" } None) - (Pair "" { "Hello" ; "World" } None) ] + [ (Pair { "Hello" ; "World" } None) + (Pair "" { "Hello" ; "World" } None) ] - location: 18 (remaining gas: 1039983.228 units remaining) - [ { "Hello" ; "World" } - (Pair "" { "Hello" ; "World" } None) ] + [ { "Hello" ; "World" } + (Pair "" { "Hello" ; "World" } None) ] - location: 14 (remaining gas: 1039983.198 units remaining) - [ "" - { "Hello" ; "World" } - (Pair "" { "Hello" ; "World" } None) ] + [ "" + { "Hello" ; "World" } + (Pair "" { "Hello" ; "World" } None) ] - location: 19 (remaining gas: 1039982.978 units remaining) - [ False - (Pair "" { "Hello" ; "World" } None) ] + [ False + (Pair "" { "Hello" ; "World" } None) ] - location: 20 (remaining gas: 1039982.963 units remaining) - [ (Some False) - (Pair "" { "Hello" ; "World" } None) ] + [ (Some False) + (Pair "" { "Hello" ; "World" } None) ] - location: 21 (remaining gas: 1039982.948 units remaining) - [ (Pair "" { "Hello" ; "World" } None) ] + [ (Pair "" { "Hello" ; "World" } None) ] - location: 24 (remaining gas: 1039982.938 units remaining) - [ (Pair { "Hello" ; "World" } None) ] + [ (Pair { "Hello" ; "World" } None) ] - location: 25 (remaining gas: 1039982.928 units remaining) - [ { "Hello" ; "World" } ] + [ { "Hello" ; "World" } ] - location: 21 (remaining gas: 1039982.898 units remaining) - [ (Some False) - { "Hello" ; "World" } ] + [ (Some False) + { "Hello" ; "World" } ] - location: 26 (remaining gas: 1039982.888 units remaining) - [ { "Hello" ; "World" } - (Some False) ] + [ { "Hello" ; "World" } + (Some False) ] - location: 27 (remaining gas: 1039982.873 units remaining) - [ (Pair { "Hello" ; "World" } (Some False)) ] + [ (Pair { "Hello" ; "World" } (Some False)) ] - location: 28 (remaining gas: 1039982.858 units remaining) - [ {} - (Pair { "Hello" ; "World" } (Some False)) ] + [ {} + (Pair { "Hello" ; "World" } (Some False)) ] - location: 30 (remaining gas: 1039982.843 units remaining) - [ (Pair {} { "Hello" ; "World" } (Some False)) ] + [ (Pair {} { "Hello" ; "World" } (Some False)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hi\" } None)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hi\" } None)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" index b61a373ba9..ea34b86221 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hi\" } None)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair { \"Hi\" } None)-\"Hi\"-(Pair { \"Hi\" } .564beb9251.out" @@ -8,54 +8,54 @@ big_map diff trace - location: 11 (remaining gas: 1039983.772 units remaining) - [ (Pair "Hi" { "Hi" } None) ] + [ (Pair "Hi" { "Hi" } None) ] - location: 11 (remaining gas: 1039983.762 units remaining) - [ (Pair "Hi" { "Hi" } None) - (Pair "Hi" { "Hi" } None) ] + [ (Pair "Hi" { "Hi" } None) + (Pair "Hi" { "Hi" } None) ] - location: 12 (remaining gas: 1039983.752 units remaining) - [ (Pair "Hi" { "Hi" } None) - (Pair "Hi" { "Hi" } None) - (Pair "Hi" { "Hi" } None) ] + [ (Pair "Hi" { "Hi" } None) + (Pair "Hi" { "Hi" } None) + (Pair "Hi" { "Hi" } None) ] - location: 13 (remaining gas: 1039983.742 units remaining) - [ "Hi" - (Pair "Hi" { "Hi" } None) - (Pair "Hi" { "Hi" } None) ] + [ "Hi" + (Pair "Hi" { "Hi" } None) + (Pair "Hi" { "Hi" } None) ] - location: 14 (remaining gas: 1039983.727 units remaining) - [ (Pair "Hi" { "Hi" } None) - (Pair "Hi" { "Hi" } None) ] + [ (Pair "Hi" { "Hi" } None) + (Pair "Hi" { "Hi" } None) ] - location: 17 (remaining gas: 1039983.717 units remaining) - [ (Pair { "Hi" } None) - (Pair "Hi" { "Hi" } None) ] + [ (Pair { "Hi" } None) + (Pair "Hi" { "Hi" } None) ] - location: 18 (remaining gas: 1039983.707 units remaining) - [ { "Hi" } - (Pair "Hi" { "Hi" } None) ] + [ { "Hi" } + (Pair "Hi" { "Hi" } None) ] - location: 14 (remaining gas: 1039983.677 units remaining) - [ "Hi" - { "Hi" } - (Pair "Hi" { "Hi" } None) ] + [ "Hi" + { "Hi" } + (Pair "Hi" { "Hi" } None) ] - location: 19 (remaining gas: 1039983.492 units remaining) - [ True - (Pair "Hi" { "Hi" } None) ] + [ True + (Pair "Hi" { "Hi" } None) ] - location: 20 (remaining gas: 1039983.477 units remaining) - [ (Some True) - (Pair "Hi" { "Hi" } None) ] + [ (Some True) + (Pair "Hi" { "Hi" } None) ] - location: 21 (remaining gas: 1039983.462 units remaining) - [ (Pair "Hi" { "Hi" } None) ] + [ (Pair "Hi" { "Hi" } None) ] - location: 24 (remaining gas: 1039983.452 units remaining) - [ (Pair { "Hi" } None) ] + [ (Pair { "Hi" } None) ] - location: 25 (remaining gas: 1039983.442 units remaining) - [ { "Hi" } ] + [ { "Hi" } ] - location: 21 (remaining gas: 1039983.412 units remaining) - [ (Some True) - { "Hi" } ] + [ (Some True) + { "Hi" } ] - location: 26 (remaining gas: 1039983.402 units remaining) - [ { "Hi" } - (Some True) ] + [ { "Hi" } + (Some True) ] - location: 27 (remaining gas: 1039983.387 units remaining) - [ (Pair { "Hi" } (Some True)) ] + [ (Pair { "Hi" } (Some True)) ] - location: 28 (remaining gas: 1039983.372 units remaining) - [ {} - (Pair { "Hi" } (Some True)) ] + [ {} + (Pair { "Hi" } (Some True)) ] - location: 30 (remaining gas: 1039983.357 units remaining) - [ (Pair {} { "Hi" } (Some True)) ] + [ (Pair {} { "Hi" } (Some True)) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair {} None)-\"Hi\"-(Pair {} (Some False))].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair {} None)-\"Hi\"-(Pair {} (Some False))].out" index d0742d488a..37f94a047b 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair {} None)-\"Hi\"-(Pair {} (Some False))].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_member.tz-(Pair {} None)-\"Hi\"-(Pair {} (Some False))].out" @@ -8,54 +8,54 @@ big_map diff trace - location: 11 (remaining gas: 1039984.106 units remaining) - [ (Pair "Hi" {} None) ] + [ (Pair "Hi" {} None) ] - location: 11 (remaining gas: 1039984.096 units remaining) - [ (Pair "Hi" {} None) - (Pair "Hi" {} None) ] + [ (Pair "Hi" {} None) + (Pair "Hi" {} None) ] - location: 12 (remaining gas: 1039984.086 units remaining) - [ (Pair "Hi" {} None) - (Pair "Hi" {} None) - (Pair "Hi" {} None) ] + [ (Pair "Hi" {} None) + (Pair "Hi" {} None) + (Pair "Hi" {} None) ] - location: 13 (remaining gas: 1039984.076 units remaining) - [ "Hi" - (Pair "Hi" {} None) - (Pair "Hi" {} None) ] + [ "Hi" + (Pair "Hi" {} None) + (Pair "Hi" {} None) ] - location: 14 (remaining gas: 1039984.061 units remaining) - [ (Pair "Hi" {} None) - (Pair "Hi" {} None) ] + [ (Pair "Hi" {} None) + (Pair "Hi" {} None) ] - location: 17 (remaining gas: 1039984.051 units remaining) - [ (Pair {} None) - (Pair "Hi" {} None) ] + [ (Pair {} None) + (Pair "Hi" {} None) ] - location: 18 (remaining gas: 1039984.041 units remaining) - [ {} - (Pair "Hi" {} None) ] + [ {} + (Pair "Hi" {} None) ] - location: 14 (remaining gas: 1039984.011 units remaining) - [ "Hi" - {} - (Pair "Hi" {} None) ] + [ "Hi" + {} + (Pair "Hi" {} None) ] - location: 19 (remaining gas: 1039983.861 units remaining) - [ False - (Pair "Hi" {} None) ] + [ False + (Pair "Hi" {} None) ] - location: 20 (remaining gas: 1039983.846 units remaining) - [ (Some False) - (Pair "Hi" {} None) ] + [ (Some False) + (Pair "Hi" {} None) ] - location: 21 (remaining gas: 1039983.831 units remaining) - [ (Pair "Hi" {} None) ] + [ (Pair "Hi" {} None) ] - location: 24 (remaining gas: 1039983.821 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] - location: 25 (remaining gas: 1039983.811 units remaining) - [ {} ] + [ {} ] - location: 21 (remaining gas: 1039983.781 units remaining) - [ (Some False) - {} ] + [ (Some False) + {} ] - location: 26 (remaining gas: 1039983.771 units remaining) - [ {} - (Some False) ] + [ {} + (Some False) ] - location: 27 (remaining gas: 1039983.756 units remaining) - [ (Pair {} (Some False)) ] + [ (Pair {} (Some False)) ] - location: 28 (remaining gas: 1039983.741 units remaining) - [ {} - (Pair {} (Some False)) ] + [ {} + (Pair {} (Some False)) ] - location: 30 (remaining gas: 1039983.726 units remaining) - [ (Pair {} {} (Some False)) ] + [ (Pair {} {} (Some False)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out index cbcda72546..3624282332 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 }-6].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039992.075 units remaining) - [ (Pair { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } 111) ] + [ (Pair { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } 111) ] - location: 8 (remaining gas: 1039992.065 units remaining) - [ { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } ] + [ { 1 ; 2 ; 3 ; 4 ; 5 ; 6 } ] - location: 9 (remaining gas: 1039992.050 units remaining) - [ 6 ] + [ 6 ] - location: 10 (remaining gas: 1039992.035 units remaining) - [ {} - 6 ] + [ {} + 6 ] - location: 12 (remaining gas: 1039992.020 units remaining) - [ (Pair {} 6) ] + [ (Pair {} 6) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out index a4102e7a4f..3465eb3fe1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 ; 2 ; 3 }-3].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039993.640 units remaining) - [ (Pair { 1 ; 2 ; 3 } 111) ] + [ (Pair { 1 ; 2 ; 3 } 111) ] - location: 8 (remaining gas: 1039993.630 units remaining) - [ { 1 ; 2 ; 3 } ] + [ { 1 ; 2 ; 3 } ] - location: 9 (remaining gas: 1039993.615 units remaining) - [ 3 ] + [ 3 ] - location: 10 (remaining gas: 1039993.600 units remaining) - [ {} - 3 ] + [ {} + 3 ] - location: 12 (remaining gas: 1039993.585 units remaining) - [ (Pair {} 3) ] + [ (Pair {} 3) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 }-1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 }-1].out index 3966466cf8..3fcf0ff652 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 }-1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{ 1 }-1].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.520 units remaining) - [ (Pair { 1 } 111) ] + [ (Pair { 1 } 111) ] - location: 8 (remaining gas: 1039994.510 units remaining) - [ { 1 } ] + [ { 1 } ] - location: 9 (remaining gas: 1039994.495 units remaining) - [ 1 ] + [ 1 ] - location: 10 (remaining gas: 1039994.480 units remaining) - [ {} - 1 ] + [ {} + 1 ] - location: 12 (remaining gas: 1039994.465 units remaining) - [ (Pair {} 1) ] + [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{}-0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{}-0].out index 2bfd8860ad..86b65bd3f9 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{}-0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[set_size.tz-111-{}-0].out @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.820 units remaining) - [ (Pair {} 111) ] + [ (Pair {} 111) ] - location: 8 (remaining gas: 1039994.810 units remaining) - [ {} ] + [ {} ] - location: 9 (remaining gas: 1039994.795 units remaining) - [ 0 ] + [ 0 ] - location: 10 (remaining gas: 1039994.780 units remaining) - [ {} - 0 ] + [ {} + 0 ] - location: 12 (remaining gas: 1039994.765 units remaining) - [ (Pair {} 0) ] + [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sha3.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xf345a.a07ae9dddf.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sha3.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xf345a.a07ae9dddf.out index 59dc58fbf7..037cba1488 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sha3.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xf345a.a07ae9dddf.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sha3.tz-None-0x48656c6c6f2c20776f726c6421-(Some 0xf345a.a07ae9dddf.out @@ -8,17 +8,17 @@ big_map diff trace - location: 8 (remaining gas: 1039993.957 units remaining) - [ (Pair 0x48656c6c6f2c20776f726c6421 None) ] + [ (Pair 0x48656c6c6f2c20776f726c6421 None) ] - location: 8 (remaining gas: 1039993.947 units remaining) - [ 0x48656c6c6f2c20776f726c6421 ] + [ 0x48656c6c6f2c20776f726c6421 ] - location: 9 (remaining gas: 1039992.490 units remaining) - [ 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722 ] + [ 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722 ] - location: 10 (remaining gas: 1039992.475 units remaining) - [ (Some 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722) ] + [ (Some 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722) ] - location: 11 (remaining gas: 1039992.460 units remaining) - [ {} - (Some 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722) ] + [ {} + (Some 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722) ] - location: 13 (remaining gas: 1039992.445 units remaining) [ (Pair {} - (Some 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722)) ] + (Some 0xf345a219da005ebe9c1a1eaad97bbf38a10c8473e41d0af7fb617caa0c6aa722)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 0))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 0))-(Some 0)].out index ac7b2ab5a3..0a3d8d0829 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 0))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 0))-(Some 0)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Left (Pair 0 0)) None) ] + [ (Pair (Left (Pair 0 0)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 0 0)) ] + [ (Left (Pair 0 0)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 0 0) ] + [ (Pair 0 0) ] - location: 17 (remaining gas: 1039989.674 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 18 (remaining gas: 1039989.674 units remaining) - [ 0 ] + [ 0 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 0 ] + [ 0 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 0) ] + [ (Some 0) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 0) ] + [ {} + (Some 0) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 0)) ] + [ (Pair {} (Some 0)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 1))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 1))-(Some 0)].out index 3f89a04fee..58b068a2ce 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 1))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 0 1))-(Some 0)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Left (Pair 0 1)) None) ] + [ (Pair (Left (Pair 0 1)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 0 1)) ] + [ (Left (Pair 0 1)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 0 1) ] + [ (Pair 0 1) ] - location: 17 (remaining gas: 1039989.674 units remaining) - [ 0 - 1 ] + [ 0 + 1 ] - location: 18 (remaining gas: 1039989.674 units remaining) - [ 0 ] + [ 0 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 0 ] + [ 0 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 0) ] + [ (Some 0) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 0) ] + [ {} + (Some 0) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 0)) ] + [ (Pair {} (Some 0)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 1 2))-(Some 4)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 1 2))-(Some 4)].out index 277265f138..cb41dd04d3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 1 2))-(Some 4)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 1 2))-(Some 4)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Left (Pair 1 2)) None) ] + [ (Pair (Left (Pair 1 2)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 1 2)) ] + [ (Left (Pair 1 2)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 1 2) ] + [ (Pair 1 2) ] - location: 17 (remaining gas: 1039989.674 units remaining) - [ 1 - 2 ] + [ 1 + 2 ] - location: 18 (remaining gas: 1039989.674 units remaining) - [ 4 ] + [ 4 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 4 ] + [ 4 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 4) ] + [ (Some 4) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 4) ] + [ {} + (Some 4) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 4)) ] + [ (Pair {} (Some 4)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 15 2))-(Some 60)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 15 2))-(Some 60)].out index 9aa9f0d3ac..8ea431ec0f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 15 2))-(Some 60)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 15 2))-(Some 60)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Left (Pair 15 2)) None) ] + [ (Pair (Left (Pair 15 2)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 15 2)) ] + [ (Left (Pair 15 2)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 15 2) ] + [ (Pair 15 2) ] - location: 17 (remaining gas: 1039989.674 units remaining) - [ 15 - 2 ] + [ 15 + 2 ] - location: 18 (remaining gas: 1039989.674 units remaining) - [ 60 ] + [ 60 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 60 ] + [ 60 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 60) ] + [ (Some 60) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 60) ] + [ {} + (Some 60) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 60)) ] + [ (Pair {} (Some 60)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 8 1))-(Some 16)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 8 1))-(Some 16)].out index b380876cac..0edde0de16 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 8 1))-(Some 16)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Left (Pair 8 1))-(Some 16)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Left (Pair 8 1)) None) ] + [ (Pair (Left (Pair 8 1)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Left (Pair 8 1)) ] + [ (Left (Pair 8 1)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 8 1) ] + [ (Pair 8 1) ] - location: 17 (remaining gas: 1039989.674 units remaining) - [ 8 - 1 ] + [ 8 + 1 ] - location: 18 (remaining gas: 1039989.674 units remaining) - [ 16 ] + [ 16 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 16 ] + [ 16 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 16) ] + [ (Some 16) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 16) ] + [ {} + (Some 16) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 16)) ] + [ (Pair {} (Some 16)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 0))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 0))-(Some 0)].out index 688dedb22e..1e5aabfa95 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 0))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 0))-(Some 0)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Right (Pair 0 0)) None) ] + [ (Pair (Right (Pair 0 0)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 0 0)) ] + [ (Right (Pair 0 0)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 0 0) ] + [ (Pair 0 0) ] - location: 20 (remaining gas: 1039989.674 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 21 (remaining gas: 1039989.674 units remaining) - [ 0 ] + [ 0 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 0 ] + [ 0 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 0) ] + [ (Some 0) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 0) ] + [ {} + (Some 0) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 0)) ] + [ (Pair {} (Some 0)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 1))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 1))-(Some 0)].out index 28b5aecf01..2e48a6c8ed 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 1))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 0 1))-(Some 0)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Right (Pair 0 1)) None) ] + [ (Pair (Right (Pair 0 1)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 0 1)) ] + [ (Right (Pair 0 1)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 0 1) ] + [ (Pair 0 1) ] - location: 20 (remaining gas: 1039989.674 units remaining) - [ 0 - 1 ] + [ 0 + 1 ] - location: 21 (remaining gas: 1039989.674 units remaining) - [ 0 ] + [ 0 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 0 ] + [ 0 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 0) ] + [ (Some 0) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 0) ] + [ {} + (Some 0) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 0)) ] + [ (Pair {} (Some 0)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 1 2))-(Some 0)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 1 2))-(Some 0)].out index 337efc9a92..f6e4a4cdaf 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 1 2))-(Some 0)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 1 2))-(Some 0)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Right (Pair 1 2)) None) ] + [ (Pair (Right (Pair 1 2)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 1 2)) ] + [ (Right (Pair 1 2)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 1 2) ] + [ (Pair 1 2) ] - location: 20 (remaining gas: 1039989.674 units remaining) - [ 1 - 2 ] + [ 1 + 2 ] - location: 21 (remaining gas: 1039989.674 units remaining) - [ 0 ] + [ 0 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 0 ] + [ 0 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 0) ] + [ (Some 0) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 0) ] + [ {} + (Some 0) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 0)) ] + [ (Pair {} (Some 0)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 15 2))-(Some 3)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 15 2))-(Some 3)].out index 0474a65ff6..88118280c7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 15 2))-(Some 3)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 15 2))-(Some 3)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Right (Pair 15 2)) None) ] + [ (Pair (Right (Pair 15 2)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 15 2)) ] + [ (Right (Pair 15 2)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 15 2) ] + [ (Pair 15 2) ] - location: 20 (remaining gas: 1039989.674 units remaining) - [ 15 - 2 ] + [ 15 + 2 ] - location: 21 (remaining gas: 1039989.674 units remaining) - [ 3 ] + [ 3 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 3 ] + [ 3 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 3) ] + [ (Some 3) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 3) ] + [ {} + (Some 3) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 3)) ] + [ (Pair {} (Some 3)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 8 1))-(Some 4)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 8 1))-(Some 4)].out index 58178a7a49..e6485727f5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 8 1))-(Some 4)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[shifts.tz-None-(Right (Pair 8 1))-(Some 4)].out @@ -8,23 +8,23 @@ big_map diff trace - location: 14 (remaining gas: 1039989.704 units remaining) - [ (Pair (Right (Pair 8 1)) None) ] + [ (Pair (Right (Pair 8 1)) None) ] - location: 14 (remaining gas: 1039989.694 units remaining) - [ (Right (Pair 8 1)) ] + [ (Right (Pair 8 1)) ] - location: 15 (remaining gas: 1039989.684 units remaining) - [ (Pair 8 1) ] + [ (Pair 8 1) ] - location: 20 (remaining gas: 1039989.674 units remaining) - [ 8 - 1 ] + [ 8 + 1 ] - location: 21 (remaining gas: 1039989.674 units remaining) - [ 4 ] + [ 4 ] - location: 15 (remaining gas: 1039989.659 units remaining) - [ 4 ] + [ 4 ] - location: 22 (remaining gas: 1039989.644 units remaining) - [ (Some 4) ] + [ (Some 4) ] - location: 23 (remaining gas: 1039989.629 units remaining) - [ {} - (Some 4) ] + [ {} + (Some 4) ] - location: 25 (remaining gas: 1039989.614 units remaining) - [ (Pair {} (Some 4)) ] + [ (Pair {} (Some 4)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-None-Pair 0 0-None].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-None-Pair 0 0-None].out index d1ce3c5a2b..4144b7dc12 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-None-Pair 0 0-None].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-None-Pair 0 0-None].out @@ -8,24 +8,24 @@ big_map diff trace - location: 10 (remaining gas: 1039989.042 units remaining) - [ (Pair (Pair 0 0) None) ] + [ (Pair (Pair 0 0) None) ] - location: 10 (remaining gas: 1039989.032 units remaining) - [ (Pair 0 0) - None ] + [ (Pair 0 0) + None ] - location: 11 (remaining gas: 1039989.022 units remaining) - [ None - (Pair 0 0) ] + [ None + (Pair 0 0) ] - location: 13 (remaining gas: 1039989.012 units remaining) - [ (Pair 0 0) ] + [ (Pair 0 0) ] - location: 15 (remaining gas: 1039989.002 units remaining) [ ] - location: 16 (remaining gas: 1039988.987 units remaining) - [ None ] + [ None ] - location: 13 (remaining gas: 1039988.972 units remaining) - [ None ] + [ None ] - location: 22 (remaining gas: 1039988.957 units remaining) - [ {} - None ] + [ {} + None ] - location: 24 (remaining gas: 1039988.942 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" index e560b460da..349e29eba1 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 0-(Some \"\")].out" @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.898 units remaining) - [ (Pair (Pair 0 0) (Some "Foo")) ] + [ (Pair (Pair 0 0) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 0 0) - (Some "Foo") ] + [ (Pair 0 0) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") - (Pair 0 0) ] + [ (Some "Foo") + (Pair 0 0) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" - (Pair 0 0) ] + [ "Foo" + (Pair 0 0) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 0 0) - "Foo" ] + [ (Pair 0 0) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) - [ 0 - 0 - "Foo" ] + [ 0 + 0 + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) - [ (Some "") ] + [ (Some "") ] - location: 13 (remaining gas: 1039988.793 units remaining) - [ (Some "") ] + [ (Some "") ] - location: 22 (remaining gas: 1039988.778 units remaining) - [ {} - (Some "") ] + [ {} + (Some "") ] - location: 24 (remaining gas: 1039988.763 units remaining) - [ (Pair {} (Some "")) ] + [ (Pair {} (Some "")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 10-None].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 10-None].out" index 21b844f603..3533558a48 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 10-None].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 10-None].out" @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.898 units remaining) - [ (Pair (Pair 0 10) (Some "Foo")) ] + [ (Pair (Pair 0 10) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 0 10) - (Some "Foo") ] + [ (Pair 0 10) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") - (Pair 0 10) ] + [ (Some "Foo") + (Pair 0 10) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" - (Pair 0 10) ] + [ "Foo" + (Pair 0 10) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 0 10) - "Foo" ] + [ (Pair 0 10) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) - [ 0 - 10 - "Foo" ] + [ 0 + 10 + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) - [ None ] + [ None ] - location: 13 (remaining gas: 1039988.793 units remaining) - [ None ] + [ None ] - location: 22 (remaining gas: 1039988.778 units remaining) - [ {} - None ] + [ {} + None ] - location: 24 (remaining gas: 1039988.763 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" index 076c6ab5b7..ba50cb0230 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 0 2-(Some \"Fo\")].out" @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.898 units remaining) - [ (Pair (Pair 0 2) (Some "Foo")) ] + [ (Pair (Pair 0 2) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 0 2) - (Some "Foo") ] + [ (Pair 0 2) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") - (Pair 0 2) ] + [ (Some "Foo") + (Pair 0 2) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" - (Pair 0 2) ] + [ "Foo" + (Pair 0 2) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 0 2) - "Foo" ] + [ (Pair 0 2) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) - [ 0 - 2 - "Foo" ] + [ 0 + 2 + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) - [ (Some "Fo") ] + [ (Some "Fo") ] - location: 13 (remaining gas: 1039988.793 units remaining) - [ (Some "Fo") ] + [ (Some "Fo") ] - location: 22 (remaining gas: 1039988.778 units remaining) - [ {} - (Some "Fo") ] + [ {} + (Some "Fo") ] - location: 24 (remaining gas: 1039988.763 units remaining) - [ (Pair {} (Some "Fo")) ] + [ (Pair {} (Some "Fo")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" index 0a7caac8bb..1c443085a5 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 1-(Some \"o\")].out" @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.898 units remaining) - [ (Pair (Pair 1 1) (Some "Foo")) ] + [ (Pair (Pair 1 1) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 1 1) - (Some "Foo") ] + [ (Pair 1 1) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") - (Pair 1 1) ] + [ (Some "Foo") + (Pair 1 1) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" - (Pair 1 1) ] + [ "Foo" + (Pair 1 1) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 1 1) - "Foo" ] + [ (Pair 1 1) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) - [ 1 - 1 - "Foo" ] + [ 1 + 1 + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) - [ (Some "o") ] + [ (Some "o") ] - location: 13 (remaining gas: 1039988.793 units remaining) - [ (Some "o") ] + [ (Some "o") ] - location: 22 (remaining gas: 1039988.778 units remaining) - [ {} - (Some "o") ] + [ {} + (Some "o") ] - location: 24 (remaining gas: 1039988.763 units remaining) - [ (Pair {} (Some "o")) ] + [ (Pair {} (Some "o")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 3-None].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 3-None].out" index c5cd69a0a2..2dafeff845 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 3-None].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 1 3-None].out" @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.898 units remaining) - [ (Pair (Pair 1 3) (Some "Foo")) ] + [ (Pair (Pair 1 3) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 1 3) - (Some "Foo") ] + [ (Pair 1 3) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") - (Pair 1 3) ] + [ (Some "Foo") + (Pair 1 3) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" - (Pair 1 3) ] + [ "Foo" + (Pair 1 3) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 1 3) - "Foo" ] + [ (Pair 1 3) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) - [ 1 - 3 - "Foo" ] + [ 1 + 3 + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) - [ None ] + [ None ] - location: 13 (remaining gas: 1039988.793 units remaining) - [ None ] + [ None ] - location: 22 (remaining gas: 1039988.778 units remaining) - [ {} - None ] + [ {} + None ] - location: 24 (remaining gas: 1039988.763 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 10 5-None].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 10 5-None].out" index 8a1ce998ac..61141f784a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 10 5-None].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some \"Foo\"-Pair 10 5-None].out" @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.898 units remaining) - [ (Pair (Pair 10 5) (Some "Foo")) ] + [ (Pair (Pair 10 5) (Some "Foo")) ] - location: 10 (remaining gas: 1039988.888 units remaining) - [ (Pair 10 5) - (Some "Foo") ] + [ (Pair 10 5) + (Some "Foo") ] - location: 11 (remaining gas: 1039988.878 units remaining) - [ (Some "Foo") - (Pair 10 5) ] + [ (Some "Foo") + (Pair 10 5) ] - location: 13 (remaining gas: 1039988.868 units remaining) - [ "Foo" - (Pair 10 5) ] + [ "Foo" + (Pair 10 5) ] - location: 19 (remaining gas: 1039988.858 units remaining) - [ (Pair 10 5) - "Foo" ] + [ (Pair 10 5) + "Foo" ] - location: 20 (remaining gas: 1039988.848 units remaining) - [ 10 - 5 - "Foo" ] + [ 10 + 5 + "Foo" ] - location: 21 (remaining gas: 1039988.808 units remaining) - [ None ] + [ None ] - location: 13 (remaining gas: 1039988.793 units remaining) - [ None ] + [ None ] - location: 22 (remaining gas: 1039988.778 units remaining) - [ {} - None ] + [ {} + None ] - location: 24 (remaining gas: 1039988.763 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some\"FooFooFooFooFooFooFooFooFooFooFooFooFooFo.c508d67bb0.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some\"FooFooFooFooFooFooFooFooFooFooFooFooFooFo.c508d67bb0.out" index 2c1100d411..3ca363b4ab 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some\"FooFooFooFooFooFooFooFooFooFooFooFooFooFo.c508d67bb0.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice.tz-Some\"FooFooFooFooFooFooFooFooFooFooFooFooFooFo.c508d67bb0.out" @@ -9,30 +9,30 @@ big_map diff trace - location: 10 (remaining gas: 1039928.928 units remaining) [ (Pair (Pair 1 10000) - (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo")) ] + (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo")) ] - location: 10 (remaining gas: 1039928.918 units remaining) - [ (Pair 1 10000) - (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo") ] + [ (Pair 1 10000) + (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo") ] - location: 11 (remaining gas: 1039928.908 units remaining) - [ (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo") - (Pair 1 10000) ] + [ (Some "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo") + (Pair 1 10000) ] - location: 13 (remaining gas: 1039928.898 units remaining) - [ "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" - (Pair 1 10000) ] + [ "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" + (Pair 1 10000) ] - location: 19 (remaining gas: 1039928.888 units remaining) - [ (Pair 1 10000) - "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" ] + [ (Pair 1 10000) + "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" ] - location: 20 (remaining gas: 1039928.878 units remaining) - [ 1 - 10000 - "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" ] + [ 1 + 10000 + "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo" ] - location: 21 (remaining gas: 1039928.463 units remaining) - [ None ] + [ None ] - location: 13 (remaining gas: 1039928.448 units remaining) - [ None ] + [ None ] - location: 22 (remaining gas: 1039928.433 units remaining) - [ {} - None ] + [ {} + None ] - location: 24 (remaining gas: 1039928.418 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-None-Pair 0 1-None].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-None-Pair 0 1-None].out index bcdb1245d4..a2407a1ea7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-None-Pair 0 1-None].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-None-Pair 0 1-None].out @@ -8,24 +8,24 @@ big_map diff trace - location: 10 (remaining gas: 1039989.042 units remaining) - [ (Pair (Pair 0 1) None) ] + [ (Pair (Pair 0 1) None) ] - location: 10 (remaining gas: 1039989.032 units remaining) - [ (Pair 0 1) - None ] + [ (Pair 0 1) + None ] - location: 11 (remaining gas: 1039989.022 units remaining) - [ None - (Pair 0 1) ] + [ None + (Pair 0 1) ] - location: 13 (remaining gas: 1039989.012 units remaining) - [ (Pair 0 1) ] + [ (Pair 0 1) ] - location: 15 (remaining gas: 1039989.002 units remaining) [ ] - location: 16 (remaining gas: 1039988.987 units remaining) - [ None ] + [ None ] - location: 13 (remaining gas: 1039988.972 units remaining) - [ None ] + [ None ] - location: 22 (remaining gas: 1039988.957 units remaining) - [ {} - None ] + [ {} + None ] - location: 24 (remaining gas: 1039988.942 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out index d31938e3a1..11b6fa3588 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 0-(Some 0x)].out @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.942 units remaining) - [ (Pair (Pair 0 0) (Some 0xaabbcc)) ] + [ (Pair (Pair 0 0) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 0 0) - (Some 0xaabbcc) ] + [ (Pair 0 0) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) - (Pair 0 0) ] + [ (Some 0xaabbcc) + (Pair 0 0) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc - (Pair 0 0) ] + [ 0xaabbcc + (Pair 0 0) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 0 0) - 0xaabbcc ] + [ (Pair 0 0) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) - [ 0 - 0 - 0xaabbcc ] + [ 0 + 0 + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) - [ (Some 0x) ] + [ (Some 0x) ] - location: 13 (remaining gas: 1039988.837 units remaining) - [ (Some 0x) ] + [ (Some 0x) ] - location: 22 (remaining gas: 1039988.822 units remaining) - [ {} - (Some 0x) ] + [ {} + (Some 0x) ] - location: 24 (remaining gas: 1039988.807 units remaining) - [ (Pair {} (Some 0x)) ] + [ (Pair {} (Some 0x)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out index a8d0bb71cd..fa51f068f7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 0 1-(Some 0xaa)].out @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.942 units remaining) - [ (Pair (Pair 0 1) (Some 0xaabbcc)) ] + [ (Pair (Pair 0 1) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 0 1) - (Some 0xaabbcc) ] + [ (Pair 0 1) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) - (Pair 0 1) ] + [ (Some 0xaabbcc) + (Pair 0 1) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc - (Pair 0 1) ] + [ 0xaabbcc + (Pair 0 1) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 0 1) - 0xaabbcc ] + [ (Pair 0 1) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) - [ 0 - 1 - 0xaabbcc ] + [ 0 + 1 + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) - [ (Some 0xaa) ] + [ (Some 0xaa) ] - location: 13 (remaining gas: 1039988.837 units remaining) - [ (Some 0xaa) ] + [ (Some 0xaa) ] - location: 22 (remaining gas: 1039988.822 units remaining) - [ {} - (Some 0xaa) ] + [ {} + (Some 0xaa) ] - location: 24 (remaining gas: 1039988.807 units remaining) - [ (Pair {} (Some 0xaa)) ] + [ (Pair {} (Some 0xaa)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out index 5e8cef70aa..c09e671c1f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)0].out @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.942 units remaining) - [ (Pair (Pair 1 1) (Some 0xaabbcc)) ] + [ (Pair (Pair 1 1) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 1) - (Some 0xaabbcc) ] + [ (Pair 1 1) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) - (Pair 1 1) ] + [ (Some 0xaabbcc) + (Pair 1 1) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc - (Pair 1 1) ] + [ 0xaabbcc + (Pair 1 1) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 1) - 0xaabbcc ] + [ (Pair 1 1) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) - [ 1 - 1 - 0xaabbcc ] + [ 1 + 1 + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) - [ (Some 0xbb) ] + [ (Some 0xbb) ] - location: 13 (remaining gas: 1039988.837 units remaining) - [ (Some 0xbb) ] + [ (Some 0xbb) ] - location: 22 (remaining gas: 1039988.822 units remaining) - [ {} - (Some 0xbb) ] + [ {} + (Some 0xbb) ] - location: 24 (remaining gas: 1039988.807 units remaining) - [ (Pair {} (Some 0xbb)) ] + [ (Pair {} (Some 0xbb)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out index 29c349e130..cf4a9254cb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 1-(Some 0xbb)1].out @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.942 units remaining) - [ (Pair (Pair 1 1) (Some 0xaabbcc)) ] + [ (Pair (Pair 1 1) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 1) - (Some 0xaabbcc) ] + [ (Pair 1 1) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) - (Pair 1 1) ] + [ (Some 0xaabbcc) + (Pair 1 1) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc - (Pair 1 1) ] + [ 0xaabbcc + (Pair 1 1) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 1) - 0xaabbcc ] + [ (Pair 1 1) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) - [ 1 - 1 - 0xaabbcc ] + [ 1 + 1 + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) - [ (Some 0xbb) ] + [ (Some 0xbb) ] - location: 13 (remaining gas: 1039988.837 units remaining) - [ (Some 0xbb) ] + [ (Some 0xbb) ] - location: 22 (remaining gas: 1039988.822 units remaining) - [ {} - (Some 0xbb) ] + [ {} + (Some 0xbb) ] - location: 24 (remaining gas: 1039988.807 units remaining) - [ (Pair {} (Some 0xbb)) ] + [ (Pair {} (Some 0xbb)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out index 19d285d644..eda8d397d8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 2-(Some 0xbbcc)].out @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.942 units remaining) - [ (Pair (Pair 1 2) (Some 0xaabbcc)) ] + [ (Pair (Pair 1 2) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 2) - (Some 0xaabbcc) ] + [ (Pair 1 2) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) - (Pair 1 2) ] + [ (Some 0xaabbcc) + (Pair 1 2) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc - (Pair 1 2) ] + [ 0xaabbcc + (Pair 1 2) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 2) - 0xaabbcc ] + [ (Pair 1 2) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) - [ 1 - 2 - 0xaabbcc ] + [ 1 + 2 + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) - [ (Some 0xbbcc) ] + [ (Some 0xbbcc) ] - location: 13 (remaining gas: 1039988.837 units remaining) - [ (Some 0xbbcc) ] + [ (Some 0xbbcc) ] - location: 22 (remaining gas: 1039988.822 units remaining) - [ {} - (Some 0xbbcc) ] + [ {} + (Some 0xbbcc) ] - location: 24 (remaining gas: 1039988.807 units remaining) - [ (Pair {} (Some 0xbbcc)) ] + [ (Pair {} (Some 0xbbcc)) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 3-None].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 3-None].out index eb73897b75..e94bee51a0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 3-None].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbcc-Pair 1 3-None].out @@ -8,30 +8,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.942 units remaining) - [ (Pair (Pair 1 3) (Some 0xaabbcc)) ] + [ (Pair (Pair 1 3) (Some 0xaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 3) - (Some 0xaabbcc) ] + [ (Pair 1 3) + (Some 0xaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbcc) - (Pair 1 3) ] + [ (Some 0xaabbcc) + (Pair 1 3) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbcc - (Pair 1 3) ] + [ 0xaabbcc + (Pair 1 3) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 3) - 0xaabbcc ] + [ (Pair 1 3) + 0xaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) - [ 1 - 3 - 0xaabbcc ] + [ 1 + 3 + 0xaabbcc ] - location: 21 (remaining gas: 1039988.852 units remaining) - [ None ] + [ None ] - location: 13 (remaining gas: 1039988.837 units remaining) - [ None ] + [ None ] - location: 22 (remaining gas: 1039988.822 units remaining) - [ {} - None ] + [ {} + None ] - location: 24 (remaining gas: 1039988.807 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbccaabbccaabbccaabbccaabbccaab.df5895de85.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbccaabbccaabbccaabbccaabbccaab.df5895de85.out index c799f7b1fc..9d0eb6d280 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbccaabbccaabbccaabbccaabbccaab.df5895de85.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[slice_bytes.tz-Some 0xaabbccaabbccaabbccaabbccaabbccaab.df5895de85.out @@ -9,30 +9,30 @@ big_map diff trace - location: 10 (remaining gas: 1039988.942 units remaining) [ (Pair (Pair 1 10000) - (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc)) ] + (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc)) ] - location: 10 (remaining gas: 1039988.932 units remaining) - [ (Pair 1 10000) - (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc) ] + [ (Pair 1 10000) + (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc) ] - location: 11 (remaining gas: 1039988.922 units remaining) - [ (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc) - (Pair 1 10000) ] + [ (Some 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc) + (Pair 1 10000) ] - location: 13 (remaining gas: 1039988.912 units remaining) - [ 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc - (Pair 1 10000) ] + [ 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc + (Pair 1 10000) ] - location: 19 (remaining gas: 1039988.902 units remaining) - [ (Pair 1 10000) - 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc ] + [ (Pair 1 10000) + 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc ] - location: 20 (remaining gas: 1039988.892 units remaining) - [ 1 - 10000 - 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc ] + [ 1 + 10000 + 0xaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc ] - location: 21 (remaining gas: 1039988.477 units remaining) - [ None ] + [ None ] - location: 13 (remaining gas: 1039988.462 units remaining) - [ None ] + [ None ] - location: 22 (remaining gas: 1039988.447 units remaining) - [ {} - None ] + [ {} + None ] - location: 24 (remaining gas: 1039988.432 units remaining) - [ (Pair {} None) ] + [ (Pair {} None) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"Hello\"-(Some \"Hello\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"Hello\"-(Some \"Hello\")].out" index 1546d75217..7770e20a35 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"Hello\"-(Some \"Hello\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"Hello\"-(Some \"Hello\")].out" @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.491 units remaining) - [ (Pair "Hello" None) ] + [ (Pair "Hello" None) ] - location: 8 (remaining gas: 1039994.481 units remaining) - [ "Hello" ] + [ "Hello" ] - location: 9 (remaining gas: 1039994.466 units remaining) - [ (Some "Hello") ] + [ (Some "Hello") ] - location: 10 (remaining gas: 1039994.451 units remaining) - [ {} - (Some "Hello") ] + [ {} + (Some "Hello") ] - location: 12 (remaining gas: 1039994.436 units remaining) - [ (Pair {} (Some "Hello")) ] + [ (Pair {} (Some "Hello")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"abcd\"-(Some \"abcd\")].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"abcd\"-(Some \"abcd\")].out" index c27191405d..591b98a95a 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"abcd\"-(Some \"abcd\")].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[str_id.tz-None-\"abcd\"-(Some \"abcd\")].out" @@ -8,14 +8,14 @@ big_map diff trace - location: 8 (remaining gas: 1039994.501 units remaining) - [ (Pair "abcd" None) ] + [ (Pair "abcd" None) ] - location: 8 (remaining gas: 1039994.491 units remaining) - [ "abcd" ] + [ "abcd" ] - location: 9 (remaining gas: 1039994.476 units remaining) - [ (Some "abcd") ] + [ (Some "abcd") ] - location: 10 (remaining gas: 1039994.461 units remaining) - [ {} - (Some "abcd") ] + [ {} + (Some "abcd") ] - location: 12 (remaining gas: 1039994.446 units remaining) - [ (Pair {} (Some "abcd")) ] + [ (Pair {} (Some "abcd")) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 -100)-\"1970-01-01T00:03:20Z\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 -100)-\"1970-01-01T00:03:20Z\"].out" index 153eeec133..59843cd760 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 -100)-\"1970-01-01T00:03:20Z\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 -100)-\"1970-01-01T00:03:20Z\"].out" @@ -8,27 +8,27 @@ big_map diff trace - location: 9 (remaining gas: 1039991.553 units remaining) - [ (Pair (Pair "1970-01-01T00:01:40Z" -100) "1970-01-01T00:01:51Z") ] + [ (Pair (Pair "1970-01-01T00:01:40Z" -100) "1970-01-01T00:01:51Z") ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) ] + [ (Pair "1970-01-01T00:01:40Z" -100) ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) - (Pair "1970-01-01T00:01:40Z" -100) ] + [ (Pair "1970-01-01T00:01:40Z" -100) + (Pair "1970-01-01T00:01:40Z" -100) ] - location: 11 (remaining gas: 1039991.523 units remaining) - [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" -100) ] + [ "1970-01-01T00:01:40Z" + (Pair "1970-01-01T00:01:40Z" -100) ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" -100) ] + [ (Pair "1970-01-01T00:01:40Z" -100) ] - location: 14 (remaining gas: 1039991.498 units remaining) - [ -100 ] + [ -100 ] - location: 12 (remaining gas: 1039991.468 units remaining) - [ "1970-01-01T00:01:40Z" - -100 ] + [ "1970-01-01T00:01:40Z" + -100 ] - location: 15 (remaining gas: 1039991.413 units remaining) - [ "1970-01-01T00:03:20Z" ] + [ "1970-01-01T00:03:20Z" ] - location: 16 (remaining gas: 1039991.398 units remaining) - [ {} - "1970-01-01T00:03:20Z" ] + [ {} + "1970-01-01T00:03:20Z" ] - location: 18 (remaining gas: 1039991.383 units remaining) - [ (Pair {} "1970-01-01T00:03:20Z") ] + [ (Pair {} "1970-01-01T00:03:20Z") ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 100)-\"1970-01-01T00:00:00Z\"].out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 100)-\"1970-01-01T00:00:00Z\"].out" index 9452cd9c65..c8215f251d 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 100)-\"1970-01-01T00:00:00Z\"].out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 100)-\"1970-01-01T00:00:00Z\"].out" @@ -8,27 +8,27 @@ big_map diff trace - location: 9 (remaining gas: 1039991.553 units remaining) - [ (Pair (Pair "1970-01-01T00:01:40Z" 100) "1970-01-01T00:01:51Z") ] + [ (Pair (Pair "1970-01-01T00:01:40Z" 100) "1970-01-01T00:01:51Z") ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) ] + [ (Pair "1970-01-01T00:01:40Z" 100) ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) - (Pair "1970-01-01T00:01:40Z" 100) ] + [ (Pair "1970-01-01T00:01:40Z" 100) + (Pair "1970-01-01T00:01:40Z" 100) ] - location: 11 (remaining gas: 1039991.523 units remaining) - [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" 100) ] + [ "1970-01-01T00:01:40Z" + (Pair "1970-01-01T00:01:40Z" 100) ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 100) ] + [ (Pair "1970-01-01T00:01:40Z" 100) ] - location: 14 (remaining gas: 1039991.498 units remaining) - [ 100 ] + [ 100 ] - location: 12 (remaining gas: 1039991.468 units remaining) - [ "1970-01-01T00:01:40Z" - 100 ] + [ "1970-01-01T00:01:40Z" + 100 ] - location: 15 (remaining gas: 1039991.413 units remaining) - [ "1970-01-01T00:00:00Z" ] + [ "1970-01-01T00:00:00Z" ] - location: 16 (remaining gas: 1039991.398 units remaining) - [ {} - "1970-01-01T00:00:00Z" ] + [ {} + "1970-01-01T00:00:00Z" ] - location: 18 (remaining gas: 1039991.383 units remaining) - [ (Pair {} "1970-01-01T00:00:00Z") ] + [ (Pair {} "1970-01-01T00:00:00Z") ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 200000000000000000.3db82d2c25.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 200000000000000000.3db82d2c25.out index e01283a07a..a2958aad9f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 200000000000000000.3db82d2c25.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[sub_timestamp_delta.tz-111-(Pair 100 200000000000000000.3db82d2c25.out @@ -8,27 +8,27 @@ big_map diff trace - location: 9 (remaining gas: 1039991.553 units remaining) - [ (Pair (Pair "1970-01-01T00:01:40Z" 2000000000000000000) "1970-01-01T00:01:51Z") ] + [ (Pair (Pair "1970-01-01T00:01:40Z" 2000000000000000000) "1970-01-01T00:01:51Z") ] - location: 9 (remaining gas: 1039991.543 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] + [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] - location: 10 (remaining gas: 1039991.533 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) - (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] + [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) + (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] - location: 11 (remaining gas: 1039991.523 units remaining) - [ "1970-01-01T00:01:40Z" - (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] + [ "1970-01-01T00:01:40Z" + (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] - location: 12 (remaining gas: 1039991.508 units remaining) - [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] + [ (Pair "1970-01-01T00:01:40Z" 2000000000000000000) ] - location: 14 (remaining gas: 1039991.498 units remaining) - [ 2000000000000000000 ] + [ 2000000000000000000 ] - location: 12 (remaining gas: 1039991.468 units remaining) - [ "1970-01-01T00:01:40Z" - 2000000000000000000 ] + [ "1970-01-01T00:01:40Z" + 2000000000000000000 ] - location: 15 (remaining gas: 1039991.413 units remaining) - [ -1999999999999999900 ] + [ -1999999999999999900 ] - location: 16 (remaining gas: 1039991.398 units remaining) - [ {} - -1999999999999999900 ] + [ {} + -1999999999999999900 ] - location: 18 (remaining gas: 1039991.383 units remaining) - [ (Pair {} -1999999999999999900) ] + [ (Pair {} -1999999999999999900) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2000000 1000000)-(Some (Pair .b461aa042b.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2000000 1000000)-(Some (Pair .b461aa042b.out index 0f816c4c8d..c9b235f844 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2000000 1000000)-(Some (Pair .b461aa042b.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2000000 1000000)-(Some (Pair .b461aa042b.out @@ -8,64 +8,64 @@ big_map diff trace - location: 12 (remaining gas: 1039980.750 units remaining) - [ (Pair (Pair 2000000 1000000) None) ] + [ (Pair (Pair 2000000 1000000) None) ] - location: 12 (remaining gas: 1039980.740 units remaining) - [ (Pair 2000000 1000000) ] + [ (Pair 2000000 1000000) ] - location: 13 (remaining gas: 1039980.730 units remaining) - [ (Pair 2000000 1000000) - (Pair 2000000 1000000) ] + [ (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 14 (remaining gas: 1039980.720 units remaining) - [ (Pair 2000000 1000000) - (Pair 2000000 1000000) - (Pair 2000000 1000000) ] + [ (Pair 2000000 1000000) + (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 15 (remaining gas: 1039980.710 units remaining) - [ 2000000 - (Pair 2000000 1000000) - (Pair 2000000 1000000) ] + [ 2000000 + (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 16 (remaining gas: 1039980.695 units remaining) - [ (Pair 2000000 1000000) - (Pair 2000000 1000000) ] + [ (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 18 (remaining gas: 1039980.685 units remaining) - [ 1000000 - (Pair 2000000 1000000) ] + [ 1000000 + (Pair 2000000 1000000) ] - location: 16 (remaining gas: 1039980.655 units remaining) - [ 2000000 - 1000000 - (Pair 2000000 1000000) ] + [ 2000000 + 1000000 + (Pair 2000000 1000000) ] - location: 19 (remaining gas: 1039980.635 units remaining) - [ 3000000 - (Pair 2000000 1000000) ] + [ 3000000 + (Pair 2000000 1000000) ] - location: 20 (remaining gas: 1039980.620 units remaining) - [ (Pair 2000000 1000000) ] + [ (Pair 2000000 1000000) ] - location: 22 (remaining gas: 1039980.610 units remaining) - [ (Pair 2000000 1000000) - (Pair 2000000 1000000) ] + [ (Pair 2000000 1000000) + (Pair 2000000 1000000) ] - location: 23 (remaining gas: 1039980.600 units remaining) - [ 2000000 - (Pair 2000000 1000000) ] + [ 2000000 + (Pair 2000000 1000000) ] - location: 24 (remaining gas: 1039980.585 units remaining) - [ (Pair 2000000 1000000) ] + [ (Pair 2000000 1000000) ] - location: 26 (remaining gas: 1039980.575 units remaining) - [ 1000000 ] + [ 1000000 ] - location: 24 (remaining gas: 1039980.545 units remaining) - [ 2000000 - 1000000 ] + [ 2000000 + 1000000 ] - location: 27 (remaining gas: 1039980.525 units remaining) - [ (Some 1000000) ] + [ (Some 1000000) ] - location: 29 (remaining gas: 1039980.515 units remaining) - [ 1000000 ] + [ 1000000 ] - location: 29 (remaining gas: 1039980.500 units remaining) - [ 1000000 ] + [ 1000000 ] - location: 20 (remaining gas: 1039980.470 units remaining) - [ 3000000 - 1000000 ] + [ 3000000 + 1000000 ] - location: 35 (remaining gas: 1039980.455 units remaining) - [ (Pair 3000000 1000000) ] + [ (Pair 3000000 1000000) ] - location: 36 (remaining gas: 1039980.440 units remaining) - [ (Some (Pair 3000000 1000000)) ] + [ (Some (Pair 3000000 1000000)) ] - location: 37 (remaining gas: 1039980.425 units remaining) - [ {} - (Some (Pair 3000000 1000000)) ] + [ {} + (Some (Pair 3000000 1000000)) ] - location: 39 (remaining gas: 1039980.410 units remaining) - [ (Pair {} (Some (Pair 3000000 1000000))) ] + [ (Pair {} (Some (Pair 3000000 1000000))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2310000 1010000)-(Some (Pair .1e8cf7679c.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2310000 1010000)-(Some (Pair .1e8cf7679c.out index 8a4550d362..d7f3fdda63 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2310000 1010000)-(Some (Pair .1e8cf7679c.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[tez_add_sub.tz-None-(Pair 2310000 1010000)-(Some (Pair .1e8cf7679c.out @@ -8,64 +8,64 @@ big_map diff trace - location: 12 (remaining gas: 1039980.750 units remaining) - [ (Pair (Pair 2310000 1010000) None) ] + [ (Pair (Pair 2310000 1010000) None) ] - location: 12 (remaining gas: 1039980.740 units remaining) - [ (Pair 2310000 1010000) ] + [ (Pair 2310000 1010000) ] - location: 13 (remaining gas: 1039980.730 units remaining) - [ (Pair 2310000 1010000) - (Pair 2310000 1010000) ] + [ (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 14 (remaining gas: 1039980.720 units remaining) - [ (Pair 2310000 1010000) - (Pair 2310000 1010000) - (Pair 2310000 1010000) ] + [ (Pair 2310000 1010000) + (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 15 (remaining gas: 1039980.710 units remaining) - [ 2310000 - (Pair 2310000 1010000) - (Pair 2310000 1010000) ] + [ 2310000 + (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 16 (remaining gas: 1039980.695 units remaining) - [ (Pair 2310000 1010000) - (Pair 2310000 1010000) ] + [ (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 18 (remaining gas: 1039980.685 units remaining) - [ 1010000 - (Pair 2310000 1010000) ] + [ 1010000 + (Pair 2310000 1010000) ] - location: 16 (remaining gas: 1039980.655 units remaining) - [ 2310000 - 1010000 - (Pair 2310000 1010000) ] + [ 2310000 + 1010000 + (Pair 2310000 1010000) ] - location: 19 (remaining gas: 1039980.635 units remaining) - [ 3320000 - (Pair 2310000 1010000) ] + [ 3320000 + (Pair 2310000 1010000) ] - location: 20 (remaining gas: 1039980.620 units remaining) - [ (Pair 2310000 1010000) ] + [ (Pair 2310000 1010000) ] - location: 22 (remaining gas: 1039980.610 units remaining) - [ (Pair 2310000 1010000) - (Pair 2310000 1010000) ] + [ (Pair 2310000 1010000) + (Pair 2310000 1010000) ] - location: 23 (remaining gas: 1039980.600 units remaining) - [ 2310000 - (Pair 2310000 1010000) ] + [ 2310000 + (Pair 2310000 1010000) ] - location: 24 (remaining gas: 1039980.585 units remaining) - [ (Pair 2310000 1010000) ] + [ (Pair 2310000 1010000) ] - location: 26 (remaining gas: 1039980.575 units remaining) - [ 1010000 ] + [ 1010000 ] - location: 24 (remaining gas: 1039980.545 units remaining) - [ 2310000 - 1010000 ] + [ 2310000 + 1010000 ] - location: 27 (remaining gas: 1039980.525 units remaining) - [ (Some 1300000) ] + [ (Some 1300000) ] - location: 29 (remaining gas: 1039980.515 units remaining) - [ 1300000 ] + [ 1300000 ] - location: 29 (remaining gas: 1039980.500 units remaining) - [ 1300000 ] + [ 1300000 ] - location: 20 (remaining gas: 1039980.470 units remaining) - [ 3320000 - 1300000 ] + [ 3320000 + 1300000 ] - location: 35 (remaining gas: 1039980.455 units remaining) - [ (Pair 3320000 1300000) ] + [ (Pair 3320000 1300000) ] - location: 36 (remaining gas: 1039980.440 units remaining) - [ (Some (Pair 3320000 1300000)) ] + [ (Some (Pair 3320000 1300000)) ] - location: 37 (remaining gas: 1039980.425 units remaining) - [ {} - (Some (Pair 3320000 1300000)) ] + [ {} + (Some (Pair 3320000 1300000)) ] - location: 39 (remaining gas: 1039980.410 units remaining) - [ (Pair {} (Some (Pair 3320000 1300000))) ] + [ (Pair {} (Some (Pair 3320000 1300000))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[uncomb.tz-0-(Pair 1 4 2)-142].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[uncomb.tz-0-(Pair 1 4 2)-142].out index 5f5c1ccc7d..606e4002ad 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[uncomb.tz-0-(Pair 1 4 2)-142].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[uncomb.tz-0-(Pair 1 4 2)-142].out @@ -8,43 +8,43 @@ big_map diff trace - location: 10 (remaining gas: 1039988.846 units remaining) - [ (Pair (Pair 1 4 2) 0) ] + [ (Pair (Pair 1 4 2) 0) ] - location: 10 (remaining gas: 1039988.836 units remaining) - [ (Pair 1 4 2) ] + [ (Pair 1 4 2) ] - location: 11 (remaining gas: 1039988.799 units remaining) - [ 1 - 4 - 2 ] + [ 1 + 4 + 2 ] - location: 13 (remaining gas: 1039988.789 units remaining) - [ 100 - 1 - 4 - 2 ] + [ 100 + 1 + 4 + 2 ] - location: 16 (remaining gas: 1039988.685 units remaining) - [ 100 - 4 - 2 ] + [ 100 + 4 + 2 ] - location: 17 (remaining gas: 1039988.675 units remaining) - [ 4 - 100 - 2 ] + [ 4 + 100 + 2 ] - location: 18 (remaining gas: 1039988.665 units remaining) - [ 10 - 4 - 100 - 2 ] + [ 10 + 4 + 100 + 2 ] - location: 21 (remaining gas: 1039988.561 units remaining) - [ 40 - 100 - 2 ] + [ 40 + 100 + 2 ] - location: 22 (remaining gas: 1039988.506 units remaining) - [ 140 - 2 ] + [ 140 + 2 ] - location: 23 (remaining gas: 1039988.451 units remaining) - [ 142 ] + [ 142 ] - location: 24 (remaining gas: 1039988.436 units remaining) - [ {} - 142 ] + [ {} + 142 ] - location: 26 (remaining gas: 1039988.421 units remaining) - [ (Pair {} 142) ] + [ (Pair {} 142) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[unpair.tz-Unit-Unit-Unit].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[unpair.tz-Unit-Unit-Unit].out index cb6725b995..d04559f220 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[unpair.tz-Unit-Unit-Unit].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[unpair.tz-Unit-Unit-Unit].out @@ -8,455 +8,455 @@ big_map diff trace - location: 7 (remaining gas: 1039873.089 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 7 (remaining gas: 1039873.079 units remaining) [ ] - location: 8 (remaining gas: 1039873.069 units remaining) - [ Unit ] + [ Unit ] - location: 9 (remaining gas: 1039873.059 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 10 (remaining gas: 1039873.044 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 11 (remaining gas: 1039873.034 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 12 (remaining gas: 1039872.969 units remaining) [ ] - location: 14 (remaining gas: 1039872.959 units remaining) - [ Unit ] + [ Unit ] - location: 15 (remaining gas: 1039872.949 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 16 (remaining gas: 1039872.934 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 17 (remaining gas: 1039872.924 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 18 (remaining gas: 1039872.859 units remaining) [ ] - location: 20 (remaining gas: 1039872.849 units remaining) - [ Unit ] + [ Unit ] - location: 21 (remaining gas: 1039872.839 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 22 (remaining gas: 1039872.824 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 23 (remaining gas: 1039872.814 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 24 (remaining gas: 1039872.804 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 25 (remaining gas: 1039872.739 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 27 (remaining gas: 1039872.729 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 28 (remaining gas: 1039872.719 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 29 (remaining gas: 1039872.654 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 31 (remaining gas: 1039872.644 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 32 (remaining gas: 1039872.634 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 33 (remaining gas: 1039872.569 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 35 (remaining gas: 1039872.559 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 36 (remaining gas: 1039872.549 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 37 (remaining gas: 1039872.484 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 39 (remaining gas: 1039872.474 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 40 (remaining gas: 1039872.464 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 41 (remaining gas: 1039872.399 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 43 (remaining gas: 1039872.389 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 44 (remaining gas: 1039872.379 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 45 (remaining gas: 1039872.314 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 47 (remaining gas: 1039872.304 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 48 (remaining gas: 1039872.294 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 49 (remaining gas: 1039872.229 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 51 (remaining gas: 1039872.219 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 52 (remaining gas: 1039872.209 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 53 (remaining gas: 1039872.144 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 55 (remaining gas: 1039872.134 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 56 (remaining gas: 1039872.124 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 57 (remaining gas: 1039872.059 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 59 (remaining gas: 1039872.049 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 60 (remaining gas: 1039872.039 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 61 (remaining gas: 1039871.974 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 63 (remaining gas: 1039871.964 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 64 (remaining gas: 1039871.954 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 65 (remaining gas: 1039871.889 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 67 (remaining gas: 1039871.879 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 68 (remaining gas: 1039871.869 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 69 (remaining gas: 1039871.804 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 71 (remaining gas: 1039871.794 units remaining) [ ] - location: 72 (remaining gas: 1039871.784 units remaining) - [ Unit ] + [ Unit ] - location: 73 (remaining gas: 1039871.774 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 74 (remaining gas: 1039871.759 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 75 (remaining gas: 1039871.749 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 76 (remaining gas: 1039871.739 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 77 (remaining gas: 1039871.674 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 79 (remaining gas: 1039871.664 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 80 (remaining gas: 1039871.654 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 81 (remaining gas: 1039871.589 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 83 (remaining gas: 1039871.579 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 84 (remaining gas: 1039871.569 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 85 (remaining gas: 1039871.504 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 87 (remaining gas: 1039871.494 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 88 (remaining gas: 1039871.484 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 89 (remaining gas: 1039871.419 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 91 (remaining gas: 1039871.409 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 92 (remaining gas: 1039871.399 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 93 (remaining gas: 1039871.334 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 95 (remaining gas: 1039871.324 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 96 (remaining gas: 1039871.314 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 97 (remaining gas: 1039871.249 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 99 (remaining gas: 1039871.239 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 100 (remaining gas: 1039871.229 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 101 (remaining gas: 1039871.164 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 103 (remaining gas: 1039871.154 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 104 (remaining gas: 1039871.144 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 105 (remaining gas: 1039871.079 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 107 (remaining gas: 1039871.069 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 108 (remaining gas: 1039871.059 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 109 (remaining gas: 1039870.994 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 111 (remaining gas: 1039870.984 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 112 (remaining gas: 1039870.974 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 113 (remaining gas: 1039870.909 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 115 (remaining gas: 1039870.899 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 116 (remaining gas: 1039870.889 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 117 (remaining gas: 1039870.824 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 119 (remaining gas: 1039870.814 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 120 (remaining gas: 1039870.804 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 121 (remaining gas: 1039870.739 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 123 (remaining gas: 1039870.729 units remaining) [ ] - location: 124 (remaining gas: 1039870.719 units remaining) - [ Unit ] + [ Unit ] - location: 125 (remaining gas: 1039870.709 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 126 (remaining gas: 1039870.694 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 127 (remaining gas: 1039870.684 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 128 (remaining gas: 1039870.674 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 129 (remaining gas: 1039870.609 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 131 (remaining gas: 1039870.599 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 132 (remaining gas: 1039870.589 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 133 (remaining gas: 1039870.524 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 135 (remaining gas: 1039870.514 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 136 (remaining gas: 1039870.504 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 137 (remaining gas: 1039870.439 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 139 (remaining gas: 1039870.429 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 140 (remaining gas: 1039870.419 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 141 (remaining gas: 1039870.354 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 143 (remaining gas: 1039870.344 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 144 (remaining gas: 1039870.334 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 145 (remaining gas: 1039870.269 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 147 (remaining gas: 1039870.259 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 148 (remaining gas: 1039870.249 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 149 (remaining gas: 1039870.184 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 151 (remaining gas: 1039870.174 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 152 (remaining gas: 1039870.164 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 153 (remaining gas: 1039870.099 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 155 (remaining gas: 1039870.089 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 156 (remaining gas: 1039870.079 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 157 (remaining gas: 1039870.014 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 159 (remaining gas: 1039870.004 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 160 (remaining gas: 1039869.994 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 161 (remaining gas: 1039869.929 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 163 (remaining gas: 1039869.919 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 164 (remaining gas: 1039869.909 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 165 (remaining gas: 1039869.844 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 167 (remaining gas: 1039869.834 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 168 (remaining gas: 1039869.824 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 169 (remaining gas: 1039869.759 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 171 (remaining gas: 1039869.749 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 172 (remaining gas: 1039869.739 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 173 (remaining gas: 1039869.674 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 175 (remaining gas: 1039869.664 units remaining) [ ] - location: 176 (remaining gas: 1039869.654 units remaining) - [ Unit ] + [ Unit ] - location: 177 (remaining gas: 1039869.644 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 178 (remaining gas: 1039869.629 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 179 (remaining gas: 1039869.619 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 180 (remaining gas: 1039869.609 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 181 (remaining gas: 1039869.544 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 183 (remaining gas: 1039869.534 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 184 (remaining gas: 1039869.524 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 185 (remaining gas: 1039869.459 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 187 (remaining gas: 1039869.449 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 188 (remaining gas: 1039869.439 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 189 (remaining gas: 1039869.374 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 191 (remaining gas: 1039869.364 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 192 (remaining gas: 1039869.354 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 193 (remaining gas: 1039869.289 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 195 (remaining gas: 1039869.279 units remaining) - [ (Pair Unit Unit) - (Pair Unit Unit) ] + [ (Pair Unit Unit) + (Pair Unit Unit) ] - location: 196 (remaining gas: 1039869.269 units remaining) - [ Unit - Unit - (Pair Unit Unit) ] + [ Unit + Unit + (Pair Unit Unit) ] - location: 197 (remaining gas: 1039869.204 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 199 (remaining gas: 1039869.194 units remaining) [ ] - location: 200 (remaining gas: 1039869.184 units remaining) - [ Unit ] + [ Unit ] - location: 201 (remaining gas: 1039869.174 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 202 (remaining gas: 1039869.159 units remaining) - [ (Pair Unit Unit) ] + [ (Pair Unit Unit) ] - location: 203 (remaining gas: 1039869.149 units remaining) - [ Unit - Unit ] + [ Unit + Unit ] - location: 204 (remaining gas: 1039869.084 units remaining) [ ] - location: 206 (remaining gas: 1039869.074 units remaining) - [ Unit ] + [ Unit ] - location: 207 (remaining gas: 1039869.059 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 209 (remaining gas: 1039869.044 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] diff --git "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[voting_power.tz-(Pair 0 0)-\"edpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[voting_power.tz-(Pair 0 0)-\"edpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" index 24900d3ab5..ddfbfad027 100644 --- "a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[voting_power.tz-(Pair 0 0)-\"edpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" +++ "b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[voting_power.tz-(Pair 0 0)-\"edpkuBknW28nW72KG6RoHtYW7p1.bfa38be34d.out" @@ -8,25 +8,25 @@ big_map diff trace - location: 9 (remaining gas: 1039666.323 units remaining) - [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" 0 0) ] + [ (Pair "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" 0 0) ] - location: 9 (remaining gas: 1039666.313 units remaining) - [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" ] + [ "edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" ] - location: 10 (remaining gas: 1039665.658 units remaining) - [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] + [ "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" ] - location: 11 (remaining gas: 1039445.120 units remaining) - [ 666 ] + [ 666 ] - location: 12 (remaining gas: 1039445.105 units remaining) [ ] - location: 14 (remaining gas: 1039234.727 units remaining) - [ 3330 ] + [ 3330 ] - location: 12 (remaining gas: 1039234.697 units remaining) - [ 666 - 3330 ] + [ 666 + 3330 ] - location: 15 (remaining gas: 1039234.682 units remaining) - [ (Pair 666 3330) ] + [ (Pair 666 3330) ] - location: 16 (remaining gas: 1039234.667 units remaining) - [ {} - (Pair 666 3330) ] + [ {} + (Pair 666 3330) ] - location: 18 (remaining gas: 1039234.652 units remaining) - [ (Pair {} 666 3330) ] + [ (Pair {} 666 3330) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False False)-(Some (Left False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False False)-(Some (Left False))].out index cfefc05870..d3e24ab553 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False False)-(Some (Left False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False False)-(Some (Left False))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Left (Pair False False)) None) ] + [ (Pair (Left (Pair False False)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Left (Pair False False)) ] + [ (Left (Pair False False)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair False False) ] + [ (Pair False False) ] - location: 19 (remaining gas: 1039986.729 units remaining) - [ False - False ] + [ False + False ] - location: 20 (remaining gas: 1039986.709 units remaining) - [ False ] + [ False ] - location: 21 (remaining gas: 1039986.694 units remaining) - [ (Left False) ] + [ (Left False) ] - location: 17 (remaining gas: 1039986.679 units remaining) - [ (Left False) ] + [ (Left False) ] - location: 28 (remaining gas: 1039986.664 units remaining) - [ (Some (Left False)) ] + [ (Some (Left False)) ] - location: 29 (remaining gas: 1039986.649 units remaining) - [ {} - (Some (Left False)) ] + [ {} + (Some (Left False)) ] - location: 31 (remaining gas: 1039986.634 units remaining) - [ (Pair {} (Some (Left False))) ] + [ (Pair {} (Some (Left False))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False True)-(Some (Left True))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False True)-(Some (Left True))].out index 5b7a2be2c2..0802e45cfc 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False True)-(Some (Left True))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair False True)-(Some (Left True))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Left (Pair False True)) None) ] + [ (Pair (Left (Pair False True)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Left (Pair False True)) ] + [ (Left (Pair False True)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair False True) ] + [ (Pair False True) ] - location: 19 (remaining gas: 1039986.729 units remaining) - [ False - True ] + [ False + True ] - location: 20 (remaining gas: 1039986.709 units remaining) - [ True ] + [ True ] - location: 21 (remaining gas: 1039986.694 units remaining) - [ (Left True) ] + [ (Left True) ] - location: 17 (remaining gas: 1039986.679 units remaining) - [ (Left True) ] + [ (Left True) ] - location: 28 (remaining gas: 1039986.664 units remaining) - [ (Some (Left True)) ] + [ (Some (Left True)) ] - location: 29 (remaining gas: 1039986.649 units remaining) - [ {} - (Some (Left True)) ] + [ {} + (Some (Left True)) ] - location: 31 (remaining gas: 1039986.634 units remaining) - [ (Pair {} (Some (Left True))) ] + [ (Pair {} (Some (Left True))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True False)-(Some (Left True))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True False)-(Some (Left True))].out index 3ff40dde89..7c48164a1f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True False)-(Some (Left True))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True False)-(Some (Left True))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Left (Pair True False)) None) ] + [ (Pair (Left (Pair True False)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Left (Pair True False)) ] + [ (Left (Pair True False)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair True False) ] + [ (Pair True False) ] - location: 19 (remaining gas: 1039986.729 units remaining) - [ True - False ] + [ True + False ] - location: 20 (remaining gas: 1039986.709 units remaining) - [ True ] + [ True ] - location: 21 (remaining gas: 1039986.694 units remaining) - [ (Left True) ] + [ (Left True) ] - location: 17 (remaining gas: 1039986.679 units remaining) - [ (Left True) ] + [ (Left True) ] - location: 28 (remaining gas: 1039986.664 units remaining) - [ (Some (Left True)) ] + [ (Some (Left True)) ] - location: 29 (remaining gas: 1039986.649 units remaining) - [ {} - (Some (Left True)) ] + [ {} + (Some (Left True)) ] - location: 31 (remaining gas: 1039986.634 units remaining) - [ (Pair {} (Some (Left True))) ] + [ (Pair {} (Some (Left True))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True True)-(Some (Left False))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True True)-(Some (Left False))].out index 486f945828..546b89b49d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True True)-(Some (Left False))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Left (Pair True True)-(Some (Left False))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Left (Pair True True)) None) ] + [ (Pair (Left (Pair True True)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Left (Pair True True)) ] + [ (Left (Pair True True)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair True True) ] + [ (Pair True True) ] - location: 19 (remaining gas: 1039986.729 units remaining) - [ True - True ] + [ True + True ] - location: 20 (remaining gas: 1039986.709 units remaining) - [ False ] + [ False ] - location: 21 (remaining gas: 1039986.694 units remaining) - [ (Left False) ] + [ (Left False) ] - location: 17 (remaining gas: 1039986.679 units remaining) - [ (Left False) ] + [ (Left False) ] - location: 28 (remaining gas: 1039986.664 units remaining) - [ (Some (Left False)) ] + [ (Some (Left False)) ] - location: 29 (remaining gas: 1039986.649 units remaining) - [ {} - (Some (Left False)) ] + [ {} + (Some (Left False)) ] - location: 31 (remaining gas: 1039986.634 units remaining) - [ (Pair {} (Some (Left False))) ] + [ (Pair {} (Some (Left False))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 0)-(Some (Right 0))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 0)-(Some (Right 0))].out index 8c0ba39db8..16cc94e4f4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 0)-(Some (Right 0))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 0)-(Some (Right 0))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Right (Pair 0 0)) None) ] + [ (Pair (Right (Pair 0 0)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 0 0)) ] + [ (Right (Pair 0 0)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 0 0) ] + [ (Pair 0 0) ] - location: 24 (remaining gas: 1039986.729 units remaining) - [ 0 - 0 ] + [ 0 + 0 ] - location: 25 (remaining gas: 1039986.674 units remaining) - [ 0 ] + [ 0 ] - location: 26 (remaining gas: 1039986.659 units remaining) - [ (Right 0) ] + [ (Right 0) ] - location: 17 (remaining gas: 1039986.644 units remaining) - [ (Right 0) ] + [ (Right 0) ] - location: 28 (remaining gas: 1039986.629 units remaining) - [ (Some (Right 0)) ] + [ (Some (Right 0)) ] - location: 29 (remaining gas: 1039986.614 units remaining) - [ {} - (Some (Right 0)) ] + [ {} + (Some (Right 0)) ] - location: 31 (remaining gas: 1039986.599 units remaining) - [ (Pair {} (Some (Right 0))) ] + [ (Pair {} (Some (Right 0))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 1)-(Some (Right 1))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 1)-(Some (Right 1))].out index d806e493bc..10991242f4 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 1)-(Some (Right 1))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 0 1)-(Some (Right 1))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Right (Pair 0 1)) None) ] + [ (Pair (Right (Pair 0 1)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 0 1)) ] + [ (Right (Pair 0 1)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 0 1) ] + [ (Pair 0 1) ] - location: 24 (remaining gas: 1039986.729 units remaining) - [ 0 - 1 ] + [ 0 + 1 ] - location: 25 (remaining gas: 1039986.674 units remaining) - [ 1 ] + [ 1 ] - location: 26 (remaining gas: 1039986.659 units remaining) - [ (Right 1) ] + [ (Right 1) ] - location: 17 (remaining gas: 1039986.644 units remaining) - [ (Right 1) ] + [ (Right 1) ] - location: 28 (remaining gas: 1039986.629 units remaining) - [ (Some (Right 1)) ] + [ (Some (Right 1)) ] - location: 29 (remaining gas: 1039986.614 units remaining) - [ {} - (Some (Right 1)) ] + [ {} + (Some (Right 1)) ] - location: 31 (remaining gas: 1039986.599 units remaining) - [ (Pair {} (Some (Right 1))) ] + [ (Pair {} (Some (Right 1))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 0)-(Some (Right 1))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 0)-(Some (Right 1))].out index 98a4afea08..6a631338ba 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 0)-(Some (Right 1))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 0)-(Some (Right 1))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Right (Pair 1 0)) None) ] + [ (Pair (Right (Pair 1 0)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 1 0)) ] + [ (Right (Pair 1 0)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 1 0) ] + [ (Pair 1 0) ] - location: 24 (remaining gas: 1039986.729 units remaining) - [ 1 - 0 ] + [ 1 + 0 ] - location: 25 (remaining gas: 1039986.674 units remaining) - [ 1 ] + [ 1 ] - location: 26 (remaining gas: 1039986.659 units remaining) - [ (Right 1) ] + [ (Right 1) ] - location: 17 (remaining gas: 1039986.644 units remaining) - [ (Right 1) ] + [ (Right 1) ] - location: 28 (remaining gas: 1039986.629 units remaining) - [ (Some (Right 1)) ] + [ (Some (Right 1)) ] - location: 29 (remaining gas: 1039986.614 units remaining) - [ {} - (Some (Right 1)) ] + [ {} + (Some (Right 1)) ] - location: 31 (remaining gas: 1039986.599 units remaining) - [ (Pair {} (Some (Right 1))) ] + [ (Pair {} (Some (Right 1))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 1)-(Some (Right 0))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 1)-(Some (Right 0))].out index 6bd1043375..c9d444e453 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 1)-(Some (Right 0))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 1 1)-(Some (Right 0))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Right (Pair 1 1)) None) ] + [ (Pair (Right (Pair 1 1)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 1 1)) ] + [ (Right (Pair 1 1)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 1 1) ] + [ (Pair 1 1) ] - location: 24 (remaining gas: 1039986.729 units remaining) - [ 1 - 1 ] + [ 1 + 1 ] - location: 25 (remaining gas: 1039986.674 units remaining) - [ 0 ] + [ 0 ] - location: 26 (remaining gas: 1039986.659 units remaining) - [ (Right 0) ] + [ (Right 0) ] - location: 17 (remaining gas: 1039986.644 units remaining) - [ (Right 0) ] + [ (Right 0) ] - location: 28 (remaining gas: 1039986.629 units remaining) - [ (Some (Right 0)) ] + [ (Some (Right 0)) ] - location: 29 (remaining gas: 1039986.614 units remaining) - [ {} - (Some (Right 0)) ] + [ {} + (Some (Right 0)) ] - location: 31 (remaining gas: 1039986.599 units remaining) - [ (Pair {} (Some (Right 0))) ] + [ (Pair {} (Some (Right 0))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 21)-(Some (Right 63))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 21)-(Some (Right 63))].out index 4e10d0de47..19344b796a 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 21)-(Some (Right 63))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 21)-(Some (Right 63))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Right (Pair 42 21)) None) ] + [ (Pair (Right (Pair 42 21)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 42 21)) ] + [ (Right (Pair 42 21)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 42 21) ] + [ (Pair 42 21) ] - location: 24 (remaining gas: 1039986.729 units remaining) - [ 42 - 21 ] + [ 42 + 21 ] - location: 25 (remaining gas: 1039986.674 units remaining) - [ 63 ] + [ 63 ] - location: 26 (remaining gas: 1039986.659 units remaining) - [ (Right 63) ] + [ (Right 63) ] - location: 17 (remaining gas: 1039986.644 units remaining) - [ (Right 63) ] + [ (Right 63) ] - location: 28 (remaining gas: 1039986.629 units remaining) - [ (Some (Right 63)) ] + [ (Some (Right 63)) ] - location: 29 (remaining gas: 1039986.614 units remaining) - [ {} - (Some (Right 63)) ] + [ {} + (Some (Right 63)) ] - location: 31 (remaining gas: 1039986.599 units remaining) - [ (Pair {} (Some (Right 63))) ] + [ (Pair {} (Some (Right 63))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 63)-(Some (Right 21))].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 63)-(Some (Right 21))].out index fd4ae34cd5..73b4934984 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 63)-(Some (Right 21))].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[xor.tz-None-Right (Pair 42 63)-(Some (Right 21))].out @@ -8,25 +8,25 @@ big_map diff trace - location: 16 (remaining gas: 1039986.759 units remaining) - [ (Pair (Right (Pair 42 63)) None) ] + [ (Pair (Right (Pair 42 63)) None) ] - location: 16 (remaining gas: 1039986.749 units remaining) - [ (Right (Pair 42 63)) ] + [ (Right (Pair 42 63)) ] - location: 17 (remaining gas: 1039986.739 units remaining) - [ (Pair 42 63) ] + [ (Pair 42 63) ] - location: 24 (remaining gas: 1039986.729 units remaining) - [ 42 - 63 ] + [ 42 + 63 ] - location: 25 (remaining gas: 1039986.674 units remaining) - [ 21 ] + [ 21 ] - location: 26 (remaining gas: 1039986.659 units remaining) - [ (Right 21) ] + [ (Right 21) ] - location: 17 (remaining gas: 1039986.644 units remaining) - [ (Right 21) ] + [ (Right 21) ] - location: 28 (remaining gas: 1039986.629 units remaining) - [ (Some (Right 21)) ] + [ (Some (Right 21)) ] - location: 29 (remaining gas: 1039986.614 units remaining) - [ {} - (Some (Right 21)) ] + [ {} + (Some (Right 21)) ] - location: 31 (remaining gas: 1039986.599 units remaining) - [ (Pair {} (Some (Right 21))) ] + [ (Pair {} (Some (Right 21))) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_level.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_level.out index df46a5c8bc..ef4cb7517e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_level.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_level.out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.948 units remaining) - [ (Pair Unit 9999999) ] + [ (Pair Unit 9999999) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - location: 8 (remaining gas: 1039994.923 units remaining) - [ 10 ] + [ 10 ] - location: 9 (remaining gas: 1039994.908 units remaining) - [ {} - 10 ] + [ {} + 10 ] - location: 11 (remaining gas: 1039994.893 units remaining) - [ (Pair {} 10) ] + [ (Pair {} 10) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_now.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_now.out index a6549cb096..db0aa40802 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_now.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_now.out @@ -8,14 +8,14 @@ big_map diff trace - location: 7 (remaining gas: 1039994.848 units remaining) - [ (Pair Unit "2017-07-13T09:19:01Z") ] + [ (Pair Unit "2017-07-13T09:19:01Z") ] - location: 7 (remaining gas: 1039994.838 units remaining) [ ] - location: 8 (remaining gas: 1039994.823 units remaining) - [ "2021-10-13T10:16:52Z" ] + [ "2021-10-13T10:16:52Z" ] - location: 9 (remaining gas: 1039994.808 units remaining) - [ {} - "2021-10-13T10:16:52Z" ] + [ {} + "2021-10-13T10:16:52Z" ] - location: 11 (remaining gas: 1039994.793 units remaining) - [ (Pair {} "2021-10-13T10:16:52Z") ] + [ (Pair {} "2021-10-13T10:16:52Z") ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_packunpack.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_packunpack.out index 69d30c9a1f..80e4ad4390 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_packunpack.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_packunpack.out @@ -10,51 +10,51 @@ trace - location: 15 (remaining gas: 1039977.531 units remaining) [ (Pair (Pair (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003) - Unit) ] + Unit) ] - location: 15 (remaining gas: 1039977.521 units remaining) [ (Pair (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003) ] + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003) ] - location: 16 (remaining gas: 1039977.511 units remaining) - [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 17 (remaining gas: 1039977.496 units remaining) - [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 19 (remaining gas: 1039977.486 units remaining) - [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 17 (remaining gas: 1039977.456 units remaining) - [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 20 (remaining gas: 1039975.016 units remaining) - [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 23 (remaining gas: 1039974.981 units remaining) - [ 0 - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ 0 + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 24 (remaining gas: 1039974.966 units remaining) - [ True - 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ True + 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 25 (remaining gas: 1039974.956 units remaining) - [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 25 (remaining gas: 1039974.941 units remaining) - [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] + [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 ] - location: 31 (remaining gas: 1039971.783 units remaining) - [ (Some (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 })) ] + [ (Some (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 })) ] - location: 40 (remaining gas: 1039971.773 units remaining) - [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) ] + [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) ] - location: 40 (remaining gas: 1039971.758 units remaining) - [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) ] + [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) ] - location: 46 (remaining gas: 1039971.748 units remaining) [ ] - location: 47 (remaining gas: 1039971.738 units remaining) - [ Unit ] + [ Unit ] - location: 48 (remaining gas: 1039971.723 units remaining) - [ {} - Unit ] + [ {} + Unit ] - location: 50 (remaining gas: 1039971.708 units remaining) - [ (Pair {} Unit) ] + [ (Pair {} Unit) ] Runtime error in contract [CONTRACT_HASH]: 1: parameter (pair (pair (pair string (list int)) (set nat)) bytes) ; @@ -71,36 +71,36 @@ trace - location: 15 (remaining gas: 1039977.531 units remaining) [ (Pair (Pair (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004) - Unit) ] + Unit) ] - location: 15 (remaining gas: 1039977.521 units remaining) [ (Pair (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004) ] + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004) ] - location: 16 (remaining gas: 1039977.511 units remaining) - [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 17 (remaining gas: 1039977.496 units remaining) - [ 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 19 (remaining gas: 1039977.486 units remaining) - [ 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 17 (remaining gas: 1039977.456 units remaining) - [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ (Pair (Pair "toto" { 3 ; 7 ; 9 ; 1 }) { 1 ; 2 ; 3 }) + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 20 (remaining gas: 1039975.016 units remaining) - [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ 0x05070707070100000004746f746f020000000800030007000900010200000006000100020003 + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 23 (remaining gas: 1039974.981 units remaining) - [ -1 - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ -1 + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 24 (remaining gas: 1039974.966 units remaining) - [ False - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ False + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 25 (remaining gas: 1039974.956 units remaining) - [ 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] - location: 29 (remaining gas: 1039974.946 units remaining) - [ Unit - 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] + [ Unit + 0x05070707070100000004746f746f0200000008000300070009000102000000060001000200030004 ] Fatal error: error running script From 1d7076e78ec1bc34d334302cf3ed47514e8154a6 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Fri, 7 Jan 2022 15:31:50 +0100 Subject: [PATCH 0031/1220] Proto/Michelson: simplify typechecking stack type encoding as well as type map encoding These encodings are used only for typechecking errors. But `type_map_enc` is also used in the plugin's `typecheck_code` rpc. It looks like no tests was using the output of this rpc. --- .../lib_protocol/script_interpreter.ml | 9 +------- .../script_tc_errors_registration.ml | 23 ++++--------------- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index d2cc95e3d7..4486c4705b 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -119,18 +119,11 @@ type error += Michelson_too_many_recursive_calls let () = let open Data_encoding in let trace_encoding = - (* TODO: should this encoding be updated? *) list @@ obj3 (req "location" Script.location_encoding) (req "gas" Gas.encoding) - (req - "stack" - (list - (conv - (fun e -> (e, None)) - (fun (e, _annot) -> e) - (obj2 (req "item" Script.expr_encoding) (opt "annot" string))))) + (req "stack" (list Script.expr_encoding)) in (* Reject *) register_error_kind diff --git a/src/proto_alpha/lib_protocol/script_tc_errors_registration.ml b/src/proto_alpha/lib_protocol/script_tc_errors_registration.ml index 0d7f79e0fd..fee39265d2 100644 --- a/src/proto_alpha/lib_protocol/script_tc_errors_registration.ml +++ b/src/proto_alpha/lib_protocol/script_tc_errors_registration.ml @@ -28,33 +28,18 @@ open Script open Script_tc_errors (* Helpers for encoding *) +let stack_ty_enc = Data_encoding.list Script.expr_encoding + let type_map_enc = let open Data_encoding in - (* TODO? simplify this encoding *) - let stack_enc = - list - (conv - (fun ty -> (ty, [])) - (fun (ty, _annots) -> ty) - (tup2 Script.expr_encoding (list string))) - in list (conv (fun (loc, (bef, aft)) -> (loc, bef, aft)) (fun (loc, bef, aft) -> (loc, (bef, aft))) (obj3 (req "location" Script.location_encoding) - (req "stack_before" stack_enc) - (req "stack_after" stack_enc))) - -let stack_ty_enc = - let open Data_encoding in - (* TODO? simplify this encoding *) - list - (conv - (fun ty -> (ty, [])) - (fun (ty, _annots) -> ty) - (obj2 (req "type" Script.expr_encoding) (dft "annots" (list string) []))) + (req "stack_before" stack_ty_enc) + (req "stack_after" stack_ty_enc))) (* main registration *) let () = From 3d82e53e8edda83834a70d4c634b7a71d04639be Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Fri, 7 Jan 2022 17:07:25 +0100 Subject: [PATCH 0032/1220] Proto/Plugin: simplify trace encoding This encoding seems to be used only in `trace_code` rpc, which doesn't seem to be used in tests. --- src/proto_alpha/lib_plugin/plugin.ml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 47f36c3446..32e8c94b31 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -1245,20 +1245,11 @@ module RPC = struct let trace_code_input_encoding = run_code_input_encoding let trace_encoding = - (* TODO: should this encoding be updated? *) def "scripted.trace" @@ list @@ obj3 (req "location" Script.location_encoding) (req "gas" Gas.encoding) - (req - "stack" - (list - (conv - (fun e -> (e, None)) - (fun (e, _annot) -> e) - (obj2 - (req "item" Script.expr_encoding) - (opt "annot" string))))) + (req "stack" (list Script.expr_encoding)) let trace_code_output_encoding = conv From b6c50e365714869b9eb7f0da176676bdcd23e417 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 10 Jan 2022 15:42:34 +0100 Subject: [PATCH 0033/1220] Proto/Doc: add entry in changelog --- docs/protocols/alpha.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/protocols/alpha.rst b/docs/protocols/alpha.rst index b857f52af5..09a1d38a74 100644 --- a/docs/protocols/alpha.rst +++ b/docs/protocols/alpha.rst @@ -38,3 +38,14 @@ Michelson However, ``CREATE_CONTRACT``, ``SET_DELEGATE`` and ``TRANSFER_TOKENS`` remain available in lambdas defined inside a view. (MR :gl:`!3737`) + +- Stack variable annotations are ignored and not propagated. All contracts that + used to typecheck correctly before will still typecheck correctly afterwards. + Though more contracts are accepted as branches with different stack variable + annotations won't be rejected any more. + The special annotation ``%@`` of ``PAIR`` has no effect. + RPCs ``typecheck_code``, ``trace_code``, as well as typechecking errors + reporting stack types, won't report stack annotations any more. + In their output encodings, the objects containing the fields ``item`` and + ``annot`` are replaced with the contents of the field ``item``. + (MR :gl:`!4139`) From b0d0d752c775ac02f71d72701f0c0ca32e94f1b4 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 10 Jan 2022 16:15:47 +0100 Subject: [PATCH 0034/1220] Proto/Michelson: update stack_ty_size --- src/proto_alpha/lib_protocol/script_typed_ir_size.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index 73da8322ac..c9825ec644 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -109,7 +109,7 @@ let stack_ty_size s = fun accu s -> match s with | Bot_t -> ret_succ accu - | Item_t (ty, _) -> ret_succ_adding (accu ++ ty_size ty) h3w + | Item_t (ty, _) -> ret_succ_adding (accu ++ ty_size ty) h2w in stack_ty_traverse s zero {apply} From 3d3efe5c7c270a658302bfe35a0efe5a53de6d0b Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 11 Jan 2022 19:36:17 +0100 Subject: [PATCH 0035/1220] Proto/Tests: adapt script cache hard-coded values --- src/proto_alpha/lib_protocol/test/test_script_cache.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/proto_alpha/lib_protocol/test/test_script_cache.ml b/src/proto_alpha/lib_protocol/test/test_script_cache.ml index 6cee314763..4114da6b50 100644 --- a/src/proto_alpha/lib_protocol/test/test_script_cache.ml +++ b/src/proto_alpha/lib_protocol/test/test_script_cache.ml @@ -46,7 +46,7 @@ let err x = Exn (Script_cache_test_error x) model. It has been computed by a manual run of the test. *) -let liquidity_baking_contract_size = 291909 +let liquidity_baking_contract_size = 291537 let liquidity_baking_contract = Contract.of_b58check "KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5" |> function @@ -120,7 +120,7 @@ let add_some_contracts k src block baker = model. It has been computed by a manual run of the test. *) -let int_store_contract_size = 1482 +let int_store_contract_size = 1456 (* From 883dcc9032553dd606adc9c847eababdfe7885fe Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 16 Dec 2021 13:59:46 +0100 Subject: [PATCH 0036/1220] proto_alpha/lib_protocol/test: average runs in round_of_timestamp_perf --- .../lib_protocol/test/test_round_repr.ml | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/proto_alpha/lib_protocol/test/test_round_repr.ml b/src/proto_alpha/lib_protocol/test/test_round_repr.ml index af81ae8840..62a4e51de6 100644 --- a/src/proto_alpha/lib_protocol/test/test_round_repr.ml +++ b/src/proto_alpha/lib_protocol/test/test_round_repr.ml @@ -297,18 +297,26 @@ let round_of_timestamp_perf (duration0_int64, dipr) = let max_ts = Int64.(sub (of_int32 Int32.max_int) duration0_int64) in let rec loop i = if i >= 0L then ( - let timestamp = - ts_add level_start (Period.of_seconds_exn (Int64.sub max_ts i)) + let repeats = 100 in + let rec loop_inner sum j = + if j > 0 then + let timestamp = + ts_add level_start (Period.of_seconds_exn (Int64.sub max_ts i)) + in + let t0 = Unix.gettimeofday () in + Round.round_of_timestamp + round_durations + ~predecessor_timestamp + ~timestamp + ~predecessor_round:Round.zero + >>? fun _round -> + let t1 = Unix.gettimeofday () in + let time = t1 -. t0 in + loop_inner (sum +. time) (j - 1) + else ok sum in - let t0 = Unix.gettimeofday () in - Round.round_of_timestamp - round_durations - ~predecessor_timestamp - ~timestamp - ~predecessor_round:Round.zero - >>? fun _round -> - let t1 = Unix.gettimeofday () in - let time = t1 -. t0 in + loop_inner 0.0 repeats >>? fun sum -> + let time = sum /. float_of_int repeats in assert (time < 0.01) ; loop (Int64.pred i)) else ok () From 9ade1e51508586a19c40fa36c1b58bf7156e5c79 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 10 Dec 2021 19:15:00 +0100 Subject: [PATCH 0037/1220] proto_alpha/lib_protocol/test: move out transfer and context helpers --- .../lib_protocol/test/helpers/context.ml | 46 ++++++++++ .../lib_protocol/test/helpers/context.mli | 38 ++++++++ .../lib_protocol/test/helpers/transfers.ml | 65 ++++++++++++++ .../lib_protocol/test/helpers/transfers.mli | 68 +++++++++++++++ .../test/test_global_constants_storage.ml | 8 +- .../lib_protocol/test/test_transfer.ml | 86 +++---------------- 6 files changed, 232 insertions(+), 79 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/test/helpers/transfers.ml create mode 100644 src/proto_alpha/lib_protocol/test/helpers/transfers.mli diff --git a/src/proto_alpha/lib_protocol/test/helpers/context.ml b/src/proto_alpha/lib_protocol/test/helpers/context.ml index c3db4d6e70..8161dcb07b 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/context.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/context.ml @@ -353,6 +353,52 @@ let init ?rng_state ?commitments ?(initial_balances = []) ?consensus_threshold accounts >|=? fun blk -> (blk, contracts) +let init1 ?rng_state ?commitments ?(initial_balances = []) ?consensus_threshold + ?min_proposal_quorum ?level ?cost_per_byte ?liquidity_baking_subsidy + ?endorsing_reward_per_slot ?baking_reward_bonus_per_slot + ?baking_reward_fixed_portion ?origination_size ?blocks_per_cycle () = + init + ?rng_state + ?commitments + ~initial_balances + ?consensus_threshold + ?min_proposal_quorum + ?level + ?cost_per_byte + ?liquidity_baking_subsidy + ?endorsing_reward_per_slot + ?baking_reward_bonus_per_slot + ?baking_reward_fixed_portion + ?origination_size + ?blocks_per_cycle + 1 + >|=? function + | (_, []) -> assert false + | (b, contract_1 :: _) -> (b, contract_1) + +let init2 ?rng_state ?commitments ?(initial_balances = []) ?consensus_threshold + ?min_proposal_quorum ?level ?cost_per_byte ?liquidity_baking_subsidy + ?endorsing_reward_per_slot ?baking_reward_bonus_per_slot + ?baking_reward_fixed_portion ?origination_size ?blocks_per_cycle () = + init + ?rng_state + ?commitments + ~initial_balances + ?consensus_threshold + ?min_proposal_quorum + ?level + ?cost_per_byte + ?liquidity_baking_subsidy + ?endorsing_reward_per_slot + ?baking_reward_bonus_per_slot + ?baking_reward_fixed_portion + ?origination_size + ?blocks_per_cycle + 2 + >|=? function + | (_, []) | (_, [_]) -> assert false + | (b, contract_1 :: contract_2 :: _) -> (b, contract_1, contract_2) + let init_with_constants constants n = let accounts = Account.generate_accounts n in let contracts = diff --git a/src/proto_alpha/lib_protocol/test/helpers/context.mli b/src/proto_alpha/lib_protocol/test/helpers/context.mli index dc6d8a65c9..d005367c31 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/context.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/context.mli @@ -188,6 +188,44 @@ val init : int -> (Block.t * Alpha_context.Contract.t list) tzresult Lwt.t +(** [init1] : returns an initial block with 1 initialized bootstrap account + and the associated implicit contract *) +val init1 : + ?rng_state:Random.State.t -> + ?commitments:Commitment.t list -> + ?initial_balances:int64 list -> + ?consensus_threshold:int -> + ?min_proposal_quorum:int32 -> + ?level:int32 -> + ?cost_per_byte:Tez.t -> + ?liquidity_baking_subsidy:Tez.t -> + ?endorsing_reward_per_slot:Tez.t -> + ?baking_reward_bonus_per_slot:Tez.t -> + ?baking_reward_fixed_portion:Tez.t -> + ?origination_size:int -> + ?blocks_per_cycle:int32 -> + unit -> + (Block.t * Alpha_context.Contract.t) tzresult Lwt.t + +(** [init2] : returns an initial block with 2 initialized bootstrap accounts + and the associated implicit contracts *) +val init2 : + ?rng_state:Random.State.t -> + ?commitments:Commitment.t list -> + ?initial_balances:int64 list -> + ?consensus_threshold:int -> + ?min_proposal_quorum:int32 -> + ?level:int32 -> + ?cost_per_byte:Tez.t -> + ?liquidity_baking_subsidy:Tez.t -> + ?endorsing_reward_per_slot:Tez.t -> + ?baking_reward_bonus_per_slot:Tez.t -> + ?baking_reward_fixed_portion:Tez.t -> + ?origination_size:int -> + ?blocks_per_cycle:int32 -> + unit -> + (Block.t * Alpha_context.Contract.t * Alpha_context.Contract.t) tzresult Lwt.t + val init_with_constants : Constants.parametric -> int -> diff --git a/src/proto_alpha/lib_protocol/test/helpers/transfers.ml b/src/proto_alpha/lib_protocol/test/helpers/transfers.ml new file mode 100644 index 0000000000..112c3c0d94 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/helpers/transfers.ml @@ -0,0 +1,65 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +open Protocol +open Alpha_context +open Test_tez + +let transfer_and_check_balances ?(with_burn = false) ~loc b ?(fee = Tez.zero) + ?expect_failure src dst amount = + fee +? amount >>?= fun amount_fee -> + Context.Contract.balance (I b) src >>=? fun bal_src -> + Context.Contract.balance (I b) dst >>=? fun bal_dst -> + Op.transaction + ~gas_limit:(Alpha_context.Gas.Arith.integral_of_int_exn 3000) + (I b) + ~fee + src + dst + amount + >>=? fun op -> + Incremental.add_operation ?expect_failure b op >>=? fun b -> + Context.get_constants (I b) + >>=? fun {parametric = {origination_size; cost_per_byte; _}; _} -> + cost_per_byte *? Int64.of_int origination_size >>?= fun origination_burn -> + let amount_fee_maybe_burn = + if with_burn then + match Tez.(amount_fee +? origination_burn) with + | Ok r -> r + | Error _ -> assert false + else amount_fee + in + Assert.balance_was_debited ~loc (I b) src bal_src amount_fee_maybe_burn + >>=? fun () -> + Assert.balance_was_credited ~loc (I b) dst bal_dst amount >|=? fun () -> + (b, op) + +let n_transactions n b ?fee source dest amount = + List.fold_left_es + (fun b _ -> + transfer_and_check_balances ~loc:__LOC__ b ?fee source dest amount + >|=? fun (b, _) -> b) + b + (1 -- n) diff --git a/src/proto_alpha/lib_protocol/test/helpers/transfers.mli b/src/proto_alpha/lib_protocol/test/helpers/transfers.mli new file mode 100644 index 0000000000..3a3526fbaa --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/helpers/transfers.mli @@ -0,0 +1,68 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +open Protocol +open Alpha_context + +(** [transfer_and_check_balances b fee src dst amount] + this function takes a block, an optional parameter fee if fee does not + given it will be set to zero tez, a source contract, a destination contract + and the amount that one wants to transfer. + + 1- Transfer the amount of tez (w/wo fee) from a source contract to a + destination contract. + + 2- Check the equivalent of the balance of the source/destination + contract before and after transfer is validated. + + This function returns a pair: + - A block that added a valid operation + - a valid operation *) +val transfer_and_check_balances : + ?with_burn:bool -> + loc:string -> + Incremental.t -> + ?fee:Tez.t -> + ?expect_failure:(error trace -> unit tzresult Lwt.t) -> + Contract.t -> + Contract.t -> + Tez.t -> + (Incremental.t * packed_operation) tzresult Lwt.t + +(** [n_transactions n b fee source dest amount] + this function takes a number of "n" that one wish to transfer, + a block, an optional parameter fee, a source contract, + a destination contract and an amount one wants to transfer. + + This function will do a transaction from a source contract to + a destination contract with the amount "n" times. *) +val n_transactions : + int -> + Incremental.t -> + ?fee:Tez.t -> + Contract.t -> + Contract.t -> + Tez.t -> + Incremental.t tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/test/test_global_constants_storage.ml b/src/proto_alpha/lib_protocol/test/test_global_constants_storage.ml index e9c1f74cef..dd3db1bb0d 100644 --- a/src/proto_alpha/lib_protocol/test/test_global_constants_storage.ml +++ b/src/proto_alpha/lib_protocol/test/test_global_constants_storage.ml @@ -24,7 +24,7 @@ (*****************************************************************************) open Protocol open Alpha_context -open Test_transfer +open Transfers (** Testing ------- @@ -61,7 +61,7 @@ let expr_to_hash expr = that values written to the global table of constants persist across blocks. *) let get_happy_path () = - register_two_contracts () >>=? fun (b, alice, bob) -> + Context.init2 () >>=? fun (b, alice, bob) -> Incremental.begin_construction b >>=? fun b -> let expr_str = "Pair 3 7" in let expr = Expr.from_string expr_str in @@ -91,7 +91,7 @@ let get_happy_path () = (* Blocks that include a registration of a bad expression should fail. *) let test_registration_of_bad_expr_fails () = - register_two_contracts () >>=? fun (b, alice, _) -> + Context.init1 () >>=? fun (b, alice) -> Incremental.begin_construction b >>=? fun b -> (* To produce the failure, we attempt to register an expression with a malformed hash. *) @@ -106,7 +106,7 @@ let test_registration_of_bad_expr_fails () = (* You cannot register the same expression twice. *) let test_no_double_register () = - register_two_contracts () >>=? fun (b, alice, _) -> + Context.init1 () >>=? fun (b, alice) -> Incremental.begin_construction b >>=? fun b -> let expr = Expr.from_string "Pair 1 2" in Op.register_global_constant diff --git a/src/proto_alpha/lib_protocol/test/test_transfer.ml b/src/proto_alpha/lib_protocol/test/test_transfer.ml index 8a6f0f2f96..3ef3adeea1 100644 --- a/src/proto_alpha/lib_protocol/test/test_transfer.ml +++ b/src/proto_alpha/lib_protocol/test/test_transfer.ml @@ -33,55 +33,12 @@ open Protocol open Alpha_context open Test_tez +open Transfers (*********************************************************************) (* Utility functions *) (*********************************************************************) -(** - [transfer_and_check_balances b fee src dst amount] - this function takes a block, an optional parameter fee if fee does not - given it will be set to zero tez, a source contract, a destination contract - and the amount that one wants to transfer. - - 1- Transfer the amount of tez (w/wo fee) from a source contract to a - destination contract. - - 2- Check the equivalent of the balance of the source/destination - contract before and after transfer is validated. - - This function returns a pair: - - A block that added a valid operation - - a valid operation *) -let transfer_and_check_balances ?(with_burn = false) ~loc b ?(fee = Tez.zero) - ?expect_failure src dst amount = - fee +? amount >>?= fun amount_fee -> - Context.Contract.balance (I b) src >>=? fun bal_src -> - Context.Contract.balance (I b) dst >>=? fun bal_dst -> - Op.transaction - ~gas_limit:(Alpha_context.Gas.Arith.integral_of_int_exn 3000) - (I b) - ~fee - src - dst - amount - >>=? fun op -> - Incremental.add_operation ?expect_failure b op >>=? fun b -> - Context.get_constants (I b) - >>=? fun {parametric = {origination_size; cost_per_byte; _}; _} -> - cost_per_byte *? Int64.of_int origination_size >>?= fun origination_burn -> - let amount_fee_maybe_burn = - if with_burn then - match Tez.(amount_fee +? origination_burn) with - | Ok r -> r - | Error _ -> assert false - else amount_fee - in - Assert.balance_was_debited ~loc (I b) src bal_src amount_fee_maybe_burn - >>=? fun () -> - Assert.balance_was_credited ~loc (I b) dst bal_dst amount >|=? fun () -> - (b, op) - (** [transfer_to_itself_and_check_balances b fee contract amount] this function takes a block, an optional parameter fee, @@ -103,33 +60,12 @@ let transfer_to_itself_and_check_balances ~loc b ?(fee = Tez.zero) contract Incremental.add_operation b op >>=? fun b -> Assert.balance_was_debited ~loc (I b) contract bal fee >|=? fun () -> (b, op) -(** - [n_transactions n b fee source dest amount] - this function takes a number of "n" that one wish to transfer, - a block, an optional parameter fee, a source contract, - a destination contract and an amount one wants to transfer. - - This function will do a transaction from a source contract to - a destination contract with the amount "n" times. *) -let n_transactions n b ?fee source dest amount = - List.fold_left_es - (fun b _ -> - transfer_and_check_balances ~loc:__LOC__ b ?fee source dest amount - >|=? fun (b, _) -> b) - b - (1 -- n) - let ten_tez = of_int 10 (*********************************************************************) (* Tests *) (*********************************************************************) -let register_two_contracts ?consensus_threshold () = - Context.init ?consensus_threshold 2 >|=? function - | (_, []) | (_, [_]) -> assert false - | (b, contract_1 :: contract_2 :: _) -> (b, contract_1, contract_2) - (** Compute a fraction of 2/[n] of the balance of [contract] *) let two_over_n_of_balance incr contract n = Context.Contract.balance (I incr) contract >>=? fun balance -> @@ -141,7 +77,7 @@ let two_over_n_of_balance incr contract n = (********************) let single_transfer ?fee ?expect_failure amount = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> Incremental.begin_construction b >>=? fun b -> transfer_and_check_balances ~loc:__LOC__ @@ -203,7 +139,7 @@ let test_transfer_to_originate_with_fee () = (** Transfer from balance. *) let test_transfer_amount_of_contract_balance () = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> Context.Contract.pkh contract_1 >>=? fun pkh1 -> (* given that contract_1 no longer has a sufficient balance to bake, make sure it cannot be chosen as baker *) @@ -233,7 +169,7 @@ let test_transfers_to_self () = (** Forgot to add the valid transaction into the block. *) let test_missing_transaction () = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> (* given that contract_1 no longer has a sufficient balance to bake, make sure it cannot be chosen as baker *) Context.Contract.pkh contract_1 >>=? fun pkh1 -> @@ -382,7 +318,7 @@ let test_transfer_from_implicit_to_originated_contract () = (********************) let multiple_transfer n ?fee amount = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> Incremental.begin_construction b >>=? fun b -> n_transactions n b ?fee contract_1 contract_2 amount >>=? fun b -> Incremental.finalize_block b >>=? fun _ -> return_unit @@ -429,7 +365,7 @@ let test_block_with_multiple_transfers_with_without_fee () = (** Build a chain that has 10 blocks. *) let test_build_a_chain () = - register_two_contracts ~consensus_threshold:0 () + Context.init2 ~consensus_threshold:0 () >>=? fun (b, contract_1, contract_2) -> let ten = of_int 10 in List.fold_left_es @@ -462,7 +398,7 @@ let test_empty_implicit () = (** Balance is too low to transfer. *) let test_balance_too_low fee () = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> Incremental.begin_construction b >>=? fun i -> Context.Contract.balance (I i) contract_1 >>=? fun balance1 -> Context.Contract.balance (I i) contract_2 >>=? fun balance2 -> @@ -535,7 +471,7 @@ let test_balance_too_low_two_transfers fee () = (** The counter is already used for the previous operation. *) let invalid_counter () = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> Incremental.begin_construction b >>=? fun b -> Op.transaction (I b) contract_1 contract_2 Tez.one >>=? fun op1 -> Op.transaction (I b) contract_1 contract_2 Tez.one >>=? fun op2 -> @@ -548,7 +484,7 @@ let invalid_counter () = (** Same as before but through a different way to perform this error. *) let test_add_the_same_operation_twice () = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> Incremental.begin_construction b >>=? fun b -> transfer_and_check_balances ~loc:__LOC__ b contract_1 contract_2 ten_tez >>=? fun (b, op_transfer) -> @@ -560,7 +496,7 @@ let test_add_the_same_operation_twice () = (** The counter is in the future *) let invalid_counter_in_the_future () = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> Incremental.begin_construction b >>=? fun b -> Context.Contract.counter (I b) contract_1 >>=? fun cpt -> let counter = Z.add cpt (Z.of_int 10) in @@ -573,7 +509,7 @@ let invalid_counter_in_the_future () = (** Check ownership. *) let test_ownership_sender () = - register_two_contracts () >>=? fun (b, contract_1, contract_2) -> + Context.init2 () >>=? fun (b, contract_1, contract_2) -> Incremental.begin_construction b >>=? fun b -> (* get the manager of the contract_1 as a sender *) Context.Contract.manager (I b) contract_1 >>=? fun manager -> From 3b890d6d1cb7b4abbdb957359d030da92fe770ef Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 10 Dec 2021 17:44:45 +0100 Subject: [PATCH 0038/1220] proto_alpha/lib_protocol/test: move out property-based tests --- src/proto_alpha/lib_protocol/test/dune | 40 +------------------ .../lib_protocol/test/pbt/.ocamlformat | 17 ++++++++ src/proto_alpha/lib_protocol/test/pbt/dune | 26 ++++++++++++ .../test/{ => pbt}/liquidity_baking_pbt.ml | 3 +- .../test/{ => pbt}/saturation_fuzzing.ml | 3 +- .../test/{ => pbt}/test_carbonated_map.ml | 3 +- .../test/{ => pbt}/test_gas_properties.ml | 3 +- .../test/{ => pbt}/test_sampler.ml | 5 ++- .../test/{ => pbt}/test_script_comparison.ml | 3 +- .../test/{ => pbt}/test_tez_repr.ml | 3 +- 10 files changed, 59 insertions(+), 47 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/test/pbt/.ocamlformat create mode 100644 src/proto_alpha/lib_protocol/test/pbt/dune rename src/proto_alpha/lib_protocol/test/{ => pbt}/liquidity_baking_pbt.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => pbt}/saturation_fuzzing.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => pbt}/test_carbonated_map.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => pbt}/test_gas_properties.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => pbt}/test_sampler.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => pbt}/test_script_comparison.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => pbt}/test_tez_repr.ml (98%) diff --git a/src/proto_alpha/lib_protocol/test/dune b/src/proto_alpha/lib_protocol/test/dune index 2d68193413..acdcfe6db8 100644 --- a/src/proto_alpha/lib_protocol/test/dune +++ b/src/proto_alpha/lib_protocol/test/dune @@ -1,12 +1,5 @@ (tests - (names main - saturation_fuzzing - test_gas_properties - test_tez_repr - liquidity_baking_pbt - test_script_comparison - test_sampler - test_carbonated_map) + (names main) (package tezos-protocol-alpha-tests) (deps (glob_files contracts/*)) (libraries tezos-base @@ -54,34 +47,3 @@ (deps (glob_files contracts/*)) (package tezos-protocol-alpha-tests) (action (run %{exe:main.exe} -q))) - -(rule - (alias runtest_saturation_fuzzing) - (package tezos-protocol-alpha-tests) - (action (run %{exe:saturation_fuzzing.exe}))) - -(rule - (alias runtest_sampler) - (package tezos-protocol-alpha-tests) - (action (run %{exe:test_sampler.exe}))) - -(rule - (alias runtest_test_script_comparison) - (package tezos-protocol-alpha-tests) - (action (run %{exe:test_script_comparison.exe}))) - -(rule - (alias runtest_test_tez_repr) - (package tezos-protocol-alpha-tests) - (action (run %{exe:test_tez_repr.exe}))) - -(rule - (alias runtest_liquidity_baking_pbt) - (package tezos-protocol-alpha-tests) - (action (run %{exe:liquidity_baking_pbt.exe}))) - -(rule - (alias runtest_carbonated_map) - (package tezos-protocol-alpha-tests) - (action - (run %{exe:test_carbonated_map.exe}))) diff --git a/src/proto_alpha/lib_protocol/test/pbt/.ocamlformat b/src/proto_alpha/lib_protocol/test/pbt/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/pbt/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/proto_alpha/lib_protocol/test/pbt/dune b/src/proto_alpha/lib_protocol/test/pbt/dune new file mode 100644 index 0000000000..159a94a6ff --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/pbt/dune @@ -0,0 +1,26 @@ +(tests + (package tezos-protocol-alpha-tests) + (names liquidity_baking_pbt + saturation_fuzzing + test_gas_properties + test_sampler + test_script_comparison + test_tez_repr + test_carbonated_map) + (libraries tezos-base + tezos-micheline + tezos-client-alpha + tezos-test-helpers + tezos-alpha-test-helpers + alcotest + qcheck-alcotest + tezos-benchmark + tezos-benchmark-alpha) + (flags (:standard + -open Tezos_base__TzPervasives + -open Tezos_micheline + -open Tezos_client_alpha + -open Tezos_protocol_alpha + -open Tezos_alpha_test_helpers + -open Tezos_benchmark_alpha + -open Tezos_benchmark_type_inference_alpha))) diff --git a/src/proto_alpha/lib_protocol/test/liquidity_baking_pbt.ml b/src/proto_alpha/lib_protocol/test/pbt/liquidity_baking_pbt.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/liquidity_baking_pbt.ml rename to src/proto_alpha/lib_protocol/test/pbt/liquidity_baking_pbt.ml index 2778520e75..690f87e90c 100644 --- a/src/proto_alpha/lib_protocol/test/liquidity_baking_pbt.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/liquidity_baking_pbt.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: pbt for liquidity baking - Invocation: [QCHECK_SEED=] dune exec src/proto_alpha/lib_protocol/test/liquidity_baking_pbt.exe + Invocation: [QCHECK_SEED=] dune exec \ + src/proto_alpha/lib_protocol/test/pbt/liquidity_baking_pbt.exe Subject: Test liquidity baking contracts using randomly generated inputs. *) diff --git a/src/proto_alpha/lib_protocol/test/saturation_fuzzing.ml b/src/proto_alpha/lib_protocol/test/pbt/saturation_fuzzing.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/saturation_fuzzing.ml rename to src/proto_alpha/lib_protocol/test/pbt/saturation_fuzzing.ml index bc3a97638f..ba3da01799 100644 --- a/src/proto_alpha/lib_protocol/test/saturation_fuzzing.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/saturation_fuzzing.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol Library - Invocation: dune exec src/proto_alpha/lib_protocol/test/saturation_fuzzing.exe + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/pbt/saturation_fuzzing.exe Subject: Operations in Saturation_repr *) diff --git a/src/proto_alpha/lib_protocol/test/test_carbonated_map.ml b/src/proto_alpha/lib_protocol/test/pbt/test_carbonated_map.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_carbonated_map.ml rename to src/proto_alpha/lib_protocol/test/pbt/test_carbonated_map.ml index 0d41fb536f..4db75cd285 100644 --- a/src/proto_alpha/lib_protocol/test/test_carbonated_map.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_carbonated_map.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol Library - Invocation: dune build @src/proto_alpha/lib_protocol/runtest_carbonated_map + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/pbt/test_carbonated_map.exe Subject: Operations in Carbonated_map *) diff --git a/src/proto_alpha/lib_protocol/test/test_gas_properties.ml b/src/proto_alpha/lib_protocol/test/pbt/test_gas_properties.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_gas_properties.ml rename to src/proto_alpha/lib_protocol/test/pbt/test_gas_properties.ml index 9e0c1a32c0..dd41bdd964 100644 --- a/src/proto_alpha/lib_protocol/test/test_gas_properties.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_gas_properties.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (gas properties) - Invocation: dune exec src/proto_alpha/lib_protocol/test/test_gas_properties.exe + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/pbt/test_gas_properties.exe Subject: Arithmetic properties around gas. *) diff --git a/src/proto_alpha/lib_protocol/test/test_sampler.ml b/src/proto_alpha/lib_protocol/test/pbt/test_sampler.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_sampler.ml rename to src/proto_alpha/lib_protocol/test/pbt/test_sampler.ml index 630794d84a..1be36c6daf 100644 --- a/src/proto_alpha/lib_protocol/test/test_sampler.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_sampler.ml @@ -26,8 +26,9 @@ (** Testing ------- Component: Protocol Library - Invocation: dune exec src/proto_alpha/lib_protocol/test/test_sampler.exe - Subject: Sampler + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/pbt/test_sampler.exe + Subject: Operations in Saturation_repr *) open Lib_test.Qcheck_helpers diff --git a/src/proto_alpha/lib_protocol/test/test_script_comparison.ml b/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_script_comparison.ml rename to src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml index 3c49898381..640f7266f3 100644 --- a/src/proto_alpha/lib_protocol/test/test_script_comparison.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Script_comparison - Invocation: dune exec src/proto_alpha/lib_protocol/test/test_script_comparison.exe + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.exe Subject: PBT of the Script_comparable.compare_comparable function. *) diff --git a/src/proto_alpha/lib_protocol/test/test_tez_repr.ml b/src/proto_alpha/lib_protocol/test/pbt/test_tez_repr.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_tez_repr.ml rename to src/proto_alpha/lib_protocol/test/pbt/test_tez_repr.ml index 12007f6647..e94eb84eca 100644 --- a/src/proto_alpha/lib_protocol/test/test_tez_repr.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_tez_repr.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol Library - Invocation: dune exec src/proto_alpha/lib_protocol/test/test_tez_repr.exe + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/pbt/test_tez_repr.exe Subject: Operations in Tez_repr *) From ff88f2744e746740d784c44101e6866c31123398 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 10 Dec 2021 17:56:27 +0100 Subject: [PATCH 0039/1220] proto_alpha/lib_protocol/test: move out unit tests --- src/proto_alpha/lib_protocol/test/main.ml | 9 --------- src/proto_alpha/lib_protocol/test/unit/main.ml | 9 +++++++++ .../lib_protocol/test/{ => unit}/test_fitness.ml | 3 ++- .../lib_protocol/test/{ => unit}/test_fixed_point.ml | 3 ++- .../lib_protocol/test/{ => unit}/test_gas_monad.ml | 4 ++-- .../lib_protocol/test/{ => unit}/test_level_module.ml | 3 ++- src/proto_alpha/lib_protocol/test/{ => unit}/test_qty.ml | 3 ++- .../lib_protocol/test/{ => unit}/test_receipt.ml | 3 ++- .../lib_protocol/test/{ => unit}/test_round_repr.ml | 3 ++- .../lib_protocol/test/{ => unit}/test_saturation.ml | 4 ++-- .../lib_protocol/test/{ => unit}/test_time_repr.ml | 3 ++- 11 files changed, 27 insertions(+), 20 deletions(-) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_fitness.ml (97%) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_fixed_point.ml (97%) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_gas_monad.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_level_module.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_qty.ml (97%) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_receipt.ml (97%) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_round_repr.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_saturation.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => unit}/test_time_repr.ml (90%) diff --git a/src/proto_alpha/lib_protocol/test/main.ml b/src/proto_alpha/lib_protocol/test/main.ml index 947fd461a1..dc06c2beb0 100644 --- a/src/proto_alpha/lib_protocol/test/main.ml +++ b/src/proto_alpha/lib_protocol/test/main.ml @@ -48,13 +48,10 @@ let () = ("delegation", Test_delegation.tests); ("deactivation", Test_deactivation.tests); ("combined", Test_combined_operations.tests); - ("qty", Test_qty.tests); ("voting", Test_voting.tests); ("interpretation", Test_interpretation.tests); ("typechecking", Test_typechecking.tests); - ("fixed point computation", Test_fixed_point.tests); ("gas levels", Test_gas_levels.tests); - ("saturation arithmetic", Test_saturation.tests); ("gas cost functions", Test_gas_costs.tests); ("lazy storage diff", Test_lazy_storage_diff.tests); ("global table of constants", Test_global_constants_storage.tests); @@ -62,9 +59,7 @@ let () = ("helpers rpcs", Test_helpers_rpcs.tests); ("failing_noop operation", Test_failing_noop.tests); ("storage description", Test_storage.tests); - ("time", Test_time_repr.tests); ("constants", Test_constants.tests); - ("level module", Test_level_module.tests); ("liquidity baking", Test_liquidity_baking.tests); ("temp big maps", Test_temp_big_maps.tests); ("timelock", Test_timelock.tests); @@ -73,14 +68,10 @@ let () = ("ticket scanner", Test_ticket_scanner.tests); ("ticket balance key", Test_ticket_balance_key.tests); ("ticket lazy storage diff", Test_ticket_lazy_storage_diff.tests); - ("fitness", Test_fitness.tests); - ("round", Test_round_repr.tests); ("participation monitoring", Test_participation.tests); ("frozen deposits", Test_frozen_deposits.tests); ("token movements", Test_token.tests); - ("receipt encodings", Test_receipt.tests); ("tx rollup", Test_tx_rollup.tests); - ("gas monad", Test_gas_monad.tests); ("sc rollup", Test_sc_rollup.tests); ("script cache", Test_script_cache.tests); ] diff --git a/src/proto_alpha/lib_protocol/test/unit/main.ml b/src/proto_alpha/lib_protocol/test/unit/main.ml index ffc2d8de43..98d24d3542 100644 --- a/src/proto_alpha/lib_protocol/test/unit/main.ml +++ b/src/proto_alpha/lib_protocol/test/unit/main.ml @@ -56,5 +56,14 @@ let () = Unit_test.spec "Global_constants_storage.ml" Test_global_constants_storage.tests; + Unit_test.spec "fitness" Test_fitness.tests; + Unit_test.spec "fixed point computation" Test_fixed_point.tests; + Unit_test.spec "level module" Test_level_module.tests; + Unit_test.spec "qty" Test_qty.tests; + Unit_test.spec "round" Test_round_repr.tests; + Unit_test.spec "time" Test_time_repr.tests; + Unit_test.spec "receipt encodings" Test_receipt.tests; + Unit_test.spec "saturation arithmetic" Test_saturation.tests; + Unit_test.spec "gas monad" Test_gas_monad.tests; ] |> Lwt_main.run diff --git a/src/proto_alpha/lib_protocol/test/test_fitness.ml b/src/proto_alpha/lib_protocol/test/unit/test_fitness.ml similarity index 97% rename from src/proto_alpha/lib_protocol/test/test_fitness.ml rename to src/proto_alpha/lib_protocol/test/unit/test_fitness.ml index 12affd131b..3afa3421d6 100644 --- a/src/proto_alpha/lib_protocol/test/test_fitness.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_fitness.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (committee selection) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^fitness$" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] fitness$" Subject: test the fitness module *) diff --git a/src/proto_alpha/lib_protocol/test/test_fixed_point.ml b/src/proto_alpha/lib_protocol/test/unit/test_fixed_point.ml similarity index 97% rename from src/proto_alpha/lib_protocol/test/test_fixed_point.ml rename to src/proto_alpha/lib_protocol/test/unit/test_fixed_point.ml index c4f44f70ac..bd6c11d88f 100644 --- a/src/proto_alpha/lib_protocol/test/test_fixed_point.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_fixed_point.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (fixed-point decimals) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^fixed point computation$" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] fixed point computation$" Subject: On fixed-point decimal numbers. *) diff --git a/src/proto_alpha/lib_protocol/test/test_gas_monad.ml b/src/proto_alpha/lib_protocol/test/unit/test_gas_monad.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_gas_monad.ml rename to src/proto_alpha/lib_protocol/test/unit/test_gas_monad.ml index dd1860e03f..ef8c246cc3 100644 --- a/src/proto_alpha/lib_protocol/test/test_gas_monad.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_gas_monad.ml @@ -26,8 +26,8 @@ (** Testing ------- Component: Protocol Gas_monad - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe - -- test "^gas monad$" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] gas monad$" Subject: Tests for the gas monad module *) diff --git a/src/proto_alpha/lib_protocol/test/test_level_module.ml b/src/proto_alpha/lib_protocol/test/unit/test_level_module.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_level_module.ml rename to src/proto_alpha/lib_protocol/test/unit/test_level_module.ml index 64546a24a2..152dd00c7f 100644 --- a/src/proto_alpha/lib_protocol/test/test_level_module.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_level_module.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (baking) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^level module$" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] level module$" Subject: some functions in the Level module *) diff --git a/src/proto_alpha/lib_protocol/test/test_qty.ml b/src/proto_alpha/lib_protocol/test/unit/test_qty.ml similarity index 97% rename from src/proto_alpha/lib_protocol/test/test_qty.ml rename to src/proto_alpha/lib_protocol/test/unit/test_qty.ml index 4494f0778b..847686adce 100644 --- a/src/proto_alpha/lib_protocol/test/test_qty.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_qty.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (quantities) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^qty$" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] qty$" Subject: On tez quantities. *) diff --git a/src/proto_alpha/lib_protocol/test/test_receipt.ml b/src/proto_alpha/lib_protocol/test/unit/test_receipt.ml similarity index 97% rename from src/proto_alpha/lib_protocol/test/test_receipt.ml rename to src/proto_alpha/lib_protocol/test/unit/test_receipt.ml index eddfe8337f..d58981839f 100644 --- a/src/proto_alpha/lib_protocol/test/test_receipt.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_receipt.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (token) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^receipt" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] receipt" Subject: Test receipt endocings. *) diff --git a/src/proto_alpha/lib_protocol/test/test_round_repr.ml b/src/proto_alpha/lib_protocol/test/unit/test_round_repr.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_round_repr.ml rename to src/proto_alpha/lib_protocol/test/unit/test_round_repr.ml index 62a4e51de6..986cfb678b 100644 --- a/src/proto_alpha/lib_protocol/test/test_round_repr.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_round_repr.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: protocol - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^round$" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] round$" Subject: test the Round_repr module *) diff --git a/src/proto_alpha/lib_protocol/test/test_saturation.ml b/src/proto_alpha/lib_protocol/test/unit/test_saturation.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_saturation.ml rename to src/proto_alpha/lib_protocol/test/unit/test_saturation.ml index 099ead7ed7..afce1f84dd 100644 --- a/src/proto_alpha/lib_protocol/test/test_saturation.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_saturation.ml @@ -26,8 +26,8 @@ (** Testing ------- Component: Protocol (saturated arithmetic) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe \ - -- test "^saturation arithmetic$" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] saturation arithmetic$" Subject: The gas is represented using saturated arithmetic. These unit tests check that saturated arithmetic operations are correctly implemented. diff --git a/src/proto_alpha/lib_protocol/test/test_time_repr.ml b/src/proto_alpha/lib_protocol/test/unit/test_time_repr.ml similarity index 90% rename from src/proto_alpha/lib_protocol/test/test_time_repr.ml rename to src/proto_alpha/lib_protocol/test/unit/test_time_repr.ml index b2f67327de..3eb2152572 100644 --- a/src/proto_alpha/lib_protocol/test/test_time_repr.ml +++ b/src/proto_alpha/lib_protocol/test/unit/test_time_repr.ml @@ -1,7 +1,8 @@ (** Testing ------- Component: Protocol (time repr) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^time$" + Invocation: dune exec src/proto_alpha/lib_protocol/test/unit/main.exe \ + -- test "^\[Unit\] time$" Subject: Error handling of time operations *) From 4802682d847d3e308f571ada7db404c384632cc3 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 10 Dec 2021 18:05:04 +0100 Subject: [PATCH 0040/1220] proto_alpha/lib_protocol/test: move out integration/operations --- .../test/integration/operations/.ocamlformat | 17 +++++++ .../test/integration/operations/dune | 12 +++++ .../test/integration/operations/main.ml | 47 +++++++++++++++++++ .../operations}/test_activation.ml | 4 +- .../operations}/test_combined_operations.ml | 4 +- .../operations}/test_failing_noop.ml | 3 +- .../operations}/test_origination.ml | 4 +- .../operations}/test_reveal.ml | 4 +- .../operations}/test_sc_rollup.ml | 4 +- .../operations}/test_transfer.ml | 4 +- .../operations}/test_tx_rollup.ml | 4 +- .../operations}/test_voting.ml | 4 +- src/proto_alpha/lib_protocol/test/main.ml | 9 ---- 13 files changed, 102 insertions(+), 18 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/test/integration/operations/.ocamlformat create mode 100644 src/proto_alpha/lib_protocol/test/integration/operations/dune create mode 100644 src/proto_alpha/lib_protocol/test/integration/operations/main.ml rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_activation.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_combined_operations.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_failing_noop.ml (96%) rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_origination.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_reveal.ml (97%) rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_sc_rollup.ml (96%) rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_transfer.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_tx_rollup.ml (97%) rename src/proto_alpha/lib_protocol/test/{ => integration/operations}/test_voting.ml (99%) diff --git a/src/proto_alpha/lib_protocol/test/integration/operations/.ocamlformat b/src/proto_alpha/lib_protocol/test/integration/operations/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/operations/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/proto_alpha/lib_protocol/test/integration/operations/dune b/src/proto_alpha/lib_protocol/test/integration/operations/dune new file mode 100644 index 0000000000..60fcd15cc7 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/operations/dune @@ -0,0 +1,12 @@ +(test + (name main) + (package tezos-protocol-alpha-tests) + (libraries alcotest-lwt + tezos-base + tezos-protocol-alpha + tezos-base-test-helpers + tezos-alpha-test-helpers) + (flags (:standard -open Tezos_base__TzPervasives + -open Tezos_protocol_alpha + -open Tezos_alpha_test_helpers + -open Tezos_base_test_helpers))) diff --git a/src/proto_alpha/lib_protocol/test/integration/operations/main.ml b/src/proto_alpha/lib_protocol/test/integration/operations/main.ml new file mode 100644 index 0000000000..f9699cfd18 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/operations/main.ml @@ -0,0 +1,47 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Testing + ------- + Component: Protocol + Invocation: dune runtest src/proto_alpha/lib_protocol/test/integration/operations + Subject: Entrypoint +*) + +let () = + Alcotest_lwt.run + "protocol_alpha > integration > operations" + [ + ("voting", Test_voting.tests); + ("origination", Test_origination.tests); + ("revelation", Test_reveal.tests); + ("transfer", Test_transfer.tests); + ("activation", Test_activation.tests); + ("combined", Test_combined_operations.tests); + ("failing_noop operation", Test_failing_noop.tests); + ("tx rollup", Test_tx_rollup.tests); + ("sc rollup", Test_sc_rollup.tests); + ] + |> Lwt_main.run diff --git a/src/proto_alpha/lib_protocol/test/test_activation.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_activation.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_activation.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_activation.ml index 8dbcfde004..de815e4dd8 100644 --- a/src/proto_alpha/lib_protocol/test/test_activation.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_activation.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (activation) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^activation$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ + -- test "^activation$" Subject: The activation operation creates an implicit contract from a registered commitment present in the context. It is parametrized by a public key hash (pkh) and a secret. diff --git a/src/proto_alpha/lib_protocol/test/test_combined_operations.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_combined_operations.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_combined_operations.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_combined_operations.ml index 096d954dc6..bb2b99380c 100644 --- a/src/proto_alpha/lib_protocol/test/test_combined_operations.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_combined_operations.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (combined operations) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^combined$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ + -- test "^combined$" Subject: Multiple operations can be grouped in one ensuring their deterministic application. diff --git a/src/proto_alpha/lib_protocol/test/test_failing_noop.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_failing_noop.ml similarity index 96% rename from src/proto_alpha/lib_protocol/test/test_failing_noop.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_failing_noop.ml index a791db14ab..586008651d 100644 --- a/src/proto_alpha/lib_protocol/test/test_failing_noop.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_failing_noop.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe \ + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ -- test "^failing_noop operation$" Subject: The Failing_noop operation was added bearing in mind the possibility for the end user to sign arbitrary bytes, diff --git a/src/proto_alpha/lib_protocol/test/test_origination.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_origination.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_origination.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_origination.ml index ecc50a23bb..f626e28597 100644 --- a/src/proto_alpha/lib_protocol/test/test_origination.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_origination.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (origination) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^origination$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ + -- test "^origination$" Subject: On originating contracts. *) diff --git a/src/proto_alpha/lib_protocol/test/test_reveal.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_reveal.ml similarity index 97% rename from src/proto_alpha/lib_protocol/test/test_reveal.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_reveal.ml index d85e040313..e7c8c71a76 100644 --- a/src/proto_alpha/lib_protocol/test/test_reveal.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_reveal.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (revelation) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^revelation$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ + -- test "^revelation$" Subject: On the reveal operation. *) diff --git a/src/proto_alpha/lib_protocol/test/test_sc_rollup.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_sc_rollup.ml similarity index 96% rename from src/proto_alpha/lib_protocol/test/test_sc_rollup.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_sc_rollup.ml index bbe4030aa7..9183c97091 100644 --- a/src/proto_alpha/lib_protocol/test/test_sc_rollup.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_sc_rollup.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Rollup layer 1 logic - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^sc rollup$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ + -- test "^sc rollup$" Subject: Test smart contract rollup *) diff --git a/src/proto_alpha/lib_protocol/test/test_transfer.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_transfer.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_transfer.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_transfer.ml index 3ef3adeea1..e01c3acaf5 100644 --- a/src/proto_alpha/lib_protocol/test/test_transfer.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_transfer.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (transfer) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^transfer$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ + -- test "^transfer$" Subject: Quantities transfer between contracts. *) diff --git a/src/proto_alpha/lib_protocol/test/test_tx_rollup.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml similarity index 97% rename from src/proto_alpha/lib_protocol/test/test_tx_rollup.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml index 14e4179ba6..3253992a03 100644 --- a/src/proto_alpha/lib_protocol/test/test_tx_rollup.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml @@ -27,7 +27,9 @@ (** Testing ------- Component: Rollup layer 1 logic - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^tx rollup$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ + -- test "^tx rollup$" Subject: Test rollup *) diff --git a/src/proto_alpha/lib_protocol/test/test_voting.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_voting.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_voting.ml rename to src/proto_alpha/lib_protocol/test/integration/operations/test_voting.ml index 10ae3ba37c..358c641d59 100644 --- a/src/proto_alpha/lib_protocol/test/test_voting.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_voting.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (voting) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^voting$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/operations/main.exe \ + -- test "^voting$" Subject: On the voting process. *) diff --git a/src/proto_alpha/lib_protocol/test/main.ml b/src/proto_alpha/lib_protocol/test/main.ml index dc06c2beb0..913c1fe53b 100644 --- a/src/proto_alpha/lib_protocol/test/main.ml +++ b/src/proto_alpha/lib_protocol/test/main.ml @@ -34,10 +34,6 @@ let () = Alcotest_lwt.run "protocol_alpha" [ - ("transfer", Test_transfer.tests); - ("origination", Test_origination.tests); - ("activation", Test_activation.tests); - ("revelation", Test_reveal.tests); ("endorsement", Test_endorsement.tests); ("preendorsement", Test_preendorsement.tests); ("double endorsement", Test_double_endorsement.tests); @@ -47,8 +43,6 @@ let () = ("baking", Test_baking.tests); ("delegation", Test_delegation.tests); ("deactivation", Test_deactivation.tests); - ("combined", Test_combined_operations.tests); - ("voting", Test_voting.tests); ("interpretation", Test_interpretation.tests); ("typechecking", Test_typechecking.tests); ("gas levels", Test_gas_levels.tests); @@ -57,7 +51,6 @@ let () = ("global table of constants", Test_global_constants_storage.tests); ("sapling", Test_sapling.tests); ("helpers rpcs", Test_helpers_rpcs.tests); - ("failing_noop operation", Test_failing_noop.tests); ("storage description", Test_storage.tests); ("constants", Test_constants.tests); ("liquidity baking", Test_liquidity_baking.tests); @@ -71,8 +64,6 @@ let () = ("participation monitoring", Test_participation.tests); ("frozen deposits", Test_frozen_deposits.tests); ("token movements", Test_token.tests); - ("tx rollup", Test_tx_rollup.tests); - ("sc rollup", Test_sc_rollup.tests); ("script cache", Test_script_cache.tests); ] |> Lwt_main.run From 30189675e3a3af2acecb39b5b7f82b295822ae27 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 10 Dec 2021 19:01:18 +0100 Subject: [PATCH 0041/1220] proto_alpha/lib_protocol/test: move out integration/michelson --- docs/011/sapling.rst | 2 +- docs/alpha/sapling.rst | 2 +- .../test/integration/michelson/.ocamlformat | 17 +++++++ .../contracts/big_interpreter_stack.tz | 0 .../forbidden_op_in_view_CREATE_CONTRACT.tz | 0 .../contracts/forbidden_op_in_view_SELF.tz | 0 .../forbidden_op_in_view_SET_DELEGATE.tz | 0 .../forbidden_op_in_view_TRANSFER_TOKENS.tz | 0 .../michelson}/contracts/int-store.tz | 0 .../michelson}/contracts/sapling_contract.tz | 0 .../contracts/sapling_contract_double.tz | 0 .../contracts/sapling_contract_drop.tz | 0 .../contracts/sapling_contract_send.tz | 0 .../sapling_contract_state_as_arg.tz | 0 .../contracts/sapling_push_sapling_state.tz | 0 .../contracts/sapling_use_existing_state.tz | 0 .../michelson}/contracts/temp_big_maps.tz | 0 .../michelson}/contracts/timelock.tz | 0 .../test/integration/michelson/dune | 23 +++++++++ .../test/integration/michelson/main.ml | 51 +++++++++++++++++++ .../test_global_constants_storage.ml | 16 +++--- .../michelson}/test_interpretation.ml | 4 +- .../michelson}/test_lazy_storage_diff.ml | 0 .../michelson}/test_sapling.ml | 2 +- .../michelson}/test_script_cache.ml | 2 +- .../michelson}/test_script_typed_ir_size.ml | 3 +- .../michelson}/test_temp_big_maps.ml | 3 +- .../michelson}/test_ticket_balance_key.ml | 3 +- .../test_ticket_lazy_storage_diff.ml | 5 +- .../michelson}/test_ticket_scanner.ml | 4 +- .../michelson}/test_ticket_storage.ml | 4 +- .../michelson}/test_timelock.ml | 2 +- .../michelson}/test_typechecking.ml | 2 +- src/proto_alpha/lib_protocol/test/main.ml | 13 ----- tests_python/tests_alpha/test_sapling.py | 8 ++- 35 files changed, 130 insertions(+), 36 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/test/integration/michelson/.ocamlformat rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/big_interpreter_stack.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/forbidden_op_in_view_CREATE_CONTRACT.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/forbidden_op_in_view_SELF.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/forbidden_op_in_view_SET_DELEGATE.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/forbidden_op_in_view_TRANSFER_TOKENS.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/int-store.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/sapling_contract.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/sapling_contract_double.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/sapling_contract_drop.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/sapling_contract_send.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/sapling_contract_state_as_arg.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/sapling_push_sapling_state.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/sapling_use_existing_state.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/temp_big_maps.tz (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/contracts/timelock.tz (100%) create mode 100644 src/proto_alpha/lib_protocol/test/integration/michelson/dune create mode 100644 src/proto_alpha/lib_protocol/test/integration/michelson/main.ml rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_global_constants_storage.ml (92%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_interpretation.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_lazy_storage_diff.ml (100%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_sapling.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_script_cache.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_script_typed_ir_size.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_temp_big_maps.ml (96%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_ticket_balance_key.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_ticket_lazy_storage_diff.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_ticket_scanner.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_ticket_storage.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_timelock.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => integration/michelson}/test_typechecking.ml (99%) diff --git a/docs/011/sapling.rst b/docs/011/sapling.rst index 795bf60642..124ee489dc 100644 --- a/docs/011/sapling.rst +++ b/docs/011/sapling.rst @@ -453,7 +453,7 @@ unshielding. # bake a block to include it. # { } represents an empty Sapling state. tezos-client originate contract shielded-tez transferring 0 from bootstrap1 \ - running src/proto_011_PtHangz2/lib_protocol/test/contracts/sapling_contract.tz \ + running src/proto_011_PtHangz2/lib_protocol/test/integration/michelson/contracts/sapling_contract.tz \ --init '{ }' --burn-cap 3 & tezos-client bake for bootstrap1 diff --git a/docs/alpha/sapling.rst b/docs/alpha/sapling.rst index 7c4bb0898e..cfe49cee30 100644 --- a/docs/alpha/sapling.rst +++ b/docs/alpha/sapling.rst @@ -453,7 +453,7 @@ unshielding. # bake a block to include it. # { } represents an empty Sapling state. tezos-client originate contract shielded-tez transferring 0 from bootstrap1 \ - running src/proto_alpha/lib_protocol/test/contracts/sapling_contract.tz \ + running src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract.tz \ --init '{ }' --burn-cap 3 & tezos-client bake for bootstrap1 diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/.ocamlformat b/src/proto_alpha/lib_protocol/test/integration/michelson/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/proto_alpha/lib_protocol/test/contracts/big_interpreter_stack.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/big_interpreter_stack.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/big_interpreter_stack.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/big_interpreter_stack.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/forbidden_op_in_view_CREATE_CONTRACT.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/forbidden_op_in_view_CREATE_CONTRACT.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/forbidden_op_in_view_CREATE_CONTRACT.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/forbidden_op_in_view_CREATE_CONTRACT.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/forbidden_op_in_view_SELF.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/forbidden_op_in_view_SELF.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/forbidden_op_in_view_SELF.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/forbidden_op_in_view_SELF.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/forbidden_op_in_view_SET_DELEGATE.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/forbidden_op_in_view_SET_DELEGATE.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/forbidden_op_in_view_SET_DELEGATE.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/forbidden_op_in_view_SET_DELEGATE.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/forbidden_op_in_view_TRANSFER_TOKENS.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/forbidden_op_in_view_TRANSFER_TOKENS.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/forbidden_op_in_view_TRANSFER_TOKENS.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/forbidden_op_in_view_TRANSFER_TOKENS.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/int-store.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/int-store.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/int-store.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/int-store.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/sapling_contract.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/sapling_contract.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/sapling_contract_double.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract_double.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/sapling_contract_double.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract_double.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/sapling_contract_drop.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract_drop.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/sapling_contract_drop.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract_drop.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/sapling_contract_send.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract_send.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/sapling_contract_send.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract_send.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/sapling_contract_state_as_arg.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract_state_as_arg.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/sapling_contract_state_as_arg.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_contract_state_as_arg.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/sapling_push_sapling_state.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_push_sapling_state.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/sapling_push_sapling_state.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_push_sapling_state.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/sapling_use_existing_state.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_use_existing_state.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/sapling_use_existing_state.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/sapling_use_existing_state.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/temp_big_maps.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/temp_big_maps.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/temp_big_maps.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/temp_big_maps.tz diff --git a/src/proto_alpha/lib_protocol/test/contracts/timelock.tz b/src/proto_alpha/lib_protocol/test/integration/michelson/contracts/timelock.tz similarity index 100% rename from src/proto_alpha/lib_protocol/test/contracts/timelock.tz rename to src/proto_alpha/lib_protocol/test/integration/michelson/contracts/timelock.tz diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/dune b/src/proto_alpha/lib_protocol/test/integration/michelson/dune new file mode 100644 index 0000000000..3c201fcb1b --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/dune @@ -0,0 +1,23 @@ +(test + (name main) + (package tezos-protocol-alpha-tests) + (deps (glob_files contracts/*)) + (libraries alcotest-lwt + tezos-base + tezos-protocol-alpha + tezos-base-test-helpers + tezos-alpha-test-helpers + + tezos-client-alpha + tezos-micheline + tezos-benchmark + tezos-benchmark-alpha) + (flags (:standard -open Tezos_base__TzPervasives + -open Tezos_protocol_alpha + -open Tezos_alpha_test_helpers + -open Tezos_base_test_helpers + + -open Tezos_client_alpha + -open Tezos_micheline + -open Tezos_benchmark_alpha + -open Tezos_benchmark_type_inference_alpha))) diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/main.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/main.ml new file mode 100644 index 0000000000..623c5f8e57 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/main.ml @@ -0,0 +1,51 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Testing + ------- + Component: Protocol + Invocation: dune runtest src/proto_alpha/lib_protocol/test/integration/michelson + Subject: Integration > Michelson +*) + +let () = + Alcotest_lwt.run + "protocol_alpha" + [ + ("global table of constants", Test_global_constants_storage.tests); + ("interpretation", Test_interpretation.tests); + ("lazy storage diff", Test_lazy_storage_diff.tests); + ("sapling", Test_sapling.tests); + ("script typed ir size", Test_script_typed_ir_size.tests); + ("temp big maps", Test_temp_big_maps.tests); + ("ticket balance key", Test_ticket_balance_key.tests); + ("ticket scanner", Test_ticket_scanner.tests); + ("ticket storage", Test_ticket_storage.tests); + ("ticket lazy storage diff", Test_ticket_lazy_storage_diff.tests); + ("timelock", Test_timelock.tests); + ("typechecking", Test_typechecking.tests); + ("script cache", Test_script_cache.tests); + ] + |> Lwt_main.run diff --git a/src/proto_alpha/lib_protocol/test/test_global_constants_storage.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_global_constants_storage.ml similarity index 92% rename from src/proto_alpha/lib_protocol/test/test_global_constants_storage.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_global_constants_storage.ml index dd3db1bb0d..dd34a69fa6 100644 --- a/src/proto_alpha/lib_protocol/test/test_global_constants_storage.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_global_constants_storage.ml @@ -29,7 +29,8 @@ open Transfers (** Testing ------- Component: Protocol (global table of constants) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe \ + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/michelson/main.exe \ -- test "^global table of constants$" Subject: This module tests that the global table of constants can be written to and read from across blocks. @@ -39,12 +40,10 @@ let get_next_context b = Incremental.begin_construction b >>=? fun b -> return (Incremental.alpha_ctxt b) -let assert_expr_equal loc = - Assert.equal - ~loc - ( = ) - "Michelson Expressions Not Equal" - Michelson_v1_printer.print_expr +let register_two_contracts ?consensus_threshold () = + Context.init ?consensus_threshold 2 >|=? function + | (_, []) | (_, [_]) -> assert false + | (b, contract_1 :: contract_2 :: _) -> (b, contract_1, contract_2) let assert_proto_error_id loc id result = let test err = @@ -77,7 +76,8 @@ let get_happy_path () = get_next_context b >>=? fun context -> Global_constants_storage.get context hash >|= Environment.wrap_tzresult >>=? fun (_, result_expr) -> - assert_expr_equal __LOC__ expr result_expr >|=? fun _ -> b + Test_global_constants.assert_expr_equal __LOC__ expr result_expr + >|=? fun _ -> b in assert_unchanged b >>=? fun b -> let do_many_transfers b = diff --git a/src/proto_alpha/lib_protocol/test/test_interpretation.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_interpretation.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_interpretation.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_interpretation.ml index 19807c3f9b..5a959042e1 100644 --- a/src/proto_alpha/lib_protocol/test/test_interpretation.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_interpretation.ml @@ -2,7 +2,9 @@ ------- Component: Protocol (interpretation) Dependencies: src/proto_alpha/lib_protocol/script_interpreter.ml - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^interpretation$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/michelson/main.exe \ + -- test "^interpretation$" Subject: Interpretation of Michelson scripts *) diff --git a/src/proto_alpha/lib_protocol/test/test_lazy_storage_diff.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_lazy_storage_diff.ml similarity index 100% rename from src/proto_alpha/lib_protocol/test/test_lazy_storage_diff.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_lazy_storage_diff.ml diff --git a/src/proto_alpha/lib_protocol/test/test_sapling.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_sapling.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_sapling.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_sapling.ml index e4c0a5955e..ac912cd0b9 100644 --- a/src/proto_alpha/lib_protocol/test/test_sapling.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_sapling.ml @@ -26,7 +26,7 @@ (** Testing ------- Component: Protocol (Sapling) - Invocation: cd src/proto_alpha/lib_protocol/test + Invocation: cd src/proto_alpha/lib_protocol/test/integration/michelson && \ dune exec ./main.exe -- test "^sapling$" Subject: On the privacy-preserving library Sapling *) diff --git a/src/proto_alpha/lib_protocol/test/test_script_cache.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_script_cache.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml index 4114da6b50..d8dc8be679 100644 --- a/src/proto_alpha/lib_protocol/test/test_script_cache.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml @@ -26,7 +26,7 @@ (** Testing ------- Component: Protocol (cache) - Invocation: cd src/proto_alpha/lib_protocol/test + Invocation: cd src/proto_alpha/lib_protocol/test/integration/michelson && \ dune exec ./main.exe -- test "^script cache$" Subject: These unit tests check basic behavior of script cache *) diff --git a/src/proto_alpha/lib_protocol/test/test_script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_typed_ir_size.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_script_typed_ir_size.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_script_typed_ir_size.ml index ab9a7e9932..634f69c766 100644 --- a/src/proto_alpha/lib_protocol/test/test_script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_typed_ir_size.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (script typed IR size) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe \ + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/michelson/main.exe \ -- test "^script typed ir size$" Subject: Script_typed_ir computes good approximation of values' sizes *) diff --git a/src/proto_alpha/lib_protocol/test/test_temp_big_maps.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_temp_big_maps.ml similarity index 96% rename from src/proto_alpha/lib_protocol/test/test_temp_big_maps.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_temp_big_maps.ml index 831e68be79..0df912fd07 100644 --- a/src/proto_alpha/lib_protocol/test/test_temp_big_maps.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_temp_big_maps.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (temporary big maps) - Invocation: cd src/proto_alpha/lib_protocol/test && dune exec ./main.exe -- test "^temp big maps$" + Invocation: cd src/proto_alpha/lib_protocol/test/integration/michelson \ + && dune exec ./main.exe -- test "^temp big maps$" Subject: On temporary big maps. *) diff --git a/src/proto_alpha/lib_protocol/test/test_ticket_balance_key.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_ticket_balance_key.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml index f12da8fe91..22f1b05f42 100644 --- a/src/proto_alpha/lib_protocol/test/test_ticket_balance_key.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (Ticket_balance_key) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe \ + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/michelson/main.exe \ -- test "^ticket balance key" Subject: Ticket balance key hashing *) diff --git a/src/proto_alpha/lib_protocol/test/test_ticket_lazy_storage_diff.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_lazy_storage_diff.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_ticket_lazy_storage_diff.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_lazy_storage_diff.ml index 59ffd5e71b..836fc71e4e 100644 --- a/src/proto_alpha/lib_protocol/test/test_ticket_lazy_storage_diff.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_lazy_storage_diff.ml @@ -26,8 +26,9 @@ (** Testing ------- Component: Protocol (Ticket_scanner) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe \ - -- test "^ticket lazy storage diff" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/michelson/main.exe \ + -- test "^ticket lazy storage diff" Subject: Ticket scanner tests *) diff --git a/src/proto_alpha/lib_protocol/test/test_ticket_scanner.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_scanner.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_ticket_scanner.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_scanner.ml index e4e9991c75..9b7e38a223 100644 --- a/src/proto_alpha/lib_protocol/test/test_ticket_scanner.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_scanner.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (Ticket_scanner) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^ticket scanner" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/michelson/main.exe \ + -- test "^ticket scanner" Subject: Ticket scanner tests *) diff --git a/src/proto_alpha/lib_protocol/test/test_ticket_storage.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_ticket_storage.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml index ab67b92e5d..557894b166 100644 --- a/src/proto_alpha/lib_protocol/test/test_ticket_storage.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (Alpha_context.Ticket_balance) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^ticket storage$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/michelson/main.exe \ + -- test "^ticket storage$" Subject: Ticket storage functions tested using the Ticket_balance module in Alpha_context. *) diff --git a/src/proto_alpha/lib_protocol/test/test_timelock.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_timelock.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_timelock.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_timelock.ml index f40a0bb0d5..3ef50a35a5 100644 --- a/src/proto_alpha/lib_protocol/test/test_timelock.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_timelock.ml @@ -26,7 +26,7 @@ (** Testing ------- Component: Protocol (Timelock) - Invocation: cd src/proto_alpha/lib_protocol/test + Invocation: cd src/proto_alpha/lib_protocol/test/integration/michelson && \ dune exec ./main.exe -- test "^timelock$" Subject: On timelock *) diff --git a/src/proto_alpha/lib_protocol/test/test_typechecking.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_typechecking.ml rename to src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml index 99bddbb74e..2a5e6d612a 100644 --- a/src/proto_alpha/lib_protocol/test/test_typechecking.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml @@ -1,7 +1,7 @@ (** Testing ------- Component: Protocol (type-checking) - Invocation: cd src/proto_alpha/lib_protocol/test + Invocation: cd src/proto_alpha/lib_protocol/test/integration/michelson && \ dune exec ./main.exe -- test "^typechecking$" Subject: Type-checking *) diff --git a/src/proto_alpha/lib_protocol/test/main.ml b/src/proto_alpha/lib_protocol/test/main.ml index 913c1fe53b..93a21c83e0 100644 --- a/src/proto_alpha/lib_protocol/test/main.ml +++ b/src/proto_alpha/lib_protocol/test/main.ml @@ -43,27 +43,14 @@ let () = ("baking", Test_baking.tests); ("delegation", Test_delegation.tests); ("deactivation", Test_deactivation.tests); - ("interpretation", Test_interpretation.tests); - ("typechecking", Test_typechecking.tests); ("gas levels", Test_gas_levels.tests); ("gas cost functions", Test_gas_costs.tests); - ("lazy storage diff", Test_lazy_storage_diff.tests); - ("global table of constants", Test_global_constants_storage.tests); - ("sapling", Test_sapling.tests); ("helpers rpcs", Test_helpers_rpcs.tests); ("storage description", Test_storage.tests); ("constants", Test_constants.tests); ("liquidity baking", Test_liquidity_baking.tests); - ("temp big maps", Test_temp_big_maps.tests); - ("timelock", Test_timelock.tests); - ("script typed ir size", Test_script_typed_ir_size.tests); - ("ticket storage", Test_ticket_storage.tests); - ("ticket scanner", Test_ticket_scanner.tests); - ("ticket balance key", Test_ticket_balance_key.tests); - ("ticket lazy storage diff", Test_ticket_lazy_storage_diff.tests); ("participation monitoring", Test_participation.tests); ("frozen deposits", Test_frozen_deposits.tests); ("token movements", Test_token.tests); - ("script cache", Test_script_cache.tests); ] |> Lwt_main.run diff --git a/tests_python/tests_alpha/test_sapling.py b/tests_python/tests_alpha/test_sapling.py index f8b6af4fb9..48e346948a 100644 --- a/tests_python/tests_alpha/test_sapling.py +++ b/tests_python/tests_alpha/test_sapling.py @@ -8,7 +8,13 @@ from . import protocol CONTRACT_PATH = path.join( - paths.TEZOS_HOME, 'src', protocol.FOLDER, 'lib_protocol', 'test' + paths.TEZOS_HOME, + 'src', + protocol.FOLDER, + 'lib_protocol', + 'test', + 'integration', + 'michelson', ) TX_AMOUNT = 100.0 From c5b8d2c83d184ee82045adc156ec02b3a123693a Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 10 Dec 2021 19:29:10 +0100 Subject: [PATCH 0042/1220] proto_alpha/lib_protocol/test: move out integration/gas --- .../test/integration/gas/.ocamlformat | 17 ++++++++ .../lib_protocol/test/integration/gas/dune | 12 ++++++ .../lib_protocol/test/integration/gas/main.ml | 40 +++++++++++++++++++ .../{ => integration/gas}/test_gas_costs.ml | 4 +- .../{ => integration/gas}/test_gas_levels.ml | 4 +- src/proto_alpha/lib_protocol/test/main.ml | 2 - 6 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/test/integration/gas/.ocamlformat create mode 100644 src/proto_alpha/lib_protocol/test/integration/gas/dune create mode 100644 src/proto_alpha/lib_protocol/test/integration/gas/main.ml rename src/proto_alpha/lib_protocol/test/{ => integration/gas}/test_gas_costs.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => integration/gas}/test_gas_levels.ml (99%) diff --git a/src/proto_alpha/lib_protocol/test/integration/gas/.ocamlformat b/src/proto_alpha/lib_protocol/test/integration/gas/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/gas/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/proto_alpha/lib_protocol/test/integration/gas/dune b/src/proto_alpha/lib_protocol/test/integration/gas/dune new file mode 100644 index 0000000000..60fcd15cc7 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/gas/dune @@ -0,0 +1,12 @@ +(test + (name main) + (package tezos-protocol-alpha-tests) + (libraries alcotest-lwt + tezos-base + tezos-protocol-alpha + tezos-base-test-helpers + tezos-alpha-test-helpers) + (flags (:standard -open Tezos_base__TzPervasives + -open Tezos_protocol_alpha + -open Tezos_alpha_test_helpers + -open Tezos_base_test_helpers))) diff --git a/src/proto_alpha/lib_protocol/test/integration/gas/main.ml b/src/proto_alpha/lib_protocol/test/integration/gas/main.ml new file mode 100644 index 0000000000..de003eb25c --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/gas/main.ml @@ -0,0 +1,40 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Testing + ------- + Component: Protocol > Gas + Invocation: dune runtest src/proto_alpha/lib_protocol/test/integration/gas + Subject: Entrypoint +*) + +let () = + Alcotest_lwt.run + "protocol_alpha > Integration > Gas" + [ + ("gas levels", Test_gas_levels.tests); + ("gas cost functions", Test_gas_costs.tests); + ] + |> Lwt_main.run diff --git a/src/proto_alpha/lib_protocol/test/test_gas_costs.ml b/src/proto_alpha/lib_protocol/test/integration/gas/test_gas_costs.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_gas_costs.ml rename to src/proto_alpha/lib_protocol/test/integration/gas/test_gas_costs.ml index b2ff118747..e4a3baf1bb 100644 --- a/src/proto_alpha/lib_protocol/test/test_gas_costs.ml +++ b/src/proto_alpha/lib_protocol/test/integration/gas/test_gas_costs.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (gas costs) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^gas cost functions$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/gas/main.exe \ + -- test "^gas cost functions$" Subject: Gas costs Current limitations: for maps, sets & compare, we only test integer comparable keys. diff --git a/src/proto_alpha/lib_protocol/test/test_gas_levels.ml b/src/proto_alpha/lib_protocol/test/integration/gas/test_gas_levels.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_gas_levels.ml rename to src/proto_alpha/lib_protocol/test/integration/gas/test_gas_levels.ml index 5467da6ab1..e61e2e6db1 100644 --- a/src/proto_alpha/lib_protocol/test/test_gas_levels.ml +++ b/src/proto_alpha/lib_protocol/test/integration/gas/test_gas_levels.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (Gas levels) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^gas levels$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/gas/main.exe \ + -- test "^gas levels$" Subject: On gas consumption and exhaustion. *) diff --git a/src/proto_alpha/lib_protocol/test/main.ml b/src/proto_alpha/lib_protocol/test/main.ml index 93a21c83e0..482f57b321 100644 --- a/src/proto_alpha/lib_protocol/test/main.ml +++ b/src/proto_alpha/lib_protocol/test/main.ml @@ -43,8 +43,6 @@ let () = ("baking", Test_baking.tests); ("delegation", Test_delegation.tests); ("deactivation", Test_deactivation.tests); - ("gas levels", Test_gas_levels.tests); - ("gas cost functions", Test_gas_costs.tests); ("helpers rpcs", Test_helpers_rpcs.tests); ("storage description", Test_storage.tests); ("constants", Test_constants.tests); From 1b5595f29e910eeeaee816bb66dadbbba7f738d3 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 10 Dec 2021 19:32:57 +0100 Subject: [PATCH 0043/1220] proto_alpha/lib_protocol/test: move out integration/consensus --- .../test/integration/consensus/.ocamlformat | 17 +++++++ .../test/integration/consensus/dune | 16 ++++++ .../test/integration/consensus/main.ml | 50 +++++++++++++++++++ .../consensus}/test_baking.ml | 4 +- .../consensus}/test_deactivation.ml | 4 +- .../consensus}/test_delegation.ml | 4 +- .../consensus}/test_double_baking.ml | 4 +- .../consensus}/test_double_endorsement.ml | 4 +- .../consensus}/test_double_preendorsement.ml | 3 +- .../consensus}/test_endorsement.ml | 4 +- .../consensus}/test_frozen_deposits.ml | 4 +- .../consensus}/test_helpers_rpcs.ml | 4 +- .../consensus}/test_participation.ml | 4 +- .../consensus}/test_preendorsement.ml | 4 +- .../consensus}/test_preendorsement_functor.ml | 1 - .../{ => integration/consensus}/test_seed.ml | 4 +- src/proto_alpha/lib_protocol/test/main.ml | 12 ----- 17 files changed, 118 insertions(+), 25 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/test/integration/consensus/.ocamlformat create mode 100644 src/proto_alpha/lib_protocol/test/integration/consensus/dune create mode 100644 src/proto_alpha/lib_protocol/test/integration/consensus/main.ml rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_baking.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_deactivation.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_delegation.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_double_baking.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_double_endorsement.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_double_preendorsement.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_endorsement.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_frozen_deposits.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_helpers_rpcs.ml (95%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_participation.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_preendorsement.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_preendorsement_functor.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration/consensus}/test_seed.ml (98%) diff --git a/src/proto_alpha/lib_protocol/test/integration/consensus/.ocamlformat b/src/proto_alpha/lib_protocol/test/integration/consensus/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/proto_alpha/lib_protocol/test/integration/consensus/dune b/src/proto_alpha/lib_protocol/test/integration/consensus/dune new file mode 100644 index 0000000000..14d67879ca --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/dune @@ -0,0 +1,16 @@ +(test + (name main) + (package tezos-protocol-alpha-tests) + (libraries alcotest-lwt + tezos-base + tezos-protocol-alpha + tezos-base-test-helpers + tezos-alpha-test-helpers + tezos-protocol-alpha-parameters + tezos-protocol-plugin-alpha) + (flags (:standard -open Tezos_base__TzPervasives + -open Tezos_protocol_alpha + -open Tezos_alpha_test_helpers + -open Tezos_base_test_helpers + -open Tezos_protocol_alpha_parameters + -open Tezos_protocol_plugin_alpha))) diff --git a/src/proto_alpha/lib_protocol/test/integration/consensus/main.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/main.ml new file mode 100644 index 0000000000..023e5e6303 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/main.ml @@ -0,0 +1,50 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Testing + ------- + Component: Protocol + Invocation: dune runtest src/proto_alpha/lib_protocol/test/integration/consensus + Subject: Entrypoint +*) + +let () = + Alcotest_lwt.run + "protocol_alpha" + [ + ("endorsement", Test_endorsement.tests); + ("preendorsement", Test_preendorsement.tests); + ("double endorsement", Test_double_endorsement.tests); + ("double preendorsement", Test_double_preendorsement.tests); + ("double baking", Test_double_baking.tests); + ("seed", Test_seed.tests); + ("baking", Test_baking.tests); + ("delegation", Test_delegation.tests); + ("deactivation", Test_deactivation.tests); + ("helpers rpcs", Test_helpers_rpcs.tests); + ("participation monitoring", Test_participation.tests); + ("frozen deposits", Test_frozen_deposits.tests); + ] + |> Lwt_main.run diff --git a/src/proto_alpha/lib_protocol/test/test_baking.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_baking.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_baking.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_baking.ml index 8fe9967159..4f8fb49d93 100644 --- a/src/proto_alpha/lib_protocol/test/test_baking.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_baking.ml @@ -27,7 +27,9 @@ (** Testing ------- Component: Protocol (baking) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^baking$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^baking$" Subject: Rewards and bakers. Tests based on RPCs. *) diff --git a/src/proto_alpha/lib_protocol/test/test_deactivation.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_deactivation.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_deactivation.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_deactivation.ml index d30303acb4..7c5218e605 100644 --- a/src/proto_alpha/lib_protocol/test/test_deactivation.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_deactivation.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (rolls) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^deactivation$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^deactivation$" Subject: After a given number of cycles during which a delegate has not made use of its baking and endorsing rights, its account will be deactivated for validator selection. To bake/endorse diff --git a/src/proto_alpha/lib_protocol/test/test_delegation.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_delegation.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_delegation.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_delegation.ml index 91704e5df9..36a0039378 100644 --- a/src/proto_alpha/lib_protocol/test/test_delegation.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_delegation.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (delegation) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^delegation$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^delegation$" Subject: - Properties on bootstrap contracts (self-delegation, cannot delete/change their delegate (as opposed to contracts not-being-delegate which can do these), bootstrap manager diff --git a/src/proto_alpha/lib_protocol/test/test_double_baking.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_double_baking.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_double_baking.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_double_baking.ml index 9a6bdf1b36..8b3795336f 100644 --- a/src/proto_alpha/lib_protocol/test/test_double_baking.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_double_baking.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (double baking) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^double baking$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^double baking$" Subject: A double baking evidence operation may be injected when it has been observed that a baker baked two different blocks at the same level and same round. diff --git a/src/proto_alpha/lib_protocol/test/test_double_endorsement.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_double_endorsement.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_double_endorsement.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_double_endorsement.ml index 093a182be5..5a149dd31b 100644 --- a/src/proto_alpha/lib_protocol/test/test_double_endorsement.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_double_endorsement.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (double endorsement) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^double endorsement$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^double endorsement$" Subject: Double endorsement evidence operation may happen when an endorser endorsed two different blocks on the same level. *) diff --git a/src/proto_alpha/lib_protocol/test/test_double_preendorsement.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_double_preendorsement.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_double_preendorsement.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_double_preendorsement.ml index d5e5f7a2c2..047a1b79dc 100644 --- a/src/proto_alpha/lib_protocol/test/test_double_preendorsement.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_double_preendorsement.ml @@ -26,7 +26,8 @@ (** Testing ------- Component: Protocol (double preendorsement) in Full_construction & Application modes - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe \ + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ -- test "^double preendorsement$" Subject: These tests target different cases for double preendorsement *) diff --git a/src/proto_alpha/lib_protocol/test/test_endorsement.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_endorsement.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_endorsement.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_endorsement.ml index f84560f38b..f78264fd13 100644 --- a/src/proto_alpha/lib_protocol/test/test_endorsement.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_endorsement.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (endorsement) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^endorsement$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^endorsement$" Subject: Endorsing a block adds an extra layer of confidence to the Tezos' PoS algorithm. The block endorsing operation must be included in the following block. diff --git a/src/proto_alpha/lib_protocol/test/test_frozen_deposits.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_frozen_deposits.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_frozen_deposits.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_frozen_deposits.ml index d377bd4a12..f431a1bf2b 100644 --- a/src/proto_alpha/lib_protocol/test/test_frozen_deposits.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_frozen_deposits.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (frozen_deposits) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^frozen deposits$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^frozen deposits$" Subject: consistency of frozen deposits and the [set_deposits_limit] operation *) diff --git a/src/proto_alpha/lib_protocol/test/test_helpers_rpcs.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_helpers_rpcs.ml similarity index 95% rename from src/proto_alpha/lib_protocol/test/test_helpers_rpcs.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_helpers_rpcs.ml index 392da059c3..b70757335d 100644 --- a/src/proto_alpha/lib_protocol/test/test_helpers_rpcs.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_helpers_rpcs.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (Helpers RPCs) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^helpers rpcs$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^helpers rpcs$" Subject: On RPCs. *) diff --git a/src/proto_alpha/lib_protocol/test/test_participation.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_participation.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_participation.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_participation.ml index 2c61028e62..64c36f2b1f 100644 --- a/src/proto_alpha/lib_protocol/test/test_participation.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_participation.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (participation monitoring) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^participation" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^participation" Subject: Participation monitoring in Tenderbake *) diff --git a/src/proto_alpha/lib_protocol/test/test_preendorsement.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_preendorsement.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_preendorsement.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_preendorsement.ml index 728f4c79c0..b7bf319a26 100644 --- a/src/proto_alpha/lib_protocol/test/test_preendorsement.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_preendorsement.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (preendorsement) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^preendorsement$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^preendorsement$" *) open Protocol diff --git a/src/proto_alpha/lib_protocol/test/test_preendorsement_functor.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_preendorsement_functor.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_preendorsement_functor.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_preendorsement_functor.ml index 5437381833..89b4552f24 100644 --- a/src/proto_alpha/lib_protocol/test/test_preendorsement_functor.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_preendorsement_functor.ml @@ -26,7 +26,6 @@ (** Testing ------- Component: Protocol (preendorsement) in Full_construction & Application modes - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^preendorsement$" Subject: preendorsement inclusion in a block *) diff --git a/src/proto_alpha/lib_protocol/test/test_seed.ml b/src/proto_alpha/lib_protocol/test/integration/consensus/test_seed.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_seed.ml rename to src/proto_alpha/lib_protocol/test/integration/consensus/test_seed.ml index b0067764e3..6b05824c83 100644 --- a/src/proto_alpha/lib_protocol/test/test_seed.ml +++ b/src/proto_alpha/lib_protocol/test/integration/consensus/test_seed.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (seed) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^seed$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/consensus/main.exe \ + -- test "^seed$" Subject: - seed_nonce_hash included in some blocks - revelation operation of seed_nonce that should correspond to each seed_nonce_hash diff --git a/src/proto_alpha/lib_protocol/test/main.ml b/src/proto_alpha/lib_protocol/test/main.ml index 482f57b321..913886bb29 100644 --- a/src/proto_alpha/lib_protocol/test/main.ml +++ b/src/proto_alpha/lib_protocol/test/main.ml @@ -34,21 +34,9 @@ let () = Alcotest_lwt.run "protocol_alpha" [ - ("endorsement", Test_endorsement.tests); - ("preendorsement", Test_preendorsement.tests); - ("double endorsement", Test_double_endorsement.tests); - ("double preendorsement", Test_double_preendorsement.tests); - ("double baking", Test_double_baking.tests); - ("seed", Test_seed.tests); - ("baking", Test_baking.tests); - ("delegation", Test_delegation.tests); - ("deactivation", Test_deactivation.tests); - ("helpers rpcs", Test_helpers_rpcs.tests); ("storage description", Test_storage.tests); ("constants", Test_constants.tests); ("liquidity baking", Test_liquidity_baking.tests); - ("participation monitoring", Test_participation.tests); - ("frozen deposits", Test_frozen_deposits.tests); ("token movements", Test_token.tests); ] |> Lwt_main.run From afe420feef502a985549727439b287aec4c9d6c8 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 10 Dec 2021 18:13:35 +0100 Subject: [PATCH 0044/1220] proto_alpha/lib_protocol/test: move out integration/ --- .../test/integration/.ocamlformat | 17 ++++++++ .../lib_protocol/test/integration/dune | 16 +++++++ .../lib_protocol/test/integration/main.ml | 42 +++++++++++++++++++ .../test/{ => integration}/test_constants.ml | 4 +- .../test_liquidity_baking.ml | 4 +- .../test/{ => integration}/test_storage.ml | 4 +- .../test/{ => integration}/test_token.ml | 4 +- src/proto_alpha/lib_protocol/test/main.ml | 7 +--- 8 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/test/integration/.ocamlformat create mode 100644 src/proto_alpha/lib_protocol/test/integration/dune create mode 100644 src/proto_alpha/lib_protocol/test/integration/main.ml rename src/proto_alpha/lib_protocol/test/{ => integration}/test_constants.ml (96%) rename src/proto_alpha/lib_protocol/test/{ => integration}/test_liquidity_baking.ml (99%) rename src/proto_alpha/lib_protocol/test/{ => integration}/test_storage.ml (98%) rename src/proto_alpha/lib_protocol/test/{ => integration}/test_token.ml (99%) diff --git a/src/proto_alpha/lib_protocol/test/integration/.ocamlformat b/src/proto_alpha/lib_protocol/test/integration/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/proto_alpha/lib_protocol/test/integration/dune b/src/proto_alpha/lib_protocol/test/integration/dune new file mode 100644 index 0000000000..62d9ef8a44 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/dune @@ -0,0 +1,16 @@ +(test + (name main) + (package tezos-protocol-alpha-tests) + (libraries alcotest-lwt + tezos-base + tezos-client-alpha + tezos-protocol-alpha + tezos-protocol-alpha-parameters + tezos-base-test-helpers + tezos-alpha-test-helpers) + (flags (:standard -open Tezos_base__TzPervasives + -open Tezos_client_alpha + -open Tezos_protocol_alpha + -open Tezos_protocol_alpha_parameters + -open Tezos_alpha_test_helpers + -open Tezos_base_test_helpers))) diff --git a/src/proto_alpha/lib_protocol/test/integration/main.ml b/src/proto_alpha/lib_protocol/test/integration/main.ml new file mode 100644 index 0000000000..b2fbefb8d2 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/main.ml @@ -0,0 +1,42 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Testing + ------- + Component: Protocol + Invocation: dune build @@src/proto_alpha/lib_protocol/test/integration/runtest + Subject: Entrypoint +*) + +let () = + Alcotest_lwt.run + "protocol_alpha > integration" + [ + ("constants", Test_constants.tests); + ("liquidity baking", Test_liquidity_baking.tests); + ("storage description", Test_storage.tests); + ("token movements", Test_token.tests); + ] + |> Lwt_main.run diff --git a/src/proto_alpha/lib_protocol/test/test_constants.ml b/src/proto_alpha/lib_protocol/test/integration/test_constants.ml similarity index 96% rename from src/proto_alpha/lib_protocol/test/test_constants.ml rename to src/proto_alpha/lib_protocol/test/integration/test_constants.ml index 3476f92ac9..19b458c159 100644 --- a/src/proto_alpha/lib_protocol/test/test_constants.ml +++ b/src/proto_alpha/lib_protocol/test/integration/test_constants.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (baking) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^constants$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/main.exe \ + -- test "^constants$" Subject: the consistency of parametric constants *) diff --git a/src/proto_alpha/lib_protocol/test/test_liquidity_baking.ml b/src/proto_alpha/lib_protocol/test/integration/test_liquidity_baking.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_liquidity_baking.ml rename to src/proto_alpha/lib_protocol/test/integration/test_liquidity_baking.ml index 8748cbe87e..91a0c93356 100644 --- a/src/proto_alpha/lib_protocol/test/test_liquidity_baking.ml +++ b/src/proto_alpha/lib_protocol/test/integration/test_liquidity_baking.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: liquidity baking - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^liquidity baking$" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/main.exe \ + -- test "^liquidity baking$" Subject: Test liquidity baking subsidies, CPMM storage updates, sunset shut off, and escape hatch shut off. *) diff --git a/src/proto_alpha/lib_protocol/test/test_storage.ml b/src/proto_alpha/lib_protocol/test/integration/test_storage.ml similarity index 98% rename from src/proto_alpha/lib_protocol/test/test_storage.ml rename to src/proto_alpha/lib_protocol/test/integration/test_storage.ml index b65ceab189..60ed66fbc0 100644 --- a/src/proto_alpha/lib_protocol/test/test_storage.ml +++ b/src/proto_alpha/lib_protocol/test/integration/test_storage.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Context Storage - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test storage + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/main.exe \ + -- test storage Subject: Test the correctnesss of debug message from storage_functor *) diff --git a/src/proto_alpha/lib_protocol/test/test_token.ml b/src/proto_alpha/lib_protocol/test/integration/test_token.ml similarity index 99% rename from src/proto_alpha/lib_protocol/test/test_token.ml rename to src/proto_alpha/lib_protocol/test/integration/test_token.ml index 39d5b1510b..6a1e784672 100644 --- a/src/proto_alpha/lib_protocol/test/test_token.ml +++ b/src/proto_alpha/lib_protocol/test/integration/test_token.ml @@ -26,7 +26,9 @@ (** Testing ------- Component: Protocol (token) - Invocation: dune exec src/proto_alpha/lib_protocol/test/main.exe -- test "^token" + Invocation: dune exec \ + src/proto_alpha/lib_protocol/test/integration/main.exe \ + -- test "^token" Subject: Token movements in the protocol. *) diff --git a/src/proto_alpha/lib_protocol/test/main.ml b/src/proto_alpha/lib_protocol/test/main.ml index 913886bb29..0fa9279f23 100644 --- a/src/proto_alpha/lib_protocol/test/main.ml +++ b/src/proto_alpha/lib_protocol/test/main.ml @@ -33,10 +33,5 @@ let () = Alcotest_lwt.run "protocol_alpha" - [ - ("storage description", Test_storage.tests); - ("constants", Test_constants.tests); - ("liquidity baking", Test_liquidity_baking.tests); - ("token movements", Test_token.tests); - ] + [] |> Lwt_main.run From 2d600bda92420583a003459386dfe501eeafae4a Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Mon, 13 Dec 2021 15:20:13 +0100 Subject: [PATCH 0045/1220] proto_alpha/lib_protocol/test: remove dune and main.ml --- src/proto_alpha/lib_protocol/test/dune | 49 ----------------------- src/proto_alpha/lib_protocol/test/main.ml | 37 ----------------- 2 files changed, 86 deletions(-) delete mode 100644 src/proto_alpha/lib_protocol/test/dune delete mode 100644 src/proto_alpha/lib_protocol/test/main.ml diff --git a/src/proto_alpha/lib_protocol/test/dune b/src/proto_alpha/lib_protocol/test/dune deleted file mode 100644 index acdcfe6db8..0000000000 --- a/src/proto_alpha/lib_protocol/test/dune +++ /dev/null @@ -1,49 +0,0 @@ -(tests - (names main) - (package tezos-protocol-alpha-tests) - (deps (glob_files contracts/*)) - (libraries tezos-base - tezos-micheline - tezos-protocol-environment - alcotest-lwt - tezos-test-helpers - qcheck-alcotest - tezos-alpha-test-helpers - tezos-stdlib-unix - tezos-client-base - tezos-protocol-alpha-parameters - tezos-base-test-helpers - tezos-sapling - astring - tezos-protocol-plugin-alpha - tezos-benchmark - tezos-benchmark-alpha) - (flags (:standard -open Tezos_base__TzPervasives - -open Tezos_micheline - -open Tezos_client_alpha - -open Tezos_protocol_alpha - -open Tezos_protocol_alpha_parameters - -open Tezos_protocol_plugin_alpha - -open Tezos_protocol_environment_alpha - -open Tezos_benchmark_alpha - -open Tezos_benchmark_type_inference_alpha - -open Tezos_alpha_test_helpers - -open Tezos_base_test_helpers))) - -(rule - (copy %{lib:tezos-protocol-alpha-parameters:test-parameters.json} - protocol_parameters.json)) - -; runs both `Quick and `Slow tests -(rule - (alias runtest_proto_alpha) - (deps (glob_files contracts/*)) - (package tezos-protocol-alpha-tests) - (action (run %{exe:main.exe}))) - -; runs only the `Quick tests -(rule - (alias runtest_quick) - (deps (glob_files contracts/*)) - (package tezos-protocol-alpha-tests) - (action (run %{exe:main.exe} -q))) diff --git a/src/proto_alpha/lib_protocol/test/main.ml b/src/proto_alpha/lib_protocol/test/main.ml deleted file mode 100644 index 0fa9279f23..0000000000 --- a/src/proto_alpha/lib_protocol/test/main.ml +++ /dev/null @@ -1,37 +0,0 @@ -(*****************************************************************************) -(* *) -(* Open Source License *) -(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) -(* *) -(* Permission is hereby granted, free of charge, to any person obtaining a *) -(* copy of this software and associated documentation files (the "Software"),*) -(* to deal in the Software without restriction, including without limitation *) -(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) -(* and/or sell copies of the Software, and to permit persons to whom the *) -(* Software is furnished to do so, subject to the following conditions: *) -(* *) -(* The above copyright notice and this permission notice shall be included *) -(* in all copies or substantial portions of the Software. *) -(* *) -(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) -(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) -(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) -(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) -(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) -(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) -(* DEALINGS IN THE SOFTWARE. *) -(* *) -(*****************************************************************************) - -(** Testing - ------- - Component: Protocol - Invocation: dune build @src/proto_alpha/lib_protocol/runtest - Subject: Entrypoint -*) - -let () = - Alcotest_lwt.run - "protocol_alpha" - [] - |> Lwt_main.run From 1c559886fdf9d259d8588731b5daea15d3686823 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Mon, 13 Dec 2021 16:17:38 +0100 Subject: [PATCH 0046/1220] Makefile: fix the src/proto_alpha/lib_protocol.test_proto target No longer require that the test folder contains a dune file --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 842475e13c..9dfa93e509 100644 --- a/Makefile +++ b/Makefile @@ -131,7 +131,7 @@ test-protocol-compile: @dune build --profile=$(PROFILE) $(COVERAGE_OPTIONS) @runtest_compile_protocol @dune build --profile=$(PROFILE) $(COVERAGE_OPTIONS) @runtest_out_of_opam -PROTO_LIBS := $(shell find src/ -path src/proto_\* -name test -type d -exec test -f \{\}/dune \; -print 2>/dev/null | LC_COLLATE=C sort) +PROTO_LIBS := $(shell find src/ -path src/proto_\* -name test -type d 2>/dev/null | LC_COLLATE=C sort) PROTO_LIBS_NAMES := $(patsubst %/test,%,$(PROTO_LIBS)) PROTO_TARGETS := $(addsuffix .test_proto,${PROTO_LIBS_NAMES}) From 4899210eab7953cf426a099fecbb6aad76029f2e Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Wed, 5 Jan 2022 15:31:37 +0100 Subject: [PATCH 0047/1220] proto_alpha/lib_protocol/test: use let* in transfer_and_check_balances --- .../lib_protocol/test/helpers/transfers.ml | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/proto_alpha/lib_protocol/test/helpers/transfers.ml b/src/proto_alpha/lib_protocol/test/helpers/transfers.ml index 112c3c0d94..e9f024b9a1 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/transfers.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/transfers.ml @@ -29,21 +29,24 @@ open Test_tez let transfer_and_check_balances ?(with_burn = false) ~loc b ?(fee = Tez.zero) ?expect_failure src dst amount = - fee +? amount >>?= fun amount_fee -> - Context.Contract.balance (I b) src >>=? fun bal_src -> - Context.Contract.balance (I b) dst >>=? fun bal_dst -> - Op.transaction - ~gas_limit:(Alpha_context.Gas.Arith.integral_of_int_exn 3000) - (I b) - ~fee - src - dst - amount - >>=? fun op -> - Incremental.add_operation ?expect_failure b op >>=? fun b -> - Context.get_constants (I b) - >>=? fun {parametric = {origination_size; cost_per_byte; _}; _} -> - cost_per_byte *? Int64.of_int origination_size >>?= fun origination_burn -> + let open Lwt_tzresult_syntax in + let*? amount_fee = fee +? amount in + let* bal_src = Context.Contract.balance (I b) src in + let* bal_dst = Context.Contract.balance (I b) dst in + let* op = + Op.transaction + ~gas_limit:(Alpha_context.Gas.Arith.integral_of_int_exn 3000) + (I b) + ~fee + src + dst + amount + in + let* b = Incremental.add_operation ?expect_failure b op in + let* {parametric = {origination_size; cost_per_byte; _}; _} = + Context.get_constants (I b) + in + let*? origination_burn = cost_per_byte *? Int64.of_int origination_size in let amount_fee_maybe_burn = if with_burn then match Tez.(amount_fee +? origination_burn) with @@ -51,9 +54,10 @@ let transfer_and_check_balances ?(with_burn = false) ~loc b ?(fee = Tez.zero) | Error _ -> assert false else amount_fee in - Assert.balance_was_debited ~loc (I b) src bal_src amount_fee_maybe_burn - >>=? fun () -> - Assert.balance_was_credited ~loc (I b) dst bal_dst amount >|=? fun () -> + let* () = + Assert.balance_was_debited ~loc (I b) src bal_src amount_fee_maybe_burn + in + let+ () = Assert.balance_was_credited ~loc (I b) dst bal_dst amount in (b, op) let n_transactions n b ?fee source dest amount = From f755a441f61c159f06ae259bb4caede52c31d416 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Wed, 5 Jan 2022 15:58:34 +0100 Subject: [PATCH 0048/1220] proto_alpha/lib_protocol/test: remove assert false --- src/proto_alpha/lib_protocol/test/helpers/transfers.ml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/proto_alpha/lib_protocol/test/helpers/transfers.ml b/src/proto_alpha/lib_protocol/test/helpers/transfers.ml index e9f024b9a1..2817680a26 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/transfers.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/transfers.ml @@ -47,12 +47,9 @@ let transfer_and_check_balances ?(with_burn = false) ~loc b ?(fee = Tez.zero) Context.get_constants (I b) in let*? origination_burn = cost_per_byte *? Int64.of_int origination_size in + let*? amount_fee_burn = amount_fee +? origination_burn in let amount_fee_maybe_burn = - if with_burn then - match Tez.(amount_fee +? origination_burn) with - | Ok r -> r - | Error _ -> assert false - else amount_fee + if with_burn then amount_fee_burn else amount_fee in let* () = Assert.balance_was_debited ~loc (I b) src bal_src amount_fee_maybe_burn From dcc3578a0940ce67ad942fe87cff3910b7547228 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Tue, 11 Jan 2022 13:38:30 +0100 Subject: [PATCH 0049/1220] proto_alpha/lib_protocol/test: add README.md --- src/proto_alpha/lib_protocol/test/README.md | 30 +++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/proto_alpha/lib_protocol/test/README.md diff --git a/src/proto_alpha/lib_protocol/test/README.md b/src/proto_alpha/lib_protocol/test/README.md new file mode 100644 index 0000000000..b0ec6d5b04 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/README.md @@ -0,0 +1,30 @@ +# lib_protocol tests + +This folder contains unit, integration and property-based tests for +the economic protocol definition. The tests are organized in +sub-folders: first by type of test, and for integration, a further +subdivision by theme: + +- `unit`: tests that sit below `Alpha_context`. +- `integration`: tests that require passing around a context. + - `michelson`: tests that involve Micheline expressions. + - `consensus`: tests for consensus: baking, endorsement, etc. + - `gas`: tests for gas. + - `operations`: test for operations. +- `pbt`: for property-based tests using `qcheck`. + +Finally, `helpers/` contains common definitions for writing tests. + +There might not be a clear-cut location for new tests. For new +integration tests, either add them directly to `integration/` or +create a new sub-folder corresponding to the theme of the test. + +# Running + +To run all the tests, run: + +``` +dune runtest src/proto_alpha/lib_protocol/ +``` + +To run an individual test file, consult its `Invocation` header. From 721d0ad40d6f9f7cdec5fac1f7d95a91e86a9574 Mon Sep 17 00:00:00 2001 From: Yann Regis-Gianas Date: Thu, 23 Dec 2021 09:17:07 +0100 Subject: [PATCH 0050/1220] Tezt,SCORU: Add a failing test for sc node/client interaction Signed-off-by: Yann Regis-Gianas --- .../sc_rollup_client_gets_address.out | 1 + tezt/lib_tezos/constant.ml | 2 + tezt/lib_tezos/sc_rollup_client.ml | 65 +++++++++++++++++++ tezt/lib_tezos/sc_rollup_client.mli | 43 ++++++++++++ tezt/tests/sc_rollup.ml | 34 +++++++++- 5 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 tezt/_regressions/sc_rollup_client_gets_address.out create mode 100644 tezt/lib_tezos/sc_rollup_client.ml create mode 100644 tezt/lib_tezos/sc_rollup_client.mli diff --git a/tezt/_regressions/sc_rollup_client_gets_address.out b/tezt/_regressions/sc_rollup_client_gets_address.out new file mode 100644 index 0000000000..93f28e79e4 --- /dev/null +++ b/tezt/_regressions/sc_rollup_client_gets_address.out @@ -0,0 +1 @@ +tezt/_regressions/sc_rollup_client_gets_address.out diff --git a/tezt/lib_tezos/constant.ml b/tezt/lib_tezos/constant.ml index 0e7f91b1fd..49b899ca1d 100644 --- a/tezt/lib_tezos/constant.ml +++ b/tezt/lib_tezos/constant.ml @@ -38,6 +38,8 @@ let tezos_snoop = "./tezos-snoop" let sc_rollup_node = "./tezos-sc-rollup-node-alpha" +let sc_rollup_client = "./tezos-sc-rollup-client-alpha" + let activator : Account.key = { alias = "activator"; diff --git a/tezt/lib_tezos/sc_rollup_client.ml b/tezt/lib_tezos/sc_rollup_client.ml new file mode 100644 index 0000000000..ca6f9c033f --- /dev/null +++ b/tezt/lib_tezos/sc_rollup_client.ml @@ -0,0 +1,65 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type t = { + name : string; + path : string; + sc_node : Sc_rollup_node.t; + base_dir : string; + color : Log.Color.t; +} + +let next_name = ref 1 + +let fresh_name () = + let index = !next_name in + incr next_name ; + "client" ^ string_of_int index + +let () = Test.declare_reset_function @@ fun () -> next_name := 1 + +let create ?name ?path ?base_dir ?(color = Log.Color.FG.green) sc_node = + let name = match name with None -> fresh_name () | Some name -> name in + let path = + match path with None -> Constant.sc_rollup_client | Some p -> p + in + let base_dir = + match base_dir with None -> Temp.dir name | Some dir -> dir + in + {name; path; sc_node; base_dir; color} + +let base_dir_arg sc_client = ["--base-dir"; sc_client.base_dir] + +let spawn_command ?hooks sc_client command = + Process.spawn + ~name:sc_client.name + ~color:sc_client.color + ?hooks + sc_client.path + (base_dir_arg sc_client @ command) + +let sc_rollup_address sc_client = + spawn_command sc_client ["get"; "sc"; "rollup"; "address"] + |> Process.check_and_read_stdout diff --git a/tezt/lib_tezos/sc_rollup_client.mli b/tezt/lib_tezos/sc_rollup_client.mli new file mode 100644 index 0000000000..82fc692105 --- /dev/null +++ b/tezt/lib_tezos/sc_rollup_client.mli @@ -0,0 +1,43 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Smart-Contract Rollup client state *) +type t + +(** [create ?name ?path ?base_dir ?path node] returns a fresh client + identified by a specified [name], logging in [color], executing the + program at [path], storing local information in [base_dir], and + communicating with the specified [node]. *) +val create : + ?name:string -> + ?path:string -> + ?base_dir:string -> + ?color:Log.Color.t -> + Sc_rollup_node.t -> + t + +(** [sc_rollup_address client] returns the smart contract rollup + address of the node associated to the [client]. *) +val sc_rollup_address : t -> string Lwt.t diff --git a/tezt/tests/sc_rollup.ml b/tezt/tests/sc_rollup.ml index 7f484a3b01..8047100689 100644 --- a/tezt/tests/sc_rollup.ml +++ b/tezt/tests/sc_rollup.ml @@ -167,7 +167,39 @@ let test_rollup_node_running = rollup_address_from_rpc) else return ()) +(* Interacting with a rollup node through a rollup client + ------------------------------------------------------ + + When a rollup node is running, a rollup client can ask this + node its rollup address. + +*) +let test_rollup_client_gets_address = + let output_file = "sc_rollup_client_gets_address" in + test + ~__FILE__ + ~output_file + ~tags:["run"; "client"] + "getting a smart-contract rollup address through the client" + (fun protocol -> + setup ~protocol @@ with_fresh_rollup + @@ fun rollup_address sc_rollup_node _filename -> + let* () = Sc_rollup_node.run sc_rollup_node in + let sc_client = Sc_rollup_client.create sc_rollup_node in + let* rollup_address_from_client = + Sc_rollup_client.sc_rollup_address sc_client + in + if rollup_address_from_client <> rollup_address then + failwith + (Printf.sprintf + "Expecting %s, got %s when the client asks for the sc rollup \ + address" + rollup_address + rollup_address_from_client) ; + return ()) + let register ~protocols = test_origination ~protocols ; test_rollup_node_configuration ~protocols ; - test_rollup_node_running ~protocols + test_rollup_node_running ~protocols ; + test_rollup_client_gets_address ~protocols From 01bddeacd35096bac74a7202155312a61d5cb1b2 Mon Sep 17 00:00:00 2001 From: Yann Regis-Gianas Date: Wed, 22 Dec 2021 19:23:33 +0100 Subject: [PATCH 0051/1220] Proto,SCORU: Add a rollup node client Signed-off-by: Yann Regis-Gianas --- Makefile | 5 +- .../bin_sc_rollup_client/.ocamlformat | 17 ++++ src/proto_alpha/bin_sc_rollup_client/RPC.ml | 34 ++++++++ .../bin_sc_rollup_client/commands.ml | 40 +++++++++ .../bin_sc_rollup_client/commands.mli | 29 +++++++ .../bin_sc_rollup_client/configuration.ml | 87 +++++++++++++++++++ .../bin_sc_rollup_client/configuration.mli | 43 +++++++++ src/proto_alpha/bin_sc_rollup_client/dune | 27 ++++++ .../bin_sc_rollup_client/dune-project | 3 + .../main_sc_rollup_client_alpha.ml | 56 ++++++++++++ .../tezos-sc-rollup-client-alpha.opam | 21 +++++ tezt/lib_tezos/sc_rollup_client.ml | 12 ++- 12 files changed, 370 insertions(+), 4 deletions(-) create mode 100644 src/proto_alpha/bin_sc_rollup_client/.ocamlformat create mode 100644 src/proto_alpha/bin_sc_rollup_client/RPC.ml create mode 100644 src/proto_alpha/bin_sc_rollup_client/commands.ml create mode 100644 src/proto_alpha/bin_sc_rollup_client/commands.mli create mode 100644 src/proto_alpha/bin_sc_rollup_client/configuration.ml create mode 100644 src/proto_alpha/bin_sc_rollup_client/configuration.mli create mode 100644 src/proto_alpha/bin_sc_rollup_client/dune create mode 100644 src/proto_alpha/bin_sc_rollup_client/dune-project create mode 100644 src/proto_alpha/bin_sc_rollup_client/main_sc_rollup_client_alpha.ml create mode 100644 src/proto_alpha/bin_sc_rollup_client/tezos-sc-rollup-client-alpha.opam diff --git a/Makefile b/Makefile index 9dfa93e509..c3a6b3aae3 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,10 @@ TEZOS_BIN=tezos-node tezos-validator tezos-client tezos-admin-client tezos-signe $(foreach p, $(active_protocol_versions), \ $(shell if [ -f $(call directory_of_version,$p)/bin_endorser/dune ]; then \ echo tezos-endorser-$(p); fi)) \ - $(shell if [ ${PROFILE} = "dev" ]; then echo tezos-sc-rollup-node-alpha; fi) + $(shell if [ ${PROFILE} = "dev" ]; then echo \ + tezos-sc-rollup-node-alpha \ + tezos-sc-rollup-client-alpha; \ + fi) # TODO: # Build sc rollup binaries for all the active protocols, not just alpha, # and for every profile. diff --git a/src/proto_alpha/bin_sc_rollup_client/.ocamlformat b/src/proto_alpha/bin_sc_rollup_client/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/proto_alpha/bin_sc_rollup_client/RPC.ml b/src/proto_alpha/bin_sc_rollup_client/RPC.ml new file mode 100644 index 0000000000..a30f120bfb --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/RPC.ml @@ -0,0 +1,34 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +open Configuration + +let call configuration = + RPC_client_unix.call_service + [Tezos_rpc_http.Media_type.bson] + ~base:configuration.endpoint + +let get_sc_rollup_addresses_command configuration = + call configuration (Sc_rollup_services.sc_rollup_address ()) () () () diff --git a/src/proto_alpha/bin_sc_rollup_client/commands.ml b/src/proto_alpha/bin_sc_rollup_client/commands.ml new file mode 100644 index 0000000000..506c6a4392 --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/commands.ml @@ -0,0 +1,40 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +open Clic +open Protocol.Alpha_context + +let get_sc_rollup_addresses_command () = + command + ~desc: + "Retrieve the smart-contract rollup address the node is interacting with." + no_options + (fixed ["get"; "sc"; "rollup"; "address"]) + (fun () configuration -> + RPC.get_sc_rollup_addresses_command configuration >>=? fun addr -> + Format.printf "@[%a@]" Sc_rollup.Address.pp addr ; + return ()) + +let all () = [get_sc_rollup_addresses_command ()] diff --git a/src/proto_alpha/bin_sc_rollup_client/commands.mli b/src/proto_alpha/bin_sc_rollup_client/commands.mli new file mode 100644 index 0000000000..1a9ff88b0f --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/commands.mli @@ -0,0 +1,29 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** [all ()] is the list of commands recognized by the smart-contract + rollup client. These commands may depend on the client + configuration. *) +val all : unit -> Configuration.t Clic.command list diff --git a/src/proto_alpha/bin_sc_rollup_client/configuration.ml b/src/proto_alpha/bin_sc_rollup_client/configuration.ml new file mode 100644 index 0000000000..d4447e7eb0 --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/configuration.ml @@ -0,0 +1,87 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +open Clic +open Lwt_result_syntax + +type t = {base_dir : string; endpoint : Uri.t} + +let default_base_dir = + Filename.concat (Sys.getenv "HOME") ".tezos-sc-rollup-client" + +let default_endpoint = "http://localhost:8932" + +let default = + {base_dir = default_base_dir; endpoint = Uri.of_string default_endpoint} + +let valid_endpoint _configuration s = + let endpoint = Uri.of_string s in + match (Uri.scheme endpoint, Uri.query endpoint, Uri.fragment endpoint) with + | (Some ("http" | "https"), [], None) -> return endpoint + | _ -> failwith "Endpoint should be of the form http[s]://address:port" + +let endpoint_arg () = + arg + ~long:"endpoint" + ~short:'E' + ~placeholder:"uri" + ~doc: + (Printf.sprintf + "endpoint of the sc rollup node; e.g. '%s'" + default_endpoint) + @@ parameter valid_endpoint + +let valid_base_dir _configuration base_dir = + if not (Sys.file_exists base_dir && Sys.is_directory base_dir) then + failwith "%s does not seem to be an existing directory" base_dir + else return base_dir + +let base_dir_arg () = + arg + ~long:"base-dir" + ~short:'d' + ~placeholder:"path" + ~doc: + (Format.asprintf + "@[@[<2>Tezos smart-contract rollup client data directory@,\ + The directory where the Tezos smart-contract rollup client stores \ + its data.@,\ + If absent, its value defaults to %s@]@]@." + default_base_dir) + (parameter valid_base_dir) + +let global_options () = Clic.args2 (base_dir_arg ()) (endpoint_arg ()) + +let make (base_dir, endpoint) = + { + base_dir = Option.value base_dir ~default:default_base_dir; + endpoint = Option.value endpoint ~default:(Uri.of_string default_endpoint); + } + +let parse argv = + let* (opts, argv) = + Clic.parse_global_options (global_options ()) default argv + in + return (make opts, argv) diff --git a/src/proto_alpha/bin_sc_rollup_client/configuration.mli b/src/proto_alpha/bin_sc_rollup_client/configuration.mli new file mode 100644 index 0000000000..683a7e9fb7 --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/configuration.mli @@ -0,0 +1,43 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Client configuration. *) +type t = private { + base_dir : string; + (** [base_dir] is a directory where client user data is stored. *) + endpoint : Uri.t; + (** [endpoint] is used to communicate with the smart-contract rollup + node. *) +} + +(** [parse argv] parses command-line arguments to return + [(configuration, argv')] where [configuration] is deduced from the + command-line arguments and [argv'] is the rest of the command-line + arguments that have no meaning relatively to [Configuration]. *) +val parse : string list -> (t * string list) tzresult Lwt.t + +(** [global_options ()] returns the list of options that have an + influence on the configuration. *) +val global_options : unit -> (string option * Uri.t option, 'a) Clic.options diff --git a/src/proto_alpha/bin_sc_rollup_client/dune b/src/proto_alpha/bin_sc_rollup_client/dune new file mode 100644 index 0000000000..9acdc1acf8 --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/dune @@ -0,0 +1,27 @@ +; build static executable with --profile static +(env + (static (flags (:standard + -ccopt -static + -cclib "-lusb-1.0 -lhidapi-libusb -ludev")))) + +(executable + (name main_sc_rollup_client_alpha) + (instrumentation (backend bisect_ppx)) + (public_name tezos-sc-rollup-client-alpha) + (libraries tezos-base + tezos-client-base + tezos-client-base-unix + tezos-client-alpha + tezos-client-commands + tezos-rpc-http + tezos-sc-rollup-alpha + ) + (flags (:standard -open Tezos_base__TzPervasives + -open Tezos_client_alpha + -open Tezos_client_commands + -open Tezos_stdlib_unix + -open Tezos_client_base_unix + -open Tezos_rpc_http_client_unix + -open Tezos_protocol_alpha + -open Tezos_sc_rollup_alpha + ))) diff --git a/src/proto_alpha/bin_sc_rollup_client/dune-project b/src/proto_alpha/bin_sc_rollup_client/dune-project new file mode 100644 index 0000000000..a05fb805b2 --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/dune-project @@ -0,0 +1,3 @@ +(lang dune 2.7) +(formatting (enabled_for ocaml)) +(name tezos-client-txo-rollup-alpha) diff --git a/src/proto_alpha/bin_sc_rollup_client/main_sc_rollup_client_alpha.ml b/src/proto_alpha/bin_sc_rollup_client/main_sc_rollup_client_alpha.ml new file mode 100644 index 0000000000..ed5f31d8b9 --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/main_sc_rollup_client_alpha.ml @@ -0,0 +1,56 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +let executable_name = Filename.basename Sys.executable_name + +let argv () = Array.to_list Sys.argv |> List.tl |> Stdlib.Option.get + +let main () = + Configuration.parse (argv ()) >>=? fun (configuration, argv) -> + Clic.dispatch (Commands.all ()) configuration argv + +let handle_error = function + | Ok () -> Stdlib.exit 0 + | Error [Clic.Version] -> + let version = Tezos_version.Bin_version.version_string in + Format.printf "%s\n" version ; + Stdlib.exit 0 + | Error [Clic.Help command] -> + Clic.usage + Format.std_formatter + ~executable_name + ~global_options:(Configuration.global_options ()) + (match command with None -> [] | Some c -> [c]) ; + Stdlib.exit 0 + | Error errs -> + Clic.pp_cli_errors + Format.err_formatter + ~executable_name + ~global_options:(Configuration.global_options ()) + ~default:Error_monad.pp + errs ; + Stdlib.exit 1 + +let () = Lwt_main.run (Lwt.catch main fail_with_exn) |> handle_error diff --git a/src/proto_alpha/bin_sc_rollup_client/tezos-sc-rollup-client-alpha.opam b/src/proto_alpha/bin_sc_rollup_client/tezos-sc-rollup-client-alpha.opam new file mode 100644 index 0000000000..3808daa5c2 --- /dev/null +++ b/src/proto_alpha/bin_sc_rollup_client/tezos-sc-rollup-client-alpha.opam @@ -0,0 +1,21 @@ +opam-version: "2.0" +maintainer: "contact@tezos.com" +authors: [ "Tezos devteam" ] +homepage: "https://www.tezos.com/" +bug-reports: "https://gitlab.com/tezos/tezos/issues" +dev-repo: "git+https://gitlab.com/tezos/tezos.git" +license: "MIT" +depends: [ + "dune" { >= "2.0" } + "tezos-base" + "tezos-client-alpha" + "tezos-client-commands" + "tezos-client-base-unix" + "tezos-rpc" + "tezos-sc-rollup-alpha" +] +build: [ + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] +synopsis: "Tezos/Protocol: `tezos-sc-rollup-client-alpha` client binary" diff --git a/tezt/lib_tezos/sc_rollup_client.ml b/tezt/lib_tezos/sc_rollup_client.ml index ca6f9c033f..d207ce81d6 100644 --- a/tezt/lib_tezos/sc_rollup_client.ml +++ b/tezt/lib_tezos/sc_rollup_client.ml @@ -52,14 +52,20 @@ let create ?name ?path ?base_dir ?(color = Log.Color.FG.green) sc_node = let base_dir_arg sc_client = ["--base-dir"; sc_client.base_dir] +let endpoint_arg sc_client = + ["--endpoint"; Sc_rollup_node.endpoint sc_client.sc_node] + let spawn_command ?hooks sc_client command = Process.spawn ~name:sc_client.name ~color:sc_client.color ?hooks sc_client.path - (base_dir_arg sc_client @ command) + (base_dir_arg sc_client @ endpoint_arg sc_client @ command) let sc_rollup_address sc_client = - spawn_command sc_client ["get"; "sc"; "rollup"; "address"] - |> Process.check_and_read_stdout + let* out = + spawn_command sc_client ["get"; "sc"; "rollup"; "address"] + |> Process.check_and_read_stdout + in + return (String.trim out) From 1562ea37a206e6b33d5587f8179072f4ebaa13c1 Mon Sep 17 00:00:00 2001 From: Romain Bardou Date: Fri, 17 Dec 2021 14:42:24 +0100 Subject: [PATCH 0052/1220] Changelog: add version 11.1 --- CHANGES.rst | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 6e9542b45a..1546f401aa 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -156,8 +156,6 @@ Node from those older versions. It is also no longer possible to import snapshots that were exported using this version. -- Reduced the memory consumption of the snapshot import. - - Fixed an inconsistency of the cache: the shell now reloads the cache from scratch if the application fails because of a hash inconsistency. @@ -169,9 +167,6 @@ Node - Added an option ``--listen-prometheus `` to ``tezos-node run`` to expose some metrics using the Prometheus format. -- Fixed an incorrect behaviour of the store which could cause the node - to freeze for a few seconds. - Client ------ @@ -230,6 +225,19 @@ Miscellaneous returned as another Micheline expression annotated appropriately in places where compared values differ. +Version 11.1 +============ + +- Octez can now be compiled using opam 2.1 instead of requiring opam 2.0. + +- ADX instructions have been disabled in Docker images and static binaries. + This makes it possible to use them on older CPUs. + +- Fixed an incorrect behaviour of the store which could cause the node + to freeze for a few seconds. + +- Reduced the memory consumption of the snapshot import. + Version 11.0 ============ From 6a3fb549d369f306cd12da79b3c29d64b756e462 Mon Sep 17 00:00:00 2001 From: Romain Bardou Date: Fri, 17 Dec 2021 14:40:16 +0100 Subject: [PATCH 0053/1220] Doc: add version 11.1 --- docs/releases/version-11.rst | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/docs/releases/version-11.rst b/docs/releases/version-11.rst index 0773c4912c..bf6aa99209 100644 --- a/docs/releases/version-11.rst +++ b/docs/releases/version-11.rst @@ -1,4 +1,4 @@ -Version 11.0 +Version 11.1 ============ Version 11.0 contains a new version (V3) of the protocol @@ -15,40 +15,30 @@ Hangzhou to Hangzhou2 on Mainnet. This means that nodes using version instead of Hangzhou if Hangzhou was to be activated by the on-chain governance process. +Version 11.1 fixes some storage issues, as well as some build issues. + Update Instructions ------------------- To update from sources:: git fetch - git checkout v11.0 + git checkout v11.1 rm -rf _opam _build make build-deps eval $(opam env) make -If you are using Docker instead, use the ``v11.0`` Docker images of Tezos. +If you are using Docker instead, use the ``v11.1`` Docker images of Tezos. If you are installing Octez using Opam, note that the required OCaml version is now 4.12.1. This means that you need to create a new switch with ``opam switch create 4.12.1`` before you run ``opam install tezos``. -Known Issues ------------- - -Users with older CPUs may encounter a "core dumped: illegal instruction" error -when using pre-built executables (Docker images or static binaries). -Such users can fix this issue by: - -- using Docker images tagged ``v11.0_no_adx`` (see on `Docker Hub `_); -- using the no-ADX static binaries - (`AMD64 `_ or - `ARM64 `_); -- or compiling from source or with Opam (see :doc:`../introduction/howtoget`). - Changelog --------- +- `Version 11.1 <../CHANGES.html#version-11-1>`_ - `Version 11.0 <../CHANGES.html#version-11-0>`_ - `Version 11.0~rc2 <../CHANGES.html#version-11-0-rc2>`_ - `Version 11.0~rc1 <../CHANGES.html#version-11-0-rc1>`_ From 8c1a802c3445d49a9d97d0050212faa9742af5f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Tue, 14 Dec 2021 18:18:59 +0100 Subject: [PATCH 0054/1220] Prevalidator: Ensure operations are parsed only once --- .../registered_protocol.mli | 3 + src/lib_shell/prevalidation.ml | 35 +- src/lib_shell/prevalidation.mli | 32 +- src/lib_shell/prevalidator.ml | 551 ++++++++---------- src/lib_shell/prevalidator_classification.ml | 118 +++- src/lib_shell/prevalidator_classification.mli | 114 ++-- src/lib_shell/prevalidator_filters.ml | 9 +- src/lib_shell/prevalidator_filters.mli | 9 +- .../prevalidator_pending_operations.ml | 7 +- .../prevalidator_pending_operations.mli | 49 +- src/proto_010_PtGRANAD/lib_plugin/plugin.ml | 6 +- src/proto_011_PtHangz2/lib_plugin/plugin.ml | 6 +- src/proto_012_PsiThaCa/lib_plugin/plugin.ml | 9 +- src/proto_alpha/lib_plugin/plugin.ml | 9 +- 14 files changed, 514 insertions(+), 443 deletions(-) diff --git a/src/lib_protocol_updater/registered_protocol.mli b/src/lib_protocol_updater/registered_protocol.mli index 75ea486d72..30cab1b572 100644 --- a/src/lib_protocol_updater/registered_protocol.mli +++ b/src/lib_protocol_updater/registered_protocol.mli @@ -88,6 +88,7 @@ module Register_embedded_V2 T with type P.block_header_data = Proto.block_header_data and type P.operation_data = Proto.operation_data + and type P.operation = Proto.operation and type P.operation_receipt = Proto.operation_receipt and type P.validation_state = Proto.validation_state @@ -101,6 +102,7 @@ module Register_embedded_V3 T with type P.block_header_data = Proto.block_header_data and type P.operation_data = Proto.operation_data + and type P.operation = Proto.operation and type P.operation_receipt = Proto.operation_receipt and type P.validation_state = Proto.validation_state @@ -114,5 +116,6 @@ module Register_embedded_V4 T with type P.block_header_data = Proto.block_header_data and type P.operation_data = Proto.operation_data + and type P.operation = Proto.operation and type P.operation_receipt = Proto.operation_receipt and type P.validation_state = Proto.validation_state diff --git a/src/lib_shell/prevalidation.ml b/src/lib_shell/prevalidation.ml index 312f0735c0..2a1182d238 100644 --- a/src/lib_shell/prevalidation.ml +++ b/src/lib_shell/prevalidation.ml @@ -27,10 +27,10 @@ open Validation_errors -type 'operation_data operation = { +type 'protocol_operation operation = { hash : Operation_hash.t; raw : Operation.t; - protocol_data : 'operation_data; + protocol : 'protocol_operation; } type error += Endorsement_branch_not_live @@ -56,7 +56,7 @@ module type CHAIN_STORE = sig end module type T = sig - type operation_data + type protocol_operation type operation_receipt @@ -66,9 +66,8 @@ module type T = sig type t - val parse : Operation.t -> operation_data operation tzresult - - val parse_unsafe : bytes -> operation_data tzresult + val parse : + Operation_hash.t -> Operation.t -> protocol_operation operation tzresult val create : chain_store -> @@ -86,14 +85,15 @@ module type T = sig | Refused of tztrace | Outdated of tztrace - val apply_operation : t -> operation_data operation -> result Lwt.t + val apply_operation : t -> protocol_operation operation -> result Lwt.t val validation_state : t -> validation_state val pp_result : Format.formatter -> result -> unit module Internal_for_tests : sig - val to_applied : t -> (operation_data operation * operation_receipt) list + val to_applied : + t -> (protocol_operation operation * operation_receipt) list end end @@ -108,11 +108,11 @@ module MakeAbstract (Chain_store : CHAIN_STORE) (Proto : Tezos_protocol_environment.PROTOCOL) : T - with type operation_data = Proto.operation_data + with type protocol_operation = Proto.operation and type operation_receipt = Proto.operation_receipt and type validation_state = Proto.validation_state and type chain_store = Chain_store.chain_store = struct - type operation_data = Proto.operation_data + type protocol_operation = Proto.operation type operation_receipt = Proto.operation_receipt @@ -122,7 +122,7 @@ module MakeAbstract type t = { state : Proto.validation_state; - applied : (Proto.operation_data operation * Proto.operation_receipt) list; + applied : (protocol_operation operation * Proto.operation_receipt) list; live_operations : Operation_hash.Set.t; } @@ -136,13 +136,13 @@ module MakeAbstract let parse_unsafe (proto : bytes) : Proto.operation_data tzresult = safe_binary_of_bytes Proto.operation_data_encoding proto - let parse (raw : Operation.t) = - let hash = Operation.hash raw in + let parse hash (raw : Operation.t) = let size = Data_encoding.Binary.length Operation.encoding raw in if size > Proto.max_operation_data_length then error (Oversized_operation {size; max = Proto.max_operation_data_length}) else - parse_unsafe raw.proto >|? fun protocol_data -> {hash; raw; protocol_data} + parse_unsafe raw.proto >|? fun protocol_data -> + {hash; raw; protocol = {Proto.shell = raw.Operation.shell; protocol_data}} let create chain_store ?protocol_data ~predecessor ~live_operations ~timestamp () = @@ -201,10 +201,7 @@ module MakeAbstract hence the returned error. *) Lwt.return (Outdated [Endorsement_branch_not_live]) else - protect (fun () -> - Proto.apply_operation - pv.state - {shell = op.raw.shell; protocol_data = op.protocol_data}) + protect (fun () -> Proto.apply_operation pv.state op.protocol) >|= function | Ok (state, receipt) -> ( let pv = @@ -260,7 +257,7 @@ end module Make (Proto : Tezos_protocol_environment.PROTOCOL) : T - with type operation_data = Proto.operation_data + with type protocol_operation = Proto.operation and type operation_receipt = Proto.operation_receipt and type validation_state = Proto.validation_state and type chain_store = Production_chain_store.chain_store = diff --git a/src/lib_shell/prevalidation.mli b/src/lib_shell/prevalidation.mli index b594e6a099..324c9a5a94 100644 --- a/src/lib_shell/prevalidation.mli +++ b/src/lib_shell/prevalidation.mli @@ -29,12 +29,12 @@ consistency. This module is stateless and creates and manipulates the prevalidation_state. *) -type 'operation_data operation = private { +type 'protocol_operation operation = private { hash : Operation_hash.t; (** Hash of an operation. *) raw : Operation.t; (** Raw representation of an operation (from the point view of the shell). *) - protocol_data : 'operation_data; + protocol : 'protocol_operation; (** Economic protocol specific data of an operation. It is the unserialized representation of [raw.protocol_data]. For convenience, the type associated to this type may be [unit] if we @@ -43,8 +43,8 @@ type 'operation_data operation = private { module type T = sig (** Similar to the same type in the protocol, - see {!Tezos_protocol_environment.PROTOCOL} *) - type operation_data + see {!Tezos_protocol_environment.PROTOCOL.operation} *) + type protocol_operation (** Similar to the same type in the protocol, see {!Tezos_protocol_environment.PROTOCOL} *) @@ -62,22 +62,15 @@ module type T = sig then passed back and possibly updated by {!apply_operation}. *) type t - (** [parse op] reads a usual {!Operation.t} and lifts it to the - type {!operation} used by this module. This function is in the + (** [parse hash op] reads a usual {!Operation.t} and lifts it to the + type {!protocol_operation} used by this module. This function is in the {!tzresult} monad, because it can return the following errors: - {!Validation_errors.Oversized_operation} if the size of the operation data within [op] is too large (to protect against DoS attacks), and - {!Validation_errors.Parse_error} if serialized data cannot be parsed. *) - val parse : Operation.t -> operation_data operation tzresult - - (** [parse_unsafe bytes] parses [bytes] as operation data. Any error - happening during parsing becomes {!Parse_error}. - - [unsafe] because there are no length checks, unlike {!parse}. - - @deprecated You should use [parse] instead. *) - val parse_unsafe : bytes -> operation_data tzresult + val parse : + Operation_hash.t -> Operation.t -> protocol_operation operation tzresult (** Creates a new prevalidation context w.r.t. the protocol associate to the predecessor block . When ?protocol_data is passed to this function, it will @@ -102,7 +95,7 @@ module type T = sig (** [apply_operation t op] calls the protocol [apply_operation] function and handles possible errors, hereby yielding a classification *) - val apply_operation : t -> operation_data operation -> result Lwt.t + val apply_operation : t -> protocol_operation operation -> result Lwt.t (** [validation_state t] returns the subset of [t] corresponding to the type {!validation_state} of the protocol. *) @@ -113,14 +106,15 @@ module type T = sig module Internal_for_tests : sig (** Returns operations for which {!apply_operation} returned [Applied _] so far. *) - val to_applied : t -> (operation_data operation * operation_receipt) list + val to_applied : + t -> (protocol_operation operation * operation_receipt) list end end (** How-to obtain an instance of this module's main module type: {!T} *) module Make : functor (Proto : Tezos_protocol_environment.PROTOCOL) -> T - with type operation_data = Proto.operation_data + with type protocol_operation = Proto.operation and type operation_receipt = Proto.operation_receipt and type validation_state = Proto.validation_state and type chain_store = Store.chain_store @@ -159,7 +153,7 @@ module Internal_for_tests : sig (Proto : Tezos_protocol_environment.PROTOCOL) -> T - with type operation_data = Proto.operation_data + with type protocol_operation = Proto.operation and type operation_receipt = Proto.operation_receipt and type validation_state = Proto.validation_state and type chain_store = Chain_store.chain_store diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index b537aa193a..8dee0b788a 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -2,7 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) -(* Copyright (c) 2018-2021 Nomadic Labs, *) +(* Copyright (c) 2018-2022 Nomadic Labs, *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) @@ -75,9 +75,8 @@ classify an operation as [Refused], [Branch_refused], [Branch_delayed], [Outdated] or [Applied]. - - An operation is [Refused] if the operation cannot be parsed or - if the protocol rejects this operation with an error classified as - [Permanent]. + - An operation is [Refused] if the protocol rejects this + operation with an error classified as [Permanent]. - An operation is [Outdated] if the operation is too old to be applied anymore or if the protocol rejects this operation with an @@ -204,9 +203,6 @@ of a [Worker], such as what happens when it starts and when it is shutdown. Except for initialization, the [Handlers] module is mostly boilerplate. *) -(* FIXME: https://gitlab.com/tezos/tezos/-/issues/1491 - This module should not use [Prevalidation.parse_unsafe] *) - open Prevalidator_worker_state module Event = Prevalidator_event @@ -307,15 +303,15 @@ module Pending_ops = Prevalidator_pending_operations (** The type needed for the implementation of [Make] below, but * which is independent from the protocol. *) -type types_state_shell = { - classification : Classification.t; +type 'protocol_data types_state_shell = { + classification : 'protocol_data Classification.t; parameters : parameters; mutable predecessor : Store.Block.t; mutable timestamp : Time.System.t; mutable live_blocks : Block_hash.Set.t; mutable live_operations : Operation_hash.Set.t; mutable fetching : Operation_hash.Set.t; - mutable pending : Pending_ops.t; + mutable pending : 'protocol_data Pending_ops.t; mutable mempool : Mempool.t; mutable advertisement : [`Pending of Mempool.t | `None]; mutable banned_operations : Operation_hash.Set.t; @@ -358,9 +354,9 @@ module type T = sig (** Type instantiated by {!Filter.Mempool.config}. *) type filter_config - (** Similar to the same type in the protocol, + (** Similar to the type [operation] from the protocol, see {!Tezos_protocol_environment.PROTOCOL} *) - type operation_data + type protocol_operation (** Type instantiated by {!Prevalidation.t} *) type prevalidation_t @@ -368,15 +364,13 @@ module type T = sig val name : Name.t type types_state = { - shell : types_state_shell; + shell : protocol_operation types_state_shell; mutable filter_state : filter_state; (** Internal state of the filter in the plugin *) mutable validation_state : prevalidation_t tzresult; mutable operation_stream : (Classification.classification - * Operation_hash.t - * Operation.shell_header - * operation_data) + * protocol_operation Prevalidation.operation) Lwt_watcher.input; mutable rpc_directory : types_state RPC_directory.t lazy_t; mutable filter_config : filter_config; @@ -415,20 +409,20 @@ module Make (Prevalidation_t : Prevalidation.T with type validation_state = Filter.Proto.validation_state - and type operation_data = Filter.Proto.operation_data + and type protocol_operation = Filter.Proto.operation and type operation_receipt = Filter.Proto.operation_receipt and type chain_store = Store.chain_store) : T with type filter_state = Filter.Mempool.state and type filter_config = Filter.Mempool.config - and type operation_data = Filter.Proto.operation_data + and type protocol_operation = Filter.Proto.operation and type prevalidation_t = Prevalidation_t.t = struct type filter_state = Filter.Mempool.state type filter_config = Filter.Mempool.config - type operation_data = Filter.Proto.operation_data + type protocol_operation = Filter.Proto.operation type prevalidation_t = Prevalidation_t.t @@ -437,14 +431,12 @@ module Make type 'operation_data operation = 'operation_data Prevalidation.operation type types_state = { - shell : types_state_shell; + shell : protocol_operation types_state_shell; mutable filter_state : filter_state; mutable validation_state : prevalidation_t tzresult; mutable operation_stream : (Classification.classification - * Operation_hash.t - * Operation.shell_header - * Filter.Proto.operation_data) + * protocol_operation Prevalidation.operation) Lwt_watcher.input; mutable rpc_directory : types_state RPC_directory.t lazy_t; mutable filter_config : filter_config; @@ -481,9 +473,11 @@ module Make (Pending_ops.mem oph shell.pending || Operation_hash.Set.mem oph shell.fetching || Operation_hash.Set.mem oph shell.live_operations - || Classification.is_in_mempool oph shell.classification <> None) + || Classification.is_in_mempool oph shell.classification <> None + || Classification.is_known_unparsable oph shell.classification) - let advertise (w : worker) (shell : types_state_shell) mempool = + let advertise (w : worker) (shell : 'operation_data types_state_shell) mempool + = match shell.advertisement with | `Pending {Mempool.known_valid; pending} -> shell.advertisement <- @@ -507,57 +501,35 @@ module Make let handle_classification ~(notifier : Classification.classification -> - Operation_hash.t -> - Operation.shell_header -> - Filter.Proto.operation_data -> + protocol_operation Prevalidation.operation -> unit) shell (op, kind) = - (match op with - | `Parsed ({hash; raw; _} : Filter.Proto.operation_data operation) - | `Unparsed (hash, raw) -> - Classification.add kind hash raw shell.classification) ; - match op with - | `Parsed - ({raw; protocol_data; hash} : Filter.Proto.operation_data operation) -> - notifier kind hash raw.shell protocol_data - | _ -> () - - let mk_notifier operation_stream classification hash shell_header op_data = + Classification.add kind op shell.classification ; + notifier kind op + + let mk_notifier operation_stream classification op = (* This callback is safe encapsulation-wise, because it depends on an "harmless" field of [types_state_shell]: [operation_stream] *) - Lwt_watcher.notify - operation_stream - (classification, hash, shell_header, op_data) - - let pre_filter shell ~filter_config ~filter_state ~validation_state ~chain_db - ~notifier oph raw : [`High | `Low | `Drop] Lwt.t = - match Prevalidation_t.parse raw with - | Error _ -> - Event.(emit unparsable_operation) oph >|= fun () -> - Distributed_db.Operation.clear_or_cancel chain_db oph ; + Lwt_watcher.notify operation_stream (classification, op) + + let pre_filter shell ~filter_config ~filter_state ~validation_state ~notifier + (parsed_op : protocol_operation operation) : [`High | `Low | `Drop] Lwt.t + = + let validation_state_before = + Option.map + Prevalidation_t.validation_state + (Option.of_result validation_state) + in + Filter.Mempool.pre_filter + ~filter_state + ?validation_state_before + filter_config + parsed_op.protocol + >|= function + | (`Branch_delayed _ | `Branch_refused _ | `Refused _ | `Outdated _) as errs + -> + handle_classification ~notifier shell (parsed_op, errs) ; `Drop - | Ok parsed_op -> ( - let op = - { - Filter.Proto.shell = raw.shell; - protocol_data = parsed_op.protocol_data; - } - in - let validation_state_before = - Option.map - Prevalidation_t.validation_state - (Option.of_result validation_state) - in - Filter.Mempool.pre_filter - ~filter_state - ?validation_state_before - filter_config - op.Filter.Proto.protocol_data - >|= function - | (`Branch_delayed _ | `Branch_refused _ | `Refused _ | `Outdated _) as - errs -> - handle_classification ~notifier shell (`Parsed parsed_op, errs) ; - `Drop - | `Passed_prefilter priority -> (priority :> [`High | `Low | `Drop])) + | `Passed_prefilter priority -> (priority :> [`High | `Low | `Drop]) let post_filter ~filter_config ~filter_state ~validation_state_before ~validation_state_after op receipt = @@ -593,17 +565,9 @@ module Make shell.advertisement <- remove_from_advertisement old_hash shell.advertisement ; match Classification.remove old_hash shell.classification with - | Some (op, _class) -> ( - (* In this block, we add [old_hash] to the classification. This - does not break the "classes are disjoint" invariant, because we - just removed [old_hash] with [!Classification.remove] above. *) - match Prevalidation_t.parse op with - | Error errors -> - (* This should likely not happen, as we already parsed the op *) - [(`Unparsed (old_hash, op), `Refused errors)] - | Ok op -> - let err = Manager_operation_replaced {old_hash; new_hash} in - [(`Parsed op, `Outdated [err])]) + | Some (op, _class) -> + let err = Manager_operation_replaced {old_hash; new_hash} in + [(op, `Outdated [err])] | None -> (* This case should not happen. *) Distributed_db.Operation.clear_or_cancel @@ -612,7 +576,7 @@ module Make [] let precheck ~disable_precheck ~filter_config ~filter_state ~validation_state - oph (op : Filter.Proto.operation_data operation) = + (op : protocol_operation operation) = let validation_state = Prevalidation_t.validation_state validation_state in if disable_precheck then Lwt.return `Undecided else @@ -620,9 +584,8 @@ module Make filter_config ~filter_state ~validation_state - op.raw.shell - oph - op.protocol_data + op.hash + op.protocol >|= function | `Passed_precheck filter_state -> (* The [precheck] optimization triggers: no need to call the @@ -660,79 +623,64 @@ module Make (eg. in case of operation replacement). *) let classify_operation shell ~filter_config ~filter_state ~validation_state - mempool op oph : + mempool op : (filter_state * prevalidation_t * Mempool.t - * ([> `Parsed of operation_data operation - | `Unparsed of Operation_hash.t * Operation.t ] - * Classification.classification) - trace) + * (protocol_operation operation * Classification.classification) trace) Lwt.t = - match Prevalidation_t.parse op with - | Error errors -> - (* not even able to parse the operation *) - Lwt.return - ( filter_state, - validation_state, - mempool, - [(`Unparsed (oph, op), `Refused errors)] ) - | Ok op -> ( - (precheck - ~disable_precheck:shell.parameters.limits.disable_precheck - ~filter_config - ~filter_state - ~validation_state - oph - op + (precheck + ~disable_precheck:shell.parameters.limits.disable_precheck + ~filter_config + ~filter_state + ~validation_state + op + >>= function + | `Fail errs -> + (* Precheck rejected the operation *) + Lwt.return_error errs + | `Passed_precheck filter_state -> + (* Precheck succeeded *) + Lwt.return_ok ((filter_state, validation_state), [], `Prechecked) + | `Passed_precheck_with_replace (old_oph, filter_state) -> + (* Precheck succeeded, but an old operation is replaced *) + let to_handle = reclassify_replaced_manager_op old_oph op.hash shell in + Lwt.return_ok ((filter_state, validation_state), to_handle, `Prechecked) + | `Undecided -> ( + (* Precheck was not able to classify *) + Prevalidation_t.apply_operation validation_state op >>= function - | `Fail errs -> - (* Precheck rejected the operation *) - Lwt.return_error errs - | `Passed_precheck filter_state -> - (* Precheck succeeded *) - Lwt.return_ok ((filter_state, validation_state), [], `Prechecked) - | `Passed_precheck_with_replace (old_oph, filter_state) -> - (* Precheck succeeded, but an old operation is replaced *) - let to_handle = reclassify_replaced_manager_op old_oph oph shell in - Lwt.return_ok - ((filter_state, validation_state), to_handle, `Prechecked) - | `Undecided -> ( - (* Precheck was not able to classify *) - Prevalidation_t.apply_operation validation_state op + | Applied (new_validation_state, receipt) -> ( + (* Apply succeeded, call post_filter *) + post_filter + ~filter_config + ~filter_state + ~validation_state_before: + (Prevalidation_t.validation_state validation_state) + ~validation_state_after: + (Prevalidation_t.validation_state new_validation_state) + op.protocol + receipt >>= function - | Applied (new_validation_state, receipt) -> ( - (* Apply succeeded, call post_filter *) - post_filter - ~filter_config - ~filter_state - ~validation_state_before: - (Prevalidation_t.validation_state validation_state) - ~validation_state_after: - (Prevalidation_t.validation_state new_validation_state) - op.protocol_data - receipt - >>= function - | `Passed_postfilter new_filter_state -> - (* Post_filter ok, accept operation *) - Lwt.return_ok - ((new_filter_state, new_validation_state), [], `Applied) - | `Refused _ as op_class -> - (* Post_filter refused the operation *) - Lwt.return_error op_class) - (* Apply rejected the operation *) - | Branch_delayed e -> Lwt.return_error (`Branch_delayed e) - | Branch_refused e -> Lwt.return_error (`Branch_refused e) - | Refused e -> Lwt.return_error (`Refused e) - | Outdated e -> Lwt.return_error (`Outdated e))) - >>= function - | Error op_class -> - Lwt.return - (filter_state, validation_state, mempool, [(`Parsed op, op_class)]) - | Ok ((f_state, v_state), to_handle, op_class) -> - let mempool = Mempool.cons_valid op.hash mempool in - let to_handle = (`Parsed op, op_class) :: to_handle in - Lwt.return (f_state, v_state, mempool, to_handle)) + | `Passed_postfilter new_filter_state -> + (* Post_filter ok, accept operation *) + Lwt.return_ok + ((new_filter_state, new_validation_state), [], `Applied) + | `Refused _ as op_class -> + (* Post_filter refused the operation *) + Lwt.return_error op_class) + (* Apply rejected the operation *) + | Branch_delayed e -> Lwt.return_error (`Branch_delayed e) + | Branch_refused e -> Lwt.return_error (`Branch_refused e) + | Refused e -> Lwt.return_error (`Refused e) + | Outdated e -> Lwt.return_error (`Outdated e))) + >>= function + | Error op_class -> + Lwt.return (filter_state, validation_state, mempool, [(op, op_class)]) + | Ok ((f_state, v_state), to_handle, op_class) -> + let mempool = Mempool.cons_valid op.hash mempool in + let to_handle = (op, op_class) :: to_handle in + Lwt.return (f_state, v_state, mempool, to_handle) (* Classify pending operations into either: [Refused | Branch_delayed | Branch_refused | Applied | Outdated]. @@ -772,7 +720,6 @@ module Make ~validation_state:acc_validation_state acc_mempool op - oph >|= fun ( new_filter_state, new_validation_state, new_mempool, @@ -823,11 +770,8 @@ module Make (* At the time this comment was written (26/05/21), this is dead code since [Proto.begin_construction] cannot fail. *) Pending_ops.iter - (fun _prio oph op -> - handle_classification - ~notifier - pv.shell - (`Unparsed (oph, op), `Branch_delayed err)) + (fun _prio _oph op -> + handle_classification ~notifier pv.shell (op, `Branch_delayed err)) pv.shell.pending ; pv.shell.pending <- Pending_ops.empty ; Lwt.return_unit @@ -850,7 +794,7 @@ module Make (* This function fetches one operation through the [distributed_db]. On errors, we emit an event and proceed as usual. *) - let fetch_operation w (shell : types_state_shell) ?peer oph = + let fetch_operation w (shell : 'operation_data types_state_shell) ?peer oph = Event.(emit fetching_operation) oph >|= fun () -> Distributed_db.Operation.fetch ~timeout:shell.parameters.limits.operation_timeout @@ -879,7 +823,8 @@ module Make promise [p] is terminated, we remove the operation from the fetching operations. This is to ensure that if an error happened, we can still fetch this operation in the future. *) - let may_fetch_operation w (shell : types_state_shell) peer oph = + let may_fetch_operation w (shell : 'operation_data types_state_shell) peer oph + = let origin = match peer with | Some peer -> Format.asprintf "notified by %a" P2p_peer.Id.pp peer @@ -905,33 +850,40 @@ module Make already_handled ~origin:"arrived" pv.shell oph >>= fun already_handled -> if already_handled then return_unit else - pre_filter - pv.shell - ~filter_config:pv.filter_config - ~filter_state:pv.filter_state - ~validation_state:pv.validation_state - ~chain_db:pv.shell.parameters.chain_db - ~notifier:(mk_notifier pv.operation_stream) - oph - op - >>= function - | `Drop -> return_unit - | (`High | `Low) as prio -> - if - not - (Block_hash.Set.mem - op.Operation.shell.branch - pv.shell.live_blocks) - then ( - Distributed_db.Operation.clear_or_cancel - pv.shell.parameters.chain_db - oph ; - return_unit) - else ( - (* TODO: https://gitlab.com/tezos/tezos/-/issues/1723 - Should this have an influence on the peer's score ? *) - pv.shell.pending <- Pending_ops.add oph op prio pv.shell.pending ; - return_unit) + match Prevalidation_t.parse oph op with + | Error _ -> + Event.(emit unparsable_operation) oph >|= fun () -> + Prevalidator_classification.add_unparsable + oph + pv.shell.classification ; + ok () + | Ok parsed_op -> ( + pre_filter + pv.shell + ~filter_config:pv.filter_config + ~filter_state:pv.filter_state + ~validation_state:pv.validation_state + ~notifier:(mk_notifier pv.operation_stream) + parsed_op + >>= function + | `Drop -> return_unit + | (`High | `Low) as prio -> + if + not + (Block_hash.Set.mem + op.Operation.shell.branch + pv.shell.live_blocks) + then ( + Distributed_db.Operation.clear_or_cancel + pv.shell.parameters.chain_db + oph ; + return_unit) + else ( + (* TODO: https://gitlab.com/tezos/tezos/-/issues/1723 + Should this have an influence on the peer's score ? *) + pv.shell.pending <- + Pending_ops.add parsed_op prio pv.shell.pending ; + return_unit)) let on_inject w (pv : state) ~force op = let oph = Operation.hash op in @@ -946,79 +898,101 @@ module Make (* FIXME: https://gitlab.com/tezos/tezos/-/issues/1722 Is this an error? *) return_unit - else if force then ( - Distributed_db.inject_operation pv.shell.parameters.chain_db oph op - >>= fun (_ : bool) -> - pv.shell.pending <- Pending_ops.add oph op prio pv.shell.pending ; - return_unit) - else if - not (Block_hash.Set.mem op.Operation.shell.branch pv.shell.live_blocks) - then - failwith - "Operation %a is branched on a block %a which is too old" - Operation_hash.pp - oph - Block_hash.pp - op.Operation.shell.branch else - pv.validation_state >>?= fun validation_state -> - let notifier = mk_notifier pv.operation_stream in - classify_operation - pv.shell - ~filter_config:pv.filter_config - ~filter_state:pv.filter_state - ~validation_state - Mempool.empty - op - oph - >>= fun (filter_state, validation_state, delta_mempool, to_handle) -> - let op_status = - (* to_handle contains the given operation and its classification, and - all operations whose classes are changed/impacted by this - classification (eg. in case of operation replacement). Here, we - retrieve the classification of our operation. *) - List.find_opt - (function - | (`Parsed ({hash; _} : Filter.Proto.operation_data operation), _) - | (`Unparsed (hash, _), _) -> - Operation_hash.equal hash oph) - to_handle - in - match op_status with - | Some (_h, (`Applied | `Prechecked)) -> - (* TODO: https://gitlab.com/tezos/tezos/-/issues/2294 - In case of `Passed_precheck_with_replace, we may want to only do - the injection/replacement if a flag `replace` is set to true - in the injection query. *) - Distributed_db.inject_operation pv.shell.parameters.chain_db oph op - >>= fun (_ : bool) -> - (* Call handle & update_advertised_mempool only if op is accepted *) - List.iter (handle_classification ~notifier pv.shell) to_handle ; - pv.filter_state <- filter_state ; - pv.validation_state <- Ok validation_state ; - (* Note that in this case, we may advertise an operation and bypass - the prioritirization strategy. *) - update_advertised_mempool_fields w pv.shell delta_mempool >>= return - | Some - ( _h, - (`Branch_delayed e | `Branch_refused e | `Refused e | `Outdated e) - ) -> - Lwt.return - @@ error_with - "Error while applying operation %a:@ %a" - Operation_hash.pp - oph - pp_print_trace - e - | None -> - (* This case should not happen *) + match Prevalidation_t.parse oph op with + | Error err -> failwith - "Unexpected error while injecting operation %a. Operation not \ - found after classifying it." + "Invalid operation %a: %a." Operation_hash.pp oph - - let on_notify w (shell : types_state_shell) peer mempool = + Error_monad.pp_print_trace + err + | Ok parsed_op -> ( + if force then ( + Distributed_db.inject_operation + pv.shell.parameters.chain_db + oph + op + >>= fun (_ : bool) -> + pv.shell.pending <- + Pending_ops.add parsed_op prio pv.shell.pending ; + return_unit) + else if + not + (Block_hash.Set.mem + op.Operation.shell.branch + pv.shell.live_blocks) + then + failwith + "Operation %a is branched on a block %a which is too old" + Operation_hash.pp + oph + Block_hash.pp + op.Operation.shell.branch + else + pv.validation_state >>?= fun validation_state -> + let notifier = mk_notifier pv.operation_stream in + classify_operation + pv.shell + ~filter_config:pv.filter_config + ~filter_state:pv.filter_state + ~validation_state + Mempool.empty + parsed_op + >>= fun (filter_state, validation_state, delta_mempool, to_handle) + -> + let op_status = + (* to_handle contains the given operation and its classification, and + all operations whose classes are changed/impacted by this + classification (eg. in case of operation replacement). Here, we + retrieve the classification of our operation. *) + List.find_opt + (function + | (({hash; _} : protocol_operation operation), _) -> + Operation_hash.equal hash oph) + to_handle + in + match op_status with + | Some (_h, (`Applied | `Prechecked)) -> + (* TODO: https://gitlab.com/tezos/tezos/-/issues/2294 + In case of `Passed_precheck_with_replace, we may want to only do + the injection/replacement if a flag `replace` is set to true + in the injection query. *) + Distributed_db.inject_operation + pv.shell.parameters.chain_db + oph + op + >>= fun (_ : bool) -> + (* Call handle & update_advertised_mempool only if op is accepted *) + List.iter (handle_classification ~notifier pv.shell) to_handle ; + pv.filter_state <- filter_state ; + pv.validation_state <- Ok validation_state ; + (* Note that in this case, we may advertise an operation and bypass + the prioritirization strategy. *) + update_advertised_mempool_fields w pv.shell delta_mempool + >>= return + | Some + ( _h, + ( `Branch_delayed e + | `Branch_refused e + | `Refused e + | `Outdated e ) ) -> + Lwt.return + @@ error_with + "Error while applying operation %a:@ %a" + Operation_hash.pp + oph + pp_print_trace + e + | None -> + (* This case should not happen *) + failwith + "Unexpected error while injecting operation %a. Operation \ + not found after classifying it." + Operation_hash.pp + oph) + + let on_notify w (shell : 'operation_data types_state_shell) peer mempool = let may_fetch_operation = may_fetch_operation w shell (Some peer) in List.iter_s may_fetch_operation mempool.Mempool.known_valid >>= fun () -> Seq.iter_s @@ -1062,7 +1036,8 @@ module Make ~from_branch:old_predecessor ~to_branch:new_predecessor ~live_blocks:new_live_blocks - ~classification:pv.shell.classification + ~parse:(fun oph op -> Result.to_option (Prevalidation_t.parse oph op)) + ~classes:pv.shell.classification ~pending:(Pending_ops.operations pv.shell.pending) ~block_store:block_tools ~chain:(mk_chain_tools pv.shell.parameters.chain_db) @@ -1071,22 +1046,20 @@ module Make (* Could be implemented as Operation_hash.Map.filter_s which does not exist for the moment. *) Operation_hash.Map.fold_s - (fun oph op (pending, nb_pending) -> + (fun _oph op (pending, nb_pending) -> pre_filter pv.shell ~filter_config:pv.filter_config ~filter_state:pv.filter_state ~validation_state:pv.validation_state - ~chain_db:pv.shell.parameters.chain_db ~notifier:(mk_notifier pv.operation_stream) - oph op >|= function | `Drop -> (pending, nb_pending) | (`High | `Low) as prio -> (* Here, an operation injected in this node with `High priority will now get its approriate priority. *) - (Pending_ops.add oph op prio pending, nb_pending + 1)) + (Pending_ops.add op prio pending, nb_pending + 1)) new_pending_operations (Pending_ops.empty, 0) >>= fun (new_pending_operations, nb_pending) -> @@ -1094,7 +1067,7 @@ module Make pv.shell.pending <- new_pending_operations ; set_mempool pv.shell Mempool.empty - let on_advertise (shell : types_state_shell) = + let on_advertise (shell : 'protocol_data types_state_shell) = match shell.advertisement with | `None -> () (* May happen if nothing to advertise since last advertisement. *) @@ -1242,23 +1215,13 @@ module Make !dir (Proto_services.S.Mempool.pending_operations RPC_path.open_root) (fun pv params () -> - let map_op op = - match Prevalidation_t.parse_unsafe op.Operation.proto with - | Ok protocol_data -> - Some {Filter.Proto.shell = op.shell; protocol_data} - | Error _ -> None - in let map_op_error oph (op, error) acc = - match map_op op with - | None -> acc - | Some res -> Operation_hash.Map.add oph (res, error) acc + op.Prevalidation.protocol |> fun res -> + Operation_hash.Map.add oph (res, error) acc in let applied = - List.rev_filter_map - (fun (hash, op) -> - match map_op op with - | Some op -> Some (hash, op) - | None -> None) + List.rev_map + (fun (oph, op) -> (oph, op.Prevalidation.protocol)) pv.shell.classification.applied_rev in let filter f map = @@ -1287,9 +1250,7 @@ module Make let unprocessed = Pending_ops.fold (fun _prio oph op acc -> - match map_op op with - | Some op -> Operation_hash.Map.add oph op acc - | None -> acc) + Operation_hash.Map.add oph op.protocol acc) pv.shell.pending Operation_hash.Map.empty in @@ -1302,9 +1263,8 @@ module Make reflect that. *) let prechecked_with_applied = (Operation_hash.Map.bindings pv.shell.classification.prechecked - |> List.rev_filter_map (fun (oph, op) -> - Option.map (fun proto_op -> (oph, proto_op)) (map_op op)) - ) + |> List.rev_map (fun (oph, op) -> + (oph, op.Prevalidation.protocol))) @ applied in let pending_operations = @@ -1340,24 +1300,16 @@ module Make Lwt_watcher.create_stream pv.operation_stream in (* Convert ops *) - let map_op error (hash, op) = - match Prevalidation_t.parse_unsafe op.Operation.proto with - | Error _ -> None - | Ok protocol_data -> - Some - ( hash, - Filter.Proto.{shell = op.shell; protocol_data}, - error ) + let map_op error (_hash, Prevalidation.{protocol = op; hash; _}) = + (hash, op, error) in let fold_op hash (op, error) acc = - match map_op error (hash, op) with - | Some op -> op :: acc - | None -> acc + map_op error (hash, op) :: acc in (* First call : retrieve the current set of op from the mempool *) let applied = if params#applied then - List.filter_map (map_op []) pv.shell.classification.applied_rev + List.map (map_op []) pv.shell.classification.applied_rev else [] in (* FIXME https://gitlab.com/tezos/tezos/-/issues/2250 @@ -1367,7 +1319,7 @@ module Make let prechecked = if params#applied then Operation_hash.Map.bindings pv.shell.classification.prechecked - |> List.filter_map (map_op []) + |> List.map (map_op []) else [] in let refused = @@ -1416,8 +1368,7 @@ module Make Lwt.return_some mempool | None -> ( Lwt_stream.get op_stream >>= function - | Some (kind, hash, shell, protocol_data) - when filter_result kind -> + | Some (kind, op) when filter_result kind -> let errors = match kind with | `Prechecked | `Applied -> None @@ -1428,7 +1379,7 @@ module Make Some errors in Lwt.return_some - [((hash, {Filter.Proto.shell; protocol_data}), errors)] + [(Prevalidation.(op.hash, op.protocol), errors)] | Some _ -> next () | None -> Lwt.return_none) in diff --git a/src/lib_shell/prevalidator_classification.ml b/src/lib_shell/prevalidator_classification.ml index 0adf9d9d9f..ad312cb7c4 100644 --- a/src/lib_shell/prevalidator_classification.ml +++ b/src/lib_shell/prevalidator_classification.ml @@ -52,9 +52,10 @@ type classification = All operations must maintain integrity between the 2! *) -type bounded_map = { +type 'protocol_data bounded_map = { ring : Operation_hash.t Ringo.Ring.t; - mutable map : (Operation.t * error list) Operation_hash.Map.t; + mutable map : + ('protocol_data Prevalidation.operation * error list) Operation_hash.Map.t; } let map bounded_map = bounded_map.map @@ -74,15 +75,20 @@ type parameters = { See the mli for detailed documentation. All operations must maintain the invariant about [in_mempool] described in the mli. *) -type t = { +type 'protocol_data t = { parameters : parameters; - refused : bounded_map; - outdated : bounded_map; - branch_refused : bounded_map; - branch_delayed : bounded_map; - mutable applied_rev : (Operation_hash.t * Operation.t) list; - mutable prechecked : Operation.t Operation_hash.Map.t; - mutable in_mempool : (Operation.t * classification) Operation_hash.Map.t; + refused : 'protocol_data bounded_map; + outdated : 'protocol_data bounded_map; + branch_refused : 'protocol_data bounded_map; + branch_delayed : 'protocol_data bounded_map; + mutable applied_rev : + (Operation_hash.t * 'protocol_data Prevalidation.operation) list; + mutable prechecked : + 'protocol_data Prevalidation.operation Operation_hash.Map.t; + mutable unparsable : Operation_hash.Set.t; + mutable in_mempool : + ('protocol_data Prevalidation.operation * classification) + Operation_hash.Map.t; } let create parameters = @@ -93,6 +99,7 @@ let create parameters = branch_refused = mk_empty_bounded_map parameters.map_size_limit; branch_delayed = mk_empty_bounded_map parameters.map_size_limit; prechecked = Operation_hash.Map.empty; + unparsable = Operation_hash.Set.empty; in_mempool = Operation_hash.Map.empty; applied_rev = []; } @@ -109,12 +116,15 @@ let is_empty branch_delayed = _; prechecked = _; applied_rev = _; + unparsable; in_mempool; } = (* By checking only [in_mempool] here, we rely on the invariant that [in_mempool] is the union of all other fields (see the MLI for - detailed documentation of this invariant). *) + detailed documentation of this invariant) except unparsable + operations which are not classified yet. *) Operation_hash.Map.is_empty in_mempool + && Operation_hash.Set.is_empty unparsable let set_of_bounded_map bounded_map = Operation_hash.Map.fold @@ -122,7 +132,7 @@ let set_of_bounded_map bounded_map = bounded_map.map Operation_hash.Set.empty -let flush (classes : t) ~handle_branch_refused = +let flush (classes : 'protocol_data t) ~handle_branch_refused = let remove_map_from_in_mempool map = classes.in_mempool <- Operation_hash.Map.fold @@ -147,10 +157,14 @@ let flush (classes : t) ~handle_branch_refused = remove_list_from_in_mempool classes.applied_rev ; classes.applied_rev <- [] ; remove_map_from_in_mempool classes.prechecked ; + classes.unparsable <- Operation_hash.Set.empty ; classes.prechecked <- Operation_hash.Map.empty let is_in_mempool oph classes = Operation_hash.Map.find oph classes.in_mempool +let is_known_unparsable oph classes = + Operation_hash.Set.mem oph classes.unparsable + (* Removing an operation is currently used for operations which are banned (this can only be achieved by the adminstrator of the node). However, removing an operation which is applied invalidates @@ -235,16 +249,21 @@ let handle_error oph op classification classes = classes.in_mempool <- Operation_hash.Map.add oph (op, classification) classes.in_mempool -let add classification oph op classes = +let add_unparsable oph classes = + classes.unparsable <- Operation_hash.Set.add oph classes.unparsable ; + classes.parameters.on_discarded_operation oph + +let add classification op classes = match classification with - | `Applied -> handle_applied oph op classes - | `Prechecked -> handle_prechecked oph op classes + | `Applied -> handle_applied op.Prevalidation.hash op classes + | `Prechecked -> handle_prechecked op.Prevalidation.hash op classes | (`Branch_refused _ | `Branch_delayed _ | `Refused _ | `Outdated _) as classification -> - handle_error oph op classification classes + handle_error op.Prevalidation.hash op classification classes let to_map ~applied ~prechecked ~branch_delayed ~branch_refused ~refused - ~outdated classes = + ~outdated classes : + 'protocol_data Prevalidation.operation Operation_hash.Map.t = let module Map = Operation_hash.Map in let ( +> ) accum to_add = let merge_fun _k accum_v_opt to_add_v_opt = @@ -288,9 +307,13 @@ type 'block chain_tools = { } (* There's detailed documentation in the mli *) -let handle_live_operations ~(block_store : 'block block_tools) +let handle_live_operations ~classes ~(block_store : 'block block_tools) ~(chain : 'block chain_tools) ~(from_branch : 'block) ~(to_branch : 'block) - ~(is_branch_alive : Block_hash.t -> bool) old_mempool = + ~(is_branch_alive : Block_hash.t -> bool) + ~(parse : + Operation_hash.t -> + Operation.t -> + 'protocol_data Prevalidation.operation option) old_mempool = let rec pop_block ancestor (block : 'block) mempool = let hash = block_store.hash block in if Block_hash.equal hash ancestor then Lwt.return mempool @@ -298,9 +321,30 @@ let handle_live_operations ~(block_store : 'block block_tools) let operations = block_store.operations block in List.fold_left_s (List.fold_left_s (fun mempool op -> - let h = Operation.hash op in - chain.inject_operation h op >|= fun () -> - Operation_hash.Map.add h op mempool)) + let oph = Operation.hash op in + chain.inject_operation oph op >|= fun () -> + match parse oph op with + | None -> + (* There are hidden invariants between the shell and + the economic protocol which should ensure this will + (almost) never happen in practice: + + 1. Decoding/encoding an operation only depends + on the protocol and not the current context. + + 2. It is not possible to have a reorganisation + where one branch is using one protocol and another + branch on another protocol. + + 3. Ok, actually there might be one case using + [user_activated_upgrades] where this could happen, + but this is quite rare. + + If this happens, we classifies an operation as + unparsable and it is ok. *) + add_unparsable oph classes ; + mempool + | Some parsed_op -> Operation_hash.Map.add oph parsed_op mempool)) mempool operations >>= fun mempool -> @@ -333,21 +377,24 @@ let handle_live_operations ~(block_store : 'block block_tools) let new_mempool = List.fold_left push_block mempool path in let (new_mempool, outdated) = Operation_hash.Map.partition - (fun _oph op -> is_branch_alive op.Operation.shell.branch) + (fun _oph op -> + is_branch_alive op.Prevalidation.raw.Operation.shell.branch) new_mempool in Operation_hash.Map.iter (fun oph _op -> chain.clear_or_cancel oph) outdated ; new_mempool -let recycle_operations ~from_branch ~to_branch ~live_blocks ~classification +let recycle_operations ~from_branch ~to_branch ~live_blocks ~classes ~parse ~pending ~(block_store : 'block block_tools) ~(chain : 'block chain_tools) ~handle_branch_refused = handle_live_operations + ~classes ~block_store ~chain ~from_branch ~to_branch ~is_branch_alive:(fun branch -> Block_hash.Set.mem branch live_blocks) + ~parse (Operation_hash.Map.union (fun _key v _ -> Some v) (to_map @@ -357,15 +404,19 @@ let recycle_operations ~from_branch ~to_branch ~live_blocks ~classification ~branch_refused:handle_branch_refused ~refused:false ~outdated:false - classification) + classes) pending) >|= fun pending -> - flush classification ~handle_branch_refused ; + (* Non parsable operations that were previously included in a block + will be removed by the call to [flush]. However, as explained in + [handle_live_operations] it should never happen in practice. *) + flush classes ~handle_branch_refused ; pending module Internal_for_tests = struct (** [copy_bounded_map bm] returns a deep copy of [bm] *) - let copy_bounded_map (bm : bounded_map) : bounded_map = + let copy_bounded_map (bm : 'protocol_data bounded_map) : + 'protocol_data bounded_map = let copy_ring (ring : Operation_hash.t Ringo.Ring.t) = let result = Ringo.Ring.capacity ring |> Ringo.Ring.create in List.iter (Ringo.Ring.add result) (Ringo.Ring.elements ring) ; @@ -373,7 +424,7 @@ module Internal_for_tests = struct in {map = bm.map; ring = copy_ring bm.ring} - let copy (t : t) : t = + let copy (t : 'protocol_data t) : 'protocol_data t = (* Code could be shorter by doing a functional update thanks to the 'with' keyword. We rather list all the fields, so that the compiler emits a warning when a field is added. *) @@ -385,6 +436,7 @@ module Internal_for_tests = struct branch_delayed = copy_bounded_map t.branch_delayed; applied_rev = t.applied_rev; prechecked = t.prechecked; + unparsable = t.unparsable; in_mempool = t.in_mempool; } @@ -402,6 +454,7 @@ module Internal_for_tests = struct branch_delayed; applied_rev; prechecked; + unparsable; in_mempool; } = let applied_pp ppf applied = @@ -417,11 +470,16 @@ module Internal_for_tests = struct prechecked |> Operation_hash.Map.bindings |> List.map fst |> Format.fprintf ppf "%a" (Format.pp_print_list Operation_hash.pp) in + let unparsable_pp ppf unparsable = + unparsable |> Operation_hash.Set.elements + |> Format.fprintf ppf "%a" (Format.pp_print_list Operation_hash.pp) + in Format.fprintf ppf "Map_size_limit:@.%i@.On discarded operation: \ @.Refused:%a@.Outdated:%a@.Branch refused:@.%a@.Branch \ - delayed:@.%a@.Applied:@.%a@.Prechecked:@.%a@.In Mempool:@.%a" + delayed:@.%a@.Applied:@.%a@.Prechecked:@.%a@.Unparsable:@.%a@.In \ + Mempool:@.%a" parameters.map_size_limit bounded_map_pp refused @@ -435,6 +493,8 @@ module Internal_for_tests = struct applied_rev prechecked_pp prechecked + unparsable_pp + unparsable in_mempool_pp in_mempool diff --git a/src/lib_shell/prevalidator_classification.mli b/src/lib_shell/prevalidator_classification.mli index 7cd7599e0e..ea41501e49 100644 --- a/src/lib_shell/prevalidator_classification.mli +++ b/src/lib_shell/prevalidator_classification.mli @@ -31,10 +31,12 @@ type classification = | `Refused of tztrace | `Outdated of tztrace ] -type bounded_map +type 'protocol_data bounded_map (** [map bounded_map] gets the underling map of the [bounded_map]. *) -val map : bounded_map -> (Operation.t * tztrace) Operation_hash.Map.t +val map : + 'protocol_data bounded_map -> + ('protocol_data Prevalidation.operation * tztrace) Operation_hash.Map.t type parameters = { map_size_limit : int; @@ -52,20 +54,31 @@ type parameters = { fields: [refused; branch_refused; branch_delayed; prechecked; applied]. + Note: unparsable operations are handled in a different way because + they cannot be handled as a [Prevalidation.operation] since this + datatype requires an operation to be parsable. Hence, unparsable + operations are handled differently. In particular, unparsable + operations are removed on flush. + Note: We could always enforce these invariants by checking in {!add} whether the operation is already present. However, this would make the behavior of {!add} less predictable, so we do not think this to be an improvement from the point of view of the caller. *) -type t = private { +type 'protocol_data t = private { parameters : parameters; - refused : bounded_map; - outdated : bounded_map; - branch_refused : bounded_map; - branch_delayed : bounded_map; - mutable applied_rev : (Operation_hash.t * Operation.t) list; - mutable prechecked : Operation.t Operation_hash.Map.t; - mutable in_mempool : (Operation.t * classification) Operation_hash.Map.t; + refused : 'protocol_data bounded_map; + outdated : 'protocol_data bounded_map; + branch_refused : 'protocol_data bounded_map; + branch_delayed : 'protocol_data bounded_map; + mutable applied_rev : + (Operation_hash.t * 'protocol_data Prevalidation.operation) list; + mutable prechecked : + 'protocol_data Prevalidation.operation Operation_hash.Map.t; + mutable unparsable : Operation_hash.Set.t; + mutable in_mempool : + ('protocol_data Prevalidation.operation * classification) + Operation_hash.Map.t; } (** [create parameters] returns an empty {!t} whose bounded maps hold @@ -75,16 +88,23 @@ type t = private { {!Invalid_argument} is raised if [ring_size] is [0] or less. *) -val create : parameters -> t +val create : parameters -> 'protocol_data t (** [is_empty t] returns [true] iff [t] doesn't contain any operation. *) -val is_empty : t -> bool +val is_empty : 'protocol_data t -> bool (** [is_in_mempool oph classes] indicates whether [oph] is present in field [in_mempool] of [classes]. It returns the corresponding operation and its classification if present, and None otherwise. *) val is_in_mempool : - Operation_hash.t -> t -> (Operation.t * classification) option + Operation_hash.t -> + 'protocol_data t -> + ('protocol_data Prevalidation.operation * classification) option + +(** [is_known_unparsable oph] returns [true] if the [oph] is + associated to an operation which is known to be unparsable. [false] + otherwise. *) +val is_known_unparsable : Operation_hash.t -> 'protocol_data t -> bool (** [remove oph classes] removes operation of hash [oph] from all fields of [classes]. If the [oph] was classified as [Applied], the @@ -99,11 +119,13 @@ val is_in_mempool : {b Warning:} If an operation is removed from the [applied] field, this may invalidate the classification of all the other operations. It is left to the caller to restore a consistent state. *) -val remove : Operation_hash.t -> t -> (Operation.t * classification) option +val remove : + Operation_hash.t -> + 'protocol_data t -> + ('protocol_data Prevalidation.operation * classification) option -(** [add ~notify classification oph op classes] adds the operation - [op] with hash [oph] classified as [classification] to the - classifier [classes]. The +(** [add ~notify classification op classes] adds the operation [op] + classified as [classification] to the classifier [classes]. The [classes.parameters.on_discarded_operation] callback is called for any operation discarded in this process. Currently, an operation is discarded in the following cases: @@ -127,7 +149,17 @@ val remove : Operation_hash.t -> t -> (Operation.t * classification) option - [Refused] is discarded 1 or 2 times (if the corresponding bounded_map is full) *) -val add : classification -> Operation_hash.t -> Operation.t -> t -> unit +val add : + classification -> + 'protocol_data Prevalidation.operation -> + 'protocol_data t -> + unit + +(** [add_unparsable oph classes] adds [oph] as an unparsable + operation. [unparsable] operations are removed automatically by the + [recycle_operations] function. [on_discard_operation] is also + called on those operations. *) +val add_unparsable : Operation_hash.t -> 'protocol_data t -> unit (** Functions to query data on a polymorphic block-like type ['block]. *) type 'block block_tools = { @@ -174,36 +206,45 @@ type 'block chain_tools = { This function guarantees that the branch of all returned operations is in [live_blocks] ([live_blocks] acts as a filter). + Operation which where included in [from_branch] and which are NOT in + [to_branch] need to be parsed again using the [parse] argument. If the + parsing fails those operations are just dropped. This may happen if those + operations comes from another protocol. + See also {!Internal_for_tests.handle_live_operations}. *) val recycle_operations : from_branch:'block -> to_branch:'block -> live_blocks:Block_hash.Set.t -> - classification:t -> - pending:Operation.t Operation_hash.Map.t -> + classes:'protocol_data t -> + parse: + (Operation_hash.t -> + Operation.t -> + 'protocol_data Prevalidation.operation option) -> + pending:'protocol_data Prevalidation.operation Operation_hash.Map.t -> block_store:'block block_tools -> chain:'block chain_tools -> handle_branch_refused:bool -> - Operation.t Operation_hash.Map.t Lwt.t + 'protocol_data Prevalidation.operation Operation_hash.Map.t Lwt.t (**/**) module Internal_for_tests : sig - val pp : Format.formatter -> t -> unit + val pp : Format.formatter -> 'protocol_data t -> unit - val bounded_map_pp : Format.formatter -> bounded_map -> unit + val bounded_map_pp : Format.formatter -> 'protocol_data bounded_map -> unit (** Returns a deep copy of the input [t], so that mutating the one doesn't affect the other. *) - val copy : t -> t + val copy : 'protocol_data t -> 'protocol_data t (** [set_of_bounded_map m] returns all the operation hashes in [m]. *) - val set_of_bounded_map : bounded_map -> Operation_hash.Set.t + val set_of_bounded_map : 'protocol_data bounded_map -> Operation_hash.Set.t (** [pp_t_sizes t] prints the [map_size_limit] parameter of [t] and the sizes of its fields (number of elements in the map and in the ring of [bounded_map] / length of list / cardinal of set). *) - val pp_t_sizes : Format.formatter -> t -> unit + val pp_t_sizes : Format.formatter -> 'protocol_data t -> unit (** [map applied branch_delayed branch_refused refused t] returns the pairs [(operation_hash, operation)] contained in [t]. @@ -216,21 +257,21 @@ module Internal_for_tests : sig branch_refused:bool -> refused:bool -> outdated:bool -> - t -> - Operation.t Operation_hash.Map.t + 'protocol_data t -> + 'protocol_data Prevalidation.operation Operation_hash.Map.t (** [flush classes ~handle_branch_refused] partially resets [classes]: - - fields [applied_rev] and [branch_delayed] are emptied; + - fields [applied_rev], [branch_delayed] and [unparsable] are emptied; - field [branch_refused] is emptied iff [handle_branch_refused] is [true]; - field [refused] is left unchanged, to avoid revalidating operations that will never be valid; - field [outdated] is left unchanged. Also updates field [in_mempool] to maintain the corresponding invariant of {!t}. *) - val flush : t -> handle_branch_refused:bool -> unit + val flush : 'protocol_data t -> handle_branch_refused:bool -> unit - (** [handle_live_operations chain_db from_branch to_branch is_branch_alive old_mempool] - returns the operations from: + (** [handle_live_operations chain_db from_branch to_branch is_branch_alive parse + old_mempool] returns the operations from: 1. [old_mempool], 2. [from_branch] that are NOT in [to_branch], @@ -258,11 +299,16 @@ module Internal_for_tests : sig from_branch = ancestor *) val handle_live_operations : + classes:'protocol_data t -> block_store:'block block_tools -> chain:'block chain_tools -> from_branch:'block -> to_branch:'block -> is_branch_alive:(Block_hash.t -> bool) -> - Operation.t Operation_hash.Map.t -> - Operation.t Operation_hash.Map.t Lwt.t + parse: + (Operation_hash.t -> + Operation.t -> + 'protocol_data Prevalidation.operation option) -> + 'protocol_data Prevalidation.operation Operation_hash.Map.t -> + 'protocol_data Prevalidation.operation Operation_hash.Map.t Lwt.t end diff --git a/src/lib_shell/prevalidator_filters.ml b/src/lib_shell/prevalidator_filters.ml index c395b2340d..e4725df5d0 100644 --- a/src/lib_shell/prevalidator_filters.ml +++ b/src/lib_shell/prevalidator_filters.ml @@ -56,9 +56,8 @@ module type FILTER = sig config -> filter_state:state -> validation_state:Proto.validation_state -> - Tezos_base.Operation.shell_header -> Operation_hash.t -> - Proto.operation_data -> + Proto.operation -> [ `Passed_precheck of state | `Passed_precheck_with_replace of Operation_hash.t * state | `Branch_delayed of tztrace @@ -72,7 +71,7 @@ module type FILTER = sig config -> filter_state:state -> ?validation_state_before:Proto.validation_state -> - Proto.operation_data -> + Proto.operation -> [ `Passed_prefilter of [`High | `Low] | `Branch_delayed of tztrace | `Branch_refused of tztrace @@ -85,7 +84,7 @@ module type FILTER = sig filter_state:state -> validation_state_before:Proto.validation_state -> validation_state_after:Proto.validation_state -> - Proto.operation_data * Proto.operation_receipt -> + Proto.operation * Proto.operation_receipt -> [`Passed_postfilter of state | `Refused of tztrace] Lwt.t end @@ -112,7 +111,7 @@ module No_filter (Proto : Registered_protocol.T) = struct let on_flush _ _ ?validation_state:_ ~predecessor:_ () = return_unit - let precheck _ ~filter_state:_ ~validation_state:_ _ _ _ = + let precheck _ ~filter_state:_ ~validation_state:_ _ _ = Lwt.return `Undecided let pre_filter _ ~filter_state:_ ?validation_state_before:_ _ = diff --git a/src/lib_shell/prevalidator_filters.mli b/src/lib_shell/prevalidator_filters.mli index b56d84823b..ff620df4ce 100644 --- a/src/lib_shell/prevalidator_filters.mli +++ b/src/lib_shell/prevalidator_filters.mli @@ -61,7 +61,7 @@ module type FILTER = sig [oph] from the state of the filter *) val remove : filter_state:state -> Operation_hash.t -> state - (** [precheck config ~filter_state ~validation_state shell_header oph] + (** [precheck config ~filter_state ~validation_state oph op] should be used to decide whether an operation can be gossiped to the network without executing it. This is a wrapper around [Proto.precheck_manager] and [Proto.check_signature]. This @@ -80,9 +80,8 @@ module type FILTER = sig config -> filter_state:state -> validation_state:Proto.validation_state -> - Tezos_base.Operation.shell_header -> Operation_hash.t -> - Proto.operation_data -> + Proto.operation -> [ `Passed_precheck of state | `Passed_precheck_with_replace of Operation_hash.t * state | `Branch_delayed of tztrace @@ -107,7 +106,7 @@ module type FILTER = sig config -> filter_state:state -> ?validation_state_before:Proto.validation_state -> - Proto.operation_data -> + Proto.operation -> [ `Passed_prefilter of [`High | `Low] | `Branch_delayed of tztrace | `Branch_refused of tztrace @@ -128,7 +127,7 @@ module type FILTER = sig filter_state:state -> validation_state_before:Proto.validation_state -> validation_state_after:Proto.validation_state -> - Proto.operation_data * Proto.operation_receipt -> + Proto.operation * Proto.operation_receipt -> [`Passed_postfilter of state | `Refused of tztrace] Lwt.t end diff --git a/src/lib_shell/prevalidator_pending_operations.ml b/src/lib_shell/prevalidator_pending_operations.ml index fd7d5143b3..14c7516687 100644 --- a/src/lib_shell/prevalidator_pending_operations.ml +++ b/src/lib_shell/prevalidator_pending_operations.ml @@ -52,9 +52,9 @@ module Map = Operation_hash.Map 3 - image(priority_of) = preimage (pending) 4 - map in pending(priority) => map <> empty *) -type t = { +type 'a t = { (* The main map *) - pending : Operation.t Operation_hash.Map.t Priority_map.t; + pending : 'a Prevalidation.operation Operation_hash.Map.t Priority_map.t; (* Used for advertising *) hashes : Operation_hash.Set.t; (* We need to remember the priority of each hash, to be used when removing @@ -82,7 +82,8 @@ let mem oph {hashes; priority_of = _; pending = _} = Set.mem oph hashes let get_priority_map prio pending = match Priority_map.find prio pending with None -> Map.empty | Some mp -> mp -let add oph op prio {pending; hashes; priority_of} = +let add op prio {pending; hashes; priority_of} = + let oph = op.Prevalidation.hash in let mp = get_priority_map prio pending |> Map.add oph op in { pending = Priority_map.add prio mp pending; diff --git a/src/lib_shell/prevalidator_pending_operations.mli b/src/lib_shell/prevalidator_pending_operations.mli index d35ed81a54..e316f12bdb 100644 --- a/src/lib_shell/prevalidator_pending_operations.mli +++ b/src/lib_shell/prevalidator_pending_operations.mli @@ -33,26 +33,28 @@ type priority = [`High | `Low] This type is used for data representing pending operations of the prevalidator. Any iterator on this structure will process operations with [`High] priority first. *) -type t +type 'protocol_data t (** The empty structure of pending operations. *) -val empty : t +val empty : 'protocol_data t (** [hashes p] returns the set of hashes contained in [p] *) -val hashes : t -> Operation_hash.Set.t +val hashes : 'protocol_data t -> Operation_hash.Set.t (** [operations p] returns the Map of bindings [oph -> op] contained in [p] *) -val operations : t -> Operation.t Operation_hash.Map.t +val operations : + 'protocol_data t -> + 'protocol_data Prevalidation.operation Operation_hash.Map.t (** [is_empty p] returns [true] if [p] has operations, [false] otherwise. *) -val is_empty : t -> bool +val is_empty : 'protocol_data t -> bool (** [mem oph p] returns [true] if [oph] is found in [p], [false] otherwise. Complexity is O(log(n)), where n is the number of operations (hashes) in the structure. *) -val mem : Operation_hash.t -> t -> bool +val mem : Operation_hash.t -> 'protocol_data t -> bool (** [add oph op p prio] records the operation [op] whose hash is [oph] and whose priority is [prio] in [p]. @@ -60,21 +62,25 @@ val mem : Operation_hash.t -> t -> bool Complexity is O(log(n)), where n is the number of operations (hashes) in the structure. *) -val add : Operation_hash.t -> Operation.t -> priority -> t -> t +val add : + 'protocol_data Prevalidation.operation -> + priority -> + 'protocol_data t -> + 'protocol_data t (** [remove oph op p] removes the binding [oph] from [p]. Complexity is O(log(n)), where n is the number of operations (hashes) in the structure. *) -val remove : Operation_hash.t -> t -> t +val remove : Operation_hash.t -> 'protocol_data t -> 'protocol_data t (** [cardinal p] returns the number of operations (hashes) in [p]. Complexity is O(n), where n is the number of operations (hashes) in the structure. *) -val cardinal : t -> int +val cardinal : 'protocol_data t -> int (** [fold f p acc] applies the function [f] on every binding [oph] |-> [op] of priority [prio] in [p]. The [acc] is passed to and (possibly) updated by @@ -86,16 +92,33 @@ val cardinal : t -> int processed first). *) val fold : - (priority -> Operation_hash.t -> Operation.t -> 'a -> 'a) -> t -> 'a -> 'a + (priority -> + Operation_hash.t -> + 'protocol_data Prevalidation.operation -> + 'a -> + 'a) -> + 'protocol_data t -> + 'a -> + 'a (** [iter f p] is similar to [fold] where [acc] is unit *) -val iter : (priority -> Operation_hash.t -> Operation.t -> unit) -> t -> unit +val iter : + (priority -> + Operation_hash.t -> + 'protocol_data Prevalidation.operation -> + unit) -> + 'protocol_data t -> + unit (** [fold_es f p acc] is the Lwt version of [fold], except that [fold_es] returns wihtout iterating over all the elements of the list as soon as a value [Error e] is returned by [f] *) val fold_es : - (priority -> Operation_hash.t -> Operation.t -> 'a -> ('a, 'b) result Lwt.t) -> - t -> + (priority -> + Operation_hash.t -> + 'protocol_data Prevalidation.operation -> + 'a -> + ('a, 'b) result Lwt.t) -> + 'protocol_data t -> 'a -> ('a, 'b) result Lwt.t diff --git a/src/proto_010_PtGRANAD/lib_plugin/plugin.ml b/src/proto_010_PtGRANAD/lib_plugin/plugin.ml index 0773f2ce31..5334f2fbb2 100644 --- a/src/proto_010_PtGRANAD/lib_plugin/plugin.ml +++ b/src/proto_010_PtGRANAD/lib_plugin/plugin.ml @@ -243,7 +243,8 @@ module Mempool = struct (fun () -> Wrong_operation) let pre_filter config ~filter_state:_ ?validation_state_before - (Operation_data {contents; _} as op : Operation.packed_protocol_data) = + ({shell = _; protocol_data = Operation_data {contents; _} as op} : + Main.operation) = let bytes = (WithExceptions.Option.get ~loc:__LOC__ @@ Data_encoding.Binary.fixed_length @@ -301,8 +302,7 @@ module Mempool = struct | Cons (Manager_operation _, _) as op -> prefilter_manager_op op) |> fun res -> Lwt.return res - let precheck _ ~filter_state:_ ~validation_state:_ _ _ _ = - Lwt.return `Undecided + let precheck _ ~filter_state:_ ~validation_state:_ _ _ = Lwt.return `Undecided open Apply_results diff --git a/src/proto_011_PtHangz2/lib_plugin/plugin.ml b/src/proto_011_PtHangz2/lib_plugin/plugin.ml index 020d5f091f..c119d865ce 100644 --- a/src/proto_011_PtHangz2/lib_plugin/plugin.ml +++ b/src/proto_011_PtHangz2/lib_plugin/plugin.ml @@ -248,7 +248,8 @@ module Mempool = struct (fun () -> Wrong_operation) let pre_filter config ~filter_state:_ ?validation_state_before - (Operation_data {contents; _} as op : Operation.packed_protocol_data) = + ({shell = _; protocol_data = Operation_data {contents; _} as op} : + Main.operation) = let bytes = (WithExceptions.Option.get ~loc:__LOC__ @@ Data_encoding.Binary.fixed_length @@ -306,8 +307,7 @@ module Mempool = struct | Cons (Manager_operation _, _) as op -> prefilter_manager_op op) |> fun res -> Lwt.return res - let precheck _ ~filter_state:_ ~validation_state:_ _ _ _ = - Lwt.return `Undecided + let precheck _ ~filter_state:_ ~validation_state:_ _ _ = Lwt.return `Undecided open Apply_results diff --git a/src/proto_012_PsiThaCa/lib_plugin/plugin.ml b/src/proto_012_PsiThaCa/lib_plugin/plugin.ml index 48344b9afc..03fceb6179 100644 --- a/src/proto_012_PsiThaCa/lib_plugin/plugin.ml +++ b/src/proto_012_PsiThaCa/lib_plugin/plugin.ml @@ -672,7 +672,8 @@ module Mempool = struct We add [config.clock_drift] time as a safety margin. *) let pre_filter config ~(filter_state : state) ?validation_state_before - (Operation_data {contents; _} as op : Operation.packed_protocol_data) = + ({shell = _; protocol_data = Operation_data {contents; _} as op} : + Main.operation) = let bytes = (WithExceptions.Option.get ~loc:__LOC__ @@ Data_encoding.Binary.fixed_length @@ -786,9 +787,8 @@ module Mempool = struct config -> filter_state:state -> validation_state:validation_state -> - Tezos_base.Operation.shell_header -> Operation_hash.t -> - Main.operation_data -> + Main.operation -> [ `Passed_precheck of state | `Passed_precheck_with_replace of Operation_hash.t * state | `Branch_delayed of tztrace @@ -800,9 +800,8 @@ module Mempool = struct fun config ~filter_state ~validation_state - shell_header oph - (Operation_data protocol_data) -> + {shell = shell_header; protocol_data = Operation_data protocol_data} -> let precheck_manager protocol_data source op = match get_manager_operation_gas_and_fee op with | Error err -> Lwt.return (`Refused (Environment.wrap_tztrace err)) diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 32e8c94b31..a7d82e4115 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -672,7 +672,8 @@ module Mempool = struct We add [config.clock_drift] time as a safety margin. *) let pre_filter config ~(filter_state : state) ?validation_state_before - (Operation_data {contents; _} as op : Operation.packed_protocol_data) = + ({shell = _; protocol_data = Operation_data {contents; _} as op} : + Main.operation) = let bytes = (WithExceptions.Option.get ~loc:__LOC__ @@ Data_encoding.Binary.fixed_length @@ -786,9 +787,8 @@ module Mempool = struct config -> filter_state:state -> validation_state:validation_state -> - Tezos_base.Operation.shell_header -> Operation_hash.t -> - Main.operation_data -> + Main.operation -> [ `Passed_precheck of state | `Passed_precheck_with_replace of Operation_hash.t * state | `Branch_delayed of tztrace @@ -800,9 +800,8 @@ module Mempool = struct fun config ~filter_state ~validation_state - shell_header oph - (Operation_data protocol_data) -> + {shell = shell_header; protocol_data = Operation_data protocol_data} -> let precheck_manager protocol_data source op = match get_manager_operation_gas_and_fee op with | Error err -> Lwt.return (`Refused (Environment.wrap_tztrace err)) From eb18444e6e19dbaf657d34bc15cb7d17531f328c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Fri, 7 Jan 2022 12:25:11 +0100 Subject: [PATCH 0055/1220] Shell/Prevalidator: Remove redundant information --- src/lib_shell/prevalidator.ml | 24 +++++++++++-------- src/lib_shell/prevalidator_classification.ml | 17 +++++++------ src/lib_shell/prevalidator_classification.mli | 3 +-- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index 8dee0b788a..e7ef768583 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -755,7 +755,9 @@ module Make (* FIXME: https://gitlab.com/tezos/tezos/-/issues/2065 This field does not only contain valid operation *) Mempool.known_valid = - List.rev_map fst pv_shell.classification.applied_rev + List.rev_map + (fun op -> op.Prevalidation.hash) + pv_shell.classification.applied_rev @ (Operation_hash.Map.to_seq pv_shell.classification.prechecked |> Seq.map fst |> List.of_seq); pending = Pending_ops.hashes pv_shell.pending; @@ -1221,7 +1223,7 @@ module Make in let applied = List.rev_map - (fun (oph, op) -> (oph, op.Prevalidation.protocol)) + (fun op -> (op.Prevalidation.hash, op.Prevalidation.protocol)) pv.shell.classification.applied_rev in let filter f map = @@ -1300,16 +1302,15 @@ module Make Lwt_watcher.create_stream pv.operation_stream in (* Convert ops *) - let map_op error (_hash, Prevalidation.{protocol = op; hash; _}) = - (hash, op, error) - in - let fold_op hash (op, error) acc = - map_op error (hash, op) :: acc + let fold_op hash (Prevalidation.{protocol; _}, error) acc = + (hash, protocol, error) :: acc in (* First call : retrieve the current set of op from the mempool *) let applied = if params#applied then - List.map (map_op []) pv.shell.classification.applied_rev + List.map + (fun op -> (op.Prevalidation.hash, op.protocol, [])) + pv.shell.classification.applied_rev else [] in (* FIXME https://gitlab.com/tezos/tezos/-/issues/2250 @@ -1318,8 +1319,11 @@ module Make handled the same way for the user point of view. *) let prechecked = if params#applied then - Operation_hash.Map.bindings pv.shell.classification.prechecked - |> List.map (map_op []) + Operation_hash.Map.fold + (fun hash op acc -> + (hash, op.Prevalidation.protocol, []) :: acc) + pv.shell.classification.prechecked + [] else [] in let refused = diff --git a/src/lib_shell/prevalidator_classification.ml b/src/lib_shell/prevalidator_classification.ml index ad312cb7c4..06234bdfc9 100644 --- a/src/lib_shell/prevalidator_classification.ml +++ b/src/lib_shell/prevalidator_classification.ml @@ -81,8 +81,7 @@ type 'protocol_data t = { outdated : 'protocol_data bounded_map; branch_refused : 'protocol_data bounded_map; branch_delayed : 'protocol_data bounded_map; - mutable applied_rev : - (Operation_hash.t * 'protocol_data Prevalidation.operation) list; + mutable applied_rev : 'protocol_data Prevalidation.operation list; mutable prechecked : 'protocol_data Prevalidation.operation Operation_hash.Map.t; mutable unparsable : Operation_hash.Set.t; @@ -143,7 +142,8 @@ let flush (classes : 'protocol_data t) ~handle_branch_refused = let remove_list_from_in_mempool list = classes.in_mempool <- List.fold_left - (fun mempool (oph, _) -> Operation_hash.Map.remove oph mempool) + (fun mempool op -> + Operation_hash.Map.remove op.Prevalidation.hash mempool) classes.in_mempool list in @@ -199,12 +199,12 @@ let remove oph classes = | `Applied -> classes.applied_rev <- List.filter - (fun (op, _) -> Operation_hash.(op <> oph)) + (fun op -> Operation_hash.(op.Prevalidation.hash <> oph)) classes.applied_rev) ; Some (op, classification) let handle_applied oph op classes = - classes.applied_rev <- (oph, op) :: classes.applied_rev ; + classes.applied_rev <- op :: classes.applied_rev ; classes.in_mempool <- Operation_hash.Map.add oph (op, `Applied) classes.in_mempool @@ -285,7 +285,10 @@ let to_map ~applied ~prechecked ~branch_delayed ~branch_refused ~refused Map.union (fun _oph op _ -> Some op) (if prechecked then classes.prechecked else Map.empty) - @@ (if applied then Map.of_seq @@ List.to_seq classes.applied_rev + @@ (if applied then + List.to_seq classes.applied_rev + |> Seq.map (fun op -> (op.Prevalidation.hash, op)) + |> Map.of_seq else Map.empty) +> (if branch_delayed then classes.branch_delayed.map else Map.empty) +> (if branch_refused then classes.branch_refused.map else Map.empty) @@ -459,7 +462,7 @@ module Internal_for_tests = struct } = let applied_pp ppf applied = applied - |> List.map (fun (key, _value) -> key) + |> List.map (fun op -> op.Prevalidation.hash) |> Format.fprintf ppf "%a" (Format.pp_print_list Operation_hash.pp) in let in_mempool_pp ppf in_mempool = diff --git a/src/lib_shell/prevalidator_classification.mli b/src/lib_shell/prevalidator_classification.mli index ea41501e49..065976d8e4 100644 --- a/src/lib_shell/prevalidator_classification.mli +++ b/src/lib_shell/prevalidator_classification.mli @@ -71,8 +71,7 @@ type 'protocol_data t = private { outdated : 'protocol_data bounded_map; branch_refused : 'protocol_data bounded_map; branch_delayed : 'protocol_data bounded_map; - mutable applied_rev : - (Operation_hash.t * 'protocol_data Prevalidation.operation) list; + mutable applied_rev : 'protocol_data Prevalidation.operation list; mutable prechecked : 'protocol_data Prevalidation.operation Operation_hash.Map.t; mutable unparsable : Operation_hash.Set.t; From 8fea51b80a1fb079953689685fd949c0a980e660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Thu, 6 Jan 2022 16:45:56 +0100 Subject: [PATCH 0056/1220] Prevalidation/Test: Adapt tests to new interface --- src/lib_shell/prevalidation.ml | 2 + src/lib_shell/prevalidation.mli | 4 + src/lib_shell/test/generators.ml | 80 ++++++-- src/lib_shell/test/test_prevalidation.ml | 9 +- src/lib_shell/test/test_prevalidation_t.ml | 35 ++-- .../test/test_prevalidator_classification.ml | 177 ++++++++++-------- ..._prevalidator_classification_operations.ml | 136 ++++++++++---- .../test_prevalidator_pending_operations.ml | 3 +- 8 files changed, 286 insertions(+), 160 deletions(-) diff --git a/src/lib_shell/prevalidation.ml b/src/lib_shell/prevalidation.ml index 2a1182d238..f210f2d622 100644 --- a/src/lib_shell/prevalidation.ml +++ b/src/lib_shell/prevalidation.ml @@ -266,6 +266,8 @@ module Make (Proto : Tezos_protocol_environment.PROTOCOL) : module Internal_for_tests = struct let to_raw {raw; _} = raw + let make_operation op oph data = {hash = oph; raw = op; protocol = data} + let safe_binary_of_bytes = safe_binary_of_bytes module type CHAIN_STORE = CHAIN_STORE diff --git a/src/lib_shell/prevalidation.mli b/src/lib_shell/prevalidation.mli index 324c9a5a94..47e4782186 100644 --- a/src/lib_shell/prevalidation.mli +++ b/src/lib_shell/prevalidation.mli @@ -123,6 +123,10 @@ module Internal_for_tests : sig (** Returns the {!Operation.t} underlying an {!operation} *) val to_raw : _ operation -> Operation.t + (** A constructor for the [operation] datatype. It by-passes the + checks done by the [parse] function. *) + val make_operation : Operation.t -> Operation_hash.t -> 'a -> 'a operation + (** [safe_binary_of_bytes encoding bytes] parses [bytes] using [encoding]. Any error happening during parsing becomes {!Parse_error}. If one day the functor signature is simplified, tests could use [parse_unsafe] directly rather than relying on this function to diff --git a/src/lib_shell/test/generators.ml b/src/lib_shell/test/generators.ml index 5d23c7110a..8cad3b6e78 100644 --- a/src/lib_shell/test/generators.ml +++ b/src/lib_shell/test/generators.ml @@ -25,9 +25,9 @@ open Prevalidator_classification -let add_if_not_present classification oph op t = +let add_if_not_present classification op t = Prevalidator_classification.( - if is_in_mempool oph t = None then add classification oph op t) + if is_in_mempool op.Prevalidation.hash t = None then add classification op t) let string_gen = QCheck2.Gen.small_string ?gen:None @@ -52,7 +52,7 @@ let operation_gen ?(string_gen = string_gen) ?block_hash_t () : Operation.{shell = {branch}; proto} (** Like {!operation_gen} with a hash. *) -let operation_with_hash_gen ?string_gen ?block_hash_t () : +let raw_operation_with_hash_gen ?string_gen ?block_hash_t () : (Operation_hash.t * Operation.t) QCheck2.Gen.t = let open QCheck2.Gen in let+ op = operation_gen ?string_gen ?block_hash_t () in @@ -64,12 +64,26 @@ let priority_gen () : [`High | `Low] QCheck2.Gen.t = let* bool_value = bool in if bool_value then pure `High else pure `Low +let operation_with_hash_gen ?string_gen ?block_hash_t () : + unit Prevalidation.operation QCheck2.Gen.t = + let open QCheck2.Gen in + let+ (oph, op) = raw_operation_with_hash_gen ?string_gen ?block_hash_t () in + Prevalidation.Internal_for_tests.make_operation op oph () + let operation_with_hash_and_priority_gen ?string_gen ?block_hash_t () : - (Operation_hash.t * Operation.t * [`High | `Low]) QCheck2.Gen.t = + (unit Prevalidation.operation * [`High | `Low]) QCheck2.Gen.t = let open QCheck2.Gen in - let* (hash, op) = operation_with_hash_gen ?string_gen ?block_hash_t () in + let* op = operation_with_hash_gen ?string_gen ?block_hash_t () in let* priority = priority_gen () in - return (hash, op, priority) + return (op, priority) + +let raw_op_map_gen ?string_gen ?block_hash_t () : + Operation.t Operation_hash.Map.t QCheck2.Gen.t = + let open QCheck2.Gen in + let+ ops = + small_list (raw_operation_with_hash_gen ?string_gen ?block_hash_t ()) + in + List.to_seq ops |> Operation_hash.Map.of_seq (** A generator of maps of operations and their hashes. Parameters are: - [string_gen] is an optional generator for the protocol bytes. @@ -79,12 +93,38 @@ let operation_with_hash_and_priority_gen ?string_gen ?block_hash_t () : this generator guarantees that all returned operations are distinct (because their hashes differ). *) let op_map_gen ?string_gen ?block_hash_t () : + unit Prevalidation.operation Operation_hash.Map.t QCheck2.Gen.t = + let open QCheck2.Gen in + let+ ops = + small_list (operation_with_hash_gen ?string_gen ?block_hash_t ()) + in + List.to_seq ops + |> Seq.map (fun op -> (op.Prevalidation.hash, op)) + |> Operation_hash.Map.of_seq + +(** A generator like {!raw_op_map_gen} but which guarantees the size + of the returned maps: they are exactly of size [n]. We need + a custom function (as opposed to using a QCheck2 function for lists + of fixed lengths) because we *need* to return maps, because we need + the properties that all operations hashes are different. *) +let raw_op_map_gen_n ?string_gen ?block_hash_t (n : int) : Operation.t Operation_hash.Map.t QCheck2.Gen.t = let open QCheck2.Gen in - let+ ops = small_list (operation_gen ?string_gen ?block_hash_t ()) in - (* Op_map.of_seq eliminates duplicate keys (if any) *) - List.map (fun op -> (Operation.hash op, op)) ops - |> List.to_seq |> Operation_hash.Map.of_seq + let map_take_n n m = + Operation_hash.Map.bindings m + |> List.take_n n |> List.to_seq |> Operation_hash.Map.of_seq + in + let merge _oph old _new = Some old in + let rec go (ops : Operation.t Operation_hash.Map.t) = + if Operation_hash.Map.cardinal ops >= n then + (* Done *) + return (map_take_n n ops) + else + (* Not enough operations yet, generate more *) + let* new_ops = raw_op_map_gen ?string_gen ?block_hash_t () in + go (Operation_hash.Map.union merge ops new_ops) + in + go Operation_hash.Map.empty (** A generator like {!op_map_gen} but which guarantees the size of the returned maps: they are exactly of size [n]. We need @@ -92,14 +132,14 @@ let op_map_gen ?string_gen ?block_hash_t () : of fixed lengths) because we *need* to return maps, because we need the properties that all operations hashes are different. *) let op_map_gen_n ?string_gen ?block_hash_t (n : int) : - Operation.t Operation_hash.Map.t QCheck2.Gen.t = + unit Prevalidation.operation Operation_hash.Map.t QCheck2.Gen.t = let open QCheck2.Gen in let map_take_n n m = Operation_hash.Map.bindings m |> List.take_n n |> List.to_seq |> Operation_hash.Map.of_seq in let merge _oph old _new = Some old in - let rec go (ops : Operation.t Operation_hash.Map.t) = + let rec go (ops : unit Prevalidation.operation Operation_hash.Map.t) = if Operation_hash.Map.cardinal ops >= n then (* Done *) return (map_take_n n ops) @@ -132,7 +172,7 @@ let parameters_gen : parameters QCheck2.Gen.t = let on_discarded_operation _ = () in {map_size_limit; on_discarded_operation} -let t_gen ?(can_be_full = true) () : t QCheck2.Gen.t = +let t_gen ?(can_be_full = true) () : unit t QCheck2.Gen.t = let open QCheck2.Gen in let* parameters = parameters_gen in let+ inputs = @@ -143,21 +183,20 @@ let t_gen ?(can_be_full = true) () : t QCheck2.Gen.t = in let t = Prevalidator_classification.create parameters in List.iter - (fun (classification, (operation_hash, operation)) -> - add_if_not_present classification operation_hash operation t) + (fun (classification, op) -> add_if_not_present classification op t) inputs ; t (* With probability 1/2, we take an operation hash already present in the classification. This operation is taken uniformly among the different classes. *) -let with_t_operation_gen : t -> (Operation_hash.t * Operation.t) QCheck2.Gen.t = +let with_t_operation_gen : unit t -> unit Prevalidation.operation QCheck2.Gen.t + = let module Classification = Prevalidator_classification in let open QCheck2 in fun t -> let to_ops map = - Operation_hash.Map.bindings map - |> List.map (fun (oph, (op, _)) -> (oph, op)) + Operation_hash.Map.bindings map |> List.map (fun (_oph, (op, _)) -> op) in (* If map is empty, it cannot be used as a generator *) let freq_of_map map = if Operation_hash.Map.is_empty map then 0 else 1 in @@ -184,7 +223,8 @@ let with_t_operation_gen : t -> (Operation_hash.t * Operation.t) QCheck2.Gen.t = + freq_of_map (Classification.map t.outdated)) in freq_and_gen_of_list t.applied_rev - @ freq_and_gen_of_list (Operation_hash.Map.bindings t.prechecked) + @ freq_and_gen_of_list + (List.map snd (Operation_hash.Map.bindings t.prechecked)) @ freq_and_gen_of_map (Classification.map t.branch_refused) @ freq_and_gen_of_map (Classification.map t.branch_delayed) @ freq_and_gen_of_map (Classification.map t.refused) @@ -193,6 +233,6 @@ let with_t_operation_gen : t -> (Operation_hash.t * Operation.t) QCheck2.Gen.t = |> Gen.frequency let t_with_operation_gen ?can_be_full () : - (t * (Operation_hash.t * Operation.t)) QCheck2.Gen.t = + (unit t * unit Prevalidation.operation) QCheck2.Gen.t = let open QCheck2.Gen in t_gen ?can_be_full () >>= fun t -> pair (return t) (with_t_operation_gen t) diff --git a/src/lib_shell/test/test_prevalidation.ml b/src/lib_shell/test/test_prevalidation.ml index b5daaca971..6b2e362f17 100644 --- a/src/lib_shell/test/test_prevalidation.ml +++ b/src/lib_shell/test/test_prevalidation.ml @@ -119,9 +119,10 @@ let test_db_leak f (nb_ops : int) (_ : unit) = let handle i = let op = mk_operation i in let oph = Operation.hash op in + let op = Prevalidation.Internal_for_tests.make_operation op oph () in let injected = Lwt_main.run @@ Test_Requester.inject requester oph i in assert injected ; - f [] oph op classes + f [] op classes in List.iter handle (1 -- nb_ops) ; let actual_table_size = Test_Requester.memory_table_length requester in @@ -155,9 +156,10 @@ let test_in_mempool_leak f (nb_ops : int) (_ : unit) = let handle i = let op = mk_operation i in let oph = Operation.hash op in + let op = Prevalidation.Internal_for_tests.make_operation op oph () in let injected = Lwt_main.run @@ Test_Requester.inject requester oph i in assert injected ; - f [] oph op classes + f [] op classes in List.iter handle (1 -- nb_ops) ; let actual_in_mempool_size = Operation_hash.Map.cardinal classes.in_mempool in @@ -190,10 +192,11 @@ let test_db_do_not_clear_right_away f (nb_ops : int) (_ : unit) = let handle i = let op = mk_operation i in let oph = Operation.hash op in + let op = Prevalidation.Internal_for_tests.make_operation op oph () in Format.printf "Injecting op: %a\n" Operation_hash.pp oph ; let injected = Lwt_main.run @@ Test_Requester.inject requester oph i in assert injected ; - f [] oph op classes ; + f [] op classes ; Alcotest.( check bool diff --git a/src/lib_shell/test/test_prevalidation_t.ml b/src/lib_shell/test/test_prevalidation_t.ml index ecf9644d3e..b111b54891 100644 --- a/src/lib_shell/test/test_prevalidation_t.ml +++ b/src/lib_shell/test/test_prevalidation_t.ml @@ -102,8 +102,7 @@ let create_prevalidation Internal_for_tests.Make (Chain_store) (Mock_protocol) in (module Prevalidation : Tezos_shell.Prevalidation.T - with type operation_data = unit - and type operation_receipt = unit + with type operation_receipt = unit and type validation_state = unit and type chain_store = Chain_store.chain_store) @@ -128,11 +127,12 @@ let test_create ctxt = (** A generator of [Prevalidation.operation] values that make sure to return distinct operations (hashes are not fake and they are all different). Returned maps are exactly of size [n]. *) -let prevalidation_operations_gen - (module P : Prevalidation.T with type operation_data = unit) ~(n : int) : - unit Prevalidation.operation list QCheck2.Gen.t = - let mk_operation (_, (raw : Operation.t)) : unit Prevalidation.operation = - match P.parse raw with +let prevalidation_operations_gen (type a) + (module P : Prevalidation.T with type protocol_operation = a) ~(n : int) : + a Prevalidation.operation list QCheck2.Gen.t = + let mk_operation (hash, (raw : Operation.t)) : + P.protocol_operation Prevalidation.operation = + match P.parse hash raw with | Ok x -> x | Error err -> Format.printf "%a" Error_monad.pp_print_trace err ; @@ -144,15 +144,16 @@ let prevalidation_operations_gen bytes being too long (hereby looking like an attack). *) let string_gen : string QCheck2.Gen.t = QCheck2.Gen.return "" in let+ (ops : Operation.t Operation_hash.Map.t) = - Generators.op_map_gen_n ~string_gen ?block_hash_t:None n + Generators.raw_op_map_gen_n ~string_gen ?block_hash_t:None n in List.map mk_operation (Operation_hash.Map.bindings ops) (** The number of operations used by tests that follow *) let nb_ops = 100 -let mk_ops (module P : Prevalidation.T with type operation_data = unit) : - unit Prevalidation.operation list = +let mk_ops (type a) + (module P : Prevalidation.T with type protocol_operation = a) : + a Prevalidation.operation list = let ops = QCheck2.Gen.generate1 (prevalidation_operations_gen (module P) ~n:nb_ops) in @@ -165,7 +166,9 @@ let test_apply_operation_crash ctxt = let live_operations = Operation_hash.Set.empty in let timestamp : Time.Protocol.t = now () in let (module P) = create_prevalidation (module Mock_protocol) ctxt in - let ops : unit Prevalidation.operation list = mk_ops (module P) in + let ops : P.protocol_operation Prevalidation.operation list = + mk_ops (module P) + in let predecessor : Store.Block.t = Init.genesis_block @@ Context.hash ~time:timestamp ctxt in @@ -197,7 +200,7 @@ let mk_rand () = (** [mk_live_operations rand ops] returns a subset of [ops], which is appropriate for being passed as the [live_operations] argument of [Prevalidation.create] *) -let mk_live_operations rand (ops : unit Prevalidation.operation list) = +let mk_live_operations (type a) rand (ops : a Prevalidation.operation list) = List.fold_left (fun acc (op : _ Prevalidation.operation) -> if Random.State.bool rand then @@ -227,7 +230,9 @@ let test_apply_operation_live_operations ctxt = end) in let (module P) = create_prevalidation (module Protocol) ctxt in - let ops : unit Prevalidation.operation list = mk_ops (module P) in + let ops : P.protocol_operation Prevalidation.operation list = + mk_ops (module P) + in let live_operations : Operation_hash.Set.t = mk_live_operations rand ops in let predecessor : Store.Block.t = Init.genesis_block @@ Context.hash ~time:timestamp ctxt @@ -273,7 +278,9 @@ let test_apply_operation_applied ctxt = end) in let (module P) = create_prevalidation (module Protocol) ctxt in - let ops : unit Prevalidation.operation list = mk_ops (module P) in + let ops : P.protocol_operation Prevalidation.operation list = + mk_ops (module P) + in let live_operations : Operation_hash.Set.t = mk_live_operations rand ops in let predecessor : Store.Block.t = Init.genesis_block @@ Context.hash ~time:timestamp ctxt diff --git a/src/lib_shell/test/test_prevalidator_classification.ml b/src/lib_shell/test/test_prevalidator_classification.ml index 21a6f914f9..5326ab0d57 100644 --- a/src/lib_shell/test/test_prevalidator_classification.ml +++ b/src/lib_shell/test/test_prevalidator_classification.ml @@ -47,7 +47,7 @@ module Operation_map = struct Operation_hash.pp oph Operation.pp - op)) + op.Prevalidation.raw)) (Operation_hash.Map.bindings map) let pp ppf map = @@ -55,31 +55,39 @@ module Operation_map = struct ppf "[%a]" (Format.pp_print_list (fun ppf (oph, op) -> - Format.fprintf ppf "(%a: %a)" Operation_hash.pp oph Operation.pp op)) + Format.fprintf + ppf + "(%a: %a)" + Operation_hash.pp + oph + Operation.pp + op.Prevalidation.raw)) (Operation_hash.Map.bindings map) (* Uses polymorphic equality on tztraces! *) let eq = Operation_hash.Map.equal (fun (o1, t1) (o2, t2) -> - Operation.equal o1 o2 && t1 = t2) + Operation_hash.equal o1.Prevalidation.hash o2.hash && t1 = t2) end type classification_event = | Add_if_not_present of - Classification.classification * Operation_hash.t * Operation.t + Classification.classification * unit Prevalidation.operation | Remove of Operation_hash.t | Flush of bool let drop oph t = let open Classification in - let (_ : (Operation.t * classification) option) = remove oph t in + let (_ : (unit Prevalidation.operation * classification) option) = + remove oph t + in () let play_event event t = let open Classification in match event with - | Add_if_not_present (classification, oph, op) -> - Generators.add_if_not_present classification oph op t + | Add_if_not_present (classification, op) -> + Generators.add_if_not_present classification op t | Remove oph -> drop oph t | Flush handle_branch_refused -> Internal_for_tests.flush ~handle_branch_refused t @@ -95,16 +103,16 @@ module Extra_generators = struct let event_gen t = let open QCheck2.Gen in let add_gen = - let+ (classification, (oph, op)) = + let+ (classification, op) = pair Generators.classification_gen (Generators.operation_with_hash_gen ()) in - Add_if_not_present (classification, oph, op) + Add_if_not_present (classification, op) in let remove_gen = - let+ (oph, _op) = Generators.with_t_operation_gen t in - Remove oph + let+ op = Generators.with_t_operation_gen t in + Remove op.Prevalidation.hash in let flush_gen = let+ b = bool in @@ -155,7 +163,7 @@ let qcheck_bounded_map_is_empty bounded_map = (** Computes the set of operation hashes present in fields [refused; outdated; branch_refused; branch_delayed; prechecked; applied_rev] of [t]. Also checks that these fields are disjoint. *) -let disjoint_union_classified_fields ?fail_msg (t : Classification.t) = +let disjoint_union_classified_fields ?fail_msg (t : unit Classification.t) = let ( +> ) acc next_set = if not (Operation_hash.Set.disjoint acc next_set) then QCheck2.Test.fail_reportf @@ -171,7 +179,8 @@ let disjoint_union_classified_fields ?fail_msg (t : Classification.t) = +> to_set t.branch_delayed +> (Operation_hash.Map.to_seq t.prechecked |> Seq.map fst |> Operation_hash.Set.of_seq) - +> (Operation_hash.Set.of_list @@ List.rev_map fst t.applied_rev) + +> (Operation_hash.Set.of_list + @@ List.rev_map (fun op -> op.Prevalidation.hash) t.applied_rev) (** Checks both invariants of type [Prevalidator_classification.t]: - The field [in_mempool] is the set of all operation hashes present @@ -186,7 +195,7 @@ let disjoint_union_classified_fields ?fail_msg (t : Classification.t) = the [prevalidator] module, which we cannot do at the moment (September 2021). Instead, we run scenarios which might carry particular risks of breaking this using [Tezt]. *) -let check_invariants ?fail_msg (t : Classification.t) = +let check_invariants ?fail_msg (t : unit Classification.t) = let to_set map = Operation_hash.Map.to_seq map |> Seq.map fst |> Operation_hash.Set.of_seq in @@ -236,14 +245,14 @@ let classification_pp pp classification = | `Outdated _ -> "Outdated") let event_pp pp = function - | Add_if_not_present (classification, oph, _op) -> + | Add_if_not_present (classification, op) -> Format.fprintf pp "Add_if_not_present %a %a" classification_pp classification Operation_hash.pp - oph + op.Prevalidation.hash | Remove oph -> Format.fprintf pp "Remove %a" Operation_hash.pp oph | Flush handle_branch_refused -> Format.fprintf pp "Flush ~handle_branch_refused:%b" handle_branch_refused @@ -320,8 +329,9 @@ let test_is_in_mempool_remove = Test.make ~name:"[is_in_mempool] and [remove_*] are well-behaved" Generators.(Gen.pair (t_with_operation_gen ()) unrefused_classification_gen) - @@ fun ((t, (oph, op)), unrefused_classification) -> - Classification.add unrefused_classification oph op t ; + @@ fun ((t, op), unrefused_classification) -> + Classification.add unrefused_classification op t ; + let oph = op.Prevalidation.hash in qcheck_eq_true ~actual:(is_in_mempool oph t) ; drop oph t ; qcheck_eq_false ~actual:(is_in_mempool oph t) ; @@ -332,8 +342,9 @@ let test_is_applied = Test.make ~name:"[is_applied] is well-behaved" Generators.(Gen.pair (t_gen ()) (operation_with_hash_gen ())) - @@ fun (t, (oph, op)) -> - Classification.add `Applied oph op t ; + @@ fun (t, op) -> + Classification.add `Applied op t ; + let oph = op.Prevalidation.hash in qcheck_eq_true ~actual:(is_in_mempool oph t) ; match Classification.remove oph t with | None -> false @@ -365,10 +376,10 @@ let test_invariants = true module Bounded = struct - type binding = Operation_hash.t * Operation.t + type binding = unit Prevalidation.operation type custom = - Classification.t + unit Classification.t * [ `Branch_delayed of tztrace | `Branch_refused of tztrace | `Refused of tztrace @@ -387,7 +398,7 @@ module Bounded = struct in let binding_pp ppf bindings = bindings - |> List.map (fun (key, _value) -> key) + |> List.map (fun value -> value.Prevalidation.hash) |> Format.pp_print_list Operation_hash.pp ppf in Format.asprintf @@ -416,8 +427,8 @@ module Bounded = struct in let t = Classification.create parameters in List.iter - (fun (classification, (operation_hash, operation)) -> - Classification.add classification operation_hash operation t) + (fun (classification, operation) -> + Classification.add classification operation t) inputs ; let+ error_classification = oneofl [`Branch_delayed []; `Branch_refused []; `Refused []; `Outdated []] @@ -428,13 +439,11 @@ module Bounded = struct in (t, error_classification, first_bindings, other_bindings) - let add_bindings bindings classification t = - List.iter - (fun (oph, op) -> Classification.add classification oph op t) - bindings + let add_ops ops classification t = + List.iter (fun op -> Classification.add classification op t) ops - let check_discarded_contains_bindings ~discarded_hashes ~bindings = - let excess_hashes = bindings |> List.map (fun (oph, _op) -> oph) in + let check_discarded_contains_ops ~discarded_hashes ~ops = + let excess_hashes = List.map (fun op -> op.Prevalidation.hash) ops in if not (List.for_all @@ -475,10 +484,10 @@ module Bounded = struct first operations are discarded" ~print:custom_print (custom_gen discarded_operations_rev) - @@ fun (t, error_classification, first_bindings, other_bindings) -> + @@ fun (t, error_classification, first_ops, other_ops) -> (* We must not have duplicate operation hashes otherwise we may not go over the bound *) let hashes = - first_bindings @ other_bindings |> List.map (fun (hash, _) -> hash) + first_ops @ other_ops |> List.map (fun op -> op.Prevalidation.hash) in let unique_hashes = Operation_hash.Set.of_list hashes in QCheck2.assume @@ -499,21 +508,15 @@ module Bounded = struct in discarded_operations_rev := [] ; (* Add the first bindings (the ones that will get discarded once the other bindings are added) *) - add_bindings - first_bindings - (error_classification :> Classification.classification) - t ; + add_ops first_ops (error_classification :> Classification.classification) t ; (* Now add the other bindings that should cause the first ones to get discarded *) - add_bindings - other_bindings - (error_classification :> Classification.classification) - t ; + add_ops other_ops (error_classification :> Classification.classification) t ; (* [add] calls [on_discarded_operation] when adding any [Refused] or [Outdated] operation, so the recorded discarded operations is a superset of the [first_bindings] ones. *) - check_discarded_contains_bindings + check_discarded_contains_ops ~discarded_hashes:(!discarded_operations_rev |> List.rev) - ~bindings:first_bindings ; + ~ops:first_ops ; check_map_is_full ~expected_size:t.parameters.map_size_limit ~bounded_map ; true end @@ -521,13 +524,23 @@ end (** Tests of [Prevalidator_classification.to_map] *) module To_map = struct let map_pp fmt x = - let map_to_list m = Operation_hash.Map.to_seq m |> List.of_seq in - let pp_pair fmt (oph, op) = - Format.fprintf fmt "%a:%a" Operation_hash.pp oph Operation.pp op + let map_to_list m = + Operation_hash.Map.to_seq m |> Seq.map (fun (_, op) -> op) |> List.of_seq + in + let pp_pair fmt op = + Format.fprintf + fmt + "%a:%a" + Operation_hash.pp + op.Prevalidation.hash + Operation.pp + op.raw in Format.fprintf fmt "%a" (Format.pp_print_list pp_pair) (map_to_list x) - let map_eq = Operation_hash.Map.equal Operation.equal + let map_eq = + Operation_hash.Map.equal (fun op1 op2 -> + Operation.equal op1.Prevalidation.raw op2.raw) (** [remove_all m1 m2] returns the subset of [m1] thas is not within [m2]. Said differently, [remove_all m1 m2] removes from [m1] all keys @@ -547,12 +560,13 @@ module To_map = struct - [v_opt] is [Some v] and the union of [m1] and [(k,v)] equals [m2], or - [v_opt] is [None] and the union of [m1] and [(k,v)] equals [m2], for some unknown value [v]. *) - let eq_mod_binding m1 (k, v_opt) m2 = + let eq_mod_op m1 (k, v_opt) m2 = let diff = remove_all m2 m1 in match (Operation_hash.Map.bindings diff, v_opt) with | ([], _) -> true | ([(kdiff, vdiff)], Some v) - when Operation_hash.equal kdiff k && Operation.equal v vdiff -> + when Operation_hash.equal kdiff k + && Operation.equal v.Prevalidation.raw vdiff.Prevalidation.raw -> true | ([(kdiff, _)], None) when Operation_hash.equal kdiff k -> true | _ -> false @@ -593,15 +607,16 @@ module To_map = struct (Gen.pair (Generators.t_with_operation_gen ()) Generators.classification_gen) - @@ fun ((t, (oph, op)), classification) -> + @@ fun ((t, op), classification) -> let initial = to_map_all t in - Classification.add classification oph op t ; + Classification.add classification op t ; (* We need to use [eq_mod_binding] because it covers the two possible cases: if [oph] is not in [initial], we have [initial @@ [(oph, op)] = to_map_all t] if [oph] is in [initial] already, we have [initial = to_map_all t] *) qcheck_eq' ~expected:true - ~actual:(eq_mod_binding initial (oph, Some op) (to_map_all t)) + ~actual: + (eq_mod_op initial (op.Prevalidation.hash, Some op) (to_map_all t)) () (** Tests the relationship between [Classification.remove] @@ -611,26 +626,26 @@ module To_map = struct Test.make ~name:"[remove] reduces the size of [to_map] by 0 or 1" (Generators.t_with_operation_gen ()) - @@ fun (t, (oph, _)) -> + @@ fun (t, op) -> let initial = to_map_all t in - drop oph t ; + drop op.Prevalidation.hash t ; (* We need to use [eq_mod_binding] because it covers the two possible cases: if [oph] is not in [initial], we have [initial = to_map_all t] if [oph] is in [initial], we have [initial = to_map_all t @@ [(oph, op)] ] *) qcheck_eq' ~expected:true - ~actual:(eq_mod_binding (to_map_all t) (oph, None) initial) + ~actual:(eq_mod_op (to_map_all t) (op.Prevalidation.hash, None) initial) () + let to_string ((t, op), _classification) = + Format.asprintf + "Starting with:@. %a@.and operation hash %a@. " + Operation_map.pp + (to_map_all t) + Operation_hash.pp + op.Prevalidation.hash + let test_map_remove_add = - let to_string ((t, (oph, _op)), _classification) = - Format.asprintf - "Starting with:@. %a@.and operation hash %a@. " - Operation_map.pp - (to_map_all t) - Operation_hash.pp - oph - in (* Property checked: - \forall t oph class, C.to_map (C.remove t oph) + oph = @@ -648,17 +663,19 @@ module To_map = struct (Gen.pair (Generators.t_with_operation_gen ~can_be_full:false ()) Generators.classification_gen) - @@ fun ((t, (oph, op)), classification) -> + @@ fun ((t, op), classification) -> let t' = Classification.Internal_for_tests.copy t in - drop oph t ; + drop op.Prevalidation.hash t ; let initial = to_map_all t in - let left = Operation_hash.Map.add oph op initial in - Classification.add classification oph op t' ; + let left = Operation_hash.Map.add op.Prevalidation.hash op initial in + Classification.add classification op t' ; let right = to_map_all t' in qcheck_eq' ~expected:left ~actual:right - ~eq:(Operation_hash.Map.equal Operation.equal) + ~eq: + (Operation_hash.Map.equal (fun op1 op2 -> + Operation_hash.equal op1.Prevalidation.hash op2.hash)) ~pp:map_pp () @@ -672,14 +689,6 @@ module To_map = struct This property is true only if [t] is not full with regard to the classification of the operation. *) - let to_string ((t, (oph, _op)), _classification) = - Format.asprintf - "Starting with:@. %a@.and operation hash %a@. " - Operation_map.pp - (to_map_all t) - Operation_hash.pp - oph - in let open QCheck2 in Test.make ~name:"Check property between map, remove and add (2)" @@ -687,17 +696,20 @@ module To_map = struct (Gen.pair (Generators.t_with_operation_gen ~can_be_full:false ()) Generators.classification_gen) - @@ fun ((t, (oph, op)), classification) -> + @@ fun ((t, op), classification) -> let t' = Classification.Internal_for_tests.copy t in - Classification.add classification oph op t ; + Classification.add classification op t ; let initial = to_map_all t in + let oph = op.Prevalidation.hash in let left = Operation_hash.Map.remove oph initial in drop oph t' ; let right = to_map_all t' in qcheck_eq' ~expected:left ~actual:right - ~eq:(Operation_hash.Map.equal Operation.equal) + ~eq: + (Operation_hash.Map.equal (fun op1 op2 -> + Operation_hash.equal op1.Prevalidation.hash op2.Prevalidation.hash)) ~pp:map_pp () @@ -730,7 +742,8 @@ module To_map = struct Test.make ~name:"[is_in_mempool] can be emulated by [to_map]" (Generators.t_with_operation_gen ()) - @@ fun (t, (oph, _)) -> + @@ fun (t, op) -> + let oph = op.Prevalidation.hash in let is_in_mempool = is_in_mempool oph t in let map = to_map_all t |> Operation_hash.Map.filter (fun oph' _ -> oph' = oph) @@ -781,8 +794,8 @@ let test_create_add_not_empty = (Gen.pair (Generators.t_with_operation_gen ()) Generators.classification_gen) - @@ fun ((t, (oph, op)), classification) -> - Classification.add classification oph op t ; + @@ fun ((t, op), classification) -> + Classification.add classification op t ; qcheck_eq' ~expected:false ~actual:(Classification.is_empty t) () let () = diff --git a/src/lib_shell/test/test_prevalidator_classification_operations.ml b/src/lib_shell/test/test_prevalidator_classification_operations.ml index a5598196b8..e4b26f3385 100644 --- a/src/lib_shell/test/test_prevalidator_classification_operations.ml +++ b/src/lib_shell/test/test_prevalidator_classification_operations.ml @@ -215,7 +215,7 @@ module Block = struct [Prevalidator.Internal_for_tests.handle_live_operations] *) type t = { hash : Block_hash.t; - operations : (Operation_hash.t * Operation.t) list list; + operations : unit Prevalidation.operation list list; } (* Because we use hashes to implement equality, we must make sure @@ -226,17 +226,18 @@ module Block = struct let compare (t1 : t) (t2 : t) = Block_hash.compare t1.hash t2.hash - (** [hash_of_blocks ops_and_hashes] is used to compute the hash of a block whose - [operations] field contains [ops_and_hashes]. + (** [hash_of_blocks ops] is used to compute the hash of a block whose + [operations] field contains [ops]. We want the hash to be sound, because it is used to implement equality (see {!equal} above), like in the production implementation. Given that {!t} above contains a single field besides the [hash], we hash the content of this field to obtain the hash of a block. That is why we hash the hashes of operations. *) - let hash_of_block ops_and_hashes = + let hash_of_block ops = let hash = - Operation_list_hash.compute (List.map fst @@ List.concat ops_and_hashes) + Operation_list_hash.compute + (List.map (fun op -> op.Prevalidation.hash) @@ List.concat ops) in (* We forge a fake [block_header] hash by first hashing the operations and change the [b58] signature into a signature that looks like @@ -253,15 +254,21 @@ module Block = struct let to_hash (blk : t) = blk.hash let tools : t Classification.block_tools = - let operations block = List.map (List.map snd) block.operations in - let all_operation_hashes block = List.map (List.map fst) block.operations in + let operations block = + List.map (List.map (fun op -> op.Prevalidation.raw)) block.operations + in + let all_operation_hashes block = + List.map (List.map (fun op -> op.Prevalidation.hash)) block.operations + in {hash = to_hash; operations; all_operation_hashes} let to_string t = let ops_list_to_string ops = String.concat "|" - (List.map Operation_hash.to_short_b58check (List.map fst ops)) + (List.map + Operation_hash.to_short_b58check + (List.map (fun op -> op.Prevalidation.hash) ops)) in let ops_string = List.fold_left @@ -379,19 +386,26 @@ module Generators = struct (** A generator for passing the last argument of [Prevalidator.handle_live_operations] *) let old_mempool_gen (tree : Block.t Tree.tree) : - Operation.t Operation_hash.Map.t QCheck2.Gen.t = + unit Prevalidation.operation Operation_hash.Map.t QCheck2.Gen.t = let blocks = Tree.values tree in let pairs = List.map Block.tools.operations blocks |> List.concat |> List.concat in let elements = - List.map (fun (op : Operation.t) -> (Operation.hash op, op)) pairs + List.map + (fun (op : Operation.t) -> + let hash = Operation.hash op in + Prevalidation.Internal_for_tests.make_operation op hash ()) + pairs in if elements = [] then QCheck2.Gen.return Operation_hash.Map.empty else let list_gen = QCheck2.Gen.(oneofl elements |> list) in QCheck2.Gen.map - (fun l -> Operation_hash.Map.of_seq (List.to_seq l)) + (fun l -> + List.to_seq l + |> Seq.map (fun op -> (op.Prevalidation.hash, op)) + |> Operation_hash.Map.of_seq) list_gen (** Returns an instance of [block chain_tools] as well as: @@ -408,7 +422,7 @@ module Generators = struct (Block.t Classification.chain_tools * Block.t Tree.tree * (Block.t * Block.t) option - * Operation.t Operation_hash.Map.t) + * unit Prevalidation.operation Operation_hash.Map.t) QCheck2.Gen.t = let open QCheck2.Gen in let* tree = tree_gen ?blocks () in @@ -513,8 +527,14 @@ let op_set_pp fmt x = (** Pretty print values of type [Operation.t Operation_hash.Map] *) let op_map_pp fmt x = - let pp_pair fmt (oph, op) = - Format.fprintf fmt "%a:%a" Operation_hash.pp oph Operation.pp op + let pp_pair fmt (hash, op) = + Format.fprintf + fmt + "%a:%a" + Operation_hash.pp + hash + Operation.pp + op.Prevalidation.raw in Format.fprintf fmt @@ -548,18 +568,32 @@ let blocks_to_oph_set (blocks : Operation_hash.t list list list) : (** [is_subset m1 m2] returns whether all bindings of [m1] are in [m2]. In other words, it returns whether [m2] is a superset of [m1]. *) -let is_subset (m1 : Operation.t Op_map.t) (m2 : Operation.t Op_map.t) = - let rec go (m1_seq : (Operation_hash.t * Operation.t) Seq.t) = +let is_subset (m1 : unit Prevalidation.operation Op_map.t) + (m2 : unit Prevalidation.operation Op_map.t) = + let rec go (m1_seq : (Operation_hash.t * unit Prevalidation.operation) Seq.t) + = match m1_seq () with | Seq.Nil -> true | Seq.Cons ((m1_key, m1_value), m1_rest) -> ( match Op_map.find m1_key m2 with | None -> (* A key in [m1] that is not in [m2] *) false - | Some m2_value -> Operation.equal m1_value m2_value && go m1_rest) + | Some m2_value -> + Operation_hash.equal + m1_value.Prevalidation.hash + m2_value.Prevalidation.hash + && go m1_rest) in go (Op_map.to_seq m1) module Handle_operations = struct + (* This is used only if operations are not parsable*) + let dummy_classes = + Classification.( + create {map_size_limit = 1; on_discarded_operation = (fun _oph -> ())}) + + let parse raw hash = + Some (Prevalidation.Internal_for_tests.make_operation hash raw ()) + (** Test that operations returned by [handle_live_operations] are all in the alive branch. *) let test_handle_live_operations_is_branch_alive = @@ -589,7 +623,7 @@ module Handle_operations = struct @@ fun (chain, tree, pair_blocks_opt, old_mempool, live_blocks) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in - let expected_superset : Operation.t Op_map.t = + let expected_superset : unit Prevalidation.operation Op_map.t = (* Take all blocks *) Tree.values tree (* Keep only the ones in live_blocks *) @@ -597,16 +631,20 @@ module Handle_operations = struct Block_hash.Set.mem blk.hash live_blocks) (* Then extract (oph, op) pairs from them *) |> List.map (fun (blk : Block.t) -> blk.operations) - |> List.concat |> List.concat |> List.to_seq |> Op_map.of_seq + |> List.concat |> List.concat |> List.to_seq + |> Seq.map (fun op -> (op.Prevalidation.hash, op)) + |> Op_map.of_seq in - let actual : Operation.t Op_map.t = + let actual : unit Prevalidation.operation Op_map.t = Classification.Internal_for_tests.handle_live_operations + ~classes:dummy_classes ~block_store:Block.tools ~chain ~from_branch ~to_branch ~is_branch_alive:(fun blk_hash -> Block_hash.Set.mem blk_hash live_blocks) + ~parse old_mempool |> Lwt_main.run in @@ -645,11 +683,13 @@ module Handle_operations = struct in let actual = Classification.Internal_for_tests.handle_live_operations + ~classes:dummy_classes ~block_store:Block.tools ~chain ~from_branch ~to_branch ~is_branch_alive:(Fun.const true) + ~parse Operation_hash.Map.empty |> Lwt_main.run |> Op_map.bindings |> List.map fst |> Operation_hash.Set.of_list @@ -681,11 +721,13 @@ module Handle_operations = struct |> blocks_to_oph_set in Classification.Internal_for_tests.handle_live_operations + ~classes:dummy_classes ~block_store:Block.tools ~chain ~from_branch ~to_branch ~is_branch_alive:(Fun.const true) + ~parse old_mempool |> Lwt_main.run |> ignore ; qcheck_cond @@ -722,11 +764,13 @@ module Handle_operations = struct |> blocks_to_oph_set in Classification.Internal_for_tests.handle_live_operations + ~classes:dummy_classes ~block_store:Block.tools ~chain ~from_branch ~to_branch ~is_branch_alive:(Fun.const true) + ~parse old_mempool |> Lwt_main.run |> ignore ; qcheck_cond @@ -747,11 +791,11 @@ module Recyle_operations = struct given operations and hashes, spreading them among the different classes of {!Prevalidator_classification.t}. This generator is NOT a fully random generator like {!Prevalidator_generators.t_gen}. *) - let classification_of_ops_gen (ops : Operation.t Op_map.t) : - Classification.t QCheck2.Gen.t = + let classification_of_ops_gen (ops : unit Prevalidation.operation Op_map.t) : + unit Classification.t QCheck2.Gen.t = let open QCheck2.Gen in - let bindings = Operation_hash.Map.bindings ops in - let length = List.length bindings in + let ops = Operation_hash.Map.bindings ops |> List.map snd in + let length = List.length ops in let* empty_space = 0 -- 100 in (* To avoid throwing part of [ops], we want the capacity of the classification to be equal or larger than [length], hence: *) @@ -767,9 +811,9 @@ module Recyle_operations = struct assert (List.length classes == length) ; let t = Prevalidator_classification.create parameters in List.iter - (fun (classification, (oph, op)) -> - External_generators.add_if_not_present classification oph op t) - (List.combine_drop classes bindings) ; + (fun (classification, op) -> + External_generators.add_if_not_present classification op t) + (List.combine_drop classes ops) ; return t (** Returns data to test {!Classification.recyle_operations}: @@ -792,7 +836,9 @@ module Recyle_operations = struct let to_ops (blk : Block.t) = List.concat blk.operations in let oph_op_list_to_map l = List.to_seq l |> Op_map.of_seq in let blocks_ops = - List.map to_ops blocks |> List.concat |> oph_op_list_to_map + List.map to_ops blocks |> List.concat + |> List.map (fun op -> (op.Prevalidation.hash, op)) + |> oph_op_list_to_map in let both f (a, b) = (f a, f b) in let blocks_hashes = List.map Block.to_hash blocks in @@ -836,20 +882,24 @@ module Recyle_operations = struct Test.make ~name:"[recycle_operations ~live_blocks:empty] is empty" Gen.(pair gen bool) - @@ fun ( (chain, _tree, pair_blocks_opt, classification, pending), + @@ fun ( (chain, _tree, pair_blocks_opt, classes, pending), handle_branch_refused ) -> assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in - let actual : Operation.t Op_map.t = + let parse raw hash = + Some (Prevalidation.Internal_for_tests.make_operation hash raw ()) + in + let actual : unit Prevalidation.operation Op_map.t = Classification.recycle_operations ~block_store:Block.tools ~chain ~from_branch ~to_branch ~live_blocks:Block_hash.Set.empty - ~classification + ~classes ~pending ~handle_branch_refused + ~parse |> Lwt_main.run in qcheck_eq' ~pp:op_map_pp ~actual ~expected:Op_map.empty () @@ -863,7 +913,7 @@ module Recyle_operations = struct QCheck2.Test.make ~name:"[recycle_operations] returned value can be approximated" QCheck2.Gen.(pair gen bool) - @@ fun ( (chain, tree, pair_blocks_opt, classification, pending), + @@ fun ( (chain, tree, pair_blocks_opt, classes, pending), handle_branch_refused ) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in @@ -894,7 +944,7 @@ module Recyle_operations = struct ~branch_refused:handle_branch_refused ~refused:false ~outdated:false - classification + classes |> op_map_to_hash_list in let expected_from_pending = op_map_to_hash_list pending in @@ -905,6 +955,9 @@ module Recyle_operations = struct expected_from_classification) expected_from_pending in + let parse raw hash = + Some (Prevalidation.Internal_for_tests.make_operation hash raw ()) + in let actual : Operation_hash.Set.t = Classification.recycle_operations ~block_store:Block.tools @@ -912,9 +965,10 @@ module Recyle_operations = struct ~from_branch ~to_branch ~live_blocks - ~classification + ~classes ~pending ~handle_branch_refused + ~parse |> Lwt_main.run |> Op_map.bindings |> List.map fst |> Operation_hash.Set.of_list in @@ -931,13 +985,13 @@ module Recyle_operations = struct QCheck2.Test.make ~name:"[recycle_operations] correctly trims its input classification" QCheck2.Gen.(pair gen bool) - @@ fun ( (chain, tree, pair_blocks_opt, classification, pending), + @@ fun ( (chain, tree, pair_blocks_opt, classes, pending), handle_branch_refused ) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let live_blocks : Block_hash.Set.t = Tree.values tree |> List.map Block.to_hash |> Block_hash.Set.of_list in - let expected : Operation.t Op_map.t = + let expected : unit Prevalidation.operation Op_map.t = Classification.Internal_for_tests.to_map ~applied:false ~prechecked:false @@ -945,9 +999,12 @@ module Recyle_operations = struct ~branch_refused:(not handle_branch_refused) ~refused:true ~outdated:true - classification + classes in let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in + let parse raw hash = + Some (Prevalidation.Internal_for_tests.make_operation hash raw ()) + in let () = Classification.recycle_operations ~block_store:Block.tools @@ -955,9 +1012,10 @@ module Recyle_operations = struct ~from_branch ~to_branch ~live_blocks - ~classification + ~classes ~pending ~handle_branch_refused + ~parse |> Lwt_main.run |> ignore in let actual = @@ -968,7 +1026,7 @@ module Recyle_operations = struct ~branch_refused:true ~refused:true ~outdated:true - classification + classes in qcheck_eq' ~pp:op_map_pp ~expected ~actual () end diff --git a/src/lib_shell/test/test_prevalidator_pending_operations.ml b/src/lib_shell/test/test_prevalidator_pending_operations.ml index 20cbbdef03..16c126fbcf 100644 --- a/src/lib_shell/test/test_prevalidator_pending_operations.ml +++ b/src/lib_shell/test/test_prevalidator_pending_operations.ml @@ -35,8 +35,7 @@ module Pending_ops = Prevalidator_pending_operations let pending_of_list = List.fold_left - (fun pendings (hash, op, priority) -> - Pending_ops.add hash op priority pendings) + (fun pendings (op, priority) -> Pending_ops.add op priority pendings) Pending_ops.empty (* 1. Test iterators ordering *) From 5f33afc826b4dea54d9b62c95778bfbf39a3b2b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Wed, 12 Jan 2022 14:26:15 +0100 Subject: [PATCH 0057/1220] Prevalidation/test: test the new unparsable components of the API --- .../test/test_prevalidator_classification.ml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/lib_shell/test/test_prevalidator_classification.ml b/src/lib_shell/test/test_prevalidator_classification.ml index 5326ab0d57..954ef64850 100644 --- a/src/lib_shell/test/test_prevalidator_classification.ml +++ b/src/lib_shell/test/test_prevalidator_classification.ml @@ -375,6 +375,36 @@ let test_invariants = in true +module Unparsable = struct + (** Tests the relationship between [Classification.add_unparsable] + and [Classification.is_known_unparsable] *) + let test_add_is_known = + let open QCheck2 in + Test.make + ~name:"[is_known_unparsable oph (add_unparsable oph t)] holds" + Generators.(t_with_operation_gen ()) + @@ fun (t, op) -> + let oph = op.Prevalidation.hash in + Classification.add_unparsable oph t ; + qcheck_eq_true ~actual:(Classification.is_known_unparsable oph t) ; + true + + (** Tests the relationship between [flush] and + [Classification.is_known_unparsable]. This test shows that + flushing does not put any previously classified operations into + the [unparsable] field. *) + let test_flush_is_known = + let open QCheck2 in + Test.make + ~name:"[is_known_unparsable _ (flush t)] does not hold" + (Gen.pair (Generators.t_with_operation_gen ()) Gen.bool) + @@ fun ((t, op), handle_branch_refused) -> + let oph = op.Prevalidation.hash in + Classification.Internal_for_tests.flush ~handle_branch_refused t ; + qcheck_eq_false ~actual:(Classification.is_known_unparsable oph t) ; + true +end + module Bounded = struct type binding = unit Prevalidation.operation @@ -811,6 +841,7 @@ let () = ]; mk_tests "is_in_mempool" [test_is_in_mempool_remove]; mk_tests "is_applied" [test_is_applied]; + mk_tests "unparsable" Unparsable.[test_add_is_known; test_flush_is_known]; mk_tests "invariants" [test_invariants]; mk_tests "bounded" [Bounded.test_bounded]; mk_tests From 487c95a024bf9a8c7ca16bc4b08c225d27b74f25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Mon, 10 Jan 2022 17:38:10 +0100 Subject: [PATCH 0058/1220] CHANGES.rst --- CHANGES.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 1546f401aa..1f6e99d5f4 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -23,6 +23,10 @@ be documented here either. Node ---- +- The RPC GET `/chains/main/mempool/pending_operations` does not + output unparsable operations anymore. Previously, they were in the + ``Refused`` field with a parsing error. + Client ------ From afb2f8b06565b57d597cb6ded6a9047b02042f9a Mon Sep 17 00:00:00 2001 From: Yann Regis-Gianas Date: Wed, 12 Jan 2022 16:49:49 +0100 Subject: [PATCH 0059/1220] Repo: Ignore sc rollup client binary Signed-off-by: Yann Regis-Gianas --- .dockerignore | 1 + .gitignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.dockerignore b/.dockerignore index 0b28cdc6f4..cdd3b23884 100644 --- a/.dockerignore +++ b/.dockerignore @@ -24,6 +24,7 @@ tezos-accuser-* tezos-proxy-server tezos-signer tezos-sc-rollup-node-* +tezos-sc-rollup-client-* scripts/opam-test-all.sh.DONE scripts/create_genesis/src diff --git a/.gitignore b/.gitignore index d751a42b17..8072c5aa0d 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ __pycache__ /tezos-snoop /tezos-tps-evaluation /tezos-sc-rollup-node-* +/tezos-sc-rollup-client-* /src/proto_*/parameters/*-parameters.json From 995db4d9ad6cb6e517862706b8866d7260e4ca20 Mon Sep 17 00:00:00 2001 From: Joel Bjornson Date: Fri, 7 Jan 2022 14:43:44 +0000 Subject: [PATCH 0060/1220] Proto: add fold operation for carbonated-maps --- .../carbonated_map_benchmarks.ml | 20 +++++----- .../lib_protocol/carbonated_map.ml | 40 ++++++++++++++----- .../lib_protocol/carbonated_map.mli | 15 +++++++ .../lib_protocol/carbonated_map_costs.ml | 4 +- .../lib_protocol/carbonated_map_costs.mli | 5 +-- 5 files changed, 59 insertions(+), 25 deletions(-) diff --git a/src/proto_alpha/lib_benchmarks_proto/carbonated_map_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/carbonated_map_benchmarks.ml index 1c91430d3f..4e16ebb265 100644 --- a/src/proto_alpha/lib_benchmarks_proto/carbonated_map_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/carbonated_map_benchmarks.ml @@ -61,10 +61,10 @@ let register (module BM : Benchmark.S) = (Model.For_codegen model)) (** - Benchmarks the [to_list] function of [Carbonated_map]. + Benchmarks the [fold] functions of [Carbonated_map]. This benchmark does not depend on the size of the keys or types of elements. *) -module To_list_benchmark : Benchmark.S = struct +module Fold_benchmark : Benchmark.S = struct include Config_and_workload module Int = struct @@ -74,19 +74,19 @@ module To_list_benchmark : Benchmark.S = struct let compare_cost _ = Saturation_repr.safe_int 0 end - let name = carbonated_map_cost_name "to_list" + let name = carbonated_map_cost_name "fold" let info = "Carbonated map to list" - let to_list_model = + let fold_model = Model.make ~conv:(fun {size} -> (size, ())) ~model: (Model.affine - ~intercept:(Free_variable.of_string "to_list_const") - ~coeff:(Free_variable.of_string "to_list_cost_per_item")) + ~intercept:(Free_variable.of_string "fold_const") + ~coeff:(Free_variable.of_string "fold_cost_per_item")) - let models = [("carbonated_map", to_list_model)] + let models = [("carbonated_map", fold_model)] let benchmark rng_state config () = let module M = Carbonated_map.Make (Int) in @@ -114,7 +114,9 @@ module To_list_benchmark : Benchmark.S = struct | _ -> assert false in let workload = {size = M.size map} in - let closure () = ignore @@ M.to_list ctxt map in + let closure () = + ignore @@ M.fold ctxt (fun ctxt _ _ _ -> ok ((), ctxt)) () map + in Generator.Plain {workload; closure} let create_benchmarks ~rng_state ~bench_num config = @@ -332,7 +334,7 @@ end module Benchmarks_int = Make (Int) let () = - register (module To_list_benchmark) ; + register (module Fold_benchmark) ; register (module Benchmarks_int.Compare) ; register (module Benchmarks_int.Find) ; register (module Benchmarks_int.Find_intercept) diff --git a/src/proto_alpha/lib_protocol/carbonated_map.ml b/src/proto_alpha/lib_protocol/carbonated_map.ml index 9e794697b0..634d22dff2 100644 --- a/src/proto_alpha/lib_protocol/carbonated_map.ml +++ b/src/proto_alpha/lib_protocol/carbonated_map.ml @@ -63,6 +63,13 @@ module type S = sig (context -> key -> 'a -> ('b * context) tzresult) -> 'a t -> ('b t * context) tzresult + + val fold : + context -> + (context -> 'state -> key -> 'value -> ('state * context) tzresult) -> + 'state -> + 'value t -> + ('state * context) tzresult end module type COMPARABLE = sig @@ -116,7 +123,7 @@ module Make (C : COMPARABLE) = struct | (None, None) -> ok ({map; size}, ctxt) let to_list ctxt {map; size} = - Gas.consume ctxt (Carbonated_map_costs.to_list_cost ~size) >|? fun ctxt -> + Gas.consume ctxt (Carbonated_map_costs.fold_cost ~size) >|? fun ctxt -> (M.bindings map, ctxt) let add ctxt ~merge_overlap key value {map; size} = @@ -145,22 +152,33 @@ module Make (C : COMPARABLE) = struct (* To be on the safe side, pay an upfront gas cost for traversing the map. Each step of the fold is accounted for separately. *) - Gas.consume ctxt (Carbonated_map_costs.to_list_cost ~size) >>? fun ctxt -> + Gas.consume ctxt (Carbonated_map_costs.fold_cost ~size) >>? fun ctxt -> M.fold_e (fun key value (map, ctxt) -> add ctxt ~merge_overlap key value map) map (map1, ctxt) + let fold ctxt f empty {map; size} = + Gas.consume ctxt (Carbonated_map_costs.fold_cost ~size) >>? fun ctxt -> + M.fold_e + (fun key value (acc, ctxt) -> + (* Invoking [f] must also account for gas. *) + f ctxt acc key value) + map + (empty, ctxt) + let map ctxt f {map; size} = (* We cannot use the standard map function because [f] also meters the gas cost at each invocation. *) - let accum key value (map, ctxt) = - (* Invoking [f] must also account for gas. *) - f ctxt key value >>? fun (value, ctxt) -> - (* Consume gas for adding the element. *) - Gas.consume ctxt (update_cost ~key ~size) >|? fun ctxt -> - (M.add key value map, ctxt) - in - Gas.consume ctxt (Carbonated_map_costs.to_list_cost ~size) >>? fun ctxt -> - M.fold_e accum map (M.empty, ctxt) >|? fun (map, ctxt) -> ({map; size}, ctxt) + fold + ctxt + (fun ctxt map key value -> + (* Invoking [f] must also account for gas. *) + f ctxt key value >>? fun (value, ctxt) -> + (* Consume gas for adding the element. *) + Gas.consume ctxt (update_cost ~key ~size) >|? fun ctxt -> + (M.add key value map, ctxt)) + M.empty + {map; size} + >|? fun (map, ctxt) -> ({map; size}, ctxt) end diff --git a/src/proto_alpha/lib_protocol/carbonated_map.mli b/src/proto_alpha/lib_protocol/carbonated_map.mli index 51a20f78bb..d8b66964c3 100644 --- a/src/proto_alpha/lib_protocol/carbonated_map.mli +++ b/src/proto_alpha/lib_protocol/carbonated_map.mli @@ -113,6 +113,21 @@ module type S = sig ('b * Alpha_context.context) tzresult) -> 'a t -> ('b t * Alpha_context.context) tzresult + + (** [fold ctxt f z m] folds over the key-value pairs of the given map [m], + accumulating values using [f], with [z] as the initial state. The function + [f] must account for its own gas cost. The complexity is linear in the + size of the map [m]. *) + val fold : + Alpha_context.context -> + (Alpha_context.context -> + 'state -> + key -> + 'value -> + ('state * Alpha_context.context) tzresult) -> + 'state -> + 'value t -> + ('state * Alpha_context.context) tzresult end (** A module type for comparable values that also includes a cost function diff --git a/src/proto_alpha/lib_protocol/carbonated_map_costs.ml b/src/proto_alpha/lib_protocol/carbonated_map_costs.ml index 4d774d5b8c..edb970793a 100644 --- a/src/proto_alpha/lib_protocol/carbonated_map_costs.ml +++ b/src/proto_alpha/lib_protocol/carbonated_map_costs.ml @@ -64,9 +64,9 @@ let update_cost ~compare_key_cost ~size = (** TODO: https://gitlab.com/tezos/tezos/-/issues/2062 Plugin benchmarked gas. - Collect benchmark from [Carbonated_map_benchmarks.To_list_benchmark]. + Collect benchmark from [Carbonated_map_benchmarks.Fold_benchmark]. The cost of producing a list of elements is linear in the size of the map and does not depend on the size of the elements nor keys. *) -let to_list_cost ~size = Gas.(S.safe_int 100 *@ S.safe_int size) +let fold_cost ~size = Gas.(S.safe_int 100 *@ S.safe_int size) diff --git a/src/proto_alpha/lib_protocol/carbonated_map_costs.mli b/src/proto_alpha/lib_protocol/carbonated_map_costs.mli index 763ffaf363..eec763b5bc 100644 --- a/src/proto_alpha/lib_protocol/carbonated_map_costs.mli +++ b/src/proto_alpha/lib_protocol/carbonated_map_costs.mli @@ -42,6 +42,5 @@ val find_cost : val update_cost : compare_key_cost:Alpha_context.Gas.cost -> size:int -> Alpha_context.Gas.cost -(** [to_list_cost ~size] returns the cost of transforming a map of size [size] - to a list of key-value pairs. *) -val to_list_cost : size:int -> Alpha_context.Gas.cost +(** [fold_cost ~size] returns the cost of folding over a list of size [size]. *) +val fold_cost : size:int -> Alpha_context.Gas.cost From a3b7b7d825135fd91a7930106cf25d84cbbc73ac Mon Sep 17 00:00:00 2001 From: Joel Bjornson Date: Fri, 7 Jan 2022 14:52:25 +0000 Subject: [PATCH 0061/1220] Test: add tests for fold of carbonated maps --- .../test/pbt/test_carbonated_map.ml | 48 +++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/src/proto_alpha/lib_protocol/test/pbt/test_carbonated_map.ml b/src/proto_alpha/lib_protocol/test/pbt/test_carbonated_map.ml index 4db75cd285..89f29a257e 100644 --- a/src/proto_alpha/lib_protocol/test/pbt/test_carbonated_map.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_carbonated_map.ml @@ -395,9 +395,9 @@ let test_size_add_one = | None -> Ok (size' = size + 1) | Some _ -> Ok (size' = size) -(** Test that mapping over a map yields is equivalent to mapping over the list - of key-value pairs and reconstructing the map. That is, the following - diagram commutes: +(** Test that mapping over a map is equivalent to mapping over the list of + key-value pairs and reconstructing the map. That is, the following diagram + commutes: [map] ----to_list---> [list] | | @@ -414,6 +414,45 @@ let test_map = let kvs' = List.map (fun (k, v) -> (k, v + 1)) kvs in assert_map_contains ctxt map' kvs' +(** Test that folding over an empty map does not invoke the accumulator + function. *) +let test_fold_empty = + unit_test "Fold empty" @@ fun () -> + let ctxt = unsafe_new_context () in + let* (x, _) = CM.fold ctxt (fun _ctxt _acc _k _v -> dummy_fail) 0 CM.empty in + Ok (x = 0) + +(** Test that folding over a map is equivalent to folding over the corresponding + list of key-value pairs. That is, the following diagram commutes: + + [map] -- to_list --> [list] + | | + [fold f z] [List.fold_left f z] + | | + res <----- id -----> res +*) +let test_fold = + int_map_test "Test that fold commutes with folding over a list" @@ fun map -> + let ctxt = unsafe_new_context () in + let* (kvs, ctxt) = CM.to_list ctxt map in + let sum = List.fold_left (fun sum (k, v) -> k + v + sum) 0 kvs in + let* (sum', _) = + CM.fold ctxt (fun ctxt sum k v -> Ok (k + v + sum, ctxt)) 0 map + in + Ok (sum = sum') + +(** Test that all key-value pairs can be collected by a fold. And that the + order is the same as for [to_list]. *) +let test_fold_to_list = + int_map_test "Test that fold collecting the elements agrees with to-list" + @@ fun map -> + let ctxt = unsafe_new_context () in + let* (kvs, ctxt) = CM.to_list ctxt map in + let* (kvs', _) = + CM.fold ctxt (fun ctxt kvs k v -> Ok ((k, v) :: kvs, ctxt)) [] map + in + Ok (kvs = List.rev kvs') + (** Test that mapping with a failing function fails iff the list is non-empty. *) let test_map_fail = int_map_test "Test map with failing function" @@ fun map -> @@ -461,6 +500,9 @@ let tests = test_update_merge; test_update_delete; test_map; + test_fold_empty; + test_fold; + test_fold_to_list; test_map_fail; ] From 70f78259c18408e769ef949fcaaec43ac6140c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Thu, 9 Dec 2021 11:03:42 +0100 Subject: [PATCH 0062/1220] prevalidator: abstract from Distributed_db.chain_db --- src/lib_shell/prevalidator.ml | 183 +++++++++++++++++++++++----------- 1 file changed, 125 insertions(+), 58 deletions(-) diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index e7ef768583..84917ba84c 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -290,10 +290,6 @@ module Logger = let worker_name = "node_prevalidator" end) -(* FIXME: https://gitlab.com/tezos/tezos/-/issues/1794 - We should use chain_tools instead of chain_db *) -type parameters = {limits : limits; chain_db : Distributed_db.chain_db} - module Classification = Prevalidator_classification (** This module encapsulates pending operations to maintain them in two @@ -301,11 +297,67 @@ module Classification = Prevalidator_classification handling batches in [classify_pending_operations]. *) module Pending_ops = Prevalidator_pending_operations +(** Module encapsulating some types that are used both in production + and in tests. Having them in a module makes it possible to + [include] this module in {!Internal_for_tests} below and avoid + code duplication. + + The raison d'etre of these records of functions is to be able to use + alternative implementations of all functions in tests. + + The purpose of the {!Tools.tools} record is to abstract away from {!Store.chain_store}. + Under the hood [Store.chain_store] requires an Irmin store on disk, + which makes it impractical for fast testing: every test would need + to create a temporary folder on disk which doesn't scale well. *) +module Tools = struct + (** Functions provided by {!Distributed_db} and {!Store.chain_store} + that are used in various places of the mempool. Gathered here so that we can test + the mempool without requiring a full-fledged [Distributed_db]/[Store.Chain_store]. *) + type 'prevalidation_t tools = { + advertise_current_head : mempool:Mempool.t -> Store.Block.t -> unit; + (** [advertise_current_head mempool head] sends a + [Current_head (chain_id, head_header, mempool)] message to all known + active peers for the chain being considered. *) + chain_tools : Store.Block.t Classification.chain_tools; + (** Lower-level tools provided by {!Prevalidator_classification} *) + create : + predecessor:Store.Block.t -> + live_operations:Operation_hash.Set.t -> + timestamp:Time.Protocol.t -> + unit -> + 'prevalidation_t tzresult Lwt.t; + (** Creates a new prevalidation context w.r.t. the protocol associated to the + predecessor block. *) + fetch : + ?peer:P2p_peer.Id.t -> + ?timeout:Time.System.Span.t -> + Operation_hash.t -> + Operation.t tzresult Lwt.t; + (** [fetch ?peer ?timeout oph] returns the value when it is known. + It can fail with [Requester.Timeout] if [timeout] is provided and the value + isn't known before the timeout expires. It can fail with [Requester.Cancel] if + the request is canceled. *) + read_block : Block_hash.t -> Store.Block.t tzresult Lwt.t; + (** [read_block bh] tries to read the block [bh] from the chain store. *) + send_get_current_head : ?peer:P2p_peer_id.t -> unit -> unit; + (** [send_get_current_head ?peer ()] sends a [Get_Current_head] + to a given peer, or to all known active peers for the chain considered. + Expected answer is a [Get_current_head] message *) + set_mempool : head:Block_hash.t -> Mempool.t -> unit tzresult Lwt.t; + (** [set_mempool ~head mempool] sets the [mempool] of + the [chain_store] of the chain considered. Does nothing if [head] differs + from current_head which might happen when a new head concurrently arrives just + before this operation is being called. *) + } +end + +type 'a parameters = {limits : limits; tools : 'a Tools.tools} + (** The type needed for the implementation of [Make] below, but * which is independent from the protocol. *) -type 'protocol_data types_state_shell = { +type ('protocol_data, 'a) types_state_shell = { classification : 'protocol_data Classification.t; - parameters : parameters; + parameters : 'a parameters; mutable predecessor : Store.Block.t; mutable timestamp : Time.System.t; mutable live_blocks : Block_hash.Set.t; @@ -325,8 +377,7 @@ let block_tools : Store.Block.t Classification.block_tools = all_operation_hashes = Store.Block.all_operation_hashes; } -(** How to create an instance of {!chain_tools} from a {!Distributed_db.chain_db}. - Prefer short-lived values, to avoid hiding mutable state for too long. *) +(** How to create an instance of {!chain_tools} from a {!Distributed_db.chain_db}. *) let mk_chain_tools (chain_db : Distributed_db.chain_db) : Store.Block.t Classification.chain_tools = let new_blocks ~from_block ~to_block = @@ -364,7 +415,7 @@ module type T = sig val name : Name.t type types_state = { - shell : protocol_operation types_state_shell; + shell : (protocol_operation, prevalidation_t) types_state_shell; mutable filter_state : filter_state; (** Internal state of the filter in the plugin *) mutable validation_state : prevalidation_t tzresult; @@ -431,7 +482,7 @@ module Make type 'operation_data operation = 'operation_data Prevalidation.operation type types_state = { - shell : protocol_operation types_state_shell; + shell : (protocol_operation, prevalidation_t) types_state_shell; mutable filter_state : filter_state; mutable validation_state : prevalidation_t tzresult; mutable operation_stream : @@ -476,8 +527,8 @@ module Make || Classification.is_in_mempool oph shell.classification <> None || Classification.is_known_unparsable oph shell.classification) - let advertise (w : worker) (shell : 'operation_data types_state_shell) mempool - = + let advertise (w : worker) (shell : ('operation_data, _) types_state_shell) + mempool = match shell.advertisement with | `Pending {Mempool.known_valid; pending} -> shell.advertisement <- @@ -542,9 +593,7 @@ module Make let set_mempool shell mempool = shell.mempool <- mempool ; - let chain_store = Distributed_db.chain_store shell.parameters.chain_db in - Store.Chain.set_mempool - chain_store + shell.parameters.tools.set_mempool ~head:(Store.Block.hash shell.predecessor) shell.mempool @@ -570,9 +619,7 @@ module Make [(op, `Outdated [err])] | None -> (* This case should not happen. *) - Distributed_db.Operation.clear_or_cancel - shell.parameters.chain_db - old_hash ; + shell.parameters.tools.chain_tools.clear_or_cancel old_hash ; [] let precheck ~disable_precheck ~filter_config ~filter_state ~validation_state @@ -796,14 +843,13 @@ module Make (* This function fetches one operation through the [distributed_db]. On errors, we emit an event and proceed as usual. *) - let fetch_operation w (shell : 'operation_data types_state_shell) ?peer oph = + let fetch_operation w (shell : ('operation_data, _) types_state_shell) ?peer + oph = Event.(emit fetching_operation) oph >|= fun () -> - Distributed_db.Operation.fetch + shell.parameters.tools.fetch ~timeout:shell.parameters.limits.operation_timeout - shell.parameters.chain_db ?peer oph - () >>= function | Ok op -> Worker.Queue.push_request_now w (Arrived (oph, op)) ; @@ -825,8 +871,8 @@ module Make promise [p] is terminated, we remove the operation from the fetching operations. This is to ensure that if an error happened, we can still fetch this operation in the future. *) - let may_fetch_operation w (shell : 'operation_data types_state_shell) peer oph - = + let may_fetch_operation w (shell : ('operation_data, _) types_state_shell) + peer oph = let origin = match peer with | Some peer -> Format.asprintf "notified by %a" P2p_peer.Id.pp peer @@ -876,9 +922,7 @@ module Make op.Operation.shell.branch pv.shell.live_blocks) then ( - Distributed_db.Operation.clear_or_cancel - pv.shell.parameters.chain_db - oph ; + pv.shell.parameters.tools.chain_tools.clear_or_cancel oph ; return_unit) else ( (* TODO: https://gitlab.com/tezos/tezos/-/issues/1723 @@ -911,11 +955,8 @@ module Make err | Ok parsed_op -> ( if force then ( - Distributed_db.inject_operation - pv.shell.parameters.chain_db - oph - op - >>= fun (_ : bool) -> + pv.shell.parameters.tools.chain_tools.inject_operation oph op + >>= fun () -> pv.shell.pending <- Pending_ops.add parsed_op prio pv.shell.pending ; return_unit) @@ -960,11 +1001,8 @@ module Make In case of `Passed_precheck_with_replace, we may want to only do the injection/replacement if a flag `replace` is set to true in the injection query. *) - Distributed_db.inject_operation - pv.shell.parameters.chain_db - oph - op - >>= fun (_ : bool) -> + pv.shell.parameters.tools.chain_tools.inject_operation oph op + >>= fun () -> (* Call handle & update_advertised_mempool only if op is accepted *) List.iter (handle_classification ~notifier pv.shell) to_handle ; pv.filter_state <- filter_state ; @@ -994,7 +1032,8 @@ module Make Operation_hash.pp oph) - let on_notify w (shell : 'operation_data types_state_shell) peer mempool = + let on_notify w (shell : ('operation_data, _) types_state_shell) peer + mempool = let may_fetch_operation = may_fetch_operation w shell (Some peer) in List.iter_s may_fetch_operation mempool.Mempool.known_valid >>= fun () -> Seq.iter_s @@ -1012,11 +1051,7 @@ module Make let timestamp_system = Tezos_stdlib_unix.Systime_os.now () in pv.shell.timestamp <- timestamp_system ; let timestamp = Time.System.to_protocol timestamp_system in - let chain_store = - Distributed_db.chain_store pv.shell.parameters.chain_db - in - Prevalidation_t.create - chain_store + pv.shell.parameters.tools.create ~predecessor:new_predecessor ~live_operations:new_live_operations ~timestamp @@ -1042,7 +1077,7 @@ module Make ~classes:pv.shell.classification ~pending:(Pending_ops.operations pv.shell.pending) ~block_store:block_tools - ~chain:(mk_chain_tools pv.shell.parameters.chain_db) + ~chain:pv.shell.parameters.tools.chain_tools ~handle_branch_refused >>= fun new_pending_operations -> (* Could be implemented as Operation_hash.Map.filter_s which @@ -1069,7 +1104,7 @@ module Make pv.shell.pending <- new_pending_operations ; set_mempool pv.shell Mempool.empty - let on_advertise (shell : 'protocol_data types_state_shell) = + let on_advertise (shell : ('protocol_data, _) types_state_shell) = match shell.advertisement with | `None -> () (* May happen if nothing to advertise since last advertisement. *) @@ -1078,8 +1113,7 @@ module Make (* In this case, mempool is not empty, but let's avoid advertising empty mempools in case this invariant is broken. *) if not (Mempool.is_empty mempool) then - Distributed_db.Advertise.current_head - shell.parameters.chain_db + shell.parameters.tools.advertise_current_head ~mempool shell.predecessor @@ -1090,7 +1124,7 @@ module Make prechecked operation so that a branch delayed operation becomes [applied] again. *) let remove ~flush_if_prechecked pv oph = - Distributed_db.Operation.clear_or_cancel pv.shell.parameters.chain_db oph ; + pv.shell.parameters.tools.chain_tools.clear_or_cancel oph ; pv.shell.advertisement <- remove_from_advertisement oph pv.shell.advertisement ; pv.shell.banned_operations <- @@ -1287,10 +1321,7 @@ module Make !dir (Proto_services.S.Mempool.request_operations RPC_path.open_root) (fun pv t () -> - Distributed_db.Request.current_head - pv.shell.parameters.chain_db - ?peer:t#peer_id - () ; + pv.shell.parameters.tools.send_get_current_head ?peer:t#peer_id () ; return_unit) ; dir := RPC_directory.gen_register @@ -1404,10 +1435,7 @@ module Make Requests.on_advertise pv.shell ; (* TODO: https://gitlab.com/tezos/tezos/-/issues/1727 Rebase the advertisement instead. *) - let chain_store = - Distributed_db.chain_store pv.shell.parameters.chain_db - in - Store.Block.read_block chain_store hash + pv.shell.parameters.tools.read_block hash >>=? fun block : r tzresult Lwt.t -> let handle_branch_refused = Chain_validator_worker_state.Event.( @@ -1439,10 +1467,49 @@ module Make let on_close w = let pv = Worker.state w in Operation_hash.Set.iter - (Distributed_db.Operation.clear_or_cancel pv.shell.parameters.chain_db) + pv.shell.parameters.tools.chain_tools.clear_or_cancel pv.shell.fetching ; Lwt.return_unit + let mk_tools (chain_db : Distributed_db.chain_db) : + prevalidation_t Tools.tools = + let advertise_current_head ~mempool bh = + Distributed_db.Advertise.current_head chain_db ~mempool bh + in + let chain_tools = mk_chain_tools chain_db in + let create ~predecessor ~live_operations ~timestamp = + let chain_store = Distributed_db.chain_store chain_db in + Prevalidation_t.create + chain_store + ?protocol_data:None + ~predecessor + ~live_operations + ~timestamp + in + let fetch ?peer ?timeout oph = + Distributed_db.Operation.fetch chain_db ?timeout ?peer oph () + in + let read_block bh = + let chain_store = Distributed_db.chain_store chain_db in + Store.Block.read_block chain_store bh + in + let send_get_current_head ?peer () = + Distributed_db.Request.current_head chain_db ?peer () + in + let set_mempool ~head mempool = + let chain_store = Distributed_db.chain_store chain_db in + Store.Chain.set_mempool chain_store ~head mempool + in + { + advertise_current_head; + chain_tools; + create; + fetch; + read_block; + send_get_current_head; + set_mempool; + } + let on_launch w _ (limits, chain_db) = let chain_store = Distributed_db.chain_store chain_db in Store.Chain.current_head chain_store >>= fun predecessor -> @@ -1474,7 +1541,7 @@ module Make } in let classification = Classification.create classification_parameters in - let parameters = {limits; chain_db} in + let parameters = {limits; tools = mk_tools chain_db} in let shell = { classification; From 3d61186bbbd500603641c2704f42686c5a05f918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Thu, 9 Dec 2021 11:07:40 +0100 Subject: [PATCH 0063/1220] prevalidator: restrict Worker dependency to on_request, for testability --- src/lib_shell/prevalidator.ml | 75 +++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index 84917ba84c..06b948c3f4 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -308,7 +308,14 @@ module Pending_ops = Prevalidator_pending_operations The purpose of the {!Tools.tools} record is to abstract away from {!Store.chain_store}. Under the hood [Store.chain_store] requires an Irmin store on disk, which makes it impractical for fast testing: every test would need - to create a temporary folder on disk which doesn't scale well. *) + to create a temporary folder on disk which doesn't scale well. + + The purpose of the {!Tools.worker_tools} record is to abstract away + from the {!Worker} implementation. This implementation is overkill + for testing: we don't need asynchronicity and concurrency in our + pretty basic existing tests. Having this abstraction allows to get + away with a much simpler state machine model of execution and + to have simpler test setup. *) module Tools = struct (** Functions provided by {!Distributed_db} and {!Store.chain_store} that are used in various places of the mempool. Gathered here so that we can test @@ -349,6 +356,17 @@ module Tools = struct from current_head which might happen when a new head concurrently arrives just before this operation is being called. *) } + + (** Abstraction over services implemented in production by {!Worker} + but implemented differently in tests. + + Also see the enclosing module documentation as to why we have this record. *) + type worker_tools = { + push_request : unit Prevalidator_worker_state.Request.t -> unit Lwt.t; + (** Adds a message to the queue. *) + push_request_now : unit Prevalidator_worker_state.Request.t -> unit; + (** Adds a message to the queue immediately. *) + } end type 'a parameters = {limits : limits; tools : 'a Tools.tools} @@ -367,6 +385,7 @@ type ('protocol_data, 'a) types_state_shell = { mutable mempool : Mempool.t; mutable advertisement : [`Pending of Mempool.t | `None]; mutable banned_operations : Operation_hash.Set.t; + worker : Tools.worker_tools; } (** The concrete production instance of {!block_tools} *) @@ -527,8 +546,7 @@ module Make || Classification.is_in_mempool oph shell.classification <> None || Classification.is_known_unparsable oph shell.classification) - let advertise (w : worker) (shell : ('operation_data, _) types_state_shell) - mempool = + let advertise (shell : ('operation_data, _) types_state_shell) mempool = match shell.advertisement with | `Pending {Mempool.known_valid; pending} -> shell.advertisement <- @@ -542,7 +560,7 @@ module Make Lwt.dont_wait (fun () -> Lwt_unix.sleep advertisement_delay >>= fun () -> - Worker.Queue.push_request_now w Advertise ; + shell.worker.push_request_now Advertise ; Lwt.return_unit) (fun exc -> Format.eprintf "Uncaught exception: %s\n%!" (Printexc.to_string exc)) @@ -748,7 +766,7 @@ module Make operations are advertised to the remote peers. However, if a peer requests our mempool, we advertise all our classified operations and all our pending operations. *) - let classify_pending_operations ~notifier w shell filter_config filter_state + let classify_pending_operations ~notifier shell filter_config filter_state state = Pending_ops.fold_es (fun _prio @@ -781,12 +799,12 @@ module Make >>= function | Error (filter_state, state, advertised_mempool) -> (* Early return after iteration limit was reached *) - Worker.Queue.push_request w Request.Leftover >>= fun () -> + shell.worker.push_request Request.Leftover >>= fun () -> Lwt.return (filter_state, state, advertised_mempool) | Ok (filter_state, state, advertised_mempool, _) -> Lwt.return (filter_state, state, advertised_mempool) - let update_advertised_mempool_fields w pv_shell delta_mempool = + let update_advertised_mempool_fields pv_shell delta_mempool = if Mempool.is_empty delta_mempool then Lwt.return_unit else (* We only advertise newly classified operations. *) @@ -794,7 +812,7 @@ module Make Mempool. {delta_mempool with known_valid = List.rev delta_mempool.known_valid} in - advertise w pv_shell mempool_to_advertise ; + advertise pv_shell mempool_to_advertise ; let our_mempool = { (* Using List.rev_map is ok since the size of pv.shell.classification.applied @@ -812,7 +830,7 @@ module Make in set_mempool pv_shell our_mempool >>= fun _res -> Lwt.pause () - let handle_unprocessed w pv = + let handle_unprocessed pv = let notifier = mk_notifier pv.operation_stream in match pv.validation_state with | Error err -> @@ -830,7 +848,6 @@ module Make Event.(emit processing_operations) () >>= fun () -> classify_pending_operations ~notifier - w pv.shell pv.filter_config pv.filter_state @@ -838,13 +855,13 @@ module Make >>= fun (filter_state, validation_state, delta_mempool) -> pv.filter_state <- filter_state ; pv.validation_state <- Ok validation_state ; - update_advertised_mempool_fields w pv.shell delta_mempool + update_advertised_mempool_fields pv.shell delta_mempool (* This function fetches one operation through the [distributed_db]. On errors, we emit an event and proceed as usual. *) - let fetch_operation w (shell : ('operation_data, _) types_state_shell) ?peer - oph = + let fetch_operation (shell : ('operation_data, _) types_state_shell) ?peer oph + = Event.(emit fetching_operation) oph >|= fun () -> shell.parameters.tools.fetch ~timeout:shell.parameters.limits.operation_timeout @@ -852,7 +869,7 @@ module Make oph >>= function | Ok op -> - Worker.Queue.push_request_now w (Arrived (oph, op)) ; + shell.worker.push_request_now (Arrived (oph, op)) ; Lwt.return_unit | Error (Distributed_db.Operation.Canceled _ :: _) -> Event.(emit operation_included) oph @@ -871,8 +888,8 @@ module Make promise [p] is terminated, we remove the operation from the fetching operations. This is to ensure that if an error happened, we can still fetch this operation in the future. *) - let may_fetch_operation w (shell : ('operation_data, _) types_state_shell) - peer oph = + let may_fetch_operation (shell : ('operation_data, _) types_state_shell) peer + oph = let origin = match peer with | Some peer -> Format.asprintf "notified by %a" P2p_peer.Id.pp peer @@ -884,7 +901,7 @@ module Make (Lwt.finalize (fun () -> shell.fetching <- Operation_hash.Set.add oph shell.fetching ; - fetch_operation w shell ?peer oph) + fetch_operation shell ?peer oph) (fun () -> shell.fetching <- Operation_hash.Set.remove oph shell.fetching ; Lwt.return_unit)) ; @@ -931,7 +948,7 @@ module Make Pending_ops.add parsed_op prio pv.shell.pending ; return_unit)) - let on_inject w (pv : state) ~force op = + let on_inject (pv : state) ~force op = let oph = Operation.hash op in (* Currently, an injection is always done with priority = `High, because: - We want to process and propagate the injected operations fast, @@ -1009,7 +1026,7 @@ module Make pv.validation_state <- Ok validation_state ; (* Note that in this case, we may advertise an operation and bypass the prioritirization strategy. *) - update_advertised_mempool_fields w pv.shell delta_mempool + update_advertised_mempool_fields pv.shell delta_mempool >>= return | Some ( _h, @@ -1032,9 +1049,9 @@ module Make Operation_hash.pp oph) - let on_notify w (shell : ('operation_data, _) types_state_shell) peer - mempool = - let may_fetch_operation = may_fetch_operation w shell (Some peer) in + let on_notify (shell : ('operation_data, _) types_state_shell) peer mempool + = + let may_fetch_operation = may_fetch_operation shell (Some peer) in List.iter_s may_fetch_operation mempool.Mempool.known_valid >>= fun () -> Seq.iter_s may_fetch_operation @@ -1451,18 +1468,18 @@ module Make live_blocks live_operations | Request.Notify (peer, mempool) -> - Requests.on_notify w pv.shell peer mempool >>= fun () -> return_unit + Requests.on_notify pv.shell peer mempool >>= fun () -> return_unit | Request.Leftover -> (* unprocessed ops are handled just below *) return_unit - | Request.Inject {op; force} -> Requests.on_inject w pv ~force op + | Request.Inject {op; force} -> Requests.on_inject pv ~force op | Request.Arrived (oph, op) -> Requests.on_arrived pv oph op | Request.Advertise -> Requests.on_advertise pv.shell ; return_unit | Request.Ban oph -> Requests.on_ban pv oph) >>=? fun r -> - handle_unprocessed w pv >>= fun () -> return r + handle_unprocessed pv >>= fun () -> return r let on_close w = let pv = Worker.state w in @@ -1510,6 +1527,11 @@ module Make set_mempool; } + let mk_worker_tools w : Tools.worker_tools = + let push_request r = Worker.Queue.push_request w r in + let push_request_now r = Worker.Queue.push_request_now w r in + {push_request; push_request_now} + let on_launch w _ (limits, chain_db) = let chain_store = Distributed_db.chain_store chain_db in Store.Chain.current_head chain_store >>= fun predecessor -> @@ -1555,6 +1577,7 @@ module Make pending = Pending_ops.empty; advertisement = `None; banned_operations = Operation_hash.Set.empty; + worker = mk_worker_tools w; } in @@ -1582,7 +1605,7 @@ module Make } in Seq.iter_s - (may_fetch_operation w pv.shell None) + (may_fetch_operation pv.shell None) (Operation_hash.Set.to_seq fetching) >>= fun () -> return pv From 6a1247cb8d64b06b777529079f457bdeba608755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Thu, 9 Dec 2021 11:11:44 +0100 Subject: [PATCH 0064/1220] prevalidator: separate testable part from production-only part --- src/lib_shell/prevalidator.ml | 162 +++++++++++++++++++++++++--------- 1 file changed, 121 insertions(+), 41 deletions(-) diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index 06b948c3f4..aa83b09e78 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -417,7 +417,8 @@ let mk_chain_tools (chain_db : Distributed_db.chain_db) : read_predecessor_opt; } -module type T = sig +(** Module type used both in production and in tests. *) +module type S = sig (** Type instantiated by {!Filter.Mempool.state}. *) type filter_state @@ -431,8 +432,6 @@ module type T = sig (** Type instantiated by {!Prevalidation.t} *) type prevalidation_t - val name : Name.t - type types_state = { shell : (protocol_operation, prevalidation_t) types_state_shell; mutable filter_state : filter_state; @@ -447,6 +446,61 @@ module type T = sig lock : Lwt_mutex.t; } + (** This function fetches an operation if it is not already handled + as defined by [already_handled] below. The implementation makes + sure to fetch an operation at most once, modulo operations + lost because of bounded buffers becoming full. + + This function is an intruder to this module type. It just happens + that it is needed both by internals of the implementation of {!S} + and by the internals of the implementation of {!T}; so it needs + to be exposed here. *) + val may_fetch_operation : + (protocol_operation, prevalidation_t) types_state_shell -> + P2p_peer_id.t option -> + Operation_hash.t -> + unit Lwt.t + + (** The function called after every call to a function of {!API}. *) + val handle_unprocessed : types_state -> unit Lwt.t + + (** The inner API of the mempool i.e. functions called by the worker + when an individual request arrives. These functions are the + most high-level ones that we test. All these [on_*] functions + correspond to a single event. Possible + sequences of calls to this API are always of the form: + + on_*; handle_unprocessed; on_*; handle_unprocessed; ... *) + module Requests : sig + val on_advertise : _ types_state_shell -> unit + + val on_arrived : + types_state -> Operation_hash.t -> Operation.t -> unit tzresult Lwt.t + + val on_ban : types_state -> Operation_hash.t -> unit tzresult Lwt.t + + val on_flush : + handle_branch_refused:bool -> + types_state -> + Store.Block.t -> + Block_hash.Set.t -> + Operation_hash.Set.t -> + unit tzresult Lwt.t + + val on_inject : + types_state -> force:bool -> Operation.t -> unit tzresult Lwt.t + + val on_notify : + _ types_state_shell -> P2p_peer_id.t -> Mempool.t -> unit Lwt.t + end +end + +(** Module type used exclusively in production. *) +module type T = sig + include S + + val name : Name.t + module Types : Worker_intf.TYPES with type state = types_state module Worker : @@ -463,27 +517,22 @@ module type T = sig val worker : worker Lazy.t end -module type ARG = sig - val limits : limits - - val chain_db : Distributed_db.chain_db - - val chain_id : Chain_id.t -end - type t = (module T) -module Make +(** A functor for obtaining the testable part of this file (see + the instantiation of this functor in {!Internal_for_tests} at the + end of this file). Contrary to the production-only functor {!Make} below, + this functor doesn't assume a specific chain store implementation, + which is the crux for having it easily unit-testable. *) +module Make_s (Filter : Prevalidator_filters.FILTER) - (Arg : ARG) (Prevalidation_t : Prevalidation.T with type validation_state = Filter.Proto.validation_state and type protocol_operation = Filter.Proto.operation and type operation_receipt = - Filter.Proto.operation_receipt - and type chain_store = Store.chain_store) : - T + Filter.Proto.operation_receipt) : + S with type filter_state = Filter.Mempool.state and type filter_config = Filter.Mempool.config and type protocol_operation = Filter.Proto.operation @@ -496,8 +545,6 @@ module Make type prevalidation_t = Prevalidation_t.t - let name = (Arg.chain_id, Filter.Proto.hash) - type 'operation_data operation = 'operation_data Prevalidation.operation type types_state = { @@ -513,27 +560,6 @@ module Make lock : Lwt_mutex.t; } - module Types = struct - type state = types_state - - type parameters = limits * Distributed_db.chain_db - end - - module Worker : - Worker.T - with type Name.t = Name.t - and type Event.t = Dummy_event.t - and type 'a Request.t = 'a Request.t - and type Request.view = Request.view - and type Types.state = Types.state - and type Types.parameters = Types.parameters = - Worker.Make (Name) (Dummy_event) (Prevalidator_worker_state.Request) (Types) - (Logger) - - open Types - - type worker = Worker.infinite Worker.queue Worker.t - (* This function is in [Lwt] only for logging. *) let already_handled ~origin shell oph = if Operation_hash.Set.mem oph shell.banned_operations then @@ -911,7 +937,7 @@ module Make of the mempool. These functions are called by the {!Worker} when an event arrives. *) module Requests = struct - let on_arrived (pv : state) oph op = + let on_arrived (pv : types_state) oph op = already_handled ~origin:"arrived" pv.shell oph >>= fun already_handled -> if already_handled then return_unit else @@ -948,7 +974,7 @@ module Make Pending_ops.add parsed_op prio pv.shell.pending ; return_unit)) - let on_inject (pv : state) ~force op = + let on_inject (pv : types_state) ~force op = let oph = Operation.hash op in (* Currently, an injection is always done with priority = `High, because: - We want to process and propagate the injected operations fast, @@ -1182,6 +1208,60 @@ module Make Operation_hash.Set.add oph_to_ban pv.shell.banned_operations ; remove ~flush_if_prechecked:true pv oph_to_ban end +end + +module type ARG = sig + val limits : limits + + val chain_db : Distributed_db.chain_db + + val chain_id : Chain_id.t +end + +(** The functor that is not tested, in other words used only in production. + This functor's code is not tested (contrary to functor {!Make_s} above), + because it hardcodes a dependency to [Store.chain_store] in its instantiation + of type [chain_store]. This is what makes the code of this functor + not testable for the moment, because [Store.chain_store] has poor + testing capabilities. + + Note that, because this functor [include]s {!Make_s}, it is a + strict extension of [Make_s]. *) +module Make + (Filter : Prevalidator_filters.FILTER) + (Arg : ARG) + (Prevalidation_t : Prevalidation.T + with type validation_state = + Filter.Proto.validation_state + and type protocol_operation = Filter.Proto.operation + and type operation_receipt = + Filter.Proto.operation_receipt + and type chain_store = Store.chain_store) : + T with type prevalidation_t = Prevalidation_t.t = struct + include Make_s (Filter) (Prevalidation_t) + + let name = (Arg.chain_id, Filter.Proto.hash) + + module Types = struct + type state = types_state + + type parameters = limits * Distributed_db.chain_db + end + + module Worker : + Worker.T + with type Name.t = Name.t + and type Event.t = Dummy_event.t + and type 'a Request.t = 'a Request.t + and type Request.view = Request.view + and type Types.state = Types.state + and type Types.parameters = Types.parameters = + Worker.Make (Name) (Dummy_event) (Prevalidator_worker_state.Request) (Types) + (Logger) + + open Types + + type worker = Worker.infinite Worker.queue Worker.t (** Mimics [Data_encoding.Json.construct] but accepts argument [?include_default_fields] to pass on to [Json_encoding.construct]. *) From af480a3fe0656a6095707b9b5e128d283b232125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Thu, 2 Dec 2021 16:47:32 +0100 Subject: [PATCH 0065/1220] prevalidator: open API for testing with Internal_for_tests --- src/lib_shell/prevalidator.ml | 83 +++++++++++++++++++++++++++++ src/lib_shell/prevalidator.mli | 95 ++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index aa83b09e78..42888e7b49 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -1866,3 +1866,86 @@ let rpc_directory : t option RPC_directory.t = let pv_rpc_dir = Lazy.force pv.rpc_directory in Lwt.return (RPC_directory.map (fun _ -> Lwt.return pv) pv_rpc_dir) )) + +module Internal_for_tests = struct + include Tools + + type nonrec ('a, 'b) types_state_shell = ('a, 'b) types_state_shell + + let mk_types_state_shell ~(predecessor : Store.Block.t) ~(tools : 'a tools) + ~(worker : worker_tools) : (_, 'a) types_state_shell = + let parameters = {limits = default_limits; tools} in + let c_parameters : Classification.parameters = + {map_size_limit = 32; on_discarded_operation = Fun.const ()} + in + let advertisement = `None in + let banned_operations = Operation_hash.Set.empty in + let classification = Classification.create c_parameters in + let fetching = Operation_hash.Set.empty in + let mempool = Mempool.empty in + let live_blocks = Block_hash.Set.empty in + let live_operations = Operation_hash.Set.empty in + let pending = Pending_ops.empty in + let timestamp = Tezos_stdlib_unix.Systime_os.now () in + { + advertisement; + banned_operations; + classification; + fetching; + live_blocks; + live_operations; + mempool; + parameters; + pending; + predecessor; + timestamp; + worker; + } + + module Make + (Filter : Prevalidator_filters.FILTER) + (Prevalidation_t : Prevalidation.T + with type validation_state = + Filter.Proto.validation_state + and type protocol_operation = Filter.Proto.operation + and type operation_receipt = + Filter.Proto.operation_receipt) = + struct + module Internal = Make_s (Filter) (Prevalidation_t) + + type nonrec types_state = Internal.types_state + + let mk_types_state + ~(shell : + ( Prevalidation_t.protocol_operation, + Prevalidation_t.t ) + types_state_shell) ~(validation_state : Prevalidation_t.t) : + types_state Lwt.t = + let filter_config = Filter.Mempool.default_config in + let predecessor = Store.Block.header shell.predecessor in + Filter.Mempool.init filter_config ~predecessor () >>= function + | Error err -> + let err_string = + Format.asprintf "%a" Error_monad.pp_print_trace err + in + Lwt_io.eprintf "%s" err_string >>= fun () -> assert false + | Ok filter_state -> + Lwt.return + Internal. + { + shell; + filter_config; + filter_state; + lock = Lwt_mutex.create (); + operation_stream = Lwt_watcher.create_input (); + rpc_directory = Lazy.from_fun (fun () -> assert false); + validation_state = Ok validation_state; + } + + let to_shell (t : types_state) = t.shell + + let handle_unprocessed = Internal.handle_unprocessed + + module Requests = Internal.Requests + end +end diff --git a/src/lib_shell/prevalidator.mli b/src/lib_shell/prevalidator.mli index 862869adc7..e602a0c313 100644 --- a/src/lib_shell/prevalidator.mli +++ b/src/lib_shell/prevalidator.mli @@ -121,3 +121,98 @@ val information : t -> Worker_types.worker_information val pipeline_length : t -> int val rpc_directory : t option RPC_directory.t + +(**/**) + +module Internal_for_tests : sig + (** Documented in {!Prevalidator}, because this is only exported for tests. *) + type 'prevalidation_t tools = { + advertise_current_head : mempool:Mempool.t -> Store.Block.t -> unit; + chain_tools : Store.Block.t Prevalidator_classification.chain_tools; + create : + predecessor:Store.Block.t -> + live_operations:Operation_hash.Set.t -> + timestamp:Time.Protocol.t -> + unit -> + 'prevalidation_t tzresult Lwt.t; + fetch : + ?peer:P2p_peer.Id.t -> + ?timeout:Time.System.Span.t -> + Operation_hash.t -> + Operation.t tzresult Lwt.t; + read_block : Block_hash.t -> Store.Block.t tzresult Lwt.t; + send_get_current_head : ?peer:P2p_peer_id.t -> unit -> unit; + set_mempool : head:Block_hash.t -> Mempool.t -> unit tzresult Lwt.t; + } + + (** Documented in {!Prevalidator}, because this is only exported for tests. *) + type worker_tools = { + push_request : unit Prevalidator_worker_state.Request.t -> unit Lwt.t; + push_request_now : unit Prevalidator_worker_state.Request.t -> unit; + } + + (** The corresponding internal type of the mempool (see {!Prevalidator.S}), + that is independent from the protocol. *) + type ('a, 'b) types_state_shell + + (** Create a pristine value of {!type_state_shell} *) + val mk_types_state_shell : + predecessor:Store.Block.t -> + tools:'prevalidation_t tools -> + worker:worker_tools -> + ('protocol_data, 'prevalidation_t) types_state_shell + + module Make + (Filter : Prevalidator_filters.FILTER) + (Prevalidation_t : Prevalidation.T + with type validation_state = + Filter.Proto.validation_state + and type protocol_operation = Filter.Proto.operation + and type operation_receipt = + Filter.Proto.operation_receipt) : sig + (** The corresponding internal type of the mempool (see {!Prevalidator.S}), + that depends on the protocol *) + type types_state + + (** Create a pristine value of {!type_state} *) + val mk_types_state : + shell: + ( Prevalidation_t.protocol_operation, + Prevalidation_t.t ) + types_state_shell -> + validation_state:Prevalidation_t.t -> + types_state Lwt.t + + (** [to_shell pv] returns the shell part of [pv] *) + val to_shell : + types_state -> + (Prevalidation_t.protocol_operation, Prevalidation_t.t) types_state_shell + + (** Documented in {!Prevalidator.S} *) + val handle_unprocessed : types_state -> unit Lwt.t + + (** Documented in {!Prevalidator.S} (as are all the functions of this module) *) + module Requests : sig + val on_advertise : _ types_state_shell -> unit + + val on_arrived : + types_state -> Operation_hash.t -> Operation.t -> unit tzresult Lwt.t + + val on_ban : types_state -> Operation_hash.t -> unit tzresult Lwt.t + + val on_flush : + handle_branch_refused:bool -> + types_state -> + Store.Block.t -> + Block_hash.Set.t -> + Operation_hash.Set.t -> + unit tzresult Lwt.t + + val on_inject : + types_state -> force:bool -> Operation.t -> unit tzresult Lwt.t + + val on_notify : + _ types_state_shell -> P2p_peer_id.t -> Mempool.t -> unit Lwt.t + end + end +end From 146e3c8c2edd7499df5c6ac0d7ff71dbc1150ce3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Tue, 4 Jan 2022 21:05:49 +0100 Subject: [PATCH 0066/1220] prevalidator: make some generators available to multiple test files --- src/lib_shell/test/generators_tree.ml | 493 +++++++++++++++++ ..._prevalidator_classification_operations.ml | 498 +----------------- 2 files changed, 509 insertions(+), 482 deletions(-) create mode 100644 src/lib_shell/test/generators_tree.ml diff --git a/src/lib_shell/test/generators_tree.ml b/src/lib_shell/test/generators_tree.ml new file mode 100644 index 0000000000..3cde4e89a9 --- /dev/null +++ b/src/lib_shell/test/generators_tree.ml @@ -0,0 +1,493 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Generators building on top of {!Generators}, that are capable of + producing trees of blocks. *) + +module Classification = Prevalidator_classification + +(** Various functions about {!list} *) +module List_extra = struct + (** [common_elem [0; 2; 3] [3; 2]] returns [Some 2] + [common_elem [0; 2; 3] [2; 3]] returns [Some 3] + [common_elem [0; 2; 3] [4]] returns [Nothing] *) + let rec common_elem ~(equal : 'a -> 'a -> bool) (l1 : 'a list) (l2 : 'a list) + = + match (l1, l2) with + | ([], _) -> None + | (e1 :: rest1, _) -> + if List.exists (equal e1) l2 then Some e1 + else common_elem ~equal rest1 l2 + + (** [take_until_if_found ((=) 2) [0; 3; 2; 4; 2]] returns [Some [0; 3]] + [take_until_if_found ((=) -1) [0; 3; 2; 4; 2]] returns [None] + [take_until_if_found ((=) 0) [0]] returns [Some []] *) + let rec take_until_if_found ~(pred : 'a -> bool) (l : 'a list) = + match l with + | [] -> None + | fst :: _ when pred fst -> Some [] + | fst :: rest_l -> ( + match take_until_if_found ~pred rest_l with + | None -> None + | Some tail -> Some (fst :: tail)) + + (** [split_n l n] returns two lists, the first one containing the first + [n] elements of [l] and the second one containing the remaining elements. + For example: + [split_n [] _] is [([], [])] + [split_n ["a"] 1] is [(["a"], [])] + [split_n ["a"; "b"; "c"] 1] is [(["a"], ["b"; "c"])] *) + let split_n l n = (List.take_n n l, List.drop_n n l) +end + +module Tree = struct + (** Trees representing the shape of the chain. The root is the common + ancestor of all blocks, like this: + + head3 + / + head1 head2 . + \ \ / + . . + \ / + ancestor + *) + type 'a tree = + | Leaf of 'a + | Node1 of ('a * 'a tree) + | Node2 of ('a * 'a tree * 'a tree) + + (* Note that I intentionally do not use {!Format} as automatic + line cutting makes reading the output (when debugging) harder. *) + let rec to_string_aux elem_to_string t indent = + match t with + | Leaf e -> indent ^ elem_to_string e + | Node1 (e, subt) -> + let indentpp = indent ^ " " in + Printf.sprintf + "%s%s\n%s" + indent + (elem_to_string e) + (to_string_aux elem_to_string subt indentpp) + | Node2 (e, t1, t2) -> + let indentpp = indent ^ " " in + Printf.sprintf + "%s%s\n%s\n%s" + indent + (elem_to_string e) + (to_string_aux elem_to_string t1 indentpp) + (to_string_aux elem_to_string t2 indentpp) + + (* [to_string] is unused but useful when debugging, renaming it to [_to_string] to keep it around *) + let _to_string elem_to_string t = to_string_aux elem_to_string t "" + + let rec depth = function + | Leaf _ -> 1 + | Node1 (_, t1) -> 1 + depth t1 + | Node2 (_, t1, t2) -> 1 + max (depth t1) (depth t2) + + (** The root value of a tree *) + let value : 'a tree -> 'a = function + | Leaf a -> a + | Node1 (a, _) -> a + | Node2 (a, _, _) -> a + + let rec values : 'a tree -> 'a list = function + | Leaf a -> [a] + | Node1 (a, t1) -> a :: values t1 + | Node2 (a, t1, t2) -> a :: values t1 @ values t2 + + (** Predicate to check that all values are different. We want + this property for trees of blocks. If generation of block + were to repeat a block, this property could get broken. *) + let well_formed (type a) (compare : a -> a -> int) (t : a tree) = + let module Ord = struct + type t = a + + let compare = compare + end in + let module Set = Set.Make (Ord) in + let values_list = values t in + let values_set = Set.of_list values_list in + Compare.List_length_with.(values_list = Set.cardinal values_set) + + (** Given a tree of values, returns an association list from a value to + its parent (i.e. predecessor) in the tree. I.e. given : + + c1 c2 c3 + \ \ / + b0 b1 + \ / + a0 + + return: [(b0, a0); (c1, b0); (b1, a0); (c2, b1); (c3; b1)] + *) + let rec predecessor_pairs (tree : 'a tree) : ('a * 'a) list = + match tree with + | Leaf _ -> [] + | Node1 (e, subtree) -> + let child = value subtree in + (child, e) :: predecessor_pairs subtree + | Node2 (e, subtree1, subtree2) -> + let child1 = value subtree1 in + let child2 = value subtree2 in + (child1, e) :: (child2, e) :: predecessor_pairs subtree1 + @ predecessor_pairs subtree2 + + (** Returns the predecessors of a tree node. I.e., given + such a tree: + + c1 c2 c3 + \ \ / + b0 b1 + \ / + a0 + + [predecessors [c1]] is [b0; a0] + [predecessors [a0]] is [] + [predecessors [b1]] is [a0] + *) + let predecessors ~(equal : 'a -> 'a -> bool) (tree : 'a tree) (e : 'a) = + let predecessor_pairs = predecessor_pairs tree in + let rec main (x : 'a) = + match List.assoc ~equal x predecessor_pairs with + | None -> [] + | Some parent -> parent :: main parent + in + main e + + let predecessors ~(equal : 'a -> 'a -> bool) (tree : 'a tree) (e : 'a) = + let res = predecessors ~equal tree e in + (* If this assertion breaks, the tree is illformed *) + assert (not (List.mem ~equal e res)) ; + res + + (** [elems t] returns all values within [t] *) + let rec elems : 'a tree -> 'a list = function + | Leaf a -> [a] + | Node1 (a, t1) -> a :: elems t1 + | Node2 (a, t1, t2) -> a :: elems t1 @ elems t2 + + (** [find_ancestor tree e1 e2] returns the common ancestor of [e1] and [e2] + in [tree], if any *) + let find_ancestor ~(equal : 'a -> 'a -> bool) (tree : 'a tree) (e1 : 'a) + (e2 : 'a) : 'a option = + let parents1 = predecessors ~equal tree e1 in + let parents2 = predecessors ~equal tree e2 in + if List.mem ~equal e1 parents2 then Some e1 + else if List.mem ~equal e2 parents1 then Some e2 + else List_extra.common_elem ~equal parents1 parents2 +end + +(** Module concerning the type with which [Prevalidator.Internal_for_tests.block_tools] + and [Prevalidator.Internal_for_tests.chain_tools] are instantiated *) +module Block = struct + (** The block-like interface that suffices to test + [Prevalidator.Internal_for_tests.handle_live_operations] *) + type t = { + hash : Block_hash.t; + operations : unit Prevalidation.operation list list; + } + + (* Because we use hashes to implement equality, we must make sure + that for any pair of generated blocks [(b1, b2)], [b1.hash <> b2.hash] + implies [b1 <> b2] where [<>] is polymorphic inequality. Said + differently, hashes should not be faked. *) + let equal : t -> t -> bool = fun t1 t2 -> Block_hash.equal t1.hash t2.hash + + let compare (t1 : t) (t2 : t) = Block_hash.compare t1.hash t2.hash + + (** [hash_of_blocks ops] is used to compute the hash of a block whose + [operations] field contains [ops]. + + We want the hash to be sound, because it is used to implement equality + (see {!equal} above), like in the production implementation. Given + that {!t} above contains a single field besides the [hash], we hash + the content of this field to obtain the hash of a block. That + is why we hash the hashes of operations. *) + let hash_of_block ops = + let hash = + Operation_list_hash.compute + (List.map (fun op -> op.Prevalidation.hash) @@ List.concat ops) + in + (* We forge a fake [block_header] hash by first hashing the operations + and change the [b58] signature into a signature that looks like + the one of a block header by prefixing it with the letter [B]. *) + let hash_string = Operation_list_hash.to_b58check hash in + let suffix = String.sub hash_string 2 31 in + match Block_hash.of_string @@ "B" ^ suffix with + | Error err -> + Format.printf "Unexpected error: %a" Error_monad.pp_print_trace err ; + assert false + | Ok hash -> hash + + (** Returns the [hash] field of a {!t} *) + let to_hash (blk : t) = blk.hash + + let tools : t Classification.block_tools = + let operations block = + List.map (List.map (fun op -> op.Prevalidation.raw)) block.operations + in + let all_operation_hashes block = + List.map (List.map (fun op -> op.Prevalidation.hash)) block.operations + in + {hash = to_hash; operations; all_operation_hashes} + + let to_string t = + let ops_list_to_string ops = + String.concat + "|" + (List.map + Operation_hash.to_short_b58check + (List.map (fun op -> op.Prevalidation.hash) ops)) + in + let ops_string = + List.fold_left + (fun acc ops -> Format.sprintf "%s[%s]" acc (ops_list_to_string ops)) + "" + t.operations + in + Format.asprintf "%a:[%s]" Block_hash.pp t.hash ops_string + + (* [pp_list] is unused but useful when debugging, renaming it to [_pp_list] to keep it around *) + + (** Pretty prints a list of {!t}, using [sep] as the separator *) + let _pp_list ~(sep : string) (ts : t list) = + String.concat sep @@ List.map to_string ts + + module Ord = struct + type nonrec t = t + + let compare = compare + end + + module Set = Set.Make (Ord) + + let set_to_list s = Set.to_seq s |> List.of_seq +end + +module External_generators = Generators + +(** [QCheck2] generators used in tests below *) +let block_gen : Block.t QCheck2.Gen.t = + let open QCheck2.Gen in + let* ops = + let ops_list_gen = + (* Having super long list of operations isn't necessary. + In addition it slows everything down. *) + list_size + (int_range 0 10) + (External_generators.operation_with_hash_gen ()) + in + (* In production these lists are exactly of size 4, being more general *) + ops_list_gen |> list_size (int_range 0 8) + in + let hash = Block.hash_of_block ops in + return Block.{hash; operations = ops} + +(* A generator of lists of {!Block.t} where all elements are guaranteed + to be different. *) +let unique_block_gen : Block.Set.t QCheck2.Gen.t = + QCheck2.Gen.(small_list block_gen >|= Block.Set.of_list) + +(* A generator of lists of {!Block.t} where all elements are guaranteed + to be different and returned lists are guaranteed to be non empty. *) +let unique_nonempty_block_gen = + let open QCheck2.Gen in + let+ block = block_gen and+ l = unique_block_gen in + Block.Set.add block l + +(** A tree generator. Written in a slightly unusual style because it + generates all values beforehand, to make sure they are all different. + This is a property we want for trees of blocks. To do so, + this generator first generates a list of elements [e1; e2; e3; e4; e5; e6] + and then progressively splits this list to build the subtrees. + + For example it takes [e1] for the root value and then splits + the rest into [e2; e3] and [e4; e5; e6]. Then it recurses, sending + [e2; e3] as values to create the left subtree and [e4; e5; e6] to + create the right subtree. + + This generator takes as parameter an optional list of blocks. If + they are given, they are used to build the tree; otherwise fresh + ones are generated. *) +let tree_gen ?blocks () = + let open QCheck2.Gen in + let* (blocks : Block.t list) = + match blocks with + | None -> + (* no blocks received: generate them, use the [nonempty] flavor + of the generator, to guarantee [blocks <> []] below. *) + unique_nonempty_block_gen >|= Block.set_to_list + | Some [] -> + QCheck2.Test.fail_report + "tree_gen should not be called with an empty list of blocks" + | Some blocks -> + (* take blocks passed as parameters *) + return blocks + in + assert (blocks <> []) ; + let ret x = return (Some x) in + let rec go = function + | [] -> return None + | [x] -> ret (Tree.Leaf x) + | x :: xs -> ( + let* one_child = QCheck2.Gen.bool in + if one_child then + let* sub = go xs in + match sub with + | None -> ret (Tree.Leaf x) + | Some sub -> ret (Tree.Node1 (x, sub)) + else + let* (left, right) = + QCheck2.Gen.int_bound (List.length xs - 1) >|= List_extra.split_n xs + in + let* left = go left and* right = go right in + match (left, right) with + | (None, None) -> ret (Tree.Leaf x) + | (None, Some sub) | (Some sub, None) -> ret (Tree.Node1 (x, sub)) + | (Some left, Some right) -> ret (Tree.Node2 (x, left, right))) + in + (* The assertion cannot break, because we made sure that [blocks] is + not empty. *) + go blocks >|= Option.value_f ~default:(fun () -> assert false) + +(** A generator for passing the last argument of + [Prevalidator.handle_live_operations] *) +let old_mempool_gen (tree : Block.t Tree.tree) : + unit Prevalidation.operation Operation_hash.Map.t QCheck2.Gen.t = + let blocks = Tree.values tree in + let pairs = + List.map Block.tools.operations blocks |> List.concat |> List.concat + in + let elements = + List.map + (fun (op : Operation.t) -> + let hash = Operation.hash op in + Prevalidation.Internal_for_tests.make_operation op hash ()) + pairs + in + if elements = [] then QCheck2.Gen.return Operation_hash.Map.empty + else + let list_gen = QCheck2.Gen.(oneofl elements |> list) in + QCheck2.Gen.map + (fun l -> + List.to_seq l + |> Seq.map (fun op -> (op.Prevalidation.hash, op)) + |> Operation_hash.Map.of_seq) + list_gen + +(** Returns an instance of [block chain_tools] as well as: + - the tree of blocks + - a pair of blocks (that belong to the tree) and is + fine for being passed as [(~from_branch, ~to_branch)]; i.e. + the two blocks have a common ancestor. + - a map of operations that is fine for being passed as the + last argument of [handle_live_operations]. + + If given, the specified [?blocks] are used. Otherwise they are + generated. *) +let chain_tools_gen ?blocks () : + (Block.t Classification.chain_tools + * Block.t Tree.tree + * (Block.t * Block.t) option + * unit Prevalidation.operation Operation_hash.Map.t) + QCheck2.Gen.t = + let open QCheck2.Gen in + let* tree = tree_gen ?blocks () in + assert (Tree.well_formed Block.compare tree) ; + let predecessor_pairs = Tree.predecessor_pairs tree in + let equal = Block.equal in + let not_equal x y = not @@ equal x y in + let read_predecessor_opt (block : Block.t) : Block.t option Lwt.t = + List.assoc ~equal block predecessor_pairs |> Lwt.return + in + let new_blocks ~from_block ~to_block = + match Tree.find_ancestor ~equal tree from_block to_block with + | None -> assert false (* Like the production implementation *) + | Some ancestor -> ( + let to_parents = Tree.predecessors ~equal tree to_block in + match + ( to_parents, + List_extra.take_until_if_found ~pred:(( = ) ancestor) to_parents ) + with + | ([], _) -> + (* This case is not supported, because the production + implementation of new_blocks doesn't support it either + (since it MUST return an ancestor, acccording to its return + type). If you end up here, this means generated + data is not constrained enough: this pair [(from_block, + to_block)] should NOT be tried. Ideally the return type + of new_blocks should allow this case, hereby allowing + a more general test. *) + assert false + | (_, None) -> + (* Should not happen, because [ancestor] + is a member of [to_parents] *) + assert false + | (_, Some path) -> + (* Because [to_block] must be included in new_blocks' + returned value. *) + let path = to_block :: path in + Lwt.return (ancestor, List.rev path)) + in + let tree_elems : Block.t list = Tree.elems tree in + (* Pairs of blocks that are valid for being ~from_block and ~to_block *) + let heads_pairs : (Block.t * Block.t) list = + List.product tree_elems tree_elems + (* don't take from_block=to_block*) + |> List.filter (fun (left, right) -> not_equal left right) + (* keep only pairs of blocks that have a common ancestor *) + |> List.filter (fun (left, right) -> + Tree.find_ancestor ~equal tree left right |> function + | None -> false (* We want an ancestor *) + | Some ancestor -> + (* We don't want from_block to be the parent of to_block (or vice versa), + because it means the chain would rollback. This is not supported + (it hits an assert false in new_blocks, because its return type is + not general enough) *) + not_equal ancestor left && not_equal ancestor right) + in + let* chosen_pair = + if heads_pairs = [] then return None + else map Option.some (oneofl heads_pairs) + in + let* old_mempool = old_mempool_gen tree in + let res : Block.t Classification.chain_tools = + { + clear_or_cancel = Fun.const (); + inject_operation = (fun _ _ -> Lwt.return_unit); + new_blocks; + read_predecessor_opt; + } + in + return (res, tree, chosen_pair, old_mempool) + +(** [split_in_two l] is a generator producing [(l1, l2)] such that [l1 @ l2 = l] *) +let split_in_two (l : 'a list) : ('a list * 'a list) QCheck2.Gen.t = + let open QCheck2.Gen in + let length = List.length l in + let+ i = 0 -- length in + List_extra.split_n l i diff --git a/src/lib_shell/test/test_prevalidator_classification_operations.ml b/src/lib_shell/test/test_prevalidator_classification_operations.ml index e4b26f3385..265d0be997 100644 --- a/src/lib_shell/test/test_prevalidator_classification_operations.ml +++ b/src/lib_shell/test/test_prevalidator_classification_operations.ml @@ -34,474 +34,9 @@ open Lib_test.Qcheck2_helpers module Op_map = Operation_hash.Map module Classification = Prevalidator_classification - -(** Various functions about {!list} *) -module List_extra = struct - (** [common_elem [0; 2; 3] [3; 2]] returns [Some 2] - [common_elem [0; 2; 3] [2; 3]] returns [Some 3] - [common_elem [0; 2; 3] [4]] returns [Nothing] *) - let rec common_elem ~(equal : 'a -> 'a -> bool) (l1 : 'a list) (l2 : 'a list) - = - match (l1, l2) with - | ([], _) -> None - | (e1 :: rest1, _) -> - if List.exists (equal e1) l2 then Some e1 - else common_elem ~equal rest1 l2 - - (** [take_until_if_found ((=) 2) [0; 3; 2; 4; 2]] returns [Some [0; 3]] - [take_until_if_found ((=) -1) [0; 3; 2; 4; 2]] returns [None] - [take_until_if_found ((=) 0) [0]] returns [Some []] *) - let rec take_until_if_found ~(pred : 'a -> bool) (l : 'a list) = - match l with - | [] -> None - | fst :: _ when pred fst -> Some [] - | fst :: rest_l -> ( - match take_until_if_found ~pred rest_l with - | None -> None - | Some tail -> Some (fst :: tail)) - - (** [split_n l n] returns two lists, the first one containing the first - [n] elements of [l] and the second one containing the remaining elements. - For example: - [split_n [] _] is [([], [])] - [split_n ["a"] 1] is [(["a"], [])] - [split_n ["a"; "b"; "c"] 1] is [(["a"], ["b"; "c"])] *) - let split_n l n = (List.take_n n l, List.drop_n n l) -end - -module Tree = struct - (** Trees representing the shape of the chain. The root is the common - ancestor of all blocks, like this: - - head3 - / - head1 head2 . - \ \ / - . . - \ / - ancestor - *) - type 'a tree = - | Leaf of 'a - | Node1 of ('a * 'a tree) - | Node2 of ('a * 'a tree * 'a tree) - - (* Note that I intentionally do not use {!Format} as automatic - line cutting makes reading the output (when debugging) harder. *) - let rec to_string_aux elem_to_string t indent = - match t with - | Leaf e -> indent ^ elem_to_string e - | Node1 (e, subt) -> - let indentpp = indent ^ " " in - Printf.sprintf - "%s%s\n%s" - indent - (elem_to_string e) - (to_string_aux elem_to_string subt indentpp) - | Node2 (e, t1, t2) -> - let indentpp = indent ^ " " in - Printf.sprintf - "%s%s\n%s\n%s" - indent - (elem_to_string e) - (to_string_aux elem_to_string t1 indentpp) - (to_string_aux elem_to_string t2 indentpp) - - (* [to_string] is unused but useful when debugging, renaming it to [_to_string] to keep it around *) - let _to_string elem_to_string t = to_string_aux elem_to_string t "" - - let rec depth = function - | Leaf _ -> 1 - | Node1 (_, t1) -> 1 + depth t1 - | Node2 (_, t1, t2) -> 1 + max (depth t1) (depth t2) - - (** The root value of a tree *) - let value : 'a tree -> 'a = function - | Leaf a -> a - | Node1 (a, _) -> a - | Node2 (a, _, _) -> a - - let rec values : 'a tree -> 'a list = function - | Leaf a -> [a] - | Node1 (a, t1) -> a :: values t1 - | Node2 (a, t1, t2) -> a :: values t1 @ values t2 - - (** Predicate to check that all values are different. We want - this property for trees of blocks. If generation of block - were to repeat a block, this property could get broken. *) - let well_formed (type a) (compare : a -> a -> int) (t : a tree) = - let module Ord = struct - type t = a - - let compare = compare - end in - let module Set = Set.Make (Ord) in - let values_list = values t in - let values_set = Set.of_list values_list in - Compare.List_length_with.(values_list = Set.cardinal values_set) - - (** Given a tree of values, returns an association list from a value to - its parent (i.e. predecessor) in the tree. I.e. given : - - c1 c2 c3 - \ \ / - b0 b1 - \ / - a0 - - return: [(b0, a0); (c1, b0); (b1, a0); (c2, b1); (c3; b1)] - *) - let rec predecessor_pairs (tree : 'a tree) : ('a * 'a) list = - match tree with - | Leaf _ -> [] - | Node1 (e, subtree) -> - let child = value subtree in - (child, e) :: predecessor_pairs subtree - | Node2 (e, subtree1, subtree2) -> - let child1 = value subtree1 in - let child2 = value subtree2 in - (child1, e) :: (child2, e) :: predecessor_pairs subtree1 - @ predecessor_pairs subtree2 - - (** Returns the predecessors of a tree node. I.e., given - such a tree: - - c1 c2 c3 - \ \ / - b0 b1 - \ / - a0 - - [predecessors [c1]] is [b0; a0] - [predecessors [a0]] is [] - [predecessors [b1]] is [a0] - *) - let predecessors ~(equal : 'a -> 'a -> bool) (tree : 'a tree) (e : 'a) = - let predecessor_pairs = predecessor_pairs tree in - let rec main (x : 'a) = - match List.assoc ~equal x predecessor_pairs with - | None -> [] - | Some parent -> parent :: main parent - in - main e - - let predecessors ~(equal : 'a -> 'a -> bool) (tree : 'a tree) (e : 'a) = - let res = predecessors ~equal tree e in - (* If this assertion breaks, the tree is illformed *) - assert (not (List.mem ~equal e res)) ; - res - - (** [elems t] returns all values within [t] *) - let rec elems : 'a tree -> 'a list = function - | Leaf a -> [a] - | Node1 (a, t1) -> a :: elems t1 - | Node2 (a, t1, t2) -> a :: elems t1 @ elems t2 - - (** [find_ancestor tree e1 e2] returns the common ancestor of [e1] and [e2] - in [tree], if any *) - let find_ancestor ~(equal : 'a -> 'a -> bool) (tree : 'a tree) (e1 : 'a) - (e2 : 'a) : 'a option = - let parents1 = predecessors ~equal tree e1 in - let parents2 = predecessors ~equal tree e2 in - if List.mem ~equal e1 parents2 then Some e1 - else if List.mem ~equal e2 parents1 then Some e2 - else List_extra.common_elem ~equal parents1 parents2 -end - -(** Module concerning the type with which [Prevalidator.Internal_for_tests.block_tools] - and [Prevalidator.Internal_for_tests.chain_tools] are instantiated *) -module Block = struct - (** The block-like interface that suffices to test - [Prevalidator.Internal_for_tests.handle_live_operations] *) - type t = { - hash : Block_hash.t; - operations : unit Prevalidation.operation list list; - } - - (* Because we use hashes to implement equality, we must make sure - that for any pair of generated blocks [(b1, b2)], [b1.hash <> b2.hash] - implies [b1 <> b2] where [<>] is polymorphic inequality. Said - differently, hashes should not be faked. *) - let equal : t -> t -> bool = fun t1 t2 -> Block_hash.equal t1.hash t2.hash - - let compare (t1 : t) (t2 : t) = Block_hash.compare t1.hash t2.hash - - (** [hash_of_blocks ops] is used to compute the hash of a block whose - [operations] field contains [ops]. - - We want the hash to be sound, because it is used to implement equality - (see {!equal} above), like in the production implementation. Given - that {!t} above contains a single field besides the [hash], we hash - the content of this field to obtain the hash of a block. That - is why we hash the hashes of operations. *) - let hash_of_block ops = - let hash = - Operation_list_hash.compute - (List.map (fun op -> op.Prevalidation.hash) @@ List.concat ops) - in - (* We forge a fake [block_header] hash by first hashing the operations - and change the [b58] signature into a signature that looks like - the one of a block header by prefixing it with the letter [B]. *) - let hash_string = Operation_list_hash.to_b58check hash in - let suffix = String.sub hash_string 2 31 in - match Block_hash.of_string @@ "B" ^ suffix with - | Error err -> - Format.printf "Unexpected error: %a" Error_monad.pp_print_trace err ; - assert false - | Ok hash -> hash - - (** Returns the [hash] field of a {!t} *) - let to_hash (blk : t) = blk.hash - - let tools : t Classification.block_tools = - let operations block = - List.map (List.map (fun op -> op.Prevalidation.raw)) block.operations - in - let all_operation_hashes block = - List.map (List.map (fun op -> op.Prevalidation.hash)) block.operations - in - {hash = to_hash; operations; all_operation_hashes} - - let to_string t = - let ops_list_to_string ops = - String.concat - "|" - (List.map - Operation_hash.to_short_b58check - (List.map (fun op -> op.Prevalidation.hash) ops)) - in - let ops_string = - List.fold_left - (fun acc ops -> Format.sprintf "%s[%s]" acc (ops_list_to_string ops)) - "" - t.operations - in - Format.asprintf "%a:[%s]" Block_hash.pp t.hash ops_string - - (* [pp_list] is unused but useful when debugging, renaming it to [_pp_list] to keep it around *) - - (** Pretty prints a list of {!t}, using [sep] as the separator *) - let _pp_list ~(sep : string) (ts : t list) = - String.concat sep @@ List.map to_string ts - - module Ord = struct - type nonrec t = t - - let compare = compare - end - - module Set = Set.Make (Ord) - - let set_to_list s = Set.to_seq s |> List.of_seq -end - -module External_generators = Generators - -(** [QCheck2] generators used in tests below *) -module Generators = struct - let block_gen : Block.t QCheck2.Gen.t = - let open QCheck2.Gen in - let* ops = - let ops_list_gen = - (* Having super long list of operations isn't necessary. - In addition it slows everything down. *) - list_size - (int_range 0 10) - (External_generators.operation_with_hash_gen ()) - in - (* In production these lists are exactly of size 4, being more general *) - ops_list_gen |> list_size (int_range 0 8) - in - let hash = Block.hash_of_block ops in - return Block.{hash; operations = ops} - - (* A generator of lists of {!Block.t} where all elements are guaranteed - to be different. *) - let unique_block_gen : Block.Set.t QCheck2.Gen.t = - QCheck2.Gen.(small_list block_gen >|= Block.Set.of_list) - - (* A generator of lists of {!Block.t} where all elements are guaranteed - to be different and returned lists are guaranteed to be non empty. *) - let unique_nonempty_block_gen = - let open QCheck2.Gen in - let+ block = block_gen and+ l = unique_block_gen in - Block.Set.add block l - - (** A tree generator. Written in a slightly unusual style because it - generates all values beforehand, to make sure they are all different. - This is a property we want for trees of blocks. To do so, - this generator first generates a list of elements [e1; e2; e3; e4; e5; e6] - and then progressively splits this list to build the subtrees. - - For example it takes [e1] for the root value and then splits - the rest into [e2; e3] and [e4; e5; e6]. Then it recurses, sending - [e2; e3] as values to create the left subtree and [e4; e5; e6] to - create the right subtree. - - This generator takes as parameter an optional list of blocks. If - they are given, they are used to build the tree; otherwise fresh - ones are generated. *) - let tree_gen ?blocks () = - let open QCheck2.Gen in - let* (blocks : Block.t list) = - match blocks with - | None -> - (* no blocks received: generate them, use the [nonempty] flavor - of the generator, to guarantee [blocks <> []] below. *) - unique_nonempty_block_gen >|= Block.set_to_list - | Some [] -> - QCheck2.Test.fail_report - "tree_gen should not be called with an empty list of blocks" - | Some blocks -> - (* take blocks passed as parameters *) - return blocks - in - assert (blocks <> []) ; - let ret x = return (Some x) in - let rec go = function - | [] -> return None - | [x] -> ret (Tree.Leaf x) - | x :: xs -> ( - let* one_child = QCheck2.Gen.bool in - if one_child then - let* sub = go xs in - match sub with - | None -> ret (Tree.Leaf x) - | Some sub -> ret (Tree.Node1 (x, sub)) - else - let* (left, right) = - QCheck2.Gen.int_bound (List.length xs - 1) - >|= List_extra.split_n xs - in - let* left = go left and* right = go right in - match (left, right) with - | (None, None) -> ret (Tree.Leaf x) - | (None, Some sub) | (Some sub, None) -> ret (Tree.Node1 (x, sub)) - | (Some left, Some right) -> ret (Tree.Node2 (x, left, right))) - in - (* The assertion cannot break, because we made sure that [blocks] is - not empty. *) - go blocks >|= Option.value_f ~default:(fun () -> assert false) - - (** A generator for passing the last argument of - [Prevalidator.handle_live_operations] *) - let old_mempool_gen (tree : Block.t Tree.tree) : - unit Prevalidation.operation Operation_hash.Map.t QCheck2.Gen.t = - let blocks = Tree.values tree in - let pairs = - List.map Block.tools.operations blocks |> List.concat |> List.concat - in - let elements = - List.map - (fun (op : Operation.t) -> - let hash = Operation.hash op in - Prevalidation.Internal_for_tests.make_operation op hash ()) - pairs - in - if elements = [] then QCheck2.Gen.return Operation_hash.Map.empty - else - let list_gen = QCheck2.Gen.(oneofl elements |> list) in - QCheck2.Gen.map - (fun l -> - List.to_seq l - |> Seq.map (fun op -> (op.Prevalidation.hash, op)) - |> Operation_hash.Map.of_seq) - list_gen - - (** Returns an instance of [block chain_tools] as well as: - - the tree of blocks - - a pair of blocks (that belong to the tree) and is - fine for being passed as [(~from_branch, ~to_branch)]; i.e. - the two blocks have a common ancestor. - - a map of operations that is fine for being passed as the - last argument of [handle_live_operations]. - - If given, the specified [?blocks] are used. Otherwise they are - generated. *) - let chain_tools_gen ?blocks () : - (Block.t Classification.chain_tools - * Block.t Tree.tree - * (Block.t * Block.t) option - * unit Prevalidation.operation Operation_hash.Map.t) - QCheck2.Gen.t = - let open QCheck2.Gen in - let* tree = tree_gen ?blocks () in - assert (Tree.well_formed Block.compare tree) ; - let predecessor_pairs = Tree.predecessor_pairs tree in - let equal = Block.equal in - let not_equal x y = not @@ equal x y in - let read_predecessor_opt (block : Block.t) : Block.t option Lwt.t = - List.assoc ~equal block predecessor_pairs |> Lwt.return - in - let new_blocks ~from_block ~to_block = - match Tree.find_ancestor ~equal tree from_block to_block with - | None -> assert false (* Like the production implementation *) - | Some ancestor -> ( - let to_parents = Tree.predecessors ~equal tree to_block in - match - ( to_parents, - List_extra.take_until_if_found ~pred:(( = ) ancestor) to_parents - ) - with - | ([], _) -> - (* This case is not supported, because the production - implementation of new_blocks doesn't support it either - (since it MUST return an ancestor, acccording to its return - type). If you end up here, this means generated - data is not constrained enough: this pair [(from_block, - to_block)] should NOT be tried. Ideally the return type - of new_blocks should allow this case, hereby allowing - a more general test. *) - assert false - | (_, None) -> - (* Should not happen, because [ancestor] - is a member of [to_parents] *) - assert false - | (_, Some path) -> - (* Because [to_block] must be included in new_blocks' - returned value. *) - let path = to_block :: path in - Lwt.return (ancestor, List.rev path)) - in - let tree_elems : Block.t list = Tree.elems tree in - (* Pairs of blocks that are valid for being ~from_block and ~to_block *) - let heads_pairs : (Block.t * Block.t) list = - List.product tree_elems tree_elems - (* don't take from_block=to_block*) - |> List.filter (fun (left, right) -> not_equal left right) - (* keep only pairs of blocks that have a common ancestor *) - |> List.filter (fun (left, right) -> - Tree.find_ancestor ~equal tree left right |> function - | None -> false (* We want an ancestor *) - | Some ancestor -> - (* We don't want from_block to be the parent of to_block (or vice versa), - because it means the chain would rollback. This is not supported - (it hits an assert false in new_blocks, because its return type is - not general enough) *) - not_equal ancestor left && not_equal ancestor right) - in - let* chosen_pair = - if heads_pairs = [] then return None - else map Option.some (oneofl heads_pairs) - in - let* old_mempool = old_mempool_gen tree in - let res : Block.t Classification.chain_tools = - { - clear_or_cancel = Fun.const (); - inject_operation = (fun _ _ -> Lwt.return_unit); - new_blocks; - read_predecessor_opt; - } - in - return (res, tree, chosen_pair, old_mempool) - - (** [split_in_two l] is a generator producing [(l1, l2)] such that [l1 @ l2 = l] *) - let split_in_two (l : 'a list) : ('a list * 'a list) QCheck2.Gen.t = - let open QCheck2.Gen in - let length = List.length l in - let+ i = 0 -- length in - List_extra.split_n l i -end +module Tree = Generators_tree.Tree +module List_extra = Generators_tree.List_extra +module Block = Generators_tree.Block (** Function to unwrap an [option] when it MUST be a [Some] *) let force_opt ~loc = function @@ -604,7 +139,7 @@ module Handle_operations = struct let gen = let open QCheck2.Gen in let* (chain, tree, pair_blocks_opt, old_mempool) = - Generators.chain_tools_gen ?blocks:None () + Generators_tree.chain_tools_gen ?blocks:None () in let* live_blocks = sublist (Tree.values tree) @@ -657,7 +192,7 @@ module Handle_operations = struct let test_handle_live_operations_path_spec = QCheck2.Test.make ~name:"[handle_live_operations] path specification" - (Generators.chain_tools_gen ()) + (Generators_tree.chain_tools_gen ()) @@ fun (chain, tree, pair_blocks_opt, _) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in @@ -702,7 +237,7 @@ module Handle_operations = struct let test_handle_live_operations_clear = QCheck2.Test.make ~name:"[handle_live_operations] clear approximation" - Generators.(chain_tools_gen ()) + Generators_tree.(chain_tools_gen ()) @@ fun (chain, tree, pair_blocks_opt, old_mempool) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in @@ -742,7 +277,7 @@ module Handle_operations = struct let test_handle_live_operations_inject = QCheck2.Test.make ~name:"[handle_live_operations] inject approximation" - (Generators.chain_tools_gen ()) + (Generators_tree.chain_tools_gen ()) @@ fun (chain, tree, pair_blocks_opt, old_mempool) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in @@ -805,14 +340,12 @@ module Recyle_operations = struct let parameters : Classification.parameters = {map_size_limit; on_discarded_operation = Fun.const ()} in - let* classes = - list_size (pure length) External_generators.classification_gen - in + let* classes = list_size (pure length) Generators.classification_gen in assert (List.length classes == length) ; let t = Prevalidator_classification.create parameters in List.iter (fun (classification, op) -> - External_generators.add_if_not_present classification op t) + Generators.add_if_not_present classification op t) (List.combine_drop classes ops) ; return t @@ -831,7 +364,9 @@ module Recyle_operations = struct to test the typical use case. *) let gen = let open QCheck2.Gen in - let* blocks = Generators.unique_nonempty_block_gen >|= Block.set_to_list in + let* blocks = + Generators_tree.unique_nonempty_block_gen >|= Block.set_to_list + in assert (blocks <> []) ; let to_ops (blk : Block.t) = List.concat blk.operations in let oph_op_list_to_map l = List.to_seq l |> Op_map.of_seq in @@ -846,21 +381,20 @@ module Recyle_operations = struct (* For classification and pending, put 50% of them in live_blocks. For the remaining 50%, generate branch randomly, so likely outside live_blocks. *) - frequency - [(1, External_generators.block_hash_gen); (1, oneofl blocks_hashes)] + frequency [(1, Generators.block_hash_gen); (1, oneofl blocks_hashes)] in let* classification_pendings_ops = (* For classification and pending, we want operations that are NOT in the blocks already. Hence: *) - External_generators.op_map_gen ~block_hash_t () + Generators.op_map_gen ~block_hash_t () >|= Op_map.filter (fun oph _ -> not (Op_map.mem oph blocks_ops)) in let* (classification_ops, pending_ops) = Op_map.bindings classification_pendings_ops - |> Generators.split_in_two >|= both oph_op_list_to_map + |> Generators_tree.split_in_two >|= both oph_op_list_to_map in let* (chain_tools, tree, from_to, _) = - Generators.chain_tools_gen ~blocks () + Generators_tree.chain_tools_gen ~blocks () in let+ classification = classification_of_ops_gen classification_ops in (chain_tools, tree, from_to, classification, pending_ops) From 134ac1be654928ed2860d5f0fd2e27863051d906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Tue, 4 Jan 2022 21:17:15 +0100 Subject: [PATCH 0067/1220] prevalidator: generalize an existing generator --- src/lib_shell/test/generators_tree.ml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lib_shell/test/generators_tree.ml b/src/lib_shell/test/generators_tree.ml index 3cde4e89a9..abb232db94 100644 --- a/src/lib_shell/test/generators_tree.ml +++ b/src/lib_shell/test/generators_tree.ml @@ -307,16 +307,18 @@ let block_gen : Block.t QCheck2.Gen.t = let hash = Block.hash_of_block ops in return Block.{hash; operations = ops} -(* A generator of lists of {!Block.t} where all elements are guaranteed - to be different. *) -let unique_block_gen : Block.Set.t QCheck2.Gen.t = - QCheck2.Gen.(small_list block_gen >|= Block.Set.of_list) - -(* A generator of lists of {!Block.t} where all elements are guaranteed - to be different and returned lists are guaranteed to be non empty. *) +(* A generator of sets of {!Block.t} where all elements are guaranteed + to be different. [list_gen] is an optional list generator. If omitted + it is defaulted to {!QCheck2.Gen.small_list}. *) +let unique_block_gen ?(list_gen = QCheck2.Gen.small_list) () : + Block.Set.t QCheck2.Gen.t = + QCheck2.Gen.(list_gen block_gen >|= Block.Set.of_list) + +(* A generator of sets of {!Block.t} where all elements are guaranteed + to be different and returned sets are guaranteed to be non empty. *) let unique_nonempty_block_gen = let open QCheck2.Gen in - let+ block = block_gen and+ l = unique_block_gen in + let+ block = block_gen and+ l = unique_block_gen () in Block.Set.add block l (** A tree generator. Written in a slightly unusual style because it From 75b5d728e7454aee1ccd4a84027017a7ec6f679c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Tue, 4 Jan 2022 21:26:15 +0100 Subject: [PATCH 0068/1220] prevalidator: generators: modularize, for easier reuse later on --- src/lib_shell/test/generators_tree.ml | 120 +++++++++++------- ..._prevalidator_classification_operations.ml | 46 ++++--- 2 files changed, 94 insertions(+), 72 deletions(-) diff --git a/src/lib_shell/test/generators_tree.ml b/src/lib_shell/test/generators_tree.ml index abb232db94..5b754cf1d2 100644 --- a/src/lib_shell/test/generators_tree.ml +++ b/src/lib_shell/test/generators_tree.ml @@ -401,8 +401,74 @@ let old_mempool_gen (tree : Block.t Tree.tree) : |> Operation_hash.Map.of_seq) list_gen -(** Returns an instance of [block chain_tools] as well as: - - the tree of blocks +(** Function to implement + {!Prevalidator_classification.chain_tools.new_blocks} *) +let new_blocks (type a) ~(equal : a -> a -> bool) (tree : a Tree.tree) + ~from_block ~to_block = + match Tree.find_ancestor ~equal tree from_block to_block with + | None -> assert false (* Like the production implementation *) + | Some ancestor -> ( + let to_parents = Tree.predecessors ~equal tree to_block in + match + ( to_parents, + List_extra.take_until_if_found ~pred:(( = ) ancestor) to_parents ) + with + | ([], _) -> + (* This case is not supported, because the production + implementation of new_blocks doesn't support it either + (since it MUST return an ancestor, acccording to its return + type). If you end up here, this means generated + data is not constrained enough: this pair [(from_block, + to_block)] should NOT be tried. Ideally the return type + of new_blocks should allow this case, hereby allowing + a more general test. *) + assert false + | (_, None) -> + (* Should not happen, because [ancestor] + is a member of [to_parents] *) + assert false + | (_, Some path) -> + (* Because [to_block] must be included in new_blocks' + returned value. *) + let path = to_block :: path in + Lwt.return (ancestor, List.rev path)) + +(** Function to implement + {!Prevalidator_classification.chain_tools.read_predecessor_opt} *) +let read_predecessor_opt (type a) ~(compare : a -> a -> int) + (tree : a Tree.tree) (a : a) : a option Lwt.t = + let module Ord = struct + type t = a + + let compare = compare + end in + let module Map = Map.Make (Ord) in + let predecessors_map = + Tree.predecessor_pairs tree |> List.to_seq |> Map.of_seq + in + Map.find a predecessors_map |> Lwt.return + +(** Function providing the instance of + {!Prevalidator_classification.chain_tools} for a given {!Tree.tree} *) +let generic_classification_chain_tools (type a) ~(compare : a -> a -> int) + (tree : a Tree.tree) : a Classification.chain_tools = + let equal a b = compare a b = 0 in + Classification. + { + clear_or_cancel = Fun.const (); + inject_operation = (fun _ _ -> Lwt.return_unit); + new_blocks = new_blocks ~equal tree; + read_predecessor_opt = read_predecessor_opt ~compare tree; + } + +(** A specific instance of {!generic_classification_chain_tools}, + for handiness of users. *) +let classification_chain_tools (tree : Block.t Tree.tree) : + Block.t Classification.chain_tools = + generic_classification_chain_tools ~compare:Block.compare tree + +(** Returns: + - An instance of [Tree.tree]: the tree of blocks - a pair of blocks (that belong to the tree) and is fine for being passed as [(~from_branch, ~to_branch)]; i.e. the two blocks have a common ancestor. @@ -411,50 +477,16 @@ let old_mempool_gen (tree : Block.t Tree.tree) : If given, the specified [?blocks] are used. Otherwise they are generated. *) -let chain_tools_gen ?blocks () : - (Block.t Classification.chain_tools - * Block.t Tree.tree +let tree_gen ?blocks () : + (Block.t Tree.tree * (Block.t * Block.t) option * unit Prevalidation.operation Operation_hash.Map.t) QCheck2.Gen.t = let open QCheck2.Gen in let* tree = tree_gen ?blocks () in assert (Tree.well_formed Block.compare tree) ; - let predecessor_pairs = Tree.predecessor_pairs tree in let equal = Block.equal in let not_equal x y = not @@ equal x y in - let read_predecessor_opt (block : Block.t) : Block.t option Lwt.t = - List.assoc ~equal block predecessor_pairs |> Lwt.return - in - let new_blocks ~from_block ~to_block = - match Tree.find_ancestor ~equal tree from_block to_block with - | None -> assert false (* Like the production implementation *) - | Some ancestor -> ( - let to_parents = Tree.predecessors ~equal tree to_block in - match - ( to_parents, - List_extra.take_until_if_found ~pred:(( = ) ancestor) to_parents ) - with - | ([], _) -> - (* This case is not supported, because the production - implementation of new_blocks doesn't support it either - (since it MUST return an ancestor, acccording to its return - type). If you end up here, this means generated - data is not constrained enough: this pair [(from_block, - to_block)] should NOT be tried. Ideally the return type - of new_blocks should allow this case, hereby allowing - a more general test. *) - assert false - | (_, None) -> - (* Should not happen, because [ancestor] - is a member of [to_parents] *) - assert false - | (_, Some path) -> - (* Because [to_block] must be included in new_blocks' - returned value. *) - let path = to_block :: path in - Lwt.return (ancestor, List.rev path)) - in let tree_elems : Block.t list = Tree.elems tree in (* Pairs of blocks that are valid for being ~from_block and ~to_block *) let heads_pairs : (Block.t * Block.t) list = @@ -476,16 +508,8 @@ let chain_tools_gen ?blocks () : if heads_pairs = [] then return None else map Option.some (oneofl heads_pairs) in - let* old_mempool = old_mempool_gen tree in - let res : Block.t Classification.chain_tools = - { - clear_or_cancel = Fun.const (); - inject_operation = (fun _ _ -> Lwt.return_unit); - new_blocks; - read_predecessor_opt; - } - in - return (res, tree, chosen_pair, old_mempool) + let+ old_mempool = old_mempool_gen tree in + (tree, chosen_pair, old_mempool) (** [split_in_two l] is a generator producing [(l1, l2)] such that [l1 @ l2 = l] *) let split_in_two (l : 'a list) : ('a list * 'a list) QCheck2.Gen.t = diff --git a/src/lib_shell/test/test_prevalidator_classification_operations.ml b/src/lib_shell/test/test_prevalidator_classification_operations.ml index 265d0be997..33f8421d83 100644 --- a/src/lib_shell/test/test_prevalidator_classification_operations.ml +++ b/src/lib_shell/test/test_prevalidator_classification_operations.ml @@ -138,26 +138,23 @@ module Handle_operations = struct it would be overkill. *) let gen = let open QCheck2.Gen in - let* (chain, tree, pair_blocks_opt, old_mempool) = - Generators_tree.chain_tools_gen ?blocks:None () + let* (tree, pair_blocks_opt, old_mempool) = + Generators_tree.tree_gen ?blocks:None () in let* live_blocks = sublist (Tree.values tree) >|= List.map (fun (blk : Block.t) -> blk.hash) in return - ( chain, - tree, - pair_blocks_opt, - old_mempool, - Block_hash.Set.of_list live_blocks ) + (tree, pair_blocks_opt, old_mempool, Block_hash.Set.of_list live_blocks) in QCheck2.Test.make ~name:"[handle_live_operations] is a subset of alive blocks" gen - @@ fun (chain, tree, pair_blocks_opt, old_mempool, live_blocks) -> + @@ fun (tree, pair_blocks_opt, old_mempool, live_blocks) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in + let chain = Generators_tree.classification_chain_tools tree in let expected_superset : unit Prevalidation.operation Op_map.t = (* Take all blocks *) Tree.values tree @@ -192,10 +189,11 @@ module Handle_operations = struct let test_handle_live_operations_path_spec = QCheck2.Test.make ~name:"[handle_live_operations] path specification" - (Generators_tree.chain_tools_gen ()) - @@ fun (chain, tree, pair_blocks_opt, _) -> + (Generators_tree.tree_gen ()) + @@ fun (tree, pair_blocks_opt, _) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in + let chain = Generators_tree.classification_chain_tools tree in let equal = Block.equal in let ancestor : Block.t = Tree.find_ancestor ~equal tree from_branch to_branch @@ -237,10 +235,11 @@ module Handle_operations = struct let test_handle_live_operations_clear = QCheck2.Test.make ~name:"[handle_live_operations] clear approximation" - Generators_tree.(chain_tools_gen ()) - @@ fun (chain, tree, pair_blocks_opt, old_mempool) -> + Generators_tree.(tree_gen ()) + @@ fun (tree, pair_blocks_opt, old_mempool) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in + let chain = Generators_tree.classification_chain_tools tree in let cleared = ref Operation_hash.Set.empty in let clearer oph = cleared := Operation_hash.Set.add oph !cleared in let chain = {chain with clear_or_cancel = clearer} in @@ -277,10 +276,11 @@ module Handle_operations = struct let test_handle_live_operations_inject = QCheck2.Test.make ~name:"[handle_live_operations] inject approximation" - (Generators_tree.chain_tools_gen ()) - @@ fun (chain, tree, pair_blocks_opt, old_mempool) -> + (Generators_tree.tree_gen ()) + @@ fun (tree, pair_blocks_opt, old_mempool) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in + let chain = Generators_tree.classification_chain_tools tree in let injected = ref Operation_hash.Set.empty in let inject_operation oph _op = injected := Operation_hash.Set.add oph !injected ; @@ -393,11 +393,9 @@ module Recyle_operations = struct Op_map.bindings classification_pendings_ops |> Generators_tree.split_in_two >|= both oph_op_list_to_map in - let* (chain_tools, tree, from_to, _) = - Generators_tree.chain_tools_gen ~blocks () - in + let* (tree, from_to, _) = Generators_tree.tree_gen ~blocks () in let+ classification = classification_of_ops_gen classification_ops in - (chain_tools, tree, from_to, classification, pending_ops) + (tree, from_to, classification, pending_ops) (** Test that {!Classification.recycle_operations} returns an empty map when live blocks are empty. @@ -416,10 +414,10 @@ module Recyle_operations = struct Test.make ~name:"[recycle_operations ~live_blocks:empty] is empty" Gen.(pair gen bool) - @@ fun ( (chain, _tree, pair_blocks_opt, classes, pending), - handle_branch_refused ) -> + @@ fun ((tree, pair_blocks_opt, classes, pending), handle_branch_refused) -> assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in + let chain = Generators_tree.classification_chain_tools tree in let parse raw hash = Some (Prevalidation.Internal_for_tests.make_operation hash raw ()) in @@ -447,10 +445,10 @@ module Recyle_operations = struct QCheck2.Test.make ~name:"[recycle_operations] returned value can be approximated" QCheck2.Gen.(pair gen bool) - @@ fun ( (chain, tree, pair_blocks_opt, classes, pending), - handle_branch_refused ) -> + @@ fun ((tree, pair_blocks_opt, classes, pending), handle_branch_refused) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in + let chain = Generators_tree.classification_chain_tools tree in let equal = Block.equal in let ancestor : Block.t = Tree.find_ancestor ~equal tree from_branch to_branch @@ -519,8 +517,7 @@ module Recyle_operations = struct QCheck2.Test.make ~name:"[recycle_operations] correctly trims its input classification" QCheck2.Gen.(pair gen bool) - @@ fun ( (chain, tree, pair_blocks_opt, classes, pending), - handle_branch_refused ) -> + @@ fun ((tree, pair_blocks_opt, classes, pending), handle_branch_refused) -> QCheck2.assume @@ Option.is_some pair_blocks_opt ; let live_blocks : Block_hash.Set.t = Tree.values tree |> List.map Block.to_hash |> Block_hash.Set.of_list @@ -536,6 +533,7 @@ module Recyle_operations = struct classes in let (from_branch, to_branch) = force_opt ~loc:__LOC__ pair_blocks_opt in + let chain = Generators_tree.classification_chain_tools tree in let parse raw hash = Some (Prevalidation.Internal_for_tests.make_operation hash raw ()) in From 84ef42b9df9b01c36c0497e2e66e3e04ab140f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Thu, 6 Jan 2022 11:07:03 +0100 Subject: [PATCH 0069/1220] prevalidator: tree: small enhancements --- src/lib_shell/test/generators_tree.ml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/lib_shell/test/generators_tree.ml b/src/lib_shell/test/generators_tree.ml index 5b754cf1d2..488fb7a15e 100644 --- a/src/lib_shell/test/generators_tree.ml +++ b/src/lib_shell/test/generators_tree.ml @@ -30,7 +30,11 @@ module Classification = Prevalidator_classification (** Various functions about {!list} *) module List_extra = struct - (** [common_elem [0; 2; 3] [3; 2]] returns [Some 2] + (** [common_elem l1 l2] returns the first element of [l1] that + occurs in [l2]. If [l1] and [l2] do not have a common element, + [Nothing] is returned. Examples: + + [common_elem [0; 2; 3] [3; 2]] returns [Some 2] [common_elem [0; 2; 3] [2; 3]] returns [Some 3] [common_elem [0; 2; 3] [4]] returns [Nothing] *) let rec common_elem ~(equal : 'a -> 'a -> bool) (l1 : 'a list) (l2 : 'a list) @@ -114,6 +118,7 @@ module Tree = struct | Node1 (a, _) -> a | Node2 (a, _, _) -> a + (** [values t] returns all values within [t] *) let rec values : 'a tree -> 'a list = function | Leaf a -> [a] | Node1 (a, t1) -> a :: values t1 @@ -184,12 +189,6 @@ module Tree = struct assert (not (List.mem ~equal e res)) ; res - (** [elems t] returns all values within [t] *) - let rec elems : 'a tree -> 'a list = function - | Leaf a -> [a] - | Node1 (a, t1) -> a :: elems t1 - | Node2 (a, t1, t2) -> a :: elems t1 @ elems t2 - (** [find_ancestor tree e1 e2] returns the common ancestor of [e1] and [e2] in [tree], if any *) let find_ancestor ~(equal : 'a -> 'a -> bool) (tree : 'a tree) (e1 : 'a) @@ -487,7 +486,7 @@ let tree_gen ?blocks () : assert (Tree.well_formed Block.compare tree) ; let equal = Block.equal in let not_equal x y = not @@ equal x y in - let tree_elems : Block.t list = Tree.elems tree in + let tree_elems : Block.t list = Tree.values tree in (* Pairs of blocks that are valid for being ~from_block and ~to_block *) let heads_pairs : (Block.t * Block.t) list = List.product tree_elems tree_elems From 984e794d85e202e9e3d0700c502d4031ff3dacdd Mon Sep 17 00:00:00 2001 From: Thomas Gazagnaire Date: Sat, 18 Dec 2021 00:42:54 +0100 Subject: [PATCH 0070/1220] lib_context: upgrade to irmin 2.10 --- src/lib_context/context.ml | 12 ++++++------ src/lib_context/encoding/context.ml | 2 ++ src/lib_context/helpers/context.ml | 6 +++--- src/lib_context/memory/context.ml | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/lib_context/context.ml b/src/lib_context/context.ml index 28c109b891..80b935150c 100644 --- a/src/lib_context/context.ml +++ b/src/lib_context/context.ml @@ -505,7 +505,7 @@ let close index = Store.Repo.close index.repo let get_branch chain_id = Format.asprintf "%a" Chain_id.pp chain_id let commit_genesis index ~chain_id ~time ~protocol = - let tree = Store.Tree.empty in + let tree = Store.Tree.empty () in let ctxt = {index; tree; parents = []; ops = 0} in (match index.patch_context with | None -> return ctxt @@ -717,7 +717,7 @@ module Dumpable_context = struct aux tree Fun.id >>= fun () -> Lwt.return !total_visited let make_context index = - {index; tree = Store.Tree.empty; parents = []; ops = 0} + {index; tree = Store.Tree.empty (); parents = []; ops = 0} let update_context context tree = {context with tree} @@ -736,10 +736,10 @@ module Dumpable_context = struct let add_dir batch l = let add sub_tree (step, hash) = match sub_tree with - | None -> Lwt.return_some Store.Tree.empty + | None -> Lwt.return_some (Store.Tree.empty ()) | Some sub_tree -> add_hash batch sub_tree [step] hash in - Seq_es.fold_left_s add (Some Store.Tree.empty) l >>=? function + Seq_es.fold_left_s add (Some (Store.Tree.empty ())) l >>=? function | None -> Lwt.return_ok None | Some tree -> let (Batch (repo, x, y)) = batch in @@ -789,7 +789,7 @@ let check_protocol_commit_consistency index ~expected_context_hash let data_merkle_root = Hash.of_context_hash data_merkle_root in let parents = List.map Hash.of_context_hash parents_contexts in let protocol_hash_bytes = Protocol_hash.to_bytes given_protocol_hash in - let tree = Store.Tree.empty in + let tree = Store.Tree.empty () in Store.Tree.add tree current_protocol_key protocol_hash_bytes >>= fun tree -> let test_chain_status_bytes = Data_encoding.Binary.to_bytes_exn @@ -831,7 +831,7 @@ let check_protocol_commit_consistency index ~expected_context_hash if Context_hash.equal expected_context_hash computed_context_hash then let ctxt = let parent = Store.of_private_commit index.repo commit in - {index; tree = Store.Tree.empty; parents = [parent]; ops = 0} + {index; tree = Store.Tree.empty (); parents = [parent]; ops = 0} in add_test_chain ctxt test_chain_status >>= fun ctxt -> add_protocol ctxt given_protocol_hash >>= fun ctxt -> diff --git a/src/lib_context/encoding/context.ml b/src/lib_context/encoding/context.ml index 6703947cbd..55940161c1 100644 --- a/src/lib_context/encoding/context.ml +++ b/src/lib_context/encoding/context.ml @@ -37,6 +37,8 @@ module Conf = struct let entries = 32 let stable_hash = 256 + + let inode_child_order = `Seeded_hash end module Hash : sig diff --git a/src/lib_context/helpers/context.ml b/src/lib_context/helpers/context.ml index b1e4d0c0d1..afd3905e46 100644 --- a/src/lib_context/helpers/context.ml +++ b/src/lib_context/helpers/context.ml @@ -41,11 +41,11 @@ module Make_tree (Store : DB) = struct let pp = Irmin.Type.pp Store.tree_t - let empty _ = Store.Tree.empty + let empty _ = Store.Tree.empty () let equal = Irmin.Type.(unstage (equal Store.tree_t)) - let is_empty t = equal Store.Tree.empty t + let is_empty t = equal (Store.Tree.empty ()) t let hash t = Hash.to_context_hash (Store.Tree.hash t) @@ -59,7 +59,7 @@ module Make_tree (Store : DB) = struct | `Contents (c, _) -> Store.Tree.Contents.force_exn c >|= Option.some | `Node _ -> Lwt.return_none - let of_value _ v = Store.Tree.add Store.Tree.empty [] v + let of_value _ v = Store.Tree.add (Store.Tree.empty ()) [] v let fold ?depth t k ~(order : [`Sorted | `Undefined]) ~init ~f = find_tree t k >>= function diff --git a/src/lib_context/memory/context.ml b/src/lib_context/memory/context.ml index d08da2bc92..c5bb53e4a6 100644 --- a/src/lib_context/memory/context.ml +++ b/src/lib_context/memory/context.ml @@ -175,7 +175,7 @@ let create () = let cfg = Irmin_pack.config "/tmp" in let promise = Store.Repo.v cfg >>= fun repo -> - Lwt.return {repo; parents = []; tree = Store.Tree.empty} + Lwt.return {repo; parents = []; tree = Store.Tree.empty ()} in match Lwt.state promise with | Lwt.Return result -> result From 7ddc7c2c73a26e689b872747cdaf62366e4adfc6 Mon Sep 17 00:00:00 2001 From: Thomas Gazagnaire Date: Tue, 4 Jan 2022 13:52:15 +0100 Subject: [PATCH 0071/1220] lib_context: add Context.Proof --- src/lib_context/context.ml | 1 + src/lib_context/helpers/context.ml | 130 +++++++++++++++++++ src/lib_context/helpers/context.mli | 25 ++++ src/lib_context/sigs/context.ml | 194 ++++++++++++++++++++++++++++ 4 files changed, 350 insertions(+) diff --git a/src/lib_context/context.ml b/src/lib_context/context.ml index 80b935150c..7f386b0b93 100644 --- a/src/lib_context/context.ml +++ b/src/lib_context/context.ml @@ -280,6 +280,7 @@ type value = bytes type tree = Store.tree module Tree = Tezos_context_helpers.Context.Make_tree (Store) +module Proof = Tree.Proof let mem ctxt key = Tree.mem ctxt.tree (data_key key) diff --git a/src/lib_context/helpers/context.ml b/src/lib_context/helpers/context.ml index afd3905e46..0a30ae0a27 100644 --- a/src/lib_context/helpers/context.ml +++ b/src/lib_context/helpers/context.ml @@ -39,6 +39,134 @@ module type DB = module Make_tree (Store : DB) = struct include Store.Tree + module Kinded_hash = struct + let of_context_hash = function + | `Contents h -> `Contents (Hash.of_context_hash h, ()) + | `Node h -> `Node (Hash.of_context_hash h) + + let to_context_hash = function + | `Contents (h, ()) -> `Contents (Hash.to_context_hash h) + | `Node h -> `Node (Hash.to_context_hash h) + end + + module DB_proof = Store.Tree.Proof + + module Proof = struct + include Tezos_context_sigs.Context.Proof_types + + let v ~before ~after state = {before; after; state} + + let before t = t.before + + let after t = t.after + + let state t = t.state + + module State = struct + let rec to_inode : type a b. (a -> b) -> a DB_proof.inode -> b inode = + fun f {length; proofs} -> + {length; proofs = List.map (fun (k, v) -> (k, f v)) proofs} + + and to_tree : DB_proof.tree -> tree = function + | Contents (c, ()) -> Contents c + | Blinded_contents (h, ()) -> Blinded_contents (Hash.to_context_hash h) + | Node l -> Node (List.map (fun (k, v) -> (k, to_tree v)) l) + | Blinded_node h -> Blinded_node (Hash.to_context_hash h) + | Inode i -> Inode (to_inode to_inode_tree i) + | Extender e -> Extender (to_inode_extender to_inode_tree e) + + and to_inode_extender : + type a b. (a -> b) -> a DB_proof.inode_extender -> b inode_extender = + fun f {length; segments; proof} -> {length; segments; proof = f proof} + + and to_inode_tree : DB_proof.inode_tree -> tree inode_tree = function + | Blinded_inode h -> Blinded_inode (Hash.to_context_hash h) + | Inode_values l -> + Inode_values (List.map (fun (k, v) -> (k, to_tree v)) l) + | Inode_tree i -> Inode_tree (to_inode to_inode_tree i) + | Inode_extender e -> Inode_extender (to_inode_extender to_inode_tree e) + + let rec of_inode : type a b. (a -> b) -> a inode -> b DB_proof.inode = + fun f {length; proofs} -> + {length; proofs = List.map (fun (k, v) -> (k, f v)) proofs} + + and of_tree : tree -> DB_proof.tree = function + | Contents c -> Contents (c, ()) + | Blinded_contents h -> Blinded_contents (Hash.of_context_hash h, ()) + | Node l -> Node (List.map (fun (k, v) -> (k, of_tree v)) l) + | Blinded_node h -> Blinded_node (Hash.of_context_hash h) + | Inode i -> Inode (of_inode of_inode_tree i) + | Extender e -> Extender (of_inode_extender of_inode_tree e) + + and of_inode_extender : + type a b. (a -> b) -> a inode_extender -> b DB_proof.inode_extender = + fun f {length; segments; proof} -> {length; segments; proof = f proof} + + and of_inode_tree : tree inode_tree -> DB_proof.inode_tree = function + | Blinded_inode h -> Blinded_inode (Hash.of_context_hash h) + | Inode_values l -> + Inode_values (List.map (fun (k, v) -> (k, of_tree v)) l) + | Inode_tree i -> Inode_tree (of_inode of_inode_tree i) + | Inode_extender e -> Inode_extender (of_inode_extender of_inode_tree e) + + let of_stream_elt : elt -> DB_proof.elt = function + | Contents c -> Contents c + | Node l -> + Node (List.map (fun (k, v) -> (k, Kinded_hash.of_context_hash v)) l) + | Inode i -> Inode (of_inode Hash.of_context_hash i) + | Inode_extender e -> + Inode_extender (of_inode_extender Hash.of_context_hash e) + + let of_stream : stream -> DB_proof.stream = Seq.map of_stream_elt + + let to_stream_elt : DB_proof.elt -> elt = function + | Contents c -> Contents c + | Node l -> + Node (List.map (fun (k, v) -> (k, Kinded_hash.to_context_hash v)) l) + | Inode i -> Inode (to_inode Hash.to_context_hash i) + | Inode_extender e -> + Inode_extender (to_inode_extender Hash.to_context_hash e) + + let to_stream : DB_proof.stream -> stream = Seq.map to_stream_elt + end + + let of_proof f p = + let before = Kinded_hash.to_context_hash (Proof.before p) in + let after = Kinded_hash.to_context_hash (Proof.after p) in + let state = f (Proof.state p) in + v ~before ~after state + + let to_proof f p = + let before = Kinded_hash.of_context_hash p.before in + let after = Kinded_hash.of_context_hash p.after in + let state = f p.state in + DB_proof.v ~before ~after state + + let to_tree = of_proof State.to_tree + + let of_tree = to_proof State.of_tree + + let to_stream = of_proof State.to_stream + + let of_stream = to_proof State.of_stream + end + + let produce_proof repo hash f = + let hash = Kinded_hash.of_context_hash hash in + produce_proof repo hash f >|= fun (p, r) -> (Proof.to_tree p, r) + + let verify_proof proof f = + let proof = Proof.of_tree proof in + verify_proof proof f + + let produce_stream repo hash f = + let hash = Kinded_hash.of_context_hash hash in + produce_stream repo hash f >|= fun (p, r) -> (Proof.to_stream p, r) + + let verify_stream proof f = + let proof = Proof.of_stream proof in + verify_stream proof f + let pp = Irmin.Type.pp Store.tree_t let empty _ = Store.Tree.empty () @@ -168,6 +296,8 @@ module Make_tree (Store : DB) = struct exception Context_dangling_hash of string + exception Dangling_hash = Store.Private.Node.Val.Dangling_hash + let find_tree tree key = Lwt.catch (fun () -> Store.Tree.find_tree tree key) diff --git a/src/lib_context/helpers/context.mli b/src/lib_context/helpers/context.mli index 6cb92ca60e..381af4145b 100644 --- a/src/lib_context/helpers/context.mli +++ b/src/lib_context/helpers/context.mli @@ -44,6 +44,8 @@ module Make_tree (DB : DB) : sig and type value := DB.contents and type tree := DB.tree + module Proof : Tezos_context_sigs.Context.PROOF + val pp : Format.formatter -> DB.tree -> unit val empty : _ -> DB.tree @@ -66,6 +68,29 @@ module Make_tree (DB : DB) : sig val shallow : DB.repo -> kinded_hash -> DB.tree + type tree_proof := Proof.tree Proof.t + + type stream_proof := Proof.stream Proof.t + + type ('proof, 'result) producer := + repo -> + kinded_hash -> + (DB.tree -> (DB.tree * 'result) Lwt.t) -> + ('proof * 'result) Lwt.t + + type ('proof, 'result) verifier := + 'proof -> + (DB.tree -> (DB.tree * 'result) Lwt.t) -> + (DB.tree * 'result, [`Msg of string]) result Lwt.t + + val produce_proof : (tree_proof, 'a) producer + + val verify_proof : (tree_proof, 'a) verifier + + val produce_stream : (stream_proof, 'a) producer + + val verify_stream : (stream_proof, 'a) verifier + (** Exception raised by [find_tree] and [add_tree] when applied to shallow trees. It is exposed for so that the memory context can in turn raise it. *) exception Context_dangling_hash of string diff --git a/src/lib_context/sigs/context.ml b/src/lib_context/sigs/context.ml index b189055846..d1c1805f8e 100644 --- a/src/lib_context/sigs/context.ml +++ b/src/lib_context/sigs/context.ml @@ -179,9 +179,147 @@ module type HASH_VERSION = sig val set_hash_version : t -> Context_hash.Version.t -> t Lwt.t end +module Proof_types = struct + (** The type for node segments. *) + type segment = string + + (** The type for contents. *) + type contents = bytes + + (** The type for hashes. *) + type hash = Context_hash.t + + (** The type for (internal) inode proofs. + + These proofs encode large directories into a more efficient tree-like + structure. + + Invariant are dependent on the backend. + + [length] is the total number of entries in the chidren of the inode. + E.g. the size of the "flattened" version of that inode. This is used + to efficiently implements paginated lists. + + [proofs] have a length of at most [Conf.entries] entries. This list can + be sparse so every proof is indexed by their position between + [0 ... (Conf.entries-1)]. For binary trees, this boolean + index is a segment of the left-right decision proof corresponding + to the path in that binary tree. *) + type 'a inode = {length : int; proofs : (int * 'a) list} + + (** The type for inode extenders. *) + type 'a inode_extender = {length : int; segments : int list; proof : 'a} + [@@deriving irmin] + + (** The type for inode trees. + + Inodes are optimized representations of trees. Pointers in that trees + would refer to blinded nodes, nodes or to other inodes. E.g. + Blinded content nor contents are not expected to appear directly in + an inode tree. *) + type 'tree inode_tree = + | Blinded_inode of hash + | Inode_values of (segment * 'tree) list + | Inode_tree of 'tree inode_tree inode + | Inode_extender of 'tree inode_tree inode_extender + [@@deriving irmin] + + (** The type for compressed and partial Merkle tree proofs. + + [Blinded_contents h] is a shallow pointer to contents having hash [h]. + [Contents c] is the contents [c]. + + Tree proofs do not provide any guarantee with the ordering of + computations. For instance, if two effects commute, they won't be + distinguishable by this kind of proofs. + + [Blinded_node h] is a shallow pointer to a node having hash [h]. + + [Node ls] is a "flat" node containing the list of files [ls]. The length + of [ls] is at most [Conf.stable_hash]. + + [Inode i] is an optimized representation of a node as a tree. + + *) + type tree = + | Contents of contents + | Blinded_contents of hash + | Node of (segment * tree) list + | Blinded_node of hash + | Inode of tree inode_tree inode + | Extender of tree inode_tree inode_extender + [@@deriving irmin] + + (** The type for kinded hashes. *) + type kinded_hash = [`Contents of Context_hash.t | `Node of Context_hash.t] + + (** The type for elements of stream proofs. *) + type elt = + | Contents of contents + | Node of (segment * kinded_hash) list + | Inode of hash inode + | Inode_extender of hash inode_extender + [@@deriving irmin] + + (** The type for stream proofs. Stream poofs provides stronger ordering + guarantees as the read effects have to happen in the exact same order and + they are easier to verify. *) + type stream = elt Seq.t [@@deriving irmin] + + type 'a t = {before : kinded_hash; after : kinded_hash; state : 'a} +end + +module type PROOF = sig + (** Proofs are compact representations of trees which can be shared + between a node and a client. + + The protocol is the following: + + - The node runs a function [f] over a tree [t]. While performing + this computation, the node records: the hash of [t] (called [before] + below), the hash of [f t] (called [after] below) and a subset of [t] + which is needed to replay [f] without any access to the node's storage. + Once done, the node packs this into a proof [p] and sends this to the + client. + + - The client generates an initial tree [t'] from [p] and computes [f t']. + Once done, it compares [t']'s hash and [f t']'s hash to [before] and + [after]. If they match, they know that the result state [f t'] is a + valid context state, without having to have access to the full node's + storage. *) + + include + module type of Proof_types + with type 'a inode = 'a Proof_types.inode + and type 'a inode_extender = 'a Proof_types.inode_extender + and type 'a inode_tree = 'a Proof_types.inode_tree + and type tree = Proof_types.tree + and type elt = Proof_types.elt + and type stream = Proof_types.stream + and type 'a t = 'a Proof_types.t + + (** [t] proves that the state advanced from [before t] to [after t]. + [state t]'s hash is [before], and [state t] contains the minimal + information for the computation to reach [after t]. *) + + (** [before t] it the state's hash at the beginning of the computation. *) + val before : 'a t -> kinded_hash + + (** [after t] is the state's hash at the end of the computation. *) + val after : 'a t -> kinded_hash + + (** [proof t] is a subset of the initial state needed to prove that the proven + computation could run without performing any I/O. *) + val state : 'a t -> 'a + + val v : before:kinded_hash -> after:kinded_hash -> 'a -> 'a t +end + module type S = sig include VIEW with type key = string list and type value = bytes + module Proof : PROOF + module Tree : sig include TREE @@ -216,5 +354,61 @@ module type S = sig val make_repo : unit -> repo Lwt.t val shallow : repo -> kinded_hash -> tree + + (** [produce r h f] runs [f] on top of a real store [r], producing a proof + and a reulst using the initial root hash [h]. + + The trees produced during [f]'s computation will carry the full history + of reads. This history will be reset when [f] is complete so subtrees + escaping the scope of [f] will not cause memory leaks. + + It is possible to call [produce_proof] recursively. In that case, each + input trees will have their own history of reads and will contain only + the reads needed to unshallow that corresponding trees. Proof trees + proof should then interact as if they were all unshallowed (note: in the + case of nested proofs, it's unclear what [verify_proof] should do...). *) + type ('proof, 'result) producer := + repo -> + kinded_hash -> + (tree -> (tree * 'result) Lwt.t) -> + ('proof * 'result) Lwt.t + + (** [verify t f] runs [f] in checking mode, loading data from the proof as + needed. + + The generated tree is the tree after [f] has completed. More operations + can be run on that tree, but it won't be able to access the underlying + storage. + + Raise [Proof.Bad_proof] when the proof is rejected. *) + type ('proof, 'result) verifier := + 'proof -> + (tree -> (tree * 'result) Lwt.t) -> + (tree * 'result, [`Msg of string]) result Lwt.t + + (** The type for tree proofs. + + Guarantee that the given computation performs exactly the same state + operations as the generating computation, *in some order*. *) + type tree_proof := Proof.tree Proof.t + + (** [produce_proof] is the producer of tree proofs. *) + val produce_proof : (tree_proof, 'a) producer + + (** [verify_proof] is the verifier of tree proofs. *) + val verify_proof : (tree_proof, 'a) verifier + + (** The type for stream proofs. + + Guarantee that the given computation performs exactly the same state + operations as the generating computation, in the exact same order.*in + some order*. *) + type stream_proof := Proof.stream Proof.t + + (** [produce_stream] is the producer of stream proofs. *) + val produce_stream : (stream_proof, 'a) producer + + (** [verify_stream] is the verifier of stream proofs. *) + val verify_stream : (stream_proof, 'a) verifier end end From 990b62c6a88906adf6b7aebcf7e26ea796ea7ad0 Mon Sep 17 00:00:00 2001 From: Thomas Gazagnaire Date: Tue, 4 Jan 2022 13:52:32 +0100 Subject: [PATCH 0072/1220] lib_context: add Context.length --- src/lib_context/context.ml | 2 ++ src/lib_context/helpers/context.ml | 2 ++ src/lib_context/memory/context.ml | 2 ++ src/lib_context/sigs/context.ml | 7 +++++++ 4 files changed, 13 insertions(+) diff --git a/src/lib_context/context.ml b/src/lib_context/context.ml index 7f386b0b93..55458036ea 100644 --- a/src/lib_context/context.ml +++ b/src/lib_context/context.ml @@ -291,6 +291,8 @@ let raw_find ctxt key = Tree.find ctxt.tree key let list ctxt ?offset ?length key = Tree.list ctxt.tree ?offset ?length (data_key key) +let length ctxt key = Tree.length ctxt.tree key + let find ctxt key = raw_find ctxt (data_key key) let incr_ops ctxt = {ctxt with ops = ctxt.ops + 1} diff --git a/src/lib_context/helpers/context.ml b/src/lib_context/helpers/context.ml index 0a30ae0a27..76bc77ad5d 100644 --- a/src/lib_context/helpers/context.ml +++ b/src/lib_context/helpers/context.ml @@ -294,6 +294,8 @@ module Make_tree (Store : DB) = struct let list tree ?offset ?length key = Store.Tree.list ~cache:true tree ?offset ?length key + let length tree key = Store.Tree.length ~cache:true tree key + exception Context_dangling_hash of string exception Dangling_hash = Store.Private.Node.Val.Dangling_hash diff --git a/src/lib_context/memory/context.ml b/src/lib_context/memory/context.ml index c5bb53e4a6..ced87f72a5 100644 --- a/src/lib_context/memory/context.ml +++ b/src/lib_context/memory/context.ml @@ -115,6 +115,8 @@ let mem_tree ctxt key = Tree.mem_tree ctxt.tree (data_key key) let list ctxt ?offset ?length key = Tree.list ctxt.tree ?offset ?length (data_key key) +let length ctxt key = Tree.length ctxt.tree key + let find ctxt key = Tree.find ctxt.tree (data_key key) let raw_add ctxt key data = diff --git a/src/lib_context/sigs/context.ml b/src/lib_context/sigs/context.ml index d1c1805f8e..a47f2b3f24 100644 --- a/src/lib_context/sigs/context.ml +++ b/src/lib_context/sigs/context.ml @@ -63,6 +63,13 @@ module type VIEW = sig val list : t -> ?offset:int -> ?length:int -> key -> (string * tree) list Lwt.t + (** [length t key] is an Lwt promise that resolve to the number of + files and sub-nodes stored under [k] in [t]. + + It is equivalent to [list t k >|= List.length] but has a + constant-time complexity. *) + val length : t -> key -> int Lwt.t + (** {2 Setters} *) (** [add t k v] is an Lwt promise that resolves to [c] such that: From edfa0875fc150965863b0499acc21ca4644196f2 Mon Sep 17 00:00:00 2001 From: Thomas Gazagnaire Date: Wed, 5 Jan 2022 19:44:09 +0100 Subject: [PATCH 0073/1220] lib_protocol_environment: use irmin 2.10 --- src/lib_protocol_environment/dummy_context.ml | 2 + .../environment_V2.ml | 43 +-- .../environment_V3.ml | 43 +-- .../environment_V4.ml | 13 +- .../environment_context.ml | 21 +- .../environment_context.mli | 27 +- .../environment_context_intf.ml | 256 +++++++++++++++--- .../memory_context.mli | 2 +- src/lib_protocol_environment/proxy_context.ml | 4 + 9 files changed, 236 insertions(+), 175 deletions(-) diff --git a/src/lib_protocol_environment/dummy_context.ml b/src/lib_protocol_environment/dummy_context.ml index 351abe5ab6..d3dbd7b33b 100644 --- a/src/lib_protocol_environment/dummy_context.ml +++ b/src/lib_protocol_environment/dummy_context.ml @@ -67,6 +67,8 @@ module M = struct let list _ ?offset:_ ?length:_ _ = assert false + let length _ _ = assert false + let fold ?depth:_ _ _ ~order:_ ~init:_ ~f:_ = assert false end diff --git a/src/lib_protocol_environment/environment_V2.ml b/src/lib_protocol_environment/environment_V2.ml index e7df84b4ef..7e52a294c4 100644 --- a/src/lib_protocol_environment/environment_V2.ml +++ b/src/lib_protocol_environment/environment_V2.ml @@ -913,48 +913,7 @@ struct module Context = struct include Context - - type depth = [`Eq of int | `Le of int | `Lt of int | `Ge of int | `Gt of int] - - module type VIEW = sig - include Environment_context.VIEW - - val fold : - ?depth:depth -> - t -> - key -> - init:'a -> - f:(key -> tree -> 'a -> 'a Lwt.t) -> - 'a Lwt.t - end - - module Kind = struct - type t = [`Value | `Tree] - end - - module type TREE = sig - type t - - type tree - - include VIEW with type t := tree and type tree := tree - - val empty : t -> tree - - val is_empty : tree -> bool - - val kind : tree -> Kind.t - - val to_value : tree -> value option Lwt.t - - val of_value : t -> value -> tree Lwt.t - - val hash : tree -> Context_hash.t - - val equal : tree -> tree -> bool - - val clear : ?depth:int -> tree -> unit - end + include Environment_context.V2 let fold ?depth ctxt k ~init ~f = Context.fold ?depth ctxt k ~order:`Sorted ~init ~f diff --git a/src/lib_protocol_environment/environment_V3.ml b/src/lib_protocol_environment/environment_V3.ml index 90a4dd5605..c76e16e5ed 100644 --- a/src/lib_protocol_environment/environment_V3.ml +++ b/src/lib_protocol_environment/environment_V3.ml @@ -1039,48 +1039,7 @@ struct module Context = struct include Context - - type depth = [`Eq of int | `Le of int | `Lt of int | `Ge of int | `Gt of int] - - module type VIEW = sig - include Environment_context.VIEW - - val fold : - ?depth:depth -> - t -> - key -> - init:'a -> - f:(key -> tree -> 'a -> 'a Lwt.t) -> - 'a Lwt.t - end - - module Kind = struct - type t = [`Value | `Tree] - end - - module type TREE = sig - type t - - type tree - - include VIEW with type t := tree and type tree := tree - - val empty : t -> tree - - val is_empty : tree -> bool - - val kind : tree -> Kind.t - - val to_value : tree -> value option Lwt.t - - val of_value : t -> value -> tree Lwt.t - - val hash : tree -> Context_hash.t - - val equal : tree -> tree -> bool - - val clear : ?depth:int -> tree -> unit - end + include Environment_context.V3 let fold ?depth ctxt k ~init ~f = Context.fold ?depth ctxt k ~order:`Sorted ~init ~f diff --git a/src/lib_protocol_environment/environment_V4.ml b/src/lib_protocol_environment/environment_V4.ml index c08c5828ae..3ccf3661db 100644 --- a/src/lib_protocol_environment/environment_V4.ml +++ b/src/lib_protocol_environment/environment_V4.ml @@ -1071,18 +1071,7 @@ struct module Context = struct include Context - - type depth = [`Eq of int | `Le of int | `Lt of int | `Ge of int | `Gt of int] - - module type VIEW = Environment_context.VIEW - - module Kind = struct - type t = [`Value | `Tree] - end - - module type TREE = Environment_context.TREE - - module type CACHE = Environment_context.CACHE + include Environment_context.V4 let register_resolver = Base58.register_resolver diff --git a/src/lib_protocol_environment/environment_context.ml b/src/lib_protocol_environment/environment_context.ml index c4e941b4c5..cc265a313a 100644 --- a/src/lib_protocol_environment/environment_context.ml +++ b/src/lib_protocol_environment/environment_context.ml @@ -23,6 +23,7 @@ (* *) (*****************************************************************************) +include Environment_context_intf open Error_monad let err_implementation_mismatch ~expected ~got = @@ -32,14 +33,6 @@ let err_implementation_mismatch ~expected ~got = expected got -module type CONTEXT = Environment_context_intf.S - -module type VIEW = Environment_context_intf.VIEW - -module type TREE = Environment_context_intf.TREE - -module type CACHE = Environment_context_intf.CACHE - module Equality_witness : sig type (_, _) eq = Refl : ('a, 'a) eq @@ -85,8 +78,7 @@ module Context = struct type value = Bytes.t - type ('ctxt, 'tree) ops = - (module CONTEXT with type t = 'ctxt and type tree = 'tree) + type ('ctxt, 'tree) ops = (module S with type t = 'ctxt and type tree = 'tree) type _ kind = .. @@ -173,6 +165,8 @@ module Context = struct [] (List.rev ls) + let length (Context {ops = (module Ops); ctxt; _}) key = Ops.length ctxt key + let fold ?depth (Context {ops = (module Ops) as ops; ctxt; equality_witness; impl_name; _}) key @@ -244,6 +238,9 @@ module Context = struct [] (List.rev ls) + let length (Tree {ops = (module Ops); tree; _}) key = + Ops.Tree.length tree key + let fold ?depth (Tree {ops = (module Ops) as ops; tree = t; equality_witness; impl_name}) @@ -598,13 +595,13 @@ module Context = struct Ops.set_hash_version ctxt v >|=? fun ctxt -> Context {c with ctxt} end -module Register (C : CONTEXT) = struct +module Register (C : S) = struct type _ Context.kind += Context : C.t Context.kind let equality_witness : (C.t, C.tree) Context.equality_witness = Context.equality_witness () - let ops = (module C : CONTEXT with type t = 'ctxt and type tree = 'tree) + let ops = (module C : S with type t = 'ctxt and type tree = 'tree) end type validation_result = { diff --git a/src/lib_protocol_environment/environment_context.mli b/src/lib_protocol_environment/environment_context.mli index e7314d33de..656e797c86 100644 --- a/src/lib_protocol_environment/environment_context.mli +++ b/src/lib_protocol_environment/environment_context.mli @@ -23,25 +23,7 @@ (* *) (*****************************************************************************) -module type CONTEXT = sig - (** @inline *) - include Environment_context_intf.S -end - -module type VIEW = sig - (** @inline *) - include Environment_context_intf.VIEW -end - -module type TREE = sig - (** @inline *) - include Environment_context_intf.TREE -end - -module type CACHE = sig - (** @inline *) - include Environment_context_intf.CACHE -end +include Environment_context_intf.Sigs module Equality_witness : sig type (_, _) eq = Refl : ('a, 'a) eq @@ -56,8 +38,7 @@ module Equality_witness : sig end module Context : sig - type ('ctxt, 'tree) ops = - (module CONTEXT with type t = 'ctxt and type tree = 'tree) + type ('ctxt, 'tree) ops = (module S with type t = 'ctxt and type tree = 'tree) type _ kind = private .. @@ -87,7 +68,7 @@ module Context : sig } -> t - include CONTEXT with type t := t + include S with type t := t (** [make kind impl_name ctxt ops equality_witness] builds a context value. In this context, the cache is uninitialized: one must call @@ -225,7 +206,7 @@ module Context : sig Block_hash.t -> t -> source_of_cache -> builder -> t tzresult Lwt.t end -module Register (C : CONTEXT) : sig +module Register (C : S) : sig type _ Context.kind += Context : C.t Context.kind val equality_witness : (C.t, C.tree) Context.equality_witness diff --git a/src/lib_protocol_environment/environment_context_intf.ml b/src/lib_protocol_environment/environment_context_intf.ml index b9278ef301..245cd1deb5 100644 --- a/src/lib_protocol_environment/environment_context_intf.ml +++ b/src/lib_protocol_environment/environment_context_intf.ml @@ -25,6 +25,208 @@ (* *) (*****************************************************************************) +module Kind = struct + type t = [`Value | `Tree] +end + +module type CORE = sig + type t + + val set_protocol : t -> Protocol_hash.t -> t Lwt.t + + val get_protocol : t -> Protocol_hash.t Lwt.t + + val fork_test_chain : + t -> protocol:Protocol_hash.t -> expiration:Time.Protocol.t -> t Lwt.t + + val set_hash_version : t -> Context_hash.Version.t -> t tzresult Lwt.t + + val get_hash_version : t -> Context_hash.Version.t +end + +module type TREE_CORE = sig + type t + + type tree + + type value + + val empty : t -> tree + + val is_empty : tree -> bool + + val kind : tree -> Kind.t + + val to_value : tree -> value option Lwt.t + + val of_value : t -> value -> tree Lwt.t + + val hash : tree -> Context_hash.t + + val equal : tree -> tree -> bool + + val clear : ?depth:int -> tree -> unit +end + +module V2 = struct + type depth = [`Eq of int | `Le of int | `Lt of int | `Ge of int | `Gt of int] + + module type VIEW = sig + type t + + type key + + type value + + type tree + + val mem : t -> key -> bool Lwt.t + + val mem_tree : t -> key -> bool Lwt.t + + val find : t -> key -> value option Lwt.t + + val find_tree : t -> key -> tree option Lwt.t + + val list : + t -> ?offset:int -> ?length:int -> key -> (string * tree) trace Lwt.t + + val add : t -> key -> value -> t Lwt.t + + val add_tree : t -> key -> tree -> t Lwt.t + + val remove : t -> key -> t Lwt.t + + val fold : + ?depth:depth -> + t -> + key -> + init:'a -> + f:(key -> tree -> 'a -> 'a Lwt.t) -> + 'a Lwt.t + end + + module Kind = Kind + + module type TREE = sig + type t + + type tree + + include VIEW with type t := tree and type tree := tree + + include + TREE_CORE with type t := t and type tree := tree and type value := value + end + + module type S = sig + include VIEW with type key = string list and type value = bytes + + module Tree : sig + include + TREE + with type t := t + and type key := key + and type value := value + and type tree := tree + + val pp : Format.formatter -> tree -> unit + end + + include CORE with type t := t + end +end + +module V3 = V2 + +module V4 = struct + type depth = V3.depth + + module type VIEW = sig + include V3.VIEW + + val fold : + ?depth:depth -> + t -> + key -> + order:[`Sorted | `Undefined] -> + init:'a -> + f:(key -> tree -> 'a -> 'a Lwt.t) -> + 'a Lwt.t + end + + module Kind = Kind + + module type TREE = sig + type t + + type tree + + include VIEW with type t := tree and type tree := tree + + include + TREE_CORE with type t := t and type tree := tree and type value := value + end + + module type S = sig + include VIEW with type key = string list and type value = bytes + + module Tree : sig + include + TREE + with type t := t + and type key := key + and type value := value + and type tree := tree + + val pp : Format.formatter -> tree -> unit + end + + include CORE with type t := t + end + + (* Copy of sigs/v3/context.mli:CACHE *) + module type CACHE = sig + type t + + type size + + type index + + type identifier + + type key + + type value = .. + + val key_of_identifier : cache_index:index -> identifier -> key + + val identifier_of_key : key -> identifier + + val pp : Format.formatter -> t -> unit + + val find : t -> key -> value option Lwt.t + + val set_cache_layout : t -> size list -> t Lwt.t + + val update : t -> key -> (value * size) option -> t + + val sync : t -> cache_nonce:Bytes.t -> t Lwt.t + + val clear : t -> t + + val list_keys : t -> cache_index:index -> (key * size) list option + + val key_rank : t -> key -> int option + + val future_cache_expectation : t -> time_in_blocks:int -> t + + val cache_size : t -> cache_index:index -> size option + + val cache_size_limit : t -> cache_index:index -> size option + end +end + module type VIEW = sig (** @inline *) include Tezos_context_sigs.Context.VIEW @@ -54,55 +256,23 @@ module type S = sig val pp : Format.formatter -> tree -> unit end - val set_protocol : t -> Protocol_hash.t -> t Lwt.t - - val get_protocol : t -> Protocol_hash.t Lwt.t - - val fork_test_chain : - t -> protocol:Protocol_hash.t -> expiration:Time.Protocol.t -> t Lwt.t - - val set_hash_version : t -> Context_hash.Version.t -> t tzresult Lwt.t - - val get_hash_version : t -> Context_hash.Version.t + include CORE with type t := t end -(* Copy of sigs/v3/context.mli:CACHE *) -module type CACHE = sig - type t - - type size - - type index - - type identifier - - type key - - type value = .. - - val key_of_identifier : cache_index:index -> identifier -> key - - val identifier_of_key : key -> identifier - - val pp : Format.formatter -> t -> unit - - val find : t -> key -> value option Lwt.t - - val set_cache_layout : t -> size list -> t Lwt.t - - val update : t -> key -> (value * size) option -> t - - val sync : t -> cache_nonce:Bytes.t -> t Lwt.t +module type CACHE = V4.CACHE - val clear : t -> t +module type Sigs = sig + module V2 = V2 + module V3 = V3 + module V4 = V4 - val list_keys : t -> cache_index:index -> (key * size) list option + module type VIEW = VIEW - val key_rank : t -> key -> int option + module type TREE = TREE - val future_cache_expectation : t -> time_in_blocks:int -> t + module type S = S - val cache_size : t -> cache_index:index -> size option + module type HASH_VERSION = HASH_VERSION - val cache_size_limit : t -> cache_index:index -> size option + module type CACHE = CACHE end diff --git a/src/lib_protocol_environment/memory_context.mli b/src/lib_protocol_environment/memory_context.mli index 1afe63cc46..2d59afe26a 100644 --- a/src/lib_protocol_environment/memory_context.mli +++ b/src/lib_protocol_environment/memory_context.mli @@ -33,7 +33,7 @@ val empty : Context.t val encoding : Context.t Data_encoding.t -module M : CONTEXT with type t = t +module M : S with type t = t val wrap_memory_context : t -> Context.t diff --git a/src/lib_protocol_environment/proxy_context.ml b/src/lib_protocol_environment/proxy_context.ml index 5aa3c1bce8..19721eab56 100644 --- a/src/lib_protocol_environment/proxy_context.ml +++ b/src/lib_protocol_environment/proxy_context.ml @@ -182,6 +182,8 @@ module C = struct let list t ?offset ?length k = data_tree t >>= fun tree -> raw_list tree ?offset ?length k + let length t k = data_tree t >>= fun t -> Local.Tree.length t.tree k + let fold ?depth (t : t) root ~order ~init ~f = find_tree t root >>= function | None -> Lwt.return init @@ -241,6 +243,8 @@ module C = struct Local.Tree.remove t.tree k >|= fun tree -> if tree == t.tree then t else {t with tree} + let length t k = Local.Tree.length t.tree k + let fold ?depth (t : tree) k ~order ~init ~f = Local.Tree.fold ?depth t.tree k ~order ~init ~f:(fun k tree acc -> let tree = {proxy = t.proxy; path = t.path @ k; tree} in From 058d7d8b166c6dfcb23e2c2aef6136641e612038 Mon Sep 17 00:00:00 2001 From: icristescu Date: Tue, 11 Jan 2022 10:45:23 +0100 Subject: [PATCH 0074/1220] CI,scripts: update opam repo pointer --- .gitlab/ci/templates.yml | 2 +- scripts/version.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index e147bb40df..0aa1c1c3e3 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -1,6 +1,6 @@ variables: ## This value MUST be the same as `opam_repository_tag` in `scripts/version.sh` - build_deps_image_version: 736a35328609e04e1c9e320485f3a47b5fa3251c + build_deps_image_version: b53a5e8c3fa7764d5ae6567d7a817315507c9f0d build_deps_image_name: registry.gitlab.com/tezos/opam-repository GIT_STRATEGY: fetch GIT_DEPTH: "1" diff --git a/scripts/version.sh b/scripts/version.sh index 05181a7518..e2333947b2 100755 --- a/scripts/version.sh +++ b/scripts/version.sh @@ -20,12 +20,12 @@ export recommended_node_version=14.12.0 ## full_opam_repository is a commit hash of the public OPAM repository, i.e. ## https://github.com/ocaml/opam-repository -export full_opam_repository_tag=87bf0c8a02e89350c38353a95c84b0863f710e49 +export full_opam_repository_tag=1c55af16c8ffc84a4dfc35b256be9818f7dbe21a ## opam_repository is an additional, tezos-specific opam repository. ## This value MUST be the same as `build_deps_image_version` in `.gitlab/ci/templates.yml export opam_repository_url=https://gitlab.com/tezos/opam-repository -export opam_repository_tag=736a35328609e04e1c9e320485f3a47b5fa3251c +export opam_repository_tag=b53a5e8c3fa7764d5ae6567d7a817315507c9f0d export opam_repository_git=$opam_repository_url.git export opam_repository=$opam_repository_git\#$opam_repository_tag From 5db9c87460cabec0606d01fa8192f16b695b782e Mon Sep 17 00:00:00 2001 From: icristescu Date: Tue, 11 Jan 2022 11:31:30 +0100 Subject: [PATCH 0075/1220] lib_crypto: update to ringo.0.7 --- manifest/main.ml | 4 ++-- src/lib_crypto/signature.ml | 2 ++ src/lib_crypto/tezos-crypto.opam | 2 +- src/lib_p2p/tezos-p2p.opam | 2 +- src/lib_proxy/tezos-proxy.opam | 2 +- src/lib_store/tezos-store.opam | 2 +- src/lib_workers/tezos-workers.opam | 2 +- 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index 6ebf5a93c6..d3fb821a0a 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -197,9 +197,9 @@ let resto_cohttp_server = external_lib "resto-cohttp-server" resto_version let resto_directory = external_lib "resto-directory" resto_version -let ringo = external_lib "ringo" [Exactly "0.5"] +let ringo = external_lib "ringo" [Exactly "0.7"] -let ringo_lwt = external_lib "ringo-lwt" [Exactly "0.5"] +let ringo_lwt = external_lib "ringo-lwt" [Exactly "0.7"] let secp256k1_internal = external_lib "secp256k1-internal" [] diff --git a/src/lib_crypto/signature.ml b/src/lib_crypto/signature.ml index df61310038..4dc73c00f8 100644 --- a/src/lib_crypto/signature.ml +++ b/src/lib_crypto/signature.ml @@ -693,6 +693,8 @@ let make_endorsement_cache = let clear _ = () + let filter _ _ = () + module H = H end in (module Fake_ring : Ringo.MAP_MAKER) diff --git a/src/lib_crypto/tezos-crypto.opam b/src/lib_crypto/tezos-crypto.opam index 7882016651..91704ec6ce 100644 --- a/src/lib_crypto/tezos-crypto.opam +++ b/src/lib_crypto/tezos-crypto.opam @@ -17,7 +17,7 @@ depends: [ "tezos-error-monad" "tezos-rpc" "tezos-stdlib" - "ringo" { = "0.5" } + "ringo" { = "0.7" } "zarith" { >= "1.12" & < "1.13" } "zarith_stubs_js" "tezos-hacl-glue-unix" {with-test} diff --git a/src/lib_p2p/tezos-p2p.opam b/src/lib_p2p/tezos-p2p.opam index 1da471e5b4..ac72849e53 100644 --- a/src/lib_p2p/tezos-p2p.opam +++ b/src/lib_p2p/tezos-p2p.opam @@ -11,7 +11,7 @@ depends: [ "dune" { >= "2.9" } "lwt-watcher" { = "0.1" } "lwt-canceler" { >= "0.3" & < "0.4" } - "ringo" { = "0.5" } + "ringo" { = "0.7" } "tezos-base" "tezos-stdlib" "tezos-stdlib-unix" diff --git a/src/lib_proxy/tezos-proxy.opam b/src/lib_proxy/tezos-proxy.opam index dbfac0c737..179fde1e76 100644 --- a/src/lib_proxy/tezos-proxy.opam +++ b/src/lib_proxy/tezos-proxy.opam @@ -9,7 +9,7 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "MIT" depends: [ "dune" { >= "2.9" } - "ringo-lwt" { = "0.5" } + "ringo-lwt" { = "0.7" } "tezos-base" "tezos-clic" "tezos-client-base" diff --git a/src/lib_store/tezos-store.opam b/src/lib_store/tezos-store.opam index aadc627a39..473e1e7d87 100644 --- a/src/lib_store/tezos-store.opam +++ b/src/lib_store/tezos-store.opam @@ -18,7 +18,7 @@ depends: [ "tezos-validation" "tezos-protocol-updater" "lwt-watcher" { = "0.1" } - "ringo-lwt" { = "0.5" } + "ringo-lwt" { = "0.7" } "camlzip" { = "1.10" } "tar" "tar-unix" { = "1.1.0" } diff --git a/src/lib_workers/tezos-workers.opam b/src/lib_workers/tezos-workers.opam index 61d9bb31f5..579f1462e4 100644 --- a/src/lib_workers/tezos-workers.opam +++ b/src/lib_workers/tezos-workers.opam @@ -11,7 +11,7 @@ depends: [ "dune" { >= "2.9" } "tezos-base" "tezos-stdlib-unix" - "ringo" { = "0.5" } + "ringo" { = "0.7" } ] build: [ ["dune" "build" "-p" name "-j" jobs] From ae606c343b2a1128ad2b8159da629c9780b6b1c9 Mon Sep 17 00:00:00 2001 From: Victor Allombert Date: Thu, 13 Jan 2022 09:36:19 +0000 Subject: [PATCH 0076/1220] lib_context: irmin version constraint --- manifest/main.ml | 5 +++-- src/lib_context/tezos-context.opam | 4 ++-- src/lib_store/tezos-store.opam | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index d3fb821a0a..d2bfcae667 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -106,9 +106,10 @@ let ipaddr = external_lib "ipaddr" [At_least "5.0.0"; Less_than "6.0.0"] let ipaddr_unix = external_sublib ipaddr "ipaddr.unix" -let irmin = external_lib "irmin" [At_least "2.8.0"] +let irmin = external_lib "irmin" [At_least "2.10.0"; Less_than "2.11.0"] -let irmin_pack = external_lib "irmin-pack" [At_least "2.8.0"] +let irmin_pack = + external_lib "irmin-pack" [At_least "2.10.0"; Less_than "2.11.0"] let irmin_pack_mem = external_sublib irmin_pack "irmin-pack.mem" diff --git a/src/lib_context/tezos-context.opam b/src/lib_context/tezos-context.opam index 99df4badce..294cd98fb5 100644 --- a/src/lib_context/tezos-context.opam +++ b/src/lib_context/tezos-context.opam @@ -10,8 +10,8 @@ license: "MIT" depends: [ "dune" { >= "2.9" } "tezos-base" - "irmin" { >= "2.8.0" } - "irmin-pack" { >= "2.8.0" } + "irmin" { >= "2.10.0" & < "2.11.0" } + "irmin-pack" { >= "2.10.0" & < "2.11.0" } "bigstringaf" { >= "0.2.0" } "tezos-shell-services" "fmt" diff --git a/src/lib_store/tezos-store.opam b/src/lib_store/tezos-store.opam index 473e1e7d87..dabd4ae776 100644 --- a/src/lib_store/tezos-store.opam +++ b/src/lib_store/tezos-store.opam @@ -12,7 +12,7 @@ depends: [ "tezos-base" "tezos-shell-services" "index" { >= "1.3.0" } - "irmin-pack" { >= "2.8.0" } + "irmin-pack" { >= "2.10.0" & < "2.11.0" } "tezos-stdlib-unix" "tezos-context" "tezos-validation" From a29700d3685b833796b49d45eb929b8a8bd2c7da Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 13 Jan 2022 13:47:23 +0100 Subject: [PATCH 0077/1220] Tests/pytest: Up the timeouts in test_voting_full.py --- tests_python/tests_012/test_voting_full.py | 2 +- tests_python/tests_alpha/test_voting_full.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests_python/tests_012/test_voting_full.py b/tests_python/tests_012/test_voting_full.py index 00d07d84b9..ce511119da 100644 --- a/tests_python/tests_012/test_voting_full.py +++ b/tests_python/tests_012/test_voting_full.py @@ -175,7 +175,7 @@ def test_wait_for_adoption(self, sandbox: Sandbox): wait_until_level(clients, client.get_level()) assert_all_clients_in_period(clients, 'adoption') - @pytest.mark.timeout(60) + @pytest.mark.timeout(600) def test_all_nodes_run_proto_b(self, sandbox: Sandbox): # we let a PROTO_A baker bake the last blocks of PROTO_A # sandbox.add_baker( diff --git a/tests_python/tests_alpha/test_voting_full.py b/tests_python/tests_alpha/test_voting_full.py index 00d07d84b9..ce511119da 100644 --- a/tests_python/tests_alpha/test_voting_full.py +++ b/tests_python/tests_alpha/test_voting_full.py @@ -175,7 +175,7 @@ def test_wait_for_adoption(self, sandbox: Sandbox): wait_until_level(clients, client.get_level()) assert_all_clients_in_period(clients, 'adoption') - @pytest.mark.timeout(60) + @pytest.mark.timeout(600) def test_all_nodes_run_proto_b(self, sandbox: Sandbox): # we let a PROTO_A baker bake the last blocks of PROTO_A # sandbox.add_baker( From 6a06316a10ad8fa67068b77d4e02ebaa4d9f4080 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 7 Jan 2022 17:57:27 +0100 Subject: [PATCH 0078/1220] Shell/Plugin: Replacement classification provided by plugin --- src/lib_shell/prevalidator.ml | 66 +++++----------- src/lib_shell/prevalidator_classification.ml | 8 +- src/lib_shell/prevalidator_classification.mli | 16 ++-- src/lib_shell/prevalidator_filters.ml | 20 +++-- src/lib_shell/prevalidator_filters.mli | 27 ++++--- src/proto_alpha/lib_plugin/plugin.ml | 77 ++++++++++++++----- 6 files changed, 110 insertions(+), 104 deletions(-) diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index 42888e7b49..afa16cf9ae 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -75,7 +75,7 @@ classify an operation as [Refused], [Branch_refused], [Branch_delayed], [Outdated] or [Applied]. - - An operation is [Refused] if the protocol rejects this + - An operation is [Refused] if the protocol rejects this operation with an error classified as [Permanent]. - An operation is [Outdated] if the operation is too old to be @@ -224,36 +224,6 @@ let default_limits = (* Minimal delay between two mempool advertisements *) let advertisement_delay = 0.1 -type error += - | Manager_operation_replaced of { - old_hash : Operation_hash.t; - new_hash : Operation_hash.t; - } - -let () = - register_error_kind - `Permanent - ~id:"prevalidator.manager_operation_replaced" - ~title:"Manager operation replaced" - ~description:"The manager operation has been replaced" - ~pp:(fun ppf (old_hash, new_hash) -> - Format.fprintf - ppf - "The manager operation %a has been replaced with %a" - Operation_hash.pp - old_hash - Operation_hash.pp - new_hash) - (Data_encoding.obj2 - (Data_encoding.req "old_hash" Operation_hash.encoding) - (Data_encoding.req "new_hash" Operation_hash.encoding)) - (function - | Manager_operation_replaced {old_hash; new_hash} -> - Some (old_hash, new_hash) - | _ -> None) - (fun (old_hash, new_hash) -> - Manager_operation_replaced {old_hash; new_hash}) - module Name = struct type t = Chain_id.t * Protocol_hash.t @@ -646,21 +616,21 @@ module Make_s | `None -> `None (* This function retrieves an old/replaced operation and reclassifies it as - [`Outdated]. Note that we don't need to re-flush the mempool, as this - function is only called in precheck mode. + [replacement_classification]. Note that we don't need to re-flush the + mempool, as this function is only called in precheck mode. The operation is expected to be (a) parsable and (b) in the "prechecked" class. So, we softly handle the situations where the operation is unparsable or not found in any class in case this invariant is broken for some reason. *) - let reclassify_replaced_manager_op old_hash new_hash shell = + let reclassify_replaced_manager_op old_hash shell + (replacement_classification : [< Classification.error_classification]) = shell.advertisement <- remove_from_advertisement old_hash shell.advertisement ; match Classification.remove old_hash shell.classification with | Some (op, _class) -> - let err = Manager_operation_replaced {old_hash; new_hash} in - [(op, `Outdated [err])] + [(op, (replacement_classification :> Classification.classification))] | None -> (* This case should not happen. *) shell.parameters.tools.chain_tools.clear_or_cancel old_hash ; @@ -678,14 +648,10 @@ module Make_s op.hash op.protocol >|= function - | `Passed_precheck filter_state -> + | `Passed_precheck (filter_state, replacement) -> (* The [precheck] optimization triggers: no need to call the protocol [apply_operation]. *) - `Passed_precheck filter_state - | `Passed_precheck_with_replace (old_oph, filter_state) -> - (* Same as `Passed_precheck, but the operation whose hash is returned - should be reclassified to Outdated *) - `Passed_precheck_with_replace (old_oph, filter_state) + `Passed_precheck (filter_state, replacement) | (`Branch_delayed _ | `Branch_refused _ | `Refused _ | `Outdated _) as errs -> (* Note that we don't need to distinguish some failure cases @@ -730,12 +696,18 @@ module Make_s | `Fail errs -> (* Precheck rejected the operation *) Lwt.return_error errs - | `Passed_precheck filter_state -> + | `Passed_precheck (filter_state, replacement) -> (* Precheck succeeded *) - Lwt.return_ok ((filter_state, validation_state), [], `Prechecked) - | `Passed_precheck_with_replace (old_oph, filter_state) -> - (* Precheck succeeded, but an old operation is replaced *) - let to_handle = reclassify_replaced_manager_op old_oph op.hash shell in + let to_handle = + match replacement with + | `No_replace -> [] + | `Replace (old_oph, replacement_classification) -> + (* Precheck succeeded, but an old operation is replaced *) + reclassify_replaced_manager_op + old_oph + shell + replacement_classification + in Lwt.return_ok ((filter_state, validation_state), to_handle, `Prechecked) | `Undecided -> ( (* Precheck was not able to classify *) diff --git a/src/lib_shell/prevalidator_classification.ml b/src/lib_shell/prevalidator_classification.ml index 06234bdfc9..9838322003 100644 --- a/src/lib_shell/prevalidator_classification.ml +++ b/src/lib_shell/prevalidator_classification.ml @@ -37,14 +37,14 @@ module Event = struct ("blk_h", Block_hash.encoding) end -type classification = - [ `Applied - | `Prechecked - | `Branch_delayed of tztrace +type error_classification = + [ `Branch_delayed of tztrace | `Branch_refused of tztrace | `Refused of tztrace | `Outdated of tztrace ] +type classification = [`Applied | `Prechecked | error_classification] + (** This type wraps together: - a bounded ring of keys (size book-keeping) diff --git a/src/lib_shell/prevalidator_classification.mli b/src/lib_shell/prevalidator_classification.mli index 065976d8e4..a61135de4f 100644 --- a/src/lib_shell/prevalidator_classification.mli +++ b/src/lib_shell/prevalidator_classification.mli @@ -23,14 +23,16 @@ (* *) (*****************************************************************************) -type classification = - [ `Applied - | `Prechecked - | `Branch_delayed of tztrace +(** Classifications which correspond to errors *) +type error_classification = + [ `Branch_delayed of tztrace | `Branch_refused of tztrace | `Refused of tztrace | `Outdated of tztrace ] +(** Classification of an operation in the mempool *) +type classification = [`Applied | `Prechecked | error_classification] + type 'protocol_data bounded_map (** [map bounded_map] gets the underling map of the [bounded_map]. *) @@ -205,8 +207,8 @@ type 'block chain_tools = { This function guarantees that the branch of all returned operations is in [live_blocks] ([live_blocks] acts as a filter). - Operation which where included in [from_branch] and which are NOT in - [to_branch] need to be parsed again using the [parse] argument. If the + Operation which where included in [from_branch] and which are NOT in + [to_branch] need to be parsed again using the [parse] argument. If the parsing fails those operations are just dropped. This may happen if those operations comes from another protocol. @@ -269,7 +271,7 @@ module Internal_for_tests : sig of {!t}. *) val flush : 'protocol_data t -> handle_branch_refused:bool -> unit - (** [handle_live_operations chain_db from_branch to_branch is_branch_alive parse + (** [handle_live_operations chain_db from_branch to_branch is_branch_alive parse old_mempool] returns the operations from: 1. [old_mempool], diff --git a/src/lib_shell/prevalidator_filters.ml b/src/lib_shell/prevalidator_filters.ml index e4725df5d0..810d407427 100644 --- a/src/lib_shell/prevalidator_filters.ml +++ b/src/lib_shell/prevalidator_filters.ml @@ -58,13 +58,14 @@ module type FILTER = sig validation_state:Proto.validation_state -> Operation_hash.t -> Proto.operation -> - [ `Passed_precheck of state - | `Passed_precheck_with_replace of Operation_hash.t * state - | `Branch_delayed of tztrace - | `Branch_refused of tztrace - | `Refused of tztrace - | `Outdated of tztrace - | `Undecided ] + [ `Passed_precheck of + state + * [ `No_replace + | `Replace of + Operation_hash.t * Prevalidator_classification.error_classification + ] + | `Undecided + | Prevalidator_classification.error_classification ] Lwt.t val pre_filter : @@ -73,10 +74,7 @@ module type FILTER = sig ?validation_state_before:Proto.validation_state -> Proto.operation -> [ `Passed_prefilter of [`High | `Low] - | `Branch_delayed of tztrace - | `Branch_refused of tztrace - | `Refused of tztrace - | `Outdated of tztrace ] + | Prevalidator_classification.error_classification ] Lwt.t val post_filter : diff --git a/src/lib_shell/prevalidator_filters.mli b/src/lib_shell/prevalidator_filters.mli index ff620df4ce..e6148f6b74 100644 --- a/src/lib_shell/prevalidator_filters.mli +++ b/src/lib_shell/prevalidator_filters.mli @@ -67,11 +67,12 @@ module type FILTER = sig [Proto.precheck_manager] and [Proto.check_signature]. This function hereby has a similar return type. - Returns [`Passed_precheck] if the operation was successfully + Returns [`Passed_precheck `No_replace] if the operation was successfully prechecked. In case the operation is successfully prechecked but replaces an already prechecked operation [old_oph], the - result [`Passed_precheck_with_replace old_oph] is returned. - If the function returns [`Undecided] it means that + result [`Passed_precheck (`Replace (old_oph, clasification))] is + returned, where [classification] is the new classifiation of the + replaced operation. If the function returns [`Undecided] it means that [apply_operation] should be called. This function takes a [state] as parameter and returns it updated if the @@ -82,13 +83,14 @@ module type FILTER = sig validation_state:Proto.validation_state -> Operation_hash.t -> Proto.operation -> - [ `Passed_precheck of state - | `Passed_precheck_with_replace of Operation_hash.t * state - | `Branch_delayed of tztrace - | `Branch_refused of tztrace - | `Refused of tztrace - | `Outdated of tztrace - | `Undecided ] + [ `Passed_precheck of + state + * [ `No_replace + | `Replace of + Operation_hash.t * Prevalidator_classification.error_classification + ] + | `Undecided + | Prevalidator_classification.error_classification ] Lwt.t (** [pre_filter config ~filter_state ?validation_state_before operation_data] @@ -108,10 +110,7 @@ module type FILTER = sig ?validation_state_before:Proto.validation_state -> Proto.operation -> [ `Passed_prefilter of [`High | `Low] - | `Branch_delayed of tztrace - | `Branch_refused of tztrace - | `Refused of tztrace - | `Outdated of tztrace ] + | Prevalidator_classification.error_classification ] Lwt.t (** [post_filter config ~filter_state ~validation_state_before diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index a7d82e4115..a0741a8f39 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -68,6 +68,12 @@ let () = (fun () -> Cannot_retrieve_predecessor_level) module Mempool = struct + type error_classification = + [ `Branch_delayed of tztrace + | `Branch_refused of tztrace + | `Refused of tztrace + | `Outdated of tztrace ] + type nanotez = Q.t let nanotez_enc : nanotez Data_encoding.t = @@ -323,7 +329,7 @@ module Mempool = struct let () = Environment.Error_monad.register_error_kind `Temporary - ~id:"plugin_filter.manager_restriction" + ~id:"prefilter.manager_restriction" ~title:"Only one manager operation per manager per block allowed" ~description:"Only one manager operation per manager per block allowed" ~pp:(fun ppf (oph, fee) -> @@ -343,6 +349,35 @@ module Mempool = struct (function Manager_restriction {oph; fee} -> Some (oph, fee) | _ -> None) (fun (oph, fee) -> Manager_restriction {oph; fee}) + type Environment.Error_monad.error += + | Manager_operation_replaced of { + old_hash : Operation_hash.t; + new_hash : Operation_hash.t; + } + + let () = + Environment.Error_monad.register_error_kind + `Permanent + ~id:"plugin.manager_operation_replaced" + ~title:"Manager operation replaced" + ~description:"The manager operation has been replaced" + ~pp:(fun ppf (old_hash, new_hash) -> + Format.fprintf + ppf + "The manager operation %a has been replaced with %a" + Operation_hash.pp + old_hash + Operation_hash.pp + new_hash) + (Data_encoding.obj2 + (Data_encoding.req "old_hash" Operation_hash.encoding) + (Data_encoding.req "new_hash" Operation_hash.encoding)) + (function + | Manager_operation_replaced {old_hash; new_hash} -> + Some (old_hash, new_hash) + | _ -> None) + (fun (old_hash, new_hash) -> + Manager_operation_replaced {old_hash; new_hash}) (* TODO: https://gitlab.com/tezos/tezos/-/issues/2238 Write unit tests for the feature 'replace-by-fee' and for other changes introduced by other MRs in the plugin. *) @@ -728,12 +763,9 @@ module Mempool = struct fee:Tez.t -> gas_limit:manager_gas_witness Gas.Arith.t -> public_key_hash -> - [> `Prechecked_manager - | `Prechecked_manager_with_replace of Operation_hash.t - | `Branch_delayed of tztrace - | `Branch_refused of tztrace - | `Refused of tztrace - | `Outdated of tztrace ] + [> `Prechecked_manager of + [`No_replace | `Replace of Operation_hash.t * error_classification] + | error_classification ] Lwt.t = fun config filter_state @@ -764,10 +796,16 @@ module Mempool = struct with | `Fail err -> Lwt.return err | `Fresh -> - precheck_manager_and_check_signature ~on_success:`Prechecked_manager + precheck_manager_and_check_signature + ~on_success:(`Prechecked_manager `No_replace) | `Replace old_oph -> + let err = + Environment.wrap_tzerror + @@ Manager_operation_replaced {old_hash = old_oph; new_hash = oph} + in precheck_manager_and_check_signature - ~on_success:(`Prechecked_manager_with_replace old_oph) + ~on_success: + (`Prechecked_manager (`Replace (old_oph, `Outdated [err]))) let add_manager_restriction filter_state oph info source = { @@ -789,12 +827,10 @@ module Mempool = struct validation_state:validation_state -> Operation_hash.t -> Main.operation -> - [ `Passed_precheck of state - | `Passed_precheck_with_replace of Operation_hash.t * state - | `Branch_delayed of tztrace - | `Branch_refused of tztrace - | `Refused of tztrace - | `Outdated of tztrace + [ `Passed_precheck of + state + * [`No_replace | `Replace of Operation_hash.t * error_classification] + | error_classification | `Undecided ] Lwt.t = fun config @@ -817,12 +853,11 @@ module Mempool = struct ~fee ~gas_limit >|= function - | `Prechecked_manager -> - `Passed_precheck - (add_manager_restriction filter_state oph info source) - | `Prechecked_manager_with_replace old_oph -> - `Passed_precheck_with_replace - (old_oph, add_manager_restriction filter_state oph info source) + | `Prechecked_manager replacement -> + let filter_state = + add_manager_restriction config filter_state oph info source + in + `Passed_precheck (filter_state, replacement) | (`Refused _ | `Branch_delayed _ | `Branch_refused _ | `Outdated _) as errs -> errs) From a59ecef69ba2405050a2662bd7b974b1e9b74abf Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 7 Jan 2022 18:00:43 +0100 Subject: [PATCH 0079/1220] Shell: Priority medium and low with weight Pending operations are sorted by decreasing weight. --- src/lib_shell/prevalidator.ml | 12 ++++++------ src/lib_shell/prevalidator_filters.ml | 4 ++-- src/lib_shell/prevalidator_filters.mli | 6 +++--- .../prevalidator_pending_operations.ml | 19 ++++++++++++++----- .../prevalidator_pending_operations.mli | 4 ++-- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index afa16cf9ae..6306708da3 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -577,8 +577,8 @@ module Make_s Lwt_watcher.notify operation_stream (classification, op) let pre_filter shell ~filter_config ~filter_state ~validation_state ~notifier - (parsed_op : protocol_operation operation) : [`High | `Low | `Drop] Lwt.t - = + (parsed_op : protocol_operation operation) : + [Pending_ops.priority | `Drop] Lwt.t = let validation_state_before = Option.map Prevalidation_t.validation_state @@ -594,7 +594,7 @@ module Make_s -> handle_classification ~notifier shell (parsed_op, errs) ; `Drop - | `Passed_prefilter priority -> (priority :> [`High | `Low | `Drop]) + | `Passed_prefilter priority -> (priority :> [Pending_ops.priority | `Drop]) let post_filter ~filter_config ~filter_state ~validation_state_before ~validation_state_after op receipt = @@ -930,7 +930,7 @@ module Make_s parsed_op >>= function | `Drop -> return_unit - | (`High | `Low) as prio -> + | (`High | `Medium | `Low _) as prio -> if not (Block_hash.Set.mem @@ -948,7 +948,7 @@ module Make_s let on_inject (pv : types_state) ~force op = let oph = Operation.hash op in - (* Currently, an injection is always done with priority = `High, because: + (* Currently, an injection is always done with the highest priority, because: - We want to process and propagate the injected operations fast, - We don't want to call prefilter to get the priority. But, this may change in the future @@ -1108,7 +1108,7 @@ module Make_s op >|= function | `Drop -> (pending, nb_pending) - | (`High | `Low) as prio -> + | (`High | `Medium | `Low _) as prio -> (* Here, an operation injected in this node with `High priority will now get its approriate priority. *) (Pending_ops.add op prio pending, nb_pending + 1)) diff --git a/src/lib_shell/prevalidator_filters.ml b/src/lib_shell/prevalidator_filters.ml index 810d407427..71bbefee3d 100644 --- a/src/lib_shell/prevalidator_filters.ml +++ b/src/lib_shell/prevalidator_filters.ml @@ -73,7 +73,7 @@ module type FILTER = sig filter_state:state -> ?validation_state_before:Proto.validation_state -> Proto.operation -> - [ `Passed_prefilter of [`High | `Low] + [ `Passed_prefilter of Prevalidator_pending_operations.priority | Prevalidator_classification.error_classification ] Lwt.t @@ -113,7 +113,7 @@ module No_filter (Proto : Registered_protocol.T) = struct Lwt.return `Undecided let pre_filter _ ~filter_state:_ ?validation_state_before:_ _ = - Lwt.return @@ `Passed_prefilter `Low + Lwt.return @@ `Passed_prefilter (`Low []) let post_filter _ ~filter_state ~validation_state_before:_ ~validation_state_after:_ _ = diff --git a/src/lib_shell/prevalidator_filters.mli b/src/lib_shell/prevalidator_filters.mli index e6148f6b74..7cfde1437a 100644 --- a/src/lib_shell/prevalidator_filters.mli +++ b/src/lib_shell/prevalidator_filters.mli @@ -97,8 +97,8 @@ module type FILTER = sig is called on arrival of an operation and after a flush of the prevalidator. This function calls the [pre_filter] in the protocol plugin and returns [`Passed_prefilter priority] if no error occurs during - checking of the [operation_data], where priority is either `High or `Low - depending on the operation. More tests are done using the + checking of the [operation_data], where priority is the priority computed by + the protocol filter plug-in. More tests are done using the [filter_state]. We classify an operation that passes the prefilter as [`Passed_prefilter] since we do not know yet if the operation is applicable or not. If an error occurs during the checks, this function @@ -109,7 +109,7 @@ module type FILTER = sig filter_state:state -> ?validation_state_before:Proto.validation_state -> Proto.operation -> - [ `Passed_prefilter of [`High | `Low] + [ `Passed_prefilter of Prevalidator_pending_operations.priority | Prevalidator_classification.error_classification ] Lwt.t diff --git a/src/lib_shell/prevalidator_pending_operations.ml b/src/lib_shell/prevalidator_pending_operations.ml index 14c7516687..e9bbcec4a3 100644 --- a/src/lib_shell/prevalidator_pending_operations.ml +++ b/src/lib_shell/prevalidator_pending_operations.ml @@ -25,19 +25,28 @@ (*****************************************************************************) (* Ordering is important, as it is used below in map keys comparison *) -type priority = [`High | `Low] +type priority = [`High | `Medium | `Low of Q.t list] module Priority_map : Map.S with type key = priority = Map.Make (struct type t = priority + module CompareListQ = Compare.List (Q) + + let compare_low_prio p1 p2 = + (* A higher priority operation should appear before in the map. So we use + the pointwise comparison of p2 and p1 *) + CompareListQ.compare p2 p1 + let compare p1 p2 = (* - Explicit comparison, `High is smaller, - Avoid fragile patterns in case the type is extended in the future *) match (p1, p2) with - | (`High, `High) -> 0 - | (`High, `Low) -> -1 - | (`Low, `High) -> 1 - | (`Low, `Low) -> 0 + | (`High, `High) | (`Medium, `Medium) -> 0 + | (`Low p1, `Low p2) -> compare_low_prio p1 p2 + | (`High, (`Low _ | `Medium)) -> -1 + | ((`Low _ | `Medium), `High) -> 1 + | (`Low _, `Medium) -> 1 + | (`Medium, `Low _) -> -1 end) module Set = Operation_hash.Set diff --git a/src/lib_shell/prevalidator_pending_operations.mli b/src/lib_shell/prevalidator_pending_operations.mli index e316f12bdb..14c81f44fe 100644 --- a/src/lib_shell/prevalidator_pending_operations.mli +++ b/src/lib_shell/prevalidator_pending_operations.mli @@ -27,12 +27,12 @@ (** The priority of a pending operation. A priority is attached to each pending operation. *) -type priority = [`High | `Low] +type priority = [`High | `Medium | `Low of Q.t list] (** This type is used for data representing pending operations of the prevalidator. Any iterator on this structure will process operations with - [`High] priority first. *) + [`High] priority first, followed by [`Medium] and finally [`Low] priority. *) type 'protocol_data t (** The empty structure of pending operations. *) From 7c036e25dd05c3ec740271c19e3a5a718796e25c Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 7 Jan 2022 18:03:04 +0100 Subject: [PATCH 0080/1220] Tests/Shell: QCheck test for priorities --- src/lib_shell/test/generators.ml | 20 +++++++++++++++---- .../test_prevalidator_pending_operations.ml | 16 ++++++++++++--- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/lib_shell/test/generators.ml b/src/lib_shell/test/generators.ml index 8cad3b6e78..2d81ad7217 100644 --- a/src/lib_shell/test/generators.ml +++ b/src/lib_shell/test/generators.ml @@ -59,10 +59,21 @@ let raw_operation_with_hash_gen ?string_gen ?block_hash_t () : let hash = Operation.hash op in (hash, op) -let priority_gen () : [`High | `Low] QCheck2.Gen.t = +let q_in_0_1 () = let open QCheck2.Gen in - let* bool_value = bool in - if bool_value then pure `High else pure `Low + let* q = Lib_test.Qcheck2_helpers.int64_range_gen 1L Int64.max_int in + let+ p = Lib_test.Qcheck2_helpers.int64_range_gen 0L q in + Q.make (Z.of_int64 p) (Z.of_int64 q) + +let priority_gen () : Prevalidator_pending_operations.priority QCheck2.Gen.t = + let open QCheck2.Gen in + let* top_prio_value = oneofl [`High; `Medium; `Low] in + match top_prio_value with + | `High -> pure `High + | `Medium -> pure `Medium + | `Low -> + let+ weights = small_list (q_in_0_1 ()) in + `Low weights let operation_with_hash_gen ?string_gen ?block_hash_t () : unit Prevalidation.operation QCheck2.Gen.t = @@ -71,7 +82,8 @@ let operation_with_hash_gen ?string_gen ?block_hash_t () : Prevalidation.Internal_for_tests.make_operation op oph () let operation_with_hash_and_priority_gen ?string_gen ?block_hash_t () : - (unit Prevalidation.operation * [`High | `Low]) QCheck2.Gen.t = + (unit Prevalidation.operation * Prevalidator_pending_operations.priority) + QCheck2.Gen.t = let open QCheck2.Gen in let* op = operation_with_hash_gen ?string_gen ?block_hash_t () in let* priority = priority_gen () in diff --git a/src/lib_shell/test/test_prevalidator_pending_operations.ml b/src/lib_shell/test/test_prevalidator_pending_operations.ml index 16c126fbcf..d46ffbd49c 100644 --- a/src/lib_shell/test/test_prevalidator_pending_operations.ml +++ b/src/lib_shell/test/test_prevalidator_pending_operations.ml @@ -32,6 +32,7 @@ open Lib_test.Qcheck_helpers module Pending_ops = Prevalidator_pending_operations +module CompareListQ = Compare.List (Q) let pending_of_list = List.fold_left @@ -50,15 +51,24 @@ let test_iterators_ordering ~name ~iterator return_value = (Gen.small_list (Generators.operation_with_hash_and_priority_gen ())) @@ fun ops -> let previous_priority = ref `High in + let previous_prio_ok ~priority ~previous_priority = + match (previous_priority, priority) with + | (`High, `High) -> true + | ((`High | `Medium), `Medium) -> true + | ((`High | `Medium), `Low _) -> true + | (`Low q_prev, `Low q_new) -> CompareListQ.(q_new <= q_prev) + | (_, _) -> false + in iterator (fun priority _hash _op () -> (* Here, we check the priority ordering in the iterators of prevalidator_pending_operations module : if the current considered priority is `High, it should be true that the previously seen is also `High. *) - (match priority with - | `High -> ignore (qcheck_eq !previous_priority `High) - | `Low -> ()) ; + if not @@ previous_prio_ok ~priority ~previous_priority:!previous_priority + then + QCheck.Test.fail_reportf + "Pending operations are not ordered by priority" ; previous_priority := priority ; return_value) (pending_of_list ops) From 9f6e36e3e277ec912553bb54f2a760dfe5ad7b7c Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 7 Jan 2022 18:03:40 +0100 Subject: [PATCH 0081/1220] Plugin/Proto_010: update priorities --- src/proto_010_PtGRANAD/lib_plugin/plugin.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/proto_010_PtGRANAD/lib_plugin/plugin.ml b/src/proto_010_PtGRANAD/lib_plugin/plugin.ml index 5334f2fbb2..042f87014d 100644 --- a/src/proto_010_PtGRANAD/lib_plugin/plugin.ml +++ b/src/proto_010_PtGRANAD/lib_plugin/plugin.ml @@ -253,7 +253,7 @@ module Mempool = struct in let prefilter_manager_op op = match pre_filter_manager config op bytes with - | `Passed_prefilter -> `Passed_prefilter `Low + | `Passed_prefilter -> `Passed_prefilter (`Low []) | (`Branch_refused _ | `Branch_delayed _ | `Refused _ | `Outdated _) as err -> err @@ -297,7 +297,7 @@ module Mempool = struct | Single (Activate_account _) | Single (Proposals _) | Single (Ballot _) -> - `Passed_prefilter `Low + `Passed_prefilter (`Low []) | Single (Manager_operation _) as op -> prefilter_manager_op op | Cons (Manager_operation _, _) as op -> prefilter_manager_op op) |> fun res -> Lwt.return res From 1cc7b252c70c549412e23a6e672a6f6f62506e4a Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 7 Jan 2022 18:03:48 +0100 Subject: [PATCH 0082/1220] Plugin/Proto_011: update priorities --- src/proto_011_PtHangz2/lib_plugin/plugin.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/proto_011_PtHangz2/lib_plugin/plugin.ml b/src/proto_011_PtHangz2/lib_plugin/plugin.ml index c119d865ce..f07833aed0 100644 --- a/src/proto_011_PtHangz2/lib_plugin/plugin.ml +++ b/src/proto_011_PtHangz2/lib_plugin/plugin.ml @@ -258,7 +258,7 @@ module Mempool = struct in let prefilter_manager_op op = match pre_filter_manager config op bytes with - | `Passed_prefilter -> `Passed_prefilter `Low + | `Passed_prefilter -> `Passed_prefilter (`Low []) | (`Branch_refused _ | `Branch_delayed _ | `Refused _ | `Outdated _) as err -> err @@ -302,7 +302,7 @@ module Mempool = struct | Single (Activate_account _) | Single (Proposals _) | Single (Ballot _) -> - `Passed_prefilter `Low + `Passed_prefilter (`Low []) | Single (Manager_operation _) as op -> prefilter_manager_op op | Cons (Manager_operation _, _) as op -> prefilter_manager_op op) |> fun res -> Lwt.return res From dbb381a0ec7565873c1d5c0b13d4c411f179cf8a Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Wed, 12 Jan 2022 17:23:50 +0100 Subject: [PATCH 0083/1220] Plugin: use values of default config in encoding --- src/proto_alpha/lib_plugin/plugin.ml | 36 +++++++++++++--------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index a0741a8f39..9a3123dbee 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -130,12 +130,20 @@ module Mempool = struct /!\ Warning /!\ : current plugin implementation implies that this drift cumulates with the accepted drift regarding the current head's timestamp. *) + let default_config = + { + minimal_fees = default_minimal_fees; + minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit; + minimal_nanotez_per_byte = default_minimal_nanotez_per_byte; + allow_script_failure = true; + clock_drift = None; + replace_by_fee_factor = + Q.make (Z.of_int 105) (Z.of_int 100) + (* Default value of [replace_by_fee_factor] is set to 5% *); + } let config_encoding : config Data_encoding.t = let open Data_encoding in - (* 105/100 = 1.05%: This is the minumum fee increase ratio required between - an operation and another one it'd replace in the prevalidator. *) - let replace_factor = Q.make (Z.of_int 105) (Z.of_int 100) in conv (fun { minimal_fees; @@ -166,33 +174,21 @@ module Mempool = struct replace_by_fee_factor; }) (obj6 - (dft "minimal_fees" Tez.encoding default_minimal_fees) + (dft "minimal_fees" Tez.encoding default_config.minimal_fees) (dft "minimal_nanotez_per_gas_unit" nanotez_enc - default_minimal_nanotez_per_gas_unit) + default_config.minimal_nanotez_per_gas_unit) (dft "minimal_nanotez_per_byte" nanotez_enc - default_minimal_nanotez_per_byte) - (dft "allow_script_failure" bool true) + default_config.minimal_nanotez_per_byte) + (dft "allow_script_failure" bool default_config.allow_script_failure) (opt "clock_drift" Period.encoding) (dft "replace_by_fee_factor" manager_op_replacement_factor_enc - replace_factor)) - - let default_config = - { - minimal_fees = default_minimal_fees; - minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit; - minimal_nanotez_per_byte = default_minimal_nanotez_per_byte; - allow_script_failure = true; - clock_drift = None; - replace_by_fee_factor = - Q.make (Z.of_int 105) (Z.of_int 100) - (* Default value of [replace_by_fee_factor] is set to 5% *); - } + default_config.replace_by_fee_factor)) type manager_gas_witness From ef8eda0eab57ae4ef4639171563954dd3650d52f Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 7 Jan 2022 18:04:51 +0100 Subject: [PATCH 0084/1220] Test/Plugin: use default values instead of copy-pasting --- src/proto_alpha/lib_plugin/test/test_consensus_filter.ml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/proto_alpha/lib_plugin/test/test_consensus_filter.ml b/src/proto_alpha/lib_plugin/test/test_consensus_filter.ml index 8e359c8ebf..e8cc059118 100644 --- a/src/proto_alpha/lib_plugin/test/test_consensus_filter.ml +++ b/src/proto_alpha/lib_plugin/test/test_consensus_filter.ml @@ -29,15 +29,11 @@ open Alpha_context let config drift_opt = { - minimal_fees = default_minimal_fees; - minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit; - minimal_nanotez_per_byte = default_minimal_nanotez_per_byte; - allow_script_failure = true; + default_config with clock_drift = Option.map (fun drift -> Period.of_seconds_exn (Int64.of_int drift)) drift_opt; - replace_by_fee_factor = Q.make (Z.of_int 105) (Z.of_int 100); } type Environment.Error_monad.error += Generation_failure From ff6a0e04c3d110aed51f446c7f70302d7fd3a3ef Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Wed, 12 Jan 2022 17:25:42 +0100 Subject: [PATCH 0085/1220] Plugin: pre-filter returns the weight of operations --- .../lib_delegate/operation_selection.ml | 3 + src/proto_alpha/lib_plugin/plugin.ml | 103 +++++++++++++++--- 2 files changed, 89 insertions(+), 17 deletions(-) diff --git a/src/proto_alpha/lib_delegate/operation_selection.ml b/src/proto_alpha/lib_delegate/operation_selection.ml index 1031656835..ea8012e375 100644 --- a/src/proto_alpha/lib_delegate/operation_selection.ml +++ b/src/proto_alpha/lib_delegate/operation_selection.ml @@ -68,6 +68,9 @@ module WeightedManagerSet = Set.Make (struct if c <> 0 then c else cmp_src end) +(* Note: This weight is also used by the plugin and the prevalidator to sort + operations in the pending mempool. + @see {!Tezos_protocol_plugin_alpha.Plugin.Mempool.weight_manager_operation}. *) let weight_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte op = let {protocol_data = Operation_data {contents; _}; _} = op in diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 9a3123dbee..4a23ca89b2 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -124,6 +124,12 @@ module Mempool = struct let default_minimal_nanotez_per_byte = Q.of_int 1000 + let quota = Main.validation_passes + + let managers_index = 3 (* in Main.validation_passes *) + + let managers_quota = Stdlib.List.nth quota managers_index + (* If the drift is not specified, it will be the duration of round zero. It allows only to spam with one future round. @@ -268,6 +274,12 @@ module Mempool = struct })) >|= Environment.wrap_tzresult + let manager_prio p = `Low p + + let consensus_prio = `High + + let other_prio = `Medium + let on_flush config filter_state ?(validation_state : validation_state option) ~predecessor () = ignore filter_state ; @@ -374,6 +386,7 @@ module Mempool = struct | _ -> None) (fun (old_hash, new_hash) -> Manager_operation_replaced {old_hash; new_hash}) + (* TODO: https://gitlab.com/tezos/tezos/-/issues/2238 Write unit tests for the feature 'replace-by-fee' and for other changes introduced by other MRs in the plugin. *) @@ -414,19 +427,54 @@ module Mempool = struct (Manager_restriction {oph = old_hash; fee = old_fee}); ]) + let size_of_operation op = + (WithExceptions.Option.get ~loc:__LOC__ + @@ Data_encoding.Binary.fixed_length + Tezos_base.Operation.shell_header_encoding) + + Data_encoding.Binary.length Operation.protocol_data_encoding op + + (** Returns the weight of an operation. The weight corresponds to the one + implemented by the baker, to decide which operations to put in a block + first (the code is largely duplicated). + @see {!Tezos_baking_alpha.Operation_selection.weight_manager} *) + let weight_manager_operation ?validation_state ?size ~fee ~gas op = + match validation_state with + | None -> None + | Some {ctxt; _} -> + let hard_gas_limit_per_block = + Constants.hard_gas_limit_per_block ctxt + in + let max_size = managers_quota.max_size in + let size = + match size with None -> size_of_operation op | Some s -> s + in + let size_f = Q.of_int size in + let gas_f = Q.of_bigint (Gas.Arith.integral_to_z gas) in + let fee_f = Q.of_int64 (Tez.to_mutez fee) in + let size_ratio = Q.(size_f / Q.of_int max_size) in + let gas_ratio = + Q.( + gas_f + / Q.of_bigint (Gas.Arith.integral_to_z hard_gas_limit_per_block)) + in + let resources = Q.max size_ratio gas_ratio in + Some Q.(fee_f / resources) + let pre_filter_manager : type t. config -> state -> + validation_state_before:validation_state option -> public_key_hash -> - int -> + Operation.packed_protocol_data -> t Kind.manager contents_list -> - [ `Passed_prefilter + [ `Passed_prefilter of Q.t list | `Branch_refused of tztrace | `Branch_delayed of tztrace | `Refused of tztrace | `Outdated of tztrace ] = - fun config filter_state source size op -> + fun config filter_state ~validation_state_before source packed_op op -> + let size = size_of_operation packed_op in let check_gas_and_fee fee gas_limit = let fees_in_nanotez = Q.mul (Q.of_int64 (Tez.to_mutez fee)) (Q.of_int 1000) @@ -451,7 +499,7 @@ module Mempool = struct minimal_fees_for_gas_in_nanotez minimal_fees_for_size_in_nanotez)) >= 0 - then `Passed_prefilter + then `Ok else `Refused [Environment.wrap_tzerror Fees_too_low] in match get_manager_operation_gas_and_fee op with @@ -461,7 +509,23 @@ module Mempool = struct check_manager_restriction config filter_state source ~fee ~gas_limit with | `Fail errs -> errs - | `Fresh | `Replace _ -> check_gas_and_fee fee gas_limit) + | `Fresh | `Replace _ -> ( + match check_gas_and_fee fee gas_limit with + | `Refused _ as err -> err + | `Ok -> + let weight = + match + weight_manager_operation + ?validation_state:validation_state_before + ~fee + ~gas:gas_limit + ~size + packed_op + with + | None -> [] + | Some weight -> [weight] + in + `Passed_prefilter weight)) type Environment.Error_monad.error += Outdated_endorsement @@ -705,17 +769,19 @@ module Mempool = struct let pre_filter config ~(filter_state : state) ?validation_state_before ({shell = _; protocol_data = Operation_data {contents; _} as op} : Main.operation) = - let bytes = - (WithExceptions.Option.get ~loc:__LOC__ - @@ Data_encoding.Binary.fixed_length - Tezos_base.Operation.shell_header_encoding) - + Data_encoding.Binary.length Operation.protocol_data_encoding op - in - let prefilter_manager_op source op = + let prefilter_manager_op source manager_op = Lwt.return @@ - match pre_filter_manager config filter_state source bytes op with - | `Passed_prefilter -> `Passed_prefilter `Low + match + pre_filter_manager + config + filter_state + ~validation_state_before + source + op + manager_op + with + | `Passed_prefilter prio -> `Passed_prefilter (manager_prio prio) | (`Branch_refused _ | `Branch_delayed _ | `Refused _ | `Outdated _) as err -> err @@ -731,7 +797,7 @@ module Mempool = struct ?validation_state_before consensus_content >>= fun keep -> - if keep then Lwt.return @@ `Passed_prefilter `High + if keep then Lwt.return @@ `Passed_prefilter consensus_prio else Lwt.return (`Branch_refused @@ -743,7 +809,7 @@ module Mempool = struct | Single (Activate_account _) | Single (Proposals _) | Single (Ballot _) -> - Lwt.return @@ `Passed_prefilter `Low + Lwt.return @@ `Passed_prefilter other_prio | Single (Manager_operation {source; _}) as op -> prefilter_manager_op source op | Cons (Manager_operation {source; _}, _) as op -> @@ -754,6 +820,7 @@ module Mempool = struct config -> state -> validation_state -> + Operation_hash.t -> Tezos_base.Operation.shell_header -> t Kind.manager protocol_data -> fee:Tez.t -> @@ -766,6 +833,7 @@ module Mempool = struct fun config filter_state validation_state + oph shell ({contents; _} as protocol_data : t Kind.manager protocol_data) ~fee @@ -843,6 +911,7 @@ module Mempool = struct config filter_state validation_state + oph shell_header protocol_data source @@ -851,7 +920,7 @@ module Mempool = struct >|= function | `Prechecked_manager replacement -> let filter_state = - add_manager_restriction config filter_state oph info source + add_manager_restriction filter_state oph info source in `Passed_precheck (filter_state, replacement) | (`Refused _ | `Branch_delayed _ | `Branch_refused _ | `Outdated _) From e97df3a1eed8e9ff75ad5a4e277dbfe6eaf57425 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Wed, 12 Jan 2022 17:27:14 +0100 Subject: [PATCH 0086/1220] Plugin/Proto_012: backport weight of manager operations --- .../lib_delegate/operation_selection.ml | 3 + src/proto_012_PsiThaCa/lib_plugin/plugin.ml | 211 +++++++++++++----- .../lib_plugin/test/test_consensus_filter.ml | 6 +- 3 files changed, 158 insertions(+), 62 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml index 1031656835..ea8012e375 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml @@ -68,6 +68,9 @@ module WeightedManagerSet = Set.Make (struct if c <> 0 then c else cmp_src end) +(* Note: This weight is also used by the plugin and the prevalidator to sort + operations in the pending mempool. + @see {!Tezos_protocol_plugin_alpha.Plugin.Mempool.weight_manager_operation}. *) let weight_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte op = let {protocol_data = Operation_data {contents; _}; _} = op in diff --git a/src/proto_012_PsiThaCa/lib_plugin/plugin.ml b/src/proto_012_PsiThaCa/lib_plugin/plugin.ml index 03fceb6179..2ad1e0305e 100644 --- a/src/proto_012_PsiThaCa/lib_plugin/plugin.ml +++ b/src/proto_012_PsiThaCa/lib_plugin/plugin.ml @@ -68,6 +68,12 @@ let () = (fun () -> Cannot_retrieve_predecessor_level) module Mempool = struct + type error_classification = + [ `Branch_delayed of tztrace + | `Branch_refused of tztrace + | `Refused of tztrace + | `Outdated of tztrace ] + type nanotez = Q.t let nanotez_enc : nanotez Data_encoding.t = @@ -118,18 +124,32 @@ module Mempool = struct let default_minimal_nanotez_per_byte = Q.of_int 1000 + let quota = Main.validation_passes + + let managers_index = 3 (* in Main.validation_passes *) + + let managers_quota = Stdlib.List.nth quota managers_index + (* If the drift is not specified, it will be the duration of round zero. It allows only to spam with one future round. /!\ Warning /!\ : current plugin implementation implies that this drift cumulates with the accepted drift regarding the current head's timestamp. *) + let default_config = + { + minimal_fees = default_minimal_fees; + minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit; + minimal_nanotez_per_byte = default_minimal_nanotez_per_byte; + allow_script_failure = true; + clock_drift = None; + replace_by_fee_factor = + Q.make (Z.of_int 105) (Z.of_int 100) + (* Default value of [replace_by_fee_factor] is set to 5% *); + } let config_encoding : config Data_encoding.t = let open Data_encoding in - (* 105/100 = 1.05%: This is the minumum fee increase ratio required between - an operation and another one it'd replace in the prevalidator. *) - let replace_factor = Q.make (Z.of_int 105) (Z.of_int 100) in conv (fun { minimal_fees; @@ -160,33 +180,21 @@ module Mempool = struct replace_by_fee_factor; }) (obj6 - (dft "minimal_fees" Tez.encoding default_minimal_fees) + (dft "minimal_fees" Tez.encoding default_config.minimal_fees) (dft "minimal_nanotez_per_gas_unit" nanotez_enc - default_minimal_nanotez_per_gas_unit) + default_config.minimal_nanotez_per_gas_unit) (dft "minimal_nanotez_per_byte" nanotez_enc - default_minimal_nanotez_per_byte) - (dft "allow_script_failure" bool true) + default_config.minimal_nanotez_per_byte) + (dft "allow_script_failure" bool default_config.allow_script_failure) (opt "clock_drift" Period.encoding) (dft "replace_by_fee_factor" manager_op_replacement_factor_enc - replace_factor)) - - let default_config = - { - minimal_fees = default_minimal_fees; - minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit; - minimal_nanotez_per_byte = default_minimal_nanotez_per_byte; - allow_script_failure = true; - clock_drift = None; - replace_by_fee_factor = - Q.make (Z.of_int 105) (Z.of_int 100) - (* Default value of [replace_by_fee_factor] is set to 5% *); - } + default_config.replace_by_fee_factor)) type manager_gas_witness @@ -266,6 +274,12 @@ module Mempool = struct })) >|= Environment.wrap_tzresult + let manager_prio p = `Low p + + let consensus_prio = `High + + let other_prio = `Medium + let on_flush config filter_state ?(validation_state : validation_state option) ~predecessor () = ignore filter_state ; @@ -323,7 +337,7 @@ module Mempool = struct let () = Environment.Error_monad.register_error_kind `Temporary - ~id:"plugin_filter.manager_restriction" + ~id:"prefilter.manager_restriction" ~title:"Only one manager operation per manager per block allowed" ~description:"Only one manager operation per manager per block allowed" ~pp:(fun ppf (oph, fee) -> @@ -343,6 +357,36 @@ module Mempool = struct (function Manager_restriction {oph; fee} -> Some (oph, fee) | _ -> None) (fun (oph, fee) -> Manager_restriction {oph; fee}) + type Environment.Error_monad.error += + | Manager_operation_replaced of { + old_hash : Operation_hash.t; + new_hash : Operation_hash.t; + } + + let () = + Environment.Error_monad.register_error_kind + `Permanent + ~id:"plugin.manager_operation_replaced" + ~title:"Manager operation replaced" + ~description:"The manager operation has been replaced" + ~pp:(fun ppf (old_hash, new_hash) -> + Format.fprintf + ppf + "The manager operation %a has been replaced with %a" + Operation_hash.pp + old_hash + Operation_hash.pp + new_hash) + (Data_encoding.obj2 + (Data_encoding.req "old_hash" Operation_hash.encoding) + (Data_encoding.req "new_hash" Operation_hash.encoding)) + (function + | Manager_operation_replaced {old_hash; new_hash} -> + Some (old_hash, new_hash) + | _ -> None) + (fun (old_hash, new_hash) -> + Manager_operation_replaced {old_hash; new_hash}) + (* TODO: https://gitlab.com/tezos/tezos/-/issues/2238 Write unit tests for the feature 'replace-by-fee' and for other changes introduced by other MRs in the plugin. *) @@ -383,19 +427,51 @@ module Mempool = struct (Manager_restriction {oph = old_hash; fee = old_fee}); ]) + let size_of_operation op = + (WithExceptions.Option.get ~loc:__LOC__ + @@ Data_encoding.Binary.fixed_length + Tezos_base.Operation.shell_header_encoding) + + Data_encoding.Binary.length Operation.protocol_data_encoding op + + (** @see {!Operation_selection.weight_manager} *) + let weight_manager_operation ?validation_state ?size ~fee ~gas op = + match validation_state with + | None -> None + | Some {ctxt; _} -> + let hard_gas_limit_per_block = + Constants.hard_gas_limit_per_block ctxt + in + let max_size = managers_quota.max_size in + let size = + match size with None -> size_of_operation op | Some s -> s + in + let size_f = Q.of_int size in + let gas_f = Q.of_bigint (Gas.Arith.integral_to_z gas) in + let fee_f = Q.of_int64 (Tez.to_mutez fee) in + let size_ratio = Q.(size_f / Q.of_int max_size) in + let gas_ratio = + Q.( + gas_f + / Q.of_bigint (Gas.Arith.integral_to_z hard_gas_limit_per_block)) + in + let resources = Q.max size_ratio gas_ratio in + Some Q.(fee_f / resources) + let pre_filter_manager : type t. config -> state -> + validation_state_before:validation_state option -> public_key_hash -> - int -> + Operation.packed_protocol_data -> t Kind.manager contents_list -> - [ `Passed_prefilter + [ `Passed_prefilter of Q.t list | `Branch_refused of tztrace | `Branch_delayed of tztrace | `Refused of tztrace | `Outdated of tztrace ] = - fun config filter_state source size op -> + fun config filter_state ~validation_state_before source packed_op op -> + let size = size_of_operation packed_op in let check_gas_and_fee fee gas_limit = let fees_in_nanotez = Q.mul (Q.of_int64 (Tez.to_mutez fee)) (Q.of_int 1000) @@ -420,7 +496,7 @@ module Mempool = struct minimal_fees_for_gas_in_nanotez minimal_fees_for_size_in_nanotez)) >= 0 - then `Passed_prefilter + then `Ok else `Refused [Environment.wrap_tzerror Fees_too_low] in match get_manager_operation_gas_and_fee op with @@ -430,7 +506,23 @@ module Mempool = struct check_manager_restriction config filter_state source ~fee ~gas_limit with | `Fail errs -> errs - | `Fresh | `Replace _ -> check_gas_and_fee fee gas_limit) + | `Fresh | `Replace _ -> ( + match check_gas_and_fee fee gas_limit with + | `Refused _ as err -> err + | `Ok -> + let weight = + match + weight_manager_operation + ?validation_state:validation_state_before + ~fee + ~gas:gas_limit + ~size + packed_op + with + | None -> [] + | Some weight -> [weight] + in + `Passed_prefilter weight)) type Environment.Error_monad.error += Outdated_endorsement @@ -674,17 +766,19 @@ module Mempool = struct let pre_filter config ~(filter_state : state) ?validation_state_before ({shell = _; protocol_data = Operation_data {contents; _} as op} : Main.operation) = - let bytes = - (WithExceptions.Option.get ~loc:__LOC__ - @@ Data_encoding.Binary.fixed_length - Tezos_base.Operation.shell_header_encoding) - + Data_encoding.Binary.length Operation.protocol_data_encoding op - in - let prefilter_manager_op source op = + let prefilter_manager_op source manager_op = Lwt.return @@ - match pre_filter_manager config filter_state source bytes op with - | `Passed_prefilter -> `Passed_prefilter `Low + match + pre_filter_manager + config + filter_state + ~validation_state_before + source + op + manager_op + with + | `Passed_prefilter prio -> `Passed_prefilter (manager_prio prio) | (`Branch_refused _ | `Branch_delayed _ | `Refused _ | `Outdated _) as err -> err @@ -700,7 +794,7 @@ module Mempool = struct ?validation_state_before consensus_content >>= fun keep -> - if keep then Lwt.return @@ `Passed_prefilter `High + if keep then Lwt.return @@ `Passed_prefilter consensus_prio else Lwt.return (`Branch_refused @@ -712,7 +806,7 @@ module Mempool = struct | Single (Activate_account _) | Single (Proposals _) | Single (Ballot _) -> - Lwt.return @@ `Passed_prefilter `Low + Lwt.return @@ `Passed_prefilter other_prio | Single (Manager_operation {source; _}) as op -> prefilter_manager_op source op | Cons (Manager_operation {source; _}, _) as op -> @@ -723,21 +817,20 @@ module Mempool = struct config -> state -> validation_state -> + Operation_hash.t -> Tezos_base.Operation.shell_header -> t Kind.manager protocol_data -> fee:Tez.t -> gas_limit:manager_gas_witness Gas.Arith.t -> public_key_hash -> - [> `Prechecked_manager - | `Prechecked_manager_with_replace of Operation_hash.t - | `Branch_delayed of tztrace - | `Branch_refused of tztrace - | `Refused of tztrace - | `Outdated of tztrace ] + [> `Prechecked_manager of + [`No_replace | `Replace of Operation_hash.t * error_classification] + | error_classification ] Lwt.t = fun config filter_state validation_state + oph shell ({contents; _} as protocol_data : t Kind.manager protocol_data) ~fee @@ -764,10 +857,16 @@ module Mempool = struct with | `Fail err -> Lwt.return err | `Fresh -> - precheck_manager_and_check_signature ~on_success:`Prechecked_manager + precheck_manager_and_check_signature + ~on_success:(`Prechecked_manager `No_replace) | `Replace old_oph -> + let err = + Environment.wrap_tzerror + @@ Manager_operation_replaced {old_hash = old_oph; new_hash = oph} + in precheck_manager_and_check_signature - ~on_success:(`Prechecked_manager_with_replace old_oph) + ~on_success: + (`Prechecked_manager (`Replace (old_oph, `Outdated [err]))) let add_manager_restriction filter_state oph info source = { @@ -789,12 +888,10 @@ module Mempool = struct validation_state:validation_state -> Operation_hash.t -> Main.operation -> - [ `Passed_precheck of state - | `Passed_precheck_with_replace of Operation_hash.t * state - | `Branch_delayed of tztrace - | `Branch_refused of tztrace - | `Refused of tztrace - | `Outdated of tztrace + [ `Passed_precheck of + state + * [`No_replace | `Replace of Operation_hash.t * error_classification] + | error_classification | `Undecided ] Lwt.t = fun config @@ -811,18 +908,18 @@ module Mempool = struct config filter_state validation_state + oph shell_header protocol_data source ~fee ~gas_limit >|= function - | `Prechecked_manager -> - `Passed_precheck - (add_manager_restriction filter_state oph info source) - | `Prechecked_manager_with_replace old_oph -> - `Passed_precheck_with_replace - (old_oph, add_manager_restriction filter_state oph info source) + | `Prechecked_manager replacement -> + let filter_state = + add_manager_restriction filter_state oph info source + in + `Passed_precheck (filter_state, replacement) | (`Refused _ | `Branch_delayed _ | `Branch_refused _ | `Outdated _) as errs -> errs) diff --git a/src/proto_012_PsiThaCa/lib_plugin/test/test_consensus_filter.ml b/src/proto_012_PsiThaCa/lib_plugin/test/test_consensus_filter.ml index 8e359c8ebf..e8cc059118 100644 --- a/src/proto_012_PsiThaCa/lib_plugin/test/test_consensus_filter.ml +++ b/src/proto_012_PsiThaCa/lib_plugin/test/test_consensus_filter.ml @@ -29,15 +29,11 @@ open Alpha_context let config drift_opt = { - minimal_fees = default_minimal_fees; - minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit; - minimal_nanotez_per_byte = default_minimal_nanotez_per_byte; - allow_script_failure = true; + default_config with clock_drift = Option.map (fun drift -> Period.of_seconds_exn (Int64.of_int drift)) drift_opt; - replace_by_fee_factor = Q.make (Z.of_int 105) (Z.of_int 100); } type Environment.Error_monad.error += Generation_failure From 6a2c6921926195f60f4b48c53accec9f17823cfd Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Thu, 13 Jan 2022 12:01:25 +0100 Subject: [PATCH 0087/1220] Prevalidator: Construct to_handle in full --- src/lib_shell/prevalidator.ml | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/lib_shell/prevalidator.ml b/src/lib_shell/prevalidator.ml index 6306708da3..7676fa089a 100644 --- a/src/lib_shell/prevalidator.ml +++ b/src/lib_shell/prevalidator.ml @@ -700,15 +700,18 @@ module Make_s (* Precheck succeeded *) let to_handle = match replacement with - | `No_replace -> [] + | `No_replace -> [(op, `Prechecked)] | `Replace (old_oph, replacement_classification) -> (* Precheck succeeded, but an old operation is replaced *) - reclassify_replaced_manager_op - old_oph - shell - replacement_classification + let to_replace = + reclassify_replaced_manager_op + old_oph + shell + replacement_classification + in + (op, `Prechecked) :: to_replace in - Lwt.return_ok ((filter_state, validation_state), to_handle, `Prechecked) + Lwt.return_ok (filter_state, validation_state, to_handle) | `Undecided -> ( (* Precheck was not able to classify *) Prevalidation_t.apply_operation validation_state op @@ -728,7 +731,7 @@ module Make_s | `Passed_postfilter new_filter_state -> (* Post_filter ok, accept operation *) Lwt.return_ok - ((new_filter_state, new_validation_state), [], `Applied) + (new_filter_state, new_validation_state, [(op, `Applied)]) | `Refused _ as op_class -> (* Post_filter refused the operation *) Lwt.return_error op_class) @@ -738,11 +741,10 @@ module Make_s | Refused e -> Lwt.return_error (`Refused e) | Outdated e -> Lwt.return_error (`Outdated e))) >>= function - | Error op_class -> - Lwt.return (filter_state, validation_state, mempool, [(op, op_class)]) - | Ok ((f_state, v_state), to_handle, op_class) -> + | Error err_class -> + Lwt.return (filter_state, validation_state, mempool, [(op, err_class)]) + | Ok (f_state, v_state, to_handle) -> let mempool = Mempool.cons_valid op.hash mempool in - let to_handle = (op, op_class) :: to_handle in Lwt.return (f_state, v_state, mempool, to_handle) (* Classify pending operations into either: [Refused | From a3c57d0fe3c2d3c4369900cb534627a51dbedff3 Mon Sep 17 00:00:00 2001 From: pasqu4le Date: Mon, 8 Nov 2021 15:04:24 +0100 Subject: [PATCH 0088/1220] doc: update native packages docs with RC support info --- .gitlab/ci/test-doc-scripts.yml | 32 +++++++++++++++++ docs/Makefile | 4 +++ docs/introduction/howtoget.rst | 40 +++++++++++++++++++--- docs/introduction/install-bin-fedora.sh | 3 +- docs/introduction/install-bin-rc-fedora.sh | 13 +++++++ docs/introduction/install-bin-rc-ubuntu.sh | 15 ++++++++ docs/introduction/install-bin-ubuntu.sh | 3 +- docs/introduction/test_howtoget.sh | 16 +++++++++ docs/releases/releases.rst | 2 +- 9 files changed, 121 insertions(+), 7 deletions(-) create mode 100644 docs/introduction/install-bin-rc-fedora.sh create mode 100644 docs/introduction/install-bin-rc-ubuntu.sh diff --git a/.gitlab/ci/test-doc-scripts.yml b/.gitlab/ci/test-doc-scripts.yml index c4b9bd1ed4..96c512b6f9 100644 --- a/.gitlab/ci/test-doc-scripts.yml +++ b/.gitlab/ci/test-doc-scripts.yml @@ -26,6 +26,22 @@ install_bin_focal: image: public.ecr.aws/lts/ubuntu:20.04_stable extends: .install_bin_ubuntu_template +.install_bin_rc_ubuntu_template: + extends: + - .default_settings_template + - .base-test-doc-scripts-template + - .rules_template__development_documentation + script: + - bash ./docs/introduction/install-bin-rc-ubuntu.sh + +install_bin_rc_bionic: + image: public.ecr.aws/lts/ubuntu:18.04_stable + extends: .install_bin_rc_ubuntu_template + +install_bin_rc_focal: + image: public.ecr.aws/lts/ubuntu:20.04_stable + extends: .install_bin_rc_ubuntu_template + .install_bin_fedora_template: extends: - .default_settings_template @@ -42,6 +58,22 @@ install_bin_fedora_34: image: fedora:34 extends: .install_bin_fedora_template +.install_bin_rc_fedora_template: + extends: + - .default_settings_template + - .base-test-doc-scripts-template + - .rules_template__development_documentation + script: + - bash ./docs/introduction/install-bin-rc-fedora.sh + +install_bin_rc_fedora_33: + image: fedora:33 + extends: .install_bin_rc_fedora_template + +install_bin_rc_fedora_34: + image: fedora:34 + extends: .install_bin_rc_fedora_template + .install_opam_ubuntu_template: extends: - .default_settings_template diff --git a/docs/Makefile b/docs/Makefile index 11e4d0f99b..fec988cd2d 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -80,6 +80,10 @@ scriptsindoccheck: introduction/test_howtoget.sh install-bin-focal introduction/test_howtoget.sh install-bin-fedora33 introduction/test_howtoget.sh install-bin-fedora34 + introduction/test_howtoget.sh install-bin-rc-bionic + introduction/test_howtoget.sh install-bin-rc-focal + introduction/test_howtoget.sh install-bin-rc-fedora33 + introduction/test_howtoget.sh install-bin-rc-fedora34 introduction/test_howtoget.sh install-opam-scratch introduction/test_howtoget.sh install-opam-bionic introduction/test_howtoget.sh install-opam-focal diff --git a/docs/introduction/howtoget.rst b/docs/introduction/howtoget.rst index ffbcc6ea4a..beabebbeed 100644 --- a/docs/introduction/howtoget.rst +++ b/docs/introduction/howtoget.rst @@ -73,8 +73,24 @@ binaries and their dependencies using a package manager, as follows. Ubuntu Launchpad PPA with Tezos packages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you're using Ubuntu, you can install packages with Tezos binaries from the Launchpad PPA. -Currently it supports Focal and Bionic versions. In order to add the PPA repository to your machine and install the binaries, run the following commands: +If you're using Ubuntu, you can install packages with Tezos binaries from a Launchpad PPA. +Currently it supports Focal and Bionic versions. + +In order to add the stable release PPA repository to your machine, run: + +.. literalinclude:: install-bin-ubuntu.sh + :language: shell + :start-after: [setup repository] + :end-before: [install tezos] + +Alternatively, to add the release candidates PPA instead, run: + +.. literalinclude:: install-bin-rc-ubuntu.sh + :language: shell + :start-after: [setup repository] + :end-before: [install tezos] + +Then, to install the binaries, run the following commands: .. literalinclude:: install-bin-ubuntu.sh :language: shell @@ -90,8 +106,24 @@ by ``apt-get update``. Fedora Copr repository with Tezos packages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you're using Fedora, you can install packages with Tezos binaries from the Copr repository. -Currently it supports Fedora 33 and 34. In order to add the Copr repository to your machine and install the binaries, run the following commands: +If you're using Fedora, you can install packages with Tezos binaries from a Copr repository. +Currently it supports Fedora 33 and 34. + +In order to add the stable Copr repository to your machine, run: + +.. literalinclude:: install-bin-fedora.sh + :language: shell + :start-after: [setup repository] + :end-before: [install tezos] + +Alternatively, to add the release candidates Copr repository instead, run: + +.. literalinclude:: install-bin-rc-fedora.sh + :language: shell + :start-after: [setup repository] + :end-before: [install tezos] + +Then, to install the binaries, run the following commands: .. literalinclude:: install-bin-fedora.sh :language: shell diff --git a/docs/introduction/install-bin-fedora.sh b/docs/introduction/install-bin-fedora.sh index dbd0e90445..669e936edf 100644 --- a/docs/introduction/install-bin-fedora.sh +++ b/docs/introduction/install-bin-fedora.sh @@ -3,8 +3,9 @@ trap 'exit $?' ERR set -x # [install prerequisites] dnf install -y dnf-plugins-core -# [install tezos] +# [setup repository] dnf copr enable -y @Serokell/Tezos && dnf update -y +# [install tezos] dnf install -y tezos-client dnf install -y tezos-node dnf install -y tezos-baker-011-PtHangz2 diff --git a/docs/introduction/install-bin-rc-fedora.sh b/docs/introduction/install-bin-rc-fedora.sh new file mode 100644 index 0000000000..1165cdaf45 --- /dev/null +++ b/docs/introduction/install-bin-rc-fedora.sh @@ -0,0 +1,13 @@ +# TODO tezos/tezos#2170: search shifted protocol name/number & adapt +trap 'exit $?' ERR +set -x +# [install prerequisites] +dnf install -y dnf-plugins-core +# [setup repository] +dnf copr enable -y @Serokell/Tezos-rc && dnf update -y +# [install tezos] +dnf install -y tezos-client +dnf install -y tezos-node +dnf install -y tezos-baker-011-PtHangz2 +dnf install -y tezos-endorser-011-PtHangz2 +dnf install -y tezos-accuser-011-PtHangz2 diff --git a/docs/introduction/install-bin-rc-ubuntu.sh b/docs/introduction/install-bin-rc-ubuntu.sh new file mode 100644 index 0000000000..738cfa0c10 --- /dev/null +++ b/docs/introduction/install-bin-rc-ubuntu.sh @@ -0,0 +1,15 @@ +# TODO tezos/tezos#2170: search shifted protocol name/number & adapt +trap 'exit $?' ERR +set -x +# [install prerequisites] +apt-get update +apt-get install sudo +apt-get install -y software-properties-common can be: * install-bin-focal * install-bin-fedora33 * install-bin-fedora34 +* install-bin-rc-bionic +* install-bin-rc-focal +* install-bin-rc-fedora33 +* install-bin-rc-fedora34 * install-opam-scratch * install-opam-bionic * install-opam-focal @@ -55,6 +59,18 @@ case "$1" in "install-bin-fedora34" ) docker run --rm -i fedora:34 <"$MYDIR"/install-bin-fedora.sh ;; + "install-bin-rc-bionic" ) + docker run --rm -i $UBUNTU_BIONIC <"$MYDIR"/install-bin-rc-ubuntu.sh + ;; + "install-bin-rc-focal" ) + docker run --rm -i $UBUNTU_FOCAL <"$MYDIR"/install-bin-rc-ubuntu.sh + ;; + "install-bin-rc-fedora33" ) + docker run --rm -i fedora:33 <"$MYDIR"/install-bin-rc-fedora.sh + ;; + "install-bin-rc-fedora34" ) + docker run --rm -i fedora:34 <"$MYDIR"/install-bin-rc-fedora.sh + ;; "install-opam-scratch" ) docker run --rm -i --privileged $UBUNTU_BIONIC <"$MYDIR"/install-opam-scratch.sh ;; diff --git a/docs/releases/releases.rst b/docs/releases/releases.rst index a5a85bf395..bb1102bfb0 100644 --- a/docs/releases/releases.rst +++ b/docs/releases/releases.rst @@ -79,7 +79,7 @@ The packaged forms are updated from the source form as follows: - APT and DNF binary packages: - - at each stable release + - at each release, including release candidates - The process is currently performed manually by `Serokell `_. From ee5b6906d130d5ada54403ad09351733043ea513 Mon Sep 17 00:00:00 2001 From: Nic Volanschi Date: Wed, 10 Nov 2021 11:59:07 +0100 Subject: [PATCH 0089/1220] doc: fix shellcheck of introduction/*.sh --- docs/introduction/compile-sources.sh | 7 ++++++- docs/introduction/install-bin-fedora.sh | 4 +++- docs/introduction/install-bin-rc-fedora.sh | 2 ++ docs/introduction/install-bin-rc-ubuntu.sh | 2 ++ docs/introduction/install-bin-ubuntu.sh | 2 ++ docs/introduction/install-opam-scratch.sh | 8 +++++++- docs/introduction/install-opam.sh | 8 +++++++- docs/introduction/use-docker-hangzhounet.sh | 4 +++- 8 files changed, 32 insertions(+), 5 deletions(-) diff --git a/docs/introduction/compile-sources.sh b/docs/introduction/compile-sources.sh index dfd267c543..0179aae3e6 100644 --- a/docs/introduction/compile-sources.sh +++ b/docs/introduction/compile-sources.sh @@ -1,4 +1,9 @@ -trap 'exit $?' ERR +#! /usr/bin/env bash +# shellcheck source=/dev/null +# shellcheck disable=SC2046 +# shellcheck disable=SC2086 + +set -e set -x cd # [install prerequisites] diff --git a/docs/introduction/install-bin-fedora.sh b/docs/introduction/install-bin-fedora.sh index 669e936edf..93f3abd227 100644 --- a/docs/introduction/install-bin-fedora.sh +++ b/docs/introduction/install-bin-fedora.sh @@ -1,5 +1,7 @@ +#! /usr/bin/env bash + # TODO tezos/tezos#2170: search shifted protocol name/number & adapt -trap 'exit $?' ERR +set -e set -x # [install prerequisites] dnf install -y dnf-plugins-core diff --git a/docs/introduction/install-bin-rc-fedora.sh b/docs/introduction/install-bin-rc-fedora.sh index 1165cdaf45..576cb2c36d 100644 --- a/docs/introduction/install-bin-rc-fedora.sh +++ b/docs/introduction/install-bin-rc-fedora.sh @@ -1,3 +1,5 @@ +#! /usr/bin/env bash + # TODO tezos/tezos#2170: search shifted protocol name/number & adapt trap 'exit $?' ERR set -x diff --git a/docs/introduction/install-bin-rc-ubuntu.sh b/docs/introduction/install-bin-rc-ubuntu.sh index 738cfa0c10..895dfb9c31 100644 --- a/docs/introduction/install-bin-rc-ubuntu.sh +++ b/docs/introduction/install-bin-rc-ubuntu.sh @@ -1,3 +1,5 @@ +#! /usr/bin/env bash + # TODO tezos/tezos#2170: search shifted protocol name/number & adapt trap 'exit $?' ERR set -x diff --git a/docs/introduction/install-bin-ubuntu.sh b/docs/introduction/install-bin-ubuntu.sh index 5b7004ad68..0bf191f7e5 100644 --- a/docs/introduction/install-bin-ubuntu.sh +++ b/docs/introduction/install-bin-ubuntu.sh @@ -1,3 +1,5 @@ +#! /usr/bin/env bash + # TODO tezos/tezos#2170: search shifted protocol name/number & adapt trap 'exit $?' ERR set -x diff --git a/docs/introduction/install-opam-scratch.sh b/docs/introduction/install-opam-scratch.sh index 79a9c523f2..d7b5bfa5e2 100644 --- a/docs/introduction/install-opam-scratch.sh +++ b/docs/introduction/install-opam-scratch.sh @@ -1,4 +1,10 @@ -trap 'exit $?' ERR +#! /usr/bin/env bash +# shellcheck source=/dev/null +# shellcheck disable=SC2154 +# shellcheck disable=SC2046 +# shellcheck disable=SC2086 + +set -e set -x apt-get update diff --git a/docs/introduction/install-opam.sh b/docs/introduction/install-opam.sh index af46388412..3a2bf3b918 100644 --- a/docs/introduction/install-opam.sh +++ b/docs/introduction/install-opam.sh @@ -1,4 +1,10 @@ -trap 'exit $?' ERR +#! /usr/bin/env bash +# shellcheck source=/dev/null +# shellcheck disable=SC2154 +# shellcheck disable=SC2046 +# shellcheck disable=SC2086 + +set -e set -x sudo apt-get update sudo apt-get install wget diff --git a/docs/introduction/use-docker-hangzhounet.sh b/docs/introduction/use-docker-hangzhounet.sh index 0e1f4c95a8..3866fa09ba 100644 --- a/docs/introduction/use-docker-hangzhounet.sh +++ b/docs/introduction/use-docker-hangzhounet.sh @@ -1,5 +1,7 @@ +#! /usr/bin/env bash + # TODO tezos/tezos#2170: search shifted protocol name/no; rename script -trap 'exit $?' ERR +set -e set -x cd # [install docker] From 5da5bc2a67b78d1c9ce80a6a8849b2d2d99a3944 Mon Sep 17 00:00:00 2001 From: Nic Volanschi Date: Fri, 3 Dec 2021 09:59:46 +0100 Subject: [PATCH 0090/1220] doc: migrate shells from bash to sh --- docs/introduction/compile-sources.sh | 9 ++++++--- docs/introduction/install-bin-fedora.sh | 2 +- docs/introduction/install-bin-rc-fedora.sh | 4 ++-- docs/introduction/install-bin-rc-ubuntu.sh | 4 ++-- docs/introduction/install-bin-ubuntu.sh | 4 ++-- docs/introduction/install-opam-scratch.sh | 11 +++++++---- docs/introduction/install-opam.sh | 6 +++++- docs/introduction/use-docker-hangzhounet.sh | 2 +- 8 files changed, 26 insertions(+), 16 deletions(-) diff --git a/docs/introduction/compile-sources.sh b/docs/introduction/compile-sources.sh index 0179aae3e6..fe9eeb85f5 100644 --- a/docs/introduction/compile-sources.sh +++ b/docs/introduction/compile-sources.sh @@ -1,7 +1,10 @@ -#! /usr/bin/env bash +#!/bin/sh # shellcheck source=/dev/null +# for not checking the existence of sourced file $HOME/.cargo/env # shellcheck disable=SC2046 +# for omitting quotes in: eval $(opam env) # shellcheck disable=SC2086 +# for omitting quotes in: source $HOME/.cargo/env set -e set -x @@ -18,7 +21,7 @@ wget https://sh.rustup.rs/rustup-init.sh chmod +x rustup-init.sh ./rustup-init.sh --profile minimal --default-toolchain 1.52.1 -y # [source cargo] -source $HOME/.cargo/env +. $HOME/.cargo/env # [get sources] git clone https://gitlab.com/tezos/tezos.git cd tezos @@ -31,7 +34,7 @@ eval $(opam env) make # [optional setup] export PATH=~/tezos:$PATH -source ./src/bin_client/bash-completion.sh +. ./src/bin_client/bash-completion.sh export TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER=Y # [test executable] ./tezos-client diff --git a/docs/introduction/install-bin-fedora.sh b/docs/introduction/install-bin-fedora.sh index 93f3abd227..57876c9385 100644 --- a/docs/introduction/install-bin-fedora.sh +++ b/docs/introduction/install-bin-fedora.sh @@ -1,4 +1,4 @@ -#! /usr/bin/env bash +#!/bin/sh # TODO tezos/tezos#2170: search shifted protocol name/number & adapt set -e diff --git a/docs/introduction/install-bin-rc-fedora.sh b/docs/introduction/install-bin-rc-fedora.sh index 576cb2c36d..28c9a66b22 100644 --- a/docs/introduction/install-bin-rc-fedora.sh +++ b/docs/introduction/install-bin-rc-fedora.sh @@ -1,7 +1,7 @@ -#! /usr/bin/env bash +#!/bin/sh # TODO tezos/tezos#2170: search shifted protocol name/number & adapt -trap 'exit $?' ERR +set -e set -x # [install prerequisites] dnf install -y dnf-plugins-core diff --git a/docs/introduction/install-bin-rc-ubuntu.sh b/docs/introduction/install-bin-rc-ubuntu.sh index 895dfb9c31..b885267d88 100644 --- a/docs/introduction/install-bin-rc-ubuntu.sh +++ b/docs/introduction/install-bin-rc-ubuntu.sh @@ -1,7 +1,7 @@ -#! /usr/bin/env bash +#!/bin/sh # TODO tezos/tezos#2170: search shifted protocol name/number & adapt -trap 'exit $?' ERR +set -e set -x # [install prerequisites] apt-get update diff --git a/docs/introduction/install-bin-ubuntu.sh b/docs/introduction/install-bin-ubuntu.sh index 0bf191f7e5..30241260a9 100644 --- a/docs/introduction/install-bin-ubuntu.sh +++ b/docs/introduction/install-bin-ubuntu.sh @@ -1,7 +1,7 @@ -#! /usr/bin/env bash +#!/bin/sh # TODO tezos/tezos#2170: search shifted protocol name/number & adapt -trap 'exit $?' ERR +set -e set -x # [install prerequisites] apt-get update diff --git a/docs/introduction/install-opam-scratch.sh b/docs/introduction/install-opam-scratch.sh index d7b5bfa5e2..a9dce636cd 100644 --- a/docs/introduction/install-opam-scratch.sh +++ b/docs/introduction/install-opam-scratch.sh @@ -1,12 +1,15 @@ -#! /usr/bin/env bash +#!/bin/sh # shellcheck source=/dev/null +# for not checking the existence of sourced file $HOME/.cargo/env # shellcheck disable=SC2154 -# shellcheck disable=SC2046 +# for undefined variable in: opam switch create for_tezos $ocaml_version # shellcheck disable=SC2086 +# for omitting quotes in: opam switch create for_tezos $ocaml_version +# shellcheck disable=SC2046 +# for omitting quotes in: eval $(opam env) set -e set -x - apt-get update apt-get -y install make m4 gcc patch unzip bubblewrap wget # apt-get install -y curl @@ -23,7 +26,7 @@ export OPAMYES=true export OPAMSOLVERTIMEOUT=1200 # [install ocaml compiler] wget -O latest-release:version.sh https://gitlab.com/tezos/tezos/raw/latest-release/scripts/version.sh -source latest-release:version.sh +. latest-release:version.sh opam switch create for_tezos $ocaml_version eval $(opam env) # [get system dependencies] diff --git a/docs/introduction/install-opam.sh b/docs/introduction/install-opam.sh index 3a2bf3b918..a6c6bc255d 100644 --- a/docs/introduction/install-opam.sh +++ b/docs/introduction/install-opam.sh @@ -1,8 +1,12 @@ #! /usr/bin/env bash # shellcheck source=/dev/null +# for not checking the existence of sourced file $HOME/.cargo/env # shellcheck disable=SC2154 -# shellcheck disable=SC2046 +# for undefined variable in: opam switch create for_tezos $ocaml_version # shellcheck disable=SC2086 +# for omitting quotes in: opam switch create for_tezos $ocaml_version +# shellcheck disable=SC2046 +# for omitting quotes in: eval $(opam env) set -e set -x diff --git a/docs/introduction/use-docker-hangzhounet.sh b/docs/introduction/use-docker-hangzhounet.sh index 3866fa09ba..7980fe7226 100644 --- a/docs/introduction/use-docker-hangzhounet.sh +++ b/docs/introduction/use-docker-hangzhounet.sh @@ -1,4 +1,4 @@ -#! /usr/bin/env bash +#!/bin/sh # TODO tezos/tezos#2170: search shifted protocol name/no; rename script set -e From 335405de7554f53c0b0e72a50c18aa8e03c2d8d0 Mon Sep 17 00:00:00 2001 From: pasqu4le Date: Mon, 6 Dec 2021 14:08:02 +0100 Subject: [PATCH 0091/1220] doc: make installation scripts executable --- .gitlab/ci/test-doc-scripts.yml | 12 ++++++------ docs/introduction/compile-sources.sh | 2 +- docs/introduction/install-bin-fedora.sh | 0 docs/introduction/install-bin-rc-fedora.sh | 0 docs/introduction/install-bin-rc-ubuntu.sh | 0 docs/introduction/install-bin-ubuntu.sh | 0 docs/introduction/install-opam.sh | 0 7 files changed, 7 insertions(+), 7 deletions(-) mode change 100644 => 100755 docs/introduction/compile-sources.sh mode change 100644 => 100755 docs/introduction/install-bin-fedora.sh mode change 100644 => 100755 docs/introduction/install-bin-rc-fedora.sh mode change 100644 => 100755 docs/introduction/install-bin-rc-ubuntu.sh mode change 100644 => 100755 docs/introduction/install-bin-ubuntu.sh mode change 100644 => 100755 docs/introduction/install-opam.sh diff --git a/.gitlab/ci/test-doc-scripts.yml b/.gitlab/ci/test-doc-scripts.yml index 96c512b6f9..5829dfb25f 100644 --- a/.gitlab/ci/test-doc-scripts.yml +++ b/.gitlab/ci/test-doc-scripts.yml @@ -16,7 +16,7 @@ - .base-test-doc-scripts-template - .rules_template__development_documentation script: - - bash ./docs/introduction/install-bin-ubuntu.sh + - ./docs/introduction/install-bin-ubuntu.sh install_bin_bionic: image: public.ecr.aws/lts/ubuntu:18.04_stable @@ -32,7 +32,7 @@ install_bin_focal: - .base-test-doc-scripts-template - .rules_template__development_documentation script: - - bash ./docs/introduction/install-bin-rc-ubuntu.sh + - ./docs/introduction/install-bin-rc-ubuntu.sh install_bin_rc_bionic: image: public.ecr.aws/lts/ubuntu:18.04_stable @@ -48,7 +48,7 @@ install_bin_rc_focal: - .base-test-doc-scripts-template - .rules_template__development_documentation script: - - bash ./docs/introduction/install-bin-fedora.sh + - ./docs/introduction/install-bin-fedora.sh install_bin_fedora_33: image: fedora:33 @@ -64,7 +64,7 @@ install_bin_fedora_34: - .base-test-doc-scripts-template - .rules_template__development_documentation script: - - bash ./docs/introduction/install-bin-rc-fedora.sh + - ./docs/introduction/install-bin-rc-fedora.sh install_bin_rc_fedora_33: image: fedora:33 @@ -80,7 +80,7 @@ install_bin_rc_fedora_34: - .base-test-doc-scripts-template - .rules_template__development_documentation script: - - bash < ./docs/introduction/install-opam.sh + - ./docs/introduction/install-opam.sh install_opam_bionic: image: ocaml/opam:ubuntu-18.04 @@ -96,7 +96,7 @@ install_opam_focal: - .base-test-doc-scripts-template - .rules_template__development_documentation script: - - bash < ./docs/introduction/compile-sources.sh + - ./docs/introduction/compile-sources.sh compile_sources_buster: image: ocaml/opam:debian-10 diff --git a/docs/introduction/compile-sources.sh b/docs/introduction/compile-sources.sh old mode 100644 new mode 100755 index fe9eeb85f5..983053fa3f --- a/docs/introduction/compile-sources.sh +++ b/docs/introduction/compile-sources.sh @@ -34,7 +34,7 @@ eval $(opam env) make # [optional setup] export PATH=~/tezos:$PATH -. ./src/bin_client/bash-completion.sh +# if using bash: source ./src/bin_client/bash-completion.sh export TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER=Y # [test executable] ./tezos-client diff --git a/docs/introduction/install-bin-fedora.sh b/docs/introduction/install-bin-fedora.sh old mode 100644 new mode 100755 diff --git a/docs/introduction/install-bin-rc-fedora.sh b/docs/introduction/install-bin-rc-fedora.sh old mode 100644 new mode 100755 diff --git a/docs/introduction/install-bin-rc-ubuntu.sh b/docs/introduction/install-bin-rc-ubuntu.sh old mode 100644 new mode 100755 diff --git a/docs/introduction/install-bin-ubuntu.sh b/docs/introduction/install-bin-ubuntu.sh old mode 100644 new mode 100755 diff --git a/docs/introduction/install-opam.sh b/docs/introduction/install-opam.sh old mode 100644 new mode 100755 From cc4741dc430d8d9e2926458450c5dd2a20615f5c Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Tue, 4 Jan 2022 10:58:52 +0100 Subject: [PATCH 0092/1220] Shellcheck: Include all doc test scripts --- src/tooling/lint.sh | 2 +- src/tooling/shellcheck_skips | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/tooling/lint.sh b/src/tooling/lint.sh index de33f164a4..7caa6e3ca7 100755 --- a/src/tooling/lint.sh +++ b/src/tooling/lint.sh @@ -96,7 +96,7 @@ function shellcheck_script () { check_scripts () { # Gather scripts - scripts=$(find "${source_directories[@]}" packaging/ tests_python/ scripts/ -name "*.sh" -type f -print) + scripts=$(find "${source_directories[@]}" packaging/ tests_python/ scripts/ docs/ -name "*.sh" -type f -print) exit_code=0 # Check scripts do not contain the tab character diff --git a/src/tooling/shellcheck_skips b/src/tooling/shellcheck_skips index 1deb152d89..cb76bfac59 100644 --- a/src/tooling/shellcheck_skips +++ b/src/tooling/shellcheck_skips @@ -1,9 +1,3 @@ -docs/introduction/compile-sources.sh -docs/introduction/install-bin-fedora.sh -docs/introduction/install-bin-ubuntu.sh -docs/introduction/install-opam-scratch.sh -docs/introduction/install-opam.sh -docs/introduction/use-docker-hangzhounet.sh scripts/baker-version-stats.sh scripts/ci/create_docker_image.build.sh scripts/ci/create_docker_image.minimal.sh From b073813498f65a4f9e334fc75d35c8646dcb8eb7 Mon Sep 17 00:00:00 2001 From: pasqu4le Date: Tue, 11 Jan 2022 14:16:30 +0100 Subject: [PATCH 0093/1220] doc: remove Fedora 33 from natively supported versions --- .gitlab/ci/test-doc-scripts.yml | 8 -------- docs/Makefile | 2 -- docs/introduction/howtoget.rst | 2 +- docs/introduction/test_howtoget.sh | 8 -------- 4 files changed, 1 insertion(+), 19 deletions(-) diff --git a/.gitlab/ci/test-doc-scripts.yml b/.gitlab/ci/test-doc-scripts.yml index 5829dfb25f..f714814b7e 100644 --- a/.gitlab/ci/test-doc-scripts.yml +++ b/.gitlab/ci/test-doc-scripts.yml @@ -50,10 +50,6 @@ install_bin_rc_focal: script: - ./docs/introduction/install-bin-fedora.sh -install_bin_fedora_33: - image: fedora:33 - extends: .install_bin_fedora_template - install_bin_fedora_34: image: fedora:34 extends: .install_bin_fedora_template @@ -66,10 +62,6 @@ install_bin_fedora_34: script: - ./docs/introduction/install-bin-rc-fedora.sh -install_bin_rc_fedora_33: - image: fedora:33 - extends: .install_bin_rc_fedora_template - install_bin_rc_fedora_34: image: fedora:34 extends: .install_bin_rc_fedora_template diff --git a/docs/Makefile b/docs/Makefile index fec988cd2d..29d7de8010 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -78,11 +78,9 @@ xrefscheck: scriptsindoccheck: introduction/test_howtoget.sh install-bin-bionic introduction/test_howtoget.sh install-bin-focal - introduction/test_howtoget.sh install-bin-fedora33 introduction/test_howtoget.sh install-bin-fedora34 introduction/test_howtoget.sh install-bin-rc-bionic introduction/test_howtoget.sh install-bin-rc-focal - introduction/test_howtoget.sh install-bin-rc-fedora33 introduction/test_howtoget.sh install-bin-rc-fedora34 introduction/test_howtoget.sh install-opam-scratch introduction/test_howtoget.sh install-opam-bionic diff --git a/docs/introduction/howtoget.rst b/docs/introduction/howtoget.rst index beabebbeed..bf19483702 100644 --- a/docs/introduction/howtoget.rst +++ b/docs/introduction/howtoget.rst @@ -107,7 +107,7 @@ Fedora Copr repository with Tezos packages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you're using Fedora, you can install packages with Tezos binaries from a Copr repository. -Currently it supports Fedora 33 and 34. +Currently it supports Fedora 34. In order to add the stable Copr repository to your machine, run: diff --git a/docs/introduction/test_howtoget.sh b/docs/introduction/test_howtoget.sh index 0362c52bc8..03f004dba4 100755 --- a/docs/introduction/test_howtoget.sh +++ b/docs/introduction/test_howtoget.sh @@ -26,11 +26,9 @@ where can be: * use-docker * install-bin-bionic * install-bin-focal -* install-bin-fedora33 * install-bin-fedora34 * install-bin-rc-bionic * install-bin-rc-focal -* install-bin-rc-fedora33 * install-bin-rc-fedora34 * install-opam-scratch * install-opam-bionic @@ -53,9 +51,6 @@ case "$1" in "install-bin-focal" ) docker run --rm -i $UBUNTU_FOCAL <"$MYDIR"/install-bin-ubuntu.sh ;; - "install-bin-fedora33" ) - docker run --rm -i fedora:33 <"$MYDIR"/install-bin-fedora.sh - ;; "install-bin-fedora34" ) docker run --rm -i fedora:34 <"$MYDIR"/install-bin-fedora.sh ;; @@ -65,9 +60,6 @@ case "$1" in "install-bin-rc-focal" ) docker run --rm -i $UBUNTU_FOCAL <"$MYDIR"/install-bin-rc-ubuntu.sh ;; - "install-bin-rc-fedora33" ) - docker run --rm -i fedora:33 <"$MYDIR"/install-bin-rc-fedora.sh - ;; "install-bin-rc-fedora34" ) docker run --rm -i fedora:34 <"$MYDIR"/install-bin-rc-fedora.sh ;; From 9349d3a29a29ee964fd8d154ec01f593361629bc Mon Sep 17 00:00:00 2001 From: Ilias Garnier Date: Tue, 7 Dec 2021 22:51:03 +0100 Subject: [PATCH 0094/1220] Proto,SCORU: Add add_message rollup in L1 operations --- src/proto_alpha/lib_client/injection.ml | 4 ++ .../lib_client/operation_result.ml | 26 +++++++ .../lib_protocol/alpha_context.mli | 67 ++++++++++------- src/proto_alpha/lib_protocol/apply.ml | 10 ++- src/proto_alpha/lib_protocol/apply_results.ml | 72 +++++++++++++++++++ .../lib_protocol/apply_results.mli | 4 ++ .../lib_protocol/operation_repr.ml | 47 +++++++++++- .../lib_protocol/operation_repr.mli | 13 ++++ .../lib_protocol/sc_rollup_operations.ml | 4 +- .../lib_protocol/sc_rollup_operations.mli | 2 +- .../lib_protocol/sc_rollup_storage.ml | 2 +- .../lib_protocol/sc_rollup_storage.mli | 2 +- .../lib_protocol/test/helpers/block.ml | 8 ++- 13 files changed, 222 insertions(+), 39 deletions(-) diff --git a/src/proto_alpha/lib_client/injection.ml b/src/proto_alpha/lib_client/injection.ml index 9b58f4b4b7..1aa906a326 100644 --- a/src/proto_alpha/lib_client/injection.ml +++ b/src/proto_alpha/lib_client/injection.ml @@ -321,6 +321,8 @@ let estimated_gas_single (type kind) | Applied (Tx_rollup_origination_result {consumed_gas; _}) -> Ok consumed_gas | Applied (Sc_rollup_originate_result {consumed_gas; _}) -> Ok consumed_gas + | Applied (Sc_rollup_add_messages_result {consumed_gas; _}) -> + Ok consumed_gas | Skipped _ -> assert false | Backtracked (_, None) -> Ok Gas.Arith.zero (* there must be another error for this to happen *) @@ -355,6 +357,7 @@ let estimated_storage_single (type kind) ~tx_rollup_origination_size | Applied (Set_deposits_limit_result _) -> Ok Z.zero | Applied (Tx_rollup_origination_result _) -> Ok tx_rollup_origination_size | Applied (Sc_rollup_originate_result {size; _}) -> Ok size + | Applied (Sc_rollup_add_messages_result _) -> Ok Z.zero | Skipped _ -> assert false | Backtracked (_, None) -> Ok Z.zero (* there must be another error for this to happen *) @@ -403,6 +406,7 @@ let originated_contracts_single (type kind) | Applied (Set_deposits_limit_result _) -> Ok [] | Applied (Tx_rollup_origination_result _) -> Ok [] | Applied (Sc_rollup_originate_result _) -> Ok [] + | Applied (Sc_rollup_add_messages_result _) -> Ok [] | Skipped _ -> assert false | Backtracked (_, None) -> Ok [] (* there must be another error for this to happen *) diff --git a/src/proto_alpha/lib_client/operation_result.ml b/src/proto_alpha/lib_client/operation_result.ml index 6bcf9302da..9a598355b9 100644 --- a/src/proto_alpha/lib_client/operation_result.ml +++ b/src/proto_alpha/lib_client/operation_result.ml @@ -184,6 +184,15 @@ let pp_manager_operation_content (type kind) source internal pp_result ppf R.pp_boot_sector boot_sector pp_result + result + | Sc_rollup_add_messages {rollup; messages = _} -> + Format.fprintf + ppf + "@[Add a message to the inbox of the smart contract rollup at \ + address %a%a@]" + Sc_rollup.Address.pp + rollup + pp_result result) ; Format.fprintf ppf "@]" @@ -425,6 +434,10 @@ let pp_manager_operation_contents_and_result ppf Format.fprintf ppf "@,Address: %a" Sc_rollup.Address.pp address ; pp_balance_updates_opt ppf balance_updates in + let pp_sc_rollup_add_messages_result + (Sc_rollup_add_messages_result {consumed_gas}) = + Format.fprintf ppf "@,Consumed gas: %a" Gas.Arith.pp consumed_gas + in let pp_result (type kind) ppf (result : kind manager_operation_result) = Format.fprintf ppf "@," ; match result with @@ -505,6 +518,19 @@ let pp_manager_operation_contents_and_result ppf "@[This rollup origination was BACKTRACKED, its expected \ effects (as follow) were NOT applied.@]" ; pp_sc_rollup_originate_result op + | Applied (Sc_rollup_add_messages_result _ as op) -> + Format.fprintf + ppf + "This operation sending a message to a smart contract rollup was \ + successfully applied" ; + pp_sc_rollup_add_messages_result op + | Backtracked ((Sc_rollup_add_messages_result _ as op), _errs) -> + Format.fprintf + ppf + "@[This operation sending a message to a smart contract rollup \ + was BACKTRACKED, its expected effects (as follow) were NOT \ + applied.@]" ; + pp_sc_rollup_add_messages_result op in Format.fprintf diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 4f64a8755d..2b46a28998 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -1773,6 +1773,33 @@ module Vote : sig val clear_current_proposal : context -> context tzresult Lwt.t end +(** See {!Sc_rollup_storage} and {!Sc_rollup_repr}. *) +module Sc_rollup : sig + module PVM : sig + type boot_sector + + val boot_sector_of_string : string -> boot_sector + end + + module Address : S.HASH + + type t = Address.t + + module Kind : sig + type t = Example_arith + + val encoding : t Data_encoding.t + end + + val originate : + context -> + kind:Kind.t -> + boot_sector:PVM.boot_sector -> + (t * Z.t * context) tzresult Lwt.t + + val kind : context -> t -> Kind.t option tzresult Lwt.t +end + module Block_payload : sig val hash : predecessor:Block_hash.t -> @@ -1901,33 +1928,6 @@ module Block_header : sig unit tzresult end -(** See {!Sc_rollup_storage} and {!Sc_rollup_repr}. *) -module Sc_rollup : sig - module PVM : sig - type boot_sector - - val boot_sector_of_string : string -> boot_sector - end - - module Address : S.HASH - - type t = Address.t - - module Kind : sig - type t = Example_arith - - val encoding : t Data_encoding.t - end - - val originate : - context -> - kind:Kind.t -> - boot_sector:PVM.boot_sector -> - (context * t * Z.t) tzresult Lwt.t - - val kind : context -> t -> Kind.t option tzresult Lwt.t -end - module Kind : sig type preendorsement_consensus_kind = Preendorsement_consensus_kind @@ -1978,6 +1978,8 @@ module Kind : sig type sc_rollup_originate = Sc_rollup_originate_kind + type sc_rollup_add_messages = Sc_rollup_add_messages_kind + type 'a manager = | Reveal_manager_kind : reveal manager | Transaction_manager_kind : transaction manager @@ -1987,6 +1989,7 @@ module Kind : sig | Set_deposits_limit_manager_kind : set_deposits_limit manager | Tx_rollup_origination_manager_kind : tx_rollup_origination manager | Sc_rollup_originate_manager_kind : sc_rollup_originate manager + | Sc_rollup_add_messages_manager_kind : sc_rollup_add_messages manager end type 'a consensus_operation_type = @@ -2110,6 +2113,11 @@ and _ manager_operation = boot_sector : Sc_rollup.PVM.boot_sector; } -> Kind.sc_rollup_originate manager_operation + | Sc_rollup_add_messages : { + rollup : Sc_rollup.t; + messages : string list; + } + -> Kind.sc_rollup_add_messages manager_operation and counter = Z.t @@ -2257,6 +2265,9 @@ module Operation : sig val sc_rollup_originate_case : Kind.sc_rollup_originate Kind.manager case + val sc_rollup_add_messages_case : + Kind.sc_rollup_add_messages Kind.manager case + module Manager_operations : sig type 'b case = | MCase : { @@ -2284,6 +2295,8 @@ module Operation : sig val tx_rollup_origination_case : Kind.tx_rollup_origination case val sc_rollup_originate_case : Kind.sc_rollup_originate case + + val sc_rollup_add_messages_case : Kind.sc_rollup_add_messages case end end diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 7c10d7e1be..75368b54e1 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -1156,15 +1156,20 @@ let apply_manager_operation_content : in return (ctxt, result, []) | Sc_rollup_originate {kind; boot_sector} -> - let open Sc_rollup_operations in assert_sc_rollup_feature_enabled ctxt >>=? fun () -> - originate ctxt ~kind ~boot_sector >>=? fun (ctxt, {address; size}) -> + Sc_rollup_operations.originate ctxt ~kind ~boot_sector + >>=? fun ({address; size}, ctxt) -> let consumed_gas = Gas.consumed ~since:before_operation ~until:ctxt in let result = Sc_rollup_originate_result {address; consumed_gas; size; balance_updates = []} in return (ctxt, result, []) + | Sc_rollup_add_messages {rollup = _; messages = _} -> + assert_sc_rollup_feature_enabled ctxt >>=? fun () -> + let consumed_gas = Gas.consumed ~since:before_operation ~until:ctxt in + let result = Sc_rollup_add_messages_result {consumed_gas} in + return (ctxt, result, []) type success_or_failure = Success of context | Failure @@ -1384,6 +1389,7 @@ let burn_storage_fees : >>=? fun (ctxt, storage_limit, balance_updates) -> let result = Sc_rollup_originate_result {payload with balance_updates} in return (ctxt, storage_limit, result) + | Sc_rollup_add_messages_result _ -> return (ctxt, storage_limit, smopr) let apply_manager_contents (type kind) ctxt mode chain_id ~gas_consumed_in_precheck (op : kind Kind.manager contents) : diff --git a/src/proto_alpha/lib_protocol/apply_results.ml b/src/proto_alpha/lib_protocol/apply_results.ml index fa6f00e0e6..5a8c1af14a 100644 --- a/src/proto_alpha/lib_protocol/apply_results.ml +++ b/src/proto_alpha/lib_protocol/apply_results.ml @@ -99,6 +99,10 @@ type _ successful_manager_operation_result = size : Z.t; } -> Kind.sc_rollup_originate successful_manager_operation_result + | Sc_rollup_add_messages_result : { + consumed_gas : Gas.Arith.fp; + } + -> Kind.sc_rollup_add_messages successful_manager_operation_result let migration_origination_result_to_successful_manager_operation_result ({ @@ -551,6 +555,30 @@ module Manager_result = struct assert (Gas.Arith.(equal (ceil consumed_milligas) consumed_gas)) ; Sc_rollup_originate_result {balance_updates; address; consumed_gas = consumed_milligas; size}) + + let sc_rollup_add_messages_case = + make + ~op_case:Operation.Encoding.Manager_operations.sc_rollup_add_messages_case + ~encoding: + (obj2 + (dft "consumed_gas" Gas.Arith.n_integral_encoding Gas.Arith.zero) + (dft "consumed_milligas" Gas.Arith.n_fp_encoding Gas.Arith.zero)) + ~iselect:(function + | Internal_operation_result + (({operation = Sc_rollup_add_messages _; _} as op), res) -> + Some (op, res) + | _ -> None) + ~select:(function + | Successful_manager_result (Sc_rollup_add_messages_result _ as op) -> + Some op + | _ -> None) + ~proj:(function + | Sc_rollup_add_messages_result {consumed_gas} -> + (Gas.Arith.ceil consumed_gas, consumed_gas)) + ~kind:Kind.Sc_rollup_add_messages_manager_kind + ~inj:(fun (consumed_gas, consumed_milligas) -> + assert (Gas.Arith.(equal (ceil consumed_milligas) consumed_gas)) ; + Sc_rollup_add_messages_result {consumed_gas = consumed_milligas}) end let internal_operation_result_encoding : @@ -589,6 +617,7 @@ let internal_operation_result_encoding : make Manager_result.set_deposits_limit_case; make Manager_result.tx_rollup_origination_case; make Manager_result.sc_rollup_originate_case; + make Manager_result.sc_rollup_add_messages_case; ] let successful_manager_operation_result_encoding : @@ -694,6 +723,10 @@ let equal_manager_kind : Kind.Sc_rollup_originate_manager_kind ) -> Some Eq | (Kind.Sc_rollup_originate_manager_kind, _) -> None + | ( Kind.Sc_rollup_add_messages_manager_kind, + Kind.Sc_rollup_add_messages_manager_kind ) -> + Some Eq + | (Kind.Sc_rollup_add_messages_manager_kind, _) -> None module Encoding = struct type 'kind case = @@ -1066,6 +1099,17 @@ module Encoding = struct res ) -> Some (op, res) | _ -> None) + + let[@coq_axiom_with_reason "gadt"] sc_rollup_add_messages_case = + make_manager_case + Operation.Encoding.sc_rollup_add_messages_case + Manager_result.sc_rollup_add_messages_case + (function + | Contents_and_result + ( (Manager_operation {operation = Sc_rollup_add_messages _; _} as op), + res ) -> + Some (op, res) + | _ -> None) end let contents_result_encoding = @@ -1104,6 +1148,7 @@ let contents_result_encoding = make set_deposits_limit_case; make tx_rollup_origination_case; make sc_rollup_originate_case; + make sc_rollup_add_messages_case; ] let contents_and_result_encoding = @@ -1147,6 +1192,7 @@ let contents_and_result_encoding = make set_deposits_limit_case; make tx_rollup_origination_case; make sc_rollup_originate_case; + make sc_rollup_add_messages_case; ] type 'kind contents_result_list = @@ -1476,6 +1522,32 @@ let kind_equal : } ) -> Some Eq | (Manager_operation {operation = Sc_rollup_originate _; _}, _) -> None + | ( Manager_operation {operation = Sc_rollup_add_messages _; _}, + Manager_operation_result + {operation_result = Applied (Sc_rollup_add_messages_result _); _} ) -> + Some Eq + | ( Manager_operation {operation = Sc_rollup_add_messages _; _}, + Manager_operation_result + {operation_result = Backtracked (Sc_rollup_add_messages_result _, _); _} + ) -> + Some Eq + | ( Manager_operation {operation = Sc_rollup_add_messages _; _}, + Manager_operation_result + { + operation_result = + Failed (Alpha_context.Kind.Sc_rollup_add_messages_manager_kind, _); + _; + } ) -> + Some Eq + | ( Manager_operation {operation = Sc_rollup_add_messages _; _}, + Manager_operation_result + { + operation_result = + Skipped Alpha_context.Kind.Sc_rollup_add_messages_manager_kind; + _; + } ) -> + Some Eq + | (Manager_operation {operation = Sc_rollup_add_messages _; _}, _) -> None let rec kind_equal_list : type kind kind2. diff --git a/src/proto_alpha/lib_protocol/apply_results.mli b/src/proto_alpha/lib_protocol/apply_results.mli index 2c520db0df..030fe39221 100644 --- a/src/proto_alpha/lib_protocol/apply_results.mli +++ b/src/proto_alpha/lib_protocol/apply_results.mli @@ -171,6 +171,10 @@ and _ successful_manager_operation_result = size : Z.t; } -> Kind.sc_rollup_originate successful_manager_operation_result + | Sc_rollup_add_messages_result : { + consumed_gas : Gas.Arith.fp; + } + -> Kind.sc_rollup_add_messages successful_manager_operation_result and packed_successful_manager_operation_result = | Successful_manager_result : diff --git a/src/proto_alpha/lib_protocol/operation_repr.ml b/src/proto_alpha/lib_protocol/operation_repr.ml index 15a222a675..a4cf880d30 100644 --- a/src/proto_alpha/lib_protocol/operation_repr.ml +++ b/src/proto_alpha/lib_protocol/operation_repr.ml @@ -75,6 +75,8 @@ module Kind = struct type sc_rollup_originate = Sc_rollup_originate_kind + type sc_rollup_add_messages = Sc_rollup_add_messages_kind + type 'a manager = | Reveal_manager_kind : reveal manager | Transaction_manager_kind : transaction manager @@ -84,6 +86,7 @@ module Kind = struct | Set_deposits_limit_manager_kind : set_deposits_limit manager | Tx_rollup_origination_manager_kind : tx_rollup_origination manager | Sc_rollup_originate_manager_kind : sc_rollup_originate manager + | Sc_rollup_add_messages_manager_kind : sc_rollup_add_messages manager end type 'a consensus_operation_type = @@ -267,6 +270,11 @@ and _ manager_operation = boot_sector : Sc_rollup_repr.PVM.boot_sector; } -> Kind.sc_rollup_originate manager_operation + | Sc_rollup_add_messages : { + rollup : Sc_rollup_repr.t; + messages : string list; + } + -> Kind.sc_rollup_add_messages manager_operation and counter = Z.t @@ -280,6 +288,7 @@ let manager_kind : type kind. kind manager_operation -> kind Kind.manager = | Set_deposits_limit _ -> Kind.Set_deposits_limit_manager_kind | Tx_rollup_origination -> Kind.Tx_rollup_origination_manager_kind | Sc_rollup_originate _ -> Kind.Sc_rollup_originate_manager_kind + | Sc_rollup_add_messages _ -> Kind.Sc_rollup_add_messages_manager_kind type 'kind internal_operation = { source : Contract_repr.contract; @@ -341,6 +350,10 @@ let tx_rollup_operation_tag_offset = 150 let sc_rollup_operation_tag_offset = 200 +let sc_rollup_operation_origination_tag = sc_rollup_operation_tag_offset + 0 + +let sc_rollup_operation_add_message_tag = sc_rollup_operation_tag_offset + 1 + module Encoding = struct open Data_encoding @@ -498,7 +511,7 @@ module Encoding = struct let[@coq_axiom_with_reason "gadt"] sc_rollup_originate_case = MCase { - tag = sc_rollup_operation_tag_offset + 0; + tag = sc_rollup_operation_origination_tag; name = "sc_rollup_originate"; encoding = obj2 @@ -514,6 +527,26 @@ module Encoding = struct (fun (kind, boot_sector) -> Sc_rollup_originate {kind; boot_sector}); } + let[@coq_axiom_with_reason "gadt"] sc_rollup_add_messages_case = + MCase + { + tag = sc_rollup_operation_add_message_tag; + name = "sc_rollup_add_messages"; + encoding = + obj2 + (req "rollup" Sc_rollup_repr.encoding) + (req "message" (list string)); + select = + (function + | Manager (Sc_rollup_add_messages _ as op) -> Some op | _ -> None); + proj = + (function + | Sc_rollup_add_messages {rollup; messages} -> (rollup, messages)); + inj = + (fun (rollup, messages) -> + Sc_rollup_add_messages {rollup; messages}); + } + let encoding = let make (MCase {tag; name; encoding; select; proj; inj}) = case @@ -535,6 +568,7 @@ module Encoding = struct make set_deposits_limit_case; make tx_rollup_origination_case; make sc_rollup_originate_case; + make sc_rollup_add_messages_case; ] end @@ -840,9 +874,14 @@ module Encoding = struct let sc_rollup_originate_case = make_manager_case - sc_rollup_operation_tag_offset + sc_rollup_operation_origination_tag Manager_operations.sc_rollup_originate_case + let sc_rollup_add_messages_case = + make_manager_case + sc_rollup_operation_add_message_tag + Manager_operations.sc_rollup_add_messages_case + let contents_encoding = let make (Case {tag; name; encoding; select; proj; inj}) = case @@ -873,6 +912,7 @@ module Encoding = struct make register_global_constant_case; make tx_rollup_origination_case; make sc_rollup_originate_case; + make sc_rollup_add_messages_case; ] let contents_list_encoding = @@ -1076,6 +1116,8 @@ let equal_manager_operation_kind : | (Tx_rollup_origination, _) -> None | (Sc_rollup_originate _, Sc_rollup_originate _) -> Some Eq | (Sc_rollup_originate _, _) -> None + | (Sc_rollup_add_messages _, Sc_rollup_add_messages _) -> Some Eq + | (Sc_rollup_add_messages _, _) -> None let equal_contents_kind : type a b. a contents -> b contents -> (a, b) eq option = @@ -1168,6 +1210,7 @@ let internal_manager_operation_size (type a) (op : a manager_operation) = (fun _ -> Contract_repr.public_key_hash_in_memory_size) pkh_opt ) | Sc_rollup_originate _ -> (Nodes.zero, h2w) + | Sc_rollup_add_messages _ -> (Nodes.zero, h2w) | Reveal _ -> (* Reveals can't occur as internal operations *) assert false diff --git a/src/proto_alpha/lib_protocol/operation_repr.mli b/src/proto_alpha/lib_protocol/operation_repr.mli index dd279466c4..a574805f95 100644 --- a/src/proto_alpha/lib_protocol/operation_repr.mli +++ b/src/proto_alpha/lib_protocol/operation_repr.mli @@ -100,6 +100,8 @@ module Kind : sig type sc_rollup_originate = Sc_rollup_originate_kind + type sc_rollup_add_messages = Sc_rollup_add_messages_kind + type 'a manager = | Reveal_manager_kind : reveal manager | Transaction_manager_kind : transaction manager @@ -109,6 +111,7 @@ module Kind : sig | Set_deposits_limit_manager_kind : set_deposits_limit manager | Tx_rollup_origination_manager_kind : tx_rollup_origination manager | Sc_rollup_originate_manager_kind : sc_rollup_originate manager + | Sc_rollup_add_messages_manager_kind : sc_rollup_add_messages manager end type 'a consensus_operation_type = @@ -245,6 +248,11 @@ and _ manager_operation = boot_sector : Sc_rollup_repr.PVM.boot_sector; } -> Kind.sc_rollup_originate manager_operation + | Sc_rollup_add_messages : { + rollup : Sc_rollup_repr.t; + messages : string list; + } + -> Kind.sc_rollup_add_messages manager_operation and counter = Z.t @@ -368,6 +376,9 @@ module Encoding : sig val sc_rollup_originate_case : Kind.sc_rollup_originate Kind.manager case + val sc_rollup_add_messages_case : + Kind.sc_rollup_add_messages Kind.manager case + module Manager_operations : sig type 'b case = | MCase : { @@ -395,5 +406,7 @@ module Encoding : sig val tx_rollup_origination_case : Kind.tx_rollup_origination case val sc_rollup_originate_case : Kind.sc_rollup_originate case + + val sc_rollup_add_messages_case : Kind.sc_rollup_add_messages case end end diff --git a/src/proto_alpha/lib_protocol/sc_rollup_operations.ml b/src/proto_alpha/lib_protocol/sc_rollup_operations.ml index 9f47daf444..e630070088 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_operations.ml +++ b/src/proto_alpha/lib_protocol/sc_rollup_operations.ml @@ -29,5 +29,5 @@ open Sc_rollup type origination_result = {address : Address.t; size : Z.t} let originate ctxt ~kind ~boot_sector = - originate ctxt ~kind ~boot_sector >>=? fun (ctxt, address, size) -> - return (ctxt, {address; size}) + originate ctxt ~kind ~boot_sector >>=? fun (address, size, ctxt) -> + return ({address; size}, ctxt) diff --git a/src/proto_alpha/lib_protocol/sc_rollup_operations.mli b/src/proto_alpha/lib_protocol/sc_rollup_operations.mli index c8f31e0637..d5c5b2fcfd 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_operations.mli +++ b/src/proto_alpha/lib_protocol/sc_rollup_operations.mli @@ -34,4 +34,4 @@ val originate : context -> kind:Sc_rollup.Kind.t -> boot_sector:Sc_rollup.PVM.boot_sector -> - (context * origination_result) tzresult Lwt.t + (origination_result * context) tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/sc_rollup_storage.ml b/src/proto_alpha/lib_protocol/sc_rollup_storage.ml index c9500266b5..1b8c06e4af 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_storage.ml +++ b/src/proto_alpha/lib_protocol/sc_rollup_storage.ml @@ -40,6 +40,6 @@ let originate ctxt ~kind ~boot_sector = Z.of_int (origination_size + stored_kind_size + boot_sector_size + addresses_size) in - return (ctxt, address, size) + return (address, size, ctxt) let kind ctxt address = Storage.Sc_rollup.PVM_kind.find ctxt address diff --git a/src/proto_alpha/lib_protocol/sc_rollup_storage.mli b/src/proto_alpha/lib_protocol/sc_rollup_storage.mli index 3086e14cf1..d472ce3d57 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_storage.mli +++ b/src/proto_alpha/lib_protocol/sc_rollup_storage.mli @@ -34,7 +34,7 @@ val originate : Raw_context.t -> kind:Sc_rollup_repr.Kind.t -> boot_sector:Sc_rollup_repr.PVM.boot_sector -> - (Raw_context.t * Sc_rollup_repr.Address.t * Z.t) tzresult Lwt.t + (Sc_rollup_repr.Address.t * Z.t * Raw_context.t) tzresult Lwt.t (** [kind context address] returns [Some kind] iff [address] is an existing rollup of some [kind]. Returns [None] if [address] is diff --git a/src/proto_alpha/lib_protocol/test/helpers/block.ml b/src/proto_alpha/lib_protocol/test/helpers/block.ml index b90f625708..9fa55faa4b 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/block.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/block.ml @@ -692,8 +692,9 @@ let bake_n_with_all_balance_updates ?(baking_mode = Application) ?policy fun (Successful_manager_result r) -> match r with | Reveal_result _ | Delegation_result _ - | Set_deposits_limit_result _ | Sc_rollup_originate_result _ - | Tx_rollup_origination_result _ -> + | Set_deposits_limit_result _ | Tx_rollup_origination_result _ + | Sc_rollup_originate_result _ | Sc_rollup_add_messages_result _ + -> balance_updates_rev | Transaction_result {balance_updates; _} | Origination_result {balance_updates; _} @@ -722,7 +723,8 @@ let bake_n_with_origination_results ?(baking_mode = Application) ?policy n b = | Successful_manager_result (Register_global_constant_result _) | Successful_manager_result (Set_deposits_limit_result _) | Successful_manager_result (Tx_rollup_origination_result _) - | Successful_manager_result (Sc_rollup_originate_result _) -> + | Successful_manager_result (Sc_rollup_originate_result _) + | Successful_manager_result (Sc_rollup_add_messages_result _) -> origination_results_rev | Successful_manager_result (Origination_result x) -> Origination_result x :: origination_results_rev) From d0d78c5c69dd62425bcf2c5e3b3e33d0cb4ff777 Mon Sep 17 00:00:00 2001 From: Ilias Garnier Date: Mon, 3 Jan 2022 16:29:39 +0100 Subject: [PATCH 0095/1220] Proto,SCORU: Add dummy inbox implementation --- .../lib_client/operation_result.ml | 9 +- src/proto_alpha/lib_protocol/TEZOS_PROTOCOL | 1 + src/proto_alpha/lib_protocol/alpha_context.ml | 1 + .../lib_protocol/alpha_context.mli | 15 +++ src/proto_alpha/lib_protocol/apply.ml | 6 +- src/proto_alpha/lib_protocol/apply_results.ml | 17 +-- .../lib_protocol/apply_results.mli | 1 + src/proto_alpha/lib_protocol/dune.inc | 5 + .../lib_protocol/sc_rollup_inbox.ml | 105 ++++++++++++++++++ .../lib_protocol/sc_rollup_inbox.mli | 52 +++++++++ .../lib_protocol/sc_rollup_storage.ml | 16 ++- .../lib_protocol/sc_rollup_storage.mli | 18 +++ src/proto_alpha/lib_protocol/storage.ml | 13 ++- src/proto_alpha/lib_protocol/storage.mli | 8 +- 14 files changed, 253 insertions(+), 14 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/sc_rollup_inbox.ml create mode 100644 src/proto_alpha/lib_protocol/sc_rollup_inbox.mli diff --git a/src/proto_alpha/lib_client/operation_result.ml b/src/proto_alpha/lib_client/operation_result.ml index 9a598355b9..754d4d5f77 100644 --- a/src/proto_alpha/lib_client/operation_result.ml +++ b/src/proto_alpha/lib_client/operation_result.ml @@ -435,8 +435,13 @@ let pp_manager_operation_contents_and_result ppf pp_balance_updates_opt ppf balance_updates in let pp_sc_rollup_add_messages_result - (Sc_rollup_add_messages_result {consumed_gas}) = - Format.fprintf ppf "@,Consumed gas: %a" Gas.Arith.pp consumed_gas + (Sc_rollup_add_messages_result {consumed_gas; inbox_after}) = + Format.fprintf ppf "@,Consumed gas: %a" Gas.Arith.pp consumed_gas ; + Format.fprintf + ppf + "@,Resulting inbox state: %a" + Sc_rollup.Inbox.pp + inbox_after in let pp_result (type kind) ppf (result : kind manager_operation_result) = Format.fprintf ppf "@," ; diff --git a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL index 773866de6a..01ab87f823 100644 --- a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL +++ b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL @@ -14,6 +14,7 @@ "Block_payload_hash", "Origination_nonce", + "Sc_rollup_inbox", "Sc_rollup_repr", "Slot_repr", "Tez_repr", diff --git a/src/proto_alpha/lib_protocol/alpha_context.ml b/src/proto_alpha/lib_protocol/alpha_context.ml index 438b6deeea..d4706d7c73 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.ml +++ b/src/proto_alpha/lib_protocol/alpha_context.ml @@ -60,6 +60,7 @@ end module Sc_rollup = struct include Sc_rollup_repr include Sc_rollup_storage + module Inbox = Sc_rollup_inbox end module Entrypoint = Entrypoint_repr diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 2b46a28998..4049cb49da 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -1798,6 +1798,21 @@ module Sc_rollup : sig (t * Z.t * context) tzresult Lwt.t val kind : context -> t -> Kind.t option tzresult Lwt.t + + module Inbox : sig + type t + + val encoding : t Data_encoding.encoding + + val pp : Format.formatter -> t -> unit + end + + val rpc_arg : t RPC_arg.t + + val add_messages : + context -> t -> string list -> (Inbox.t * Z.t * context) tzresult Lwt.t + + val inbox : context -> t -> (Inbox.t * context) tzresult Lwt.t end module Block_payload : sig diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 75368b54e1..f4e07926e0 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -1165,10 +1165,12 @@ let apply_manager_operation_content : {address; consumed_gas; size; balance_updates = []} in return (ctxt, result, []) - | Sc_rollup_add_messages {rollup = _; messages = _} -> + | Sc_rollup_add_messages {rollup; messages} -> assert_sc_rollup_feature_enabled ctxt >>=? fun () -> + Sc_rollup.add_messages ctxt rollup messages + >>=? fun (inbox_after, _size, ctxt) -> let consumed_gas = Gas.consumed ~since:before_operation ~until:ctxt in - let result = Sc_rollup_add_messages_result {consumed_gas} in + let result = Sc_rollup_add_messages_result {consumed_gas; inbox_after} in return (ctxt, result, []) type success_or_failure = Success of context | Failure diff --git a/src/proto_alpha/lib_protocol/apply_results.ml b/src/proto_alpha/lib_protocol/apply_results.ml index 5a8c1af14a..5206292a82 100644 --- a/src/proto_alpha/lib_protocol/apply_results.ml +++ b/src/proto_alpha/lib_protocol/apply_results.ml @@ -101,6 +101,7 @@ type _ successful_manager_operation_result = -> Kind.sc_rollup_originate successful_manager_operation_result | Sc_rollup_add_messages_result : { consumed_gas : Gas.Arith.fp; + inbox_after : Sc_rollup.Inbox.t; } -> Kind.sc_rollup_add_messages successful_manager_operation_result @@ -560,9 +561,10 @@ module Manager_result = struct make ~op_case:Operation.Encoding.Manager_operations.sc_rollup_add_messages_case ~encoding: - (obj2 - (dft "consumed_gas" Gas.Arith.n_integral_encoding Gas.Arith.zero) - (dft "consumed_milligas" Gas.Arith.n_fp_encoding Gas.Arith.zero)) + (obj3 + (req "consumed_gas" Gas.Arith.n_integral_encoding) + (dft "consumed_milligas" Gas.Arith.n_fp_encoding Gas.Arith.zero) + (req "inbox_after" Sc_rollup.Inbox.encoding)) ~iselect:(function | Internal_operation_result (({operation = Sc_rollup_add_messages _; _} as op), res) -> @@ -573,12 +575,13 @@ module Manager_result = struct Some op | _ -> None) ~proj:(function - | Sc_rollup_add_messages_result {consumed_gas} -> - (Gas.Arith.ceil consumed_gas, consumed_gas)) + | Sc_rollup_add_messages_result {consumed_gas; inbox_after} -> + (Gas.Arith.ceil consumed_gas, consumed_gas, inbox_after)) ~kind:Kind.Sc_rollup_add_messages_manager_kind - ~inj:(fun (consumed_gas, consumed_milligas) -> + ~inj:(fun (consumed_gas, consumed_milligas, inbox_after) -> assert (Gas.Arith.(equal (ceil consumed_milligas) consumed_gas)) ; - Sc_rollup_add_messages_result {consumed_gas = consumed_milligas}) + Sc_rollup_add_messages_result + {consumed_gas = consumed_milligas; inbox_after}) end let internal_operation_result_encoding : diff --git a/src/proto_alpha/lib_protocol/apply_results.mli b/src/proto_alpha/lib_protocol/apply_results.mli index 030fe39221..15fafa83ed 100644 --- a/src/proto_alpha/lib_protocol/apply_results.mli +++ b/src/proto_alpha/lib_protocol/apply_results.mli @@ -173,6 +173,7 @@ and _ successful_manager_operation_result = -> Kind.sc_rollup_originate successful_manager_operation_result | Sc_rollup_add_messages_result : { consumed_gas : Gas.Arith.fp; + inbox_after : Sc_rollup.Inbox.t; } -> Kind.sc_rollup_add_messages successful_manager_operation_result diff --git a/src/proto_alpha/lib_protocol/dune.inc b/src/proto_alpha/lib_protocol/dune.inc index 42b61fb174..c1e17006bf 100644 --- a/src/proto_alpha/lib_protocol/dune.inc +++ b/src/proto_alpha/lib_protocol/dune.inc @@ -39,6 +39,7 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end blinded_public_key_hash.mli blinded_public_key_hash.ml block_payload_hash.mli block_payload_hash.ml origination_nonce.mli origination_nonce.ml + sc_rollup_inbox.mli sc_rollup_inbox.ml sc_rollup_repr.mli sc_rollup_repr.ml slot_repr.mli slot_repr.ml tez_repr.mli tez_repr.ml @@ -176,6 +177,7 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end blinded_public_key_hash.mli blinded_public_key_hash.ml block_payload_hash.mli block_payload_hash.ml origination_nonce.mli origination_nonce.ml + sc_rollup_inbox.mli sc_rollup_inbox.ml sc_rollup_repr.mli sc_rollup_repr.ml slot_repr.mli slot_repr.ml tez_repr.mli tez_repr.ml @@ -313,6 +315,7 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end blinded_public_key_hash.mli blinded_public_key_hash.ml block_payload_hash.mli block_payload_hash.ml origination_nonce.mli origination_nonce.ml + sc_rollup_inbox.mli sc_rollup_inbox.ml sc_rollup_repr.mli sc_rollup_repr.ml slot_repr.mli slot_repr.ml tez_repr.mli tez_repr.ml @@ -472,6 +475,7 @@ include Tezos_raw_protocol_alpha.Main Blinded_public_key_hash Block_payload_hash Origination_nonce + Sc_rollup_inbox Sc_rollup_repr Slot_repr Tez_repr @@ -650,6 +654,7 @@ include Tezos_raw_protocol_alpha.Main blinded_public_key_hash.mli blinded_public_key_hash.ml block_payload_hash.mli block_payload_hash.ml origination_nonce.mli origination_nonce.ml + sc_rollup_inbox.mli sc_rollup_inbox.ml sc_rollup_repr.mli sc_rollup_repr.ml slot_repr.mli slot_repr.ml tez_repr.mli tez_repr.ml diff --git a/src/proto_alpha/lib_protocol/sc_rollup_inbox.ml b/src/proto_alpha/lib_protocol/sc_rollup_inbox.ml new file mode 100644 index 0000000000..c862c93c21 --- /dev/null +++ b/src/proto_alpha/lib_protocol/sc_rollup_inbox.ml @@ -0,0 +1,105 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(* 32 *) +let inbox_hash = "\003\250\174\238\208" (* scib1(55) *) + +module Inbox_hash = struct + let prefix = "scib1" + + let encoded_size = 55 + + module H = + Blake2B.Make + (Base58) + (struct + let name = "inbox_hash" + + let title = "The hash of a the inbox of a smart contract rollup" + + let b58check_prefix = inbox_hash + + (* defaults to 32 *) + let size = None + end) + + include H + + let () = Base58.check_encoded_prefix b58check_encoding prefix encoded_size + + include Path_encoding.Make_hex (H) +end + +type hash = Inbox_hash.t + +type t = {hash : hash; inbox_size : int64} + +let pp_hash = Inbox_hash.pp + +let pp fmtr {hash; inbox_size} = + Format.fprintf + fmtr + "@[{ hash = %a;@,inbox_size = %Ld }@]" + pp_hash + hash + inbox_size + +let hash_encoding = Inbox_hash.encoding + +let encoding = + let open Data_encoding in + conv + (fun {hash; inbox_size} -> (hash, inbox_size)) + (fun (hash, inbox_size) -> {hash; inbox_size}) + (obj2 (req "hash" hash_encoding) (req "inbox_size" int64)) + +let message_encoding = + let open Data_encoding in + obj3 + (req "parent" hash_encoding) + (req "payload" string) + (req "level" Raw_level_repr.encoding) + +let number_of_available_messages {inbox_size; hash = _} = Z.of_int64 inbox_size + +let empty = {hash = Inbox_hash.zero; inbox_size = 0L} + +let add_message {hash; inbox_size} message level = + let message_bytes = + Data_encoding.Binary.to_bytes_exn message_encoding (hash, message, level) + in + let hash = Inbox_hash.hash_bytes [message_bytes] in + {hash; inbox_size = Int64.succ inbox_size} + +let add_messages messages level inbox = + List.fold_left + (fun inbox message -> add_message inbox message level) + inbox + messages + +let consume_n_messages n {hash; inbox_size} = + if Compare.Int.(n < 0) then None + else if Compare.Int64.(Int64.of_int n > inbox_size) then None + else Some {hash; inbox_size = Int64.sub inbox_size (Int64.of_int n)} diff --git a/src/proto_alpha/lib_protocol/sc_rollup_inbox.mli b/src/proto_alpha/lib_protocol/sc_rollup_inbox.mli new file mode 100644 index 0000000000..3580760f75 --- /dev/null +++ b/src/proto_alpha/lib_protocol/sc_rollup_inbox.mli @@ -0,0 +1,52 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Merkelizing inbox for smart contract rollups. *) + +(** The type of the in-memory state of the inbox for a smart contract rollup. *) +type t + +val pp : Format.formatter -> t -> unit + +val encoding : t Data_encoding.t + +(** [number_of_available_messages inbox] returns the number of + messages that can be consumed in [inbox]. *) +val number_of_available_messages : t -> Z.t + +(** The empty inbox. *) +val empty : t + +(** [add_messages msg_list level inbox] adds [msg_list] to [inbox] at + level [level] (preserving their order). *) +val add_messages : string list -> Raw_level_repr.t -> t -> t + +(** [consume_n_messages n inbox] returns an inbox where [n] messages have + been consumed, or [None] if there are strictly less than [n] messages + available in [inbox]. + + @raise Invalid_argument if [n <= 0] + *) +val consume_n_messages : int -> t -> t option diff --git a/src/proto_alpha/lib_protocol/sc_rollup_storage.ml b/src/proto_alpha/lib_protocol/sc_rollup_storage.ml index 1b8c06e4af..b72a5a3081 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_storage.ml +++ b/src/proto_alpha/lib_protocol/sc_rollup_storage.ml @@ -28,6 +28,8 @@ let originate ctxt ~kind ~boot_sector = Sc_rollup_repr.Address.from_nonce nonce >>?= fun address -> Storage.Sc_rollup.PVM_kind.add ctxt address kind >>= fun ctxt -> Storage.Sc_rollup.Boot_sector.add ctxt address boot_sector >>= fun ctxt -> + Storage.Sc_rollup.Inbox.init ctxt address Sc_rollup_inbox.empty + >>=? fun (ctxt, size_diff) -> let addresses_size = 2 * Sc_rollup_repr.Address.size in let stored_kind_size = 2 (* because tag_size of kind encoding is 16bits. *) in let boot_sector_size = @@ -38,8 +40,20 @@ let originate ctxt ~kind ~boot_sector = let origination_size = Constants_storage.sc_rollup_origination_size ctxt in let size = Z.of_int - (origination_size + stored_kind_size + boot_sector_size + addresses_size) + (origination_size + stored_kind_size + boot_sector_size + addresses_size + + size_diff) in return (address, size, ctxt) let kind ctxt address = Storage.Sc_rollup.PVM_kind.find ctxt address + +let add_messages ctxt rollup messages = + Storage.Sc_rollup.Inbox.get ctxt rollup >>=? fun (ctxt, inbox) -> + let {Level_repr.level; _} = Raw_context.current_level ctxt in + let inbox = Sc_rollup_inbox.add_messages messages level inbox in + Storage.Sc_rollup.Inbox.update ctxt rollup inbox >>=? fun (ctxt, size) -> + return (inbox, Z.of_int size, ctxt) + +let inbox ctxt rollup = + Storage.Sc_rollup.Inbox.get ctxt rollup >>=? fun (ctxt, res) -> + return (res, ctxt) diff --git a/src/proto_alpha/lib_protocol/sc_rollup_storage.mli b/src/proto_alpha/lib_protocol/sc_rollup_storage.mli index d472ce3d57..f8350fe22f 100644 --- a/src/proto_alpha/lib_protocol/sc_rollup_storage.mli +++ b/src/proto_alpha/lib_protocol/sc_rollup_storage.mli @@ -43,3 +43,21 @@ val kind : Raw_context.t -> Sc_rollup_repr.t -> Sc_rollup_repr.Kind.t option tzresult Lwt.t + +(** [add_message context rollup msg] adds [msg] to [rollup]'s inbox. + + This function is carbonated and returns the updated context as well as + the size diff. *) +val add_messages : + Raw_context.t -> + Sc_rollup_repr.t -> + string list -> + (Sc_rollup_inbox.t * Z.t * Raw_context.t) tzresult Lwt.t + +(** [inbox context rollup] returns the current state of the inbox. + + This function is carbonated. *) +val inbox : + Raw_context.t -> + Sc_rollup_repr.t -> + (Sc_rollup_inbox.t * Raw_context.t) tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/storage.ml b/src/proto_alpha/lib_protocol/storage.ml index 26e832f5c8..828f0046ec 100644 --- a/src/proto_alpha/lib_protocol/storage.ml +++ b/src/proto_alpha/lib_protocol/storage.ml @@ -1663,7 +1663,7 @@ module Sc_rollup = struct - a PVM kind (provided at creation time, read-only) ; - a boot sector (provided at creation time, read-only). - + - a merkelized inbox, of which only the root hash is stored *) module PVM_kind = Indexed_context.Make_map @@ -1686,4 +1686,15 @@ module Sc_rollup = struct let encoding = Sc_rollup_repr.PVM.boot_sector_encoding end) + + module Inbox = + Indexed_context.Make_carbonated_map + (struct + let name = ["inbox"] + end) + (struct + type t = Sc_rollup_inbox.t + + let encoding = Sc_rollup_inbox.encoding + end) end diff --git a/src/proto_alpha/lib_protocol/storage.mli b/src/proto_alpha/lib_protocol/storage.mli index f5e3334e6d..c982c34234 100644 --- a/src/proto_alpha/lib_protocol/storage.mli +++ b/src/proto_alpha/lib_protocol/storage.mli @@ -711,7 +711,7 @@ module Sc_rollup : sig - a PVM kind (provided at creation time, read-only) ; - a boot sector (provided at creation time, read-only). - + - a merkelized inbox, of which only the root hash is stored *) module PVM_kind : Indexed_data_storage @@ -724,4 +724,10 @@ module Sc_rollup : sig with type key = Sc_rollup_repr.t and type value = Sc_rollup_repr.PVM.boot_sector and type t := Raw_context.t + + module Inbox : + Non_iterable_indexed_carbonated_data_storage + with type key = Sc_rollup_repr.t + and type value = Sc_rollup_inbox.t + and type t := Raw_context.t end From fdc567b01c5e183da2051c196f379e455576b287 Mon Sep 17 00:00:00 2001 From: Ilias Garnier Date: Wed, 8 Dec 2021 16:29:28 +0100 Subject: [PATCH 0096/1220] Client,SCORU: Add client command for add_message --- .../lib_client/client_proto_context.ml | 33 +++++ .../lib_client/client_proto_context.mli | 25 ++++ .../client_proto_context_commands.ml | 119 ++++++++++++++++++ 3 files changed, 177 insertions(+) diff --git a/src/proto_alpha/lib_client/client_proto_context.ml b/src/proto_alpha/lib_client/client_proto_context.ml index 97b2768cf7..ae75c1f8e3 100644 --- a/src/proto_alpha/lib_client/client_proto_context.ml +++ b/src/proto_alpha/lib_client/client_proto_context.ml @@ -814,3 +814,36 @@ let sc_rollup_originate (cctxt : #full) ~chain ~block ?confirmations ?dry_run match Apply_results.pack_contents_list op result with | Apply_results.Single_and_result ((Manager_operation _ as op), result) -> return (oph, op, result) + +let sc_rollup_add_messages (cctxt : #full) ~chain ~block ?confirmations ?dry_run + ?verbose_signing ?simulation ?fee ?gas_limit ?storage_limit ?counter ~source + ~rollup ~messages ~src_pk ~src_sk ~fee_parameter () = + let op = + Annotated_manager_operation.Single_manager + (Injection.prepare_manager_operation + ~fee:(Limit.of_option fee) + ~gas_limit:(Limit.of_option gas_limit) + ~storage_limit:(Limit.of_option storage_limit) + (Sc_rollup_add_messages {rollup; messages})) + in + Injection.inject_manager_operation + cctxt + ~chain + ~block + ?confirmations + ?dry_run + ?verbose_signing + ?simulation + ?counter + ~source + ~fee:(Limit.of_option fee) + ~storage_limit:(Limit.of_option storage_limit) + ~gas_limit:(Limit.of_option gas_limit) + ~src_pk + ~src_sk + ~fee_parameter + op + >>=? fun (oph, op, result) -> + match Apply_results.pack_contents_list op result with + | Apply_results.Single_and_result ((Manager_operation _ as op), result) -> + return (oph, op, result) diff --git a/src/proto_alpha/lib_client/client_proto_context.mli b/src/proto_alpha/lib_client/client_proto_context.mli index 1d1895ad6f..6fdbc4e621 100644 --- a/src/proto_alpha/lib_client/client_proto_context.mli +++ b/src/proto_alpha/lib_client/client_proto_context.mli @@ -434,3 +434,28 @@ val sc_rollup_originate : tztrace ) result Lwt.t + +val sc_rollup_add_messages : + #Protocol_client_context.full -> + chain:Chain_services.chain -> + block:Block_services.block -> + ?confirmations:int -> + ?dry_run:bool -> + ?verbose_signing:bool -> + ?simulation:bool -> + ?fee:Tez.t -> + ?gas_limit:Gas.Arith.integral -> + ?storage_limit:counter -> + ?counter:counter -> + source:public_key_hash -> + rollup:Alpha_context.Sc_rollup.t -> + messages:string list -> + src_pk:public_key -> + src_sk:Client_keys.sk_uri -> + fee_parameter:Injection.fee_parameter -> + unit -> + (Operation_hash.t + * Kind.sc_rollup_add_messages Kind.manager contents + * Kind.sc_rollup_add_messages Kind.manager Apply_results.contents_result) + tzresult + Lwt.t diff --git a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml index 9fa5e21205..591df1d6ea 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml @@ -98,6 +98,32 @@ let boot_sector_param = in file_or_text_parameter ~from_text () +let messages_param = + let from_path path = + Lwt_utils_unix.Json.read_file path >>=? fun json -> return (`Json json) + in + let from_text text = + try return (`Json (Ezjsonm.from_string text)) + with Ezjsonm.Parse_error _ -> + failwith "Given text is not valid JSON: '%s'" text + in + Clic.parameter @@ fun _ p -> + match String.split ~limit:1 ':' p with + | ["bin"; path] -> + Lwt_utils_unix.read_file path >>= fun bin -> return (`Bin bin) + | ["text"; text] -> from_text text + | ["file"; path] -> from_path path + | _ -> if Sys.file_exists p then from_path p else from_text p + +let rollup_address_param = + Clic.parameter (fun _ name -> + match Sc_rollup.Address.of_b58check_opt name with + | None -> + failwith + "Parameter '%s' is not a valid B58-encoded rollup address" + name + | Some addr -> return addr) + let group = { Clic.name = "context"; @@ -2145,6 +2171,99 @@ let commands_rw () = ~boot_sector () >>=? fun _res -> return_unit); + command + ~group + ~desc:"Send one or more messages to a smart-contract rollup." + (args12 + fee_arg + dry_run_switch + verbose_signing_switch + simulate_switch + minimal_fees_arg + minimal_nanotez_per_byte_arg + minimal_nanotez_per_gas_unit_arg + storage_limit_arg + counter_arg + force_low_fee_arg + fee_cap_arg + burn_cap_arg) + (prefixes ["send"; "sc"; "rollup"; "message"] + @@ param + ~name:"messages" + ~desc: + "the message(s) to be sent to the rollup (syntax: \ + bin:|text:|file:)" + messages_param + @@ prefixes ["from"] + @@ ContractAlias.destination_param + ~name:"src" + ~desc:"name of the source contract" + @@ prefixes ["to"] + @@ param + ~name:"dst" + ~desc:"address of the destination rollup" + rollup_address_param + @@ stop) + (fun ( fee, + dry_run, + verbose_signing, + simulation, + minimal_fees, + minimal_nanotez_per_byte, + minimal_nanotez_per_gas_unit, + storage_limit, + counter, + force_low_fee, + fee_cap, + burn_cap ) + messages + (_, source) + rollup + cctxt -> + (match Contract.is_implicit source with + | None -> failwith "Only implicit accounts can send messages to rollups" + | Some source -> return source) + >>=? fun source -> + (match messages with + | `Bin message -> return [message] + | `Json messages -> ( + match Data_encoding.(Json.destruct (list bytes) messages) with + | exception _ -> + failwith + "Could not read list of messages (expected list of bytes)" + | messages -> return (List.map Bytes.to_string messages))) + >>=? fun messages -> + Client_keys.get_key cctxt source >>=? fun (_, src_pk, src_sk) -> + let fee_parameter = + { + Injection.minimal_fees; + minimal_nanotez_per_byte; + minimal_nanotez_per_gas_unit; + force_low_fee; + fee_cap; + burn_cap; + } + in + sc_rollup_add_messages + cctxt + ~chain:cctxt#chain + ~block:cctxt#block + ?dry_run:(Some dry_run) + ?verbose_signing:(Some verbose_signing) + ?fee + ?storage_limit + ?counter + ?confirmations:cctxt#confirmations + ~simulation + ~source + ~rollup + ~messages + ~src_pk + ~src_sk + ~fee_parameter + () + >>=? fun _res -> return_unit); ] let commands network () = From a3ccf818740067416503316e80edd8cb5c633903 Mon Sep 17 00:00:00 2001 From: Ilias Garnier Date: Mon, 3 Jan 2022 16:33:08 +0100 Subject: [PATCH 0097/1220] Proto,SCORU: Add GET RPC for inbox Co-Authored-By: Hans Hoglund --- src/proto_alpha/lib_plugin/plugin.ml | 63 +++++++++++++++++----------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 4a23ca89b2..e302e23a17 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -2576,6 +2576,45 @@ module RPC = struct unparsing_mode end + module Sc_rollup = struct + open Data_encoding + + module S = struct + let path = + (RPC_path.(open_root / "context" / "sc_rollup") + : RPC_context.t RPC_path.context) + + let kind = + RPC_service.get_service + ~description:"Kind of smart-contract rollup" + ~query:RPC_query.empty + ~output:(obj1 (opt "kind" Sc_rollup.Kind.encoding)) + RPC_path.(path /: Sc_rollup.Address.rpc_arg / "kind") + + let inbox = + RPC_service.get_service + ~description:"Inbox for a smart-contract rollup" + ~query:RPC_query.empty + ~output:Sc_rollup.Inbox.encoding + RPC_path.(path /: Sc_rollup.Address.rpc_arg / "inbox") + end + + let kind ctxt block sc_rollup_address = + RPC_context.make_call1 S.kind ctxt block sc_rollup_address () + + let register_inbox () = + Registration.register1 ~chunked:true S.inbox (fun ctxt rollup () () -> + Sc_rollup.inbox ctxt rollup >>=? fun (inbox, _ctxt) -> return inbox) + + let register_kind () = + Registration.register1 ~chunked:true S.kind @@ fun ctxt address () () -> + Alpha_context.Sc_rollup.kind ctxt address + + let register () = + register_kind () ; + register_inbox () + end + module Forge = struct module S = struct open Data_encoding @@ -3342,30 +3381,6 @@ module RPC = struct RPC_path.(path / "round") end - module Sc_rollup = struct - open Data_encoding - - module S = struct - let path = RPC_path.(open_root / "context" / "sc_rollup") - - let kind = - RPC_service.get_service - ~description:"Kind of smart contract rollup" - ~query:RPC_query.empty - ~output:(obj1 (opt "kind" Sc_rollup.Kind.encoding)) - RPC_path.(path /: Sc_rollup.Address.rpc_arg / "kind") - end - - let kind ctxt block sc_rollup_address = - RPC_context.make_call1 S.kind ctxt block sc_rollup_address () - - let register_kind () = - Registration.register1 ~chunked:true S.kind @@ fun ctxt address () () -> - Sc_rollup.kind ctxt address - - let register () = register_kind () - end - type Environment.Error_monad.error += Negative_level_offset let () = From be4a3afe947a6b76ccc8cf86712a1482a60e3673 Mon Sep 17 00:00:00 2001 From: Hans Hoglund Date: Mon, 3 Jan 2022 14:11:07 +0100 Subject: [PATCH 0098/1220] Tezt,SCORU: Update regression tests outputs --- .../_regressions/rpc/alpha.client.mempool.out | 242 +++++++++++++++++- tezt/_regressions/rpc/alpha.proxy.mempool.out | 242 +++++++++++++++++- .../sc_rollup_node_configuration.out | 2 +- tezt/_regressions/sc_rollup_origination.out | 2 +- 4 files changed, 480 insertions(+), 8 deletions(-) diff --git a/tezt/_regressions/rpc/alpha.client.mempool.out b/tezt/_regressions/rpc/alpha.client.mempool.out index a861ab0043..ac756eef9f 100644 --- a/tezt/_regressions/rpc/alpha.client.mempool.out +++ b/tezt/_regressions/rpc/alpha.client.mempool.out @@ -1807,9 +1807,61 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' "kind" ], "additionalProperties": false + }, + { + "title": "Sc_rollup_add_messages", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "sc_rollup_add_messages" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/alpha.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "rollup": { + "$ref": "#/definitions/alpha.rollup_address" + }, + "message": { + "type": "array", + "items": { + "$ref": "#/definitions/unistring" + } + } + }, + "required": [ + "message", + "rollup", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false } ] }, + "alpha.rollup_address": { + "title": "A smart contract rollup address", + "description": "A smart contract rollup is identified by a base58 address starting with scr1", + "$ref": "#/definitions/unistring" + }, "alpha.scripted.contracts": { "type": "object", "properties": { @@ -2145,6 +2197,29 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' "description": { "title": "X_1" }, + "encoding": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + } + }, + { + "description": { + "title": "X_2" + }, "encoding": { "tag_size": "Uint16", "kind": { @@ -2493,7 +2568,7 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' }, { "description": { - "title": "X_2" + "title": "X_3" }, "encoding": { "fields": [ @@ -3908,7 +3983,7 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' { "name": "parameters", "layout": { - "name": "X_2", + "name": "X_3", "kind": "Ref" }, "data_kind": { @@ -4447,7 +4522,7 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' { "name": "kind", "layout": { - "name": "X_1", + "name": "X_2", "kind": "Ref" }, "data_kind": { @@ -4473,6 +4548,115 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' } ], "name": "Sc_rollup_originate" + }, + { + "tag": 201, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "dyn", + "name": "alpha.rollup_address", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "rollup", + "layout": { + "kind": "String" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "message", + "layout": { + "layout": { + "name": "X_1", + "kind": "Ref" + }, + "kind": "Seq" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ], + "name": "Sc_rollup_add_messages" } ] } @@ -6354,9 +6538,61 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' "kind" ], "additionalProperties": false + }, + { + "title": "Sc_rollup_add_messages", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "sc_rollup_add_messages" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/alpha.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "rollup": { + "$ref": "#/definitions/alpha.rollup_address" + }, + "message": { + "type": "array", + "items": { + "$ref": "#/definitions/unistring" + } + } + }, + "required": [ + "message", + "rollup", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false } ] }, + "alpha.rollup_address": { + "title": "A smart contract rollup address", + "description": "A smart contract rollup is identified by a base58 address starting with scr1", + "$ref": "#/definitions/unistring" + }, "alpha.scripted.contracts": { "type": "object", "properties": { diff --git a/tezt/_regressions/rpc/alpha.proxy.mempool.out b/tezt/_regressions/rpc/alpha.proxy.mempool.out index b7fd93ad5e..0a15c549af 100644 --- a/tezt/_regressions/rpc/alpha.proxy.mempool.out +++ b/tezt/_regressions/rpc/alpha.proxy.mempool.out @@ -1823,9 +1823,61 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' "kind" ], "additionalProperties": false + }, + { + "title": "Sc_rollup_add_messages", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "sc_rollup_add_messages" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/alpha.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "rollup": { + "$ref": "#/definitions/alpha.rollup_address" + }, + "message": { + "type": "array", + "items": { + "$ref": "#/definitions/unistring" + } + } + }, + "required": [ + "message", + "rollup", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false } ] }, + "alpha.rollup_address": { + "title": "A smart contract rollup address", + "description": "A smart contract rollup is identified by a base58 address starting with scr1", + "$ref": "#/definitions/unistring" + }, "alpha.scripted.contracts": { "type": "object", "properties": { @@ -2161,6 +2213,29 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' "description": { "title": "X_1" }, + "encoding": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + } + }, + { + "description": { + "title": "X_2" + }, "encoding": { "tag_size": "Uint16", "kind": { @@ -2509,7 +2584,7 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' }, { "description": { - "title": "X_2" + "title": "X_3" }, "encoding": { "fields": [ @@ -3924,7 +3999,7 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' { "name": "parameters", "layout": { - "name": "X_2", + "name": "X_3", "kind": "Ref" }, "data_kind": { @@ -4463,7 +4538,7 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' { "name": "kind", "layout": { - "name": "X_1", + "name": "X_2", "kind": "Ref" }, "data_kind": { @@ -4489,6 +4564,115 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' } ], "name": "Sc_rollup_originate" + }, + { + "tag": 201, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "dyn", + "name": "alpha.rollup_address", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "rollup", + "layout": { + "kind": "String" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "message", + "layout": { + "layout": { + "name": "X_1", + "kind": "Ref" + }, + "kind": "Seq" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ], + "name": "Sc_rollup_add_messages" } ] } @@ -6370,9 +6554,61 @@ curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' "kind" ], "additionalProperties": false + }, + { + "title": "Sc_rollup_add_messages", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "sc_rollup_add_messages" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/alpha.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "rollup": { + "$ref": "#/definitions/alpha.rollup_address" + }, + "message": { + "type": "array", + "items": { + "$ref": "#/definitions/unistring" + } + } + }, + "required": [ + "message", + "rollup", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false } ] }, + "alpha.rollup_address": { + "title": "A smart contract rollup address", + "description": "A smart contract rollup is identified by a base58 address starting with scr1", + "$ref": "#/definitions/unistring" + }, "alpha.scripted.contracts": { "type": "object", "properties": { diff --git a/tezt/_regressions/sc_rollup_node_configuration.out b/tezt/_regressions/sc_rollup_node_configuration.out index 2552370d37..03f4263a64 100644 --- a/tezt/_regressions/sc_rollup_node_configuration.out +++ b/tezt/_regressions/sc_rollup_node_configuration.out @@ -1,2 +1,2 @@ tezt/_regressions/sc_rollup_node_configuration.out -{"sc-rollup-address":"scr1FMbLCKVD19Lx9WYqsiHfyt2VMne55espu","rpc-port":17384} +{"sc-rollup-address":"scr1YrJSFLQkZrLtE6m5pEogVP1zf4WGNiwo1","rpc-port":17384} diff --git a/tezt/_regressions/sc_rollup_origination.out b/tezt/_regressions/sc_rollup_origination.out index f331e57cf6..dd6b837fad 100644 --- a/tezt/_regressions/sc_rollup_origination.out +++ b/tezt/_regressions/sc_rollup_origination.out @@ -1,2 +1,2 @@ tezt/_regressions/sc_rollup_origination.out -scr1FMbLCKVD19Lx9WYqsiHfyt2VMne55espu +scr1YrJSFLQkZrLtE6m5pEogVP1zf4WGNiwo1 From 34e5212bd2dfe5725187d3295d59c51ec80d653a Mon Sep 17 00:00:00 2001 From: Yann Regis-Gianas Date: Fri, 7 Jan 2022 12:31:26 +0100 Subject: [PATCH 0099/1220] Tezt,SCORU: Add a basic test for inbox Signed-off-by: Yann Regis-Gianas --- src/proto_alpha/lib_plugin/plugin.ml | 4 ++ tezt/_regressions/sc_rollup_inbox.out | 1 + tezt/lib_tezos/RPC.ml | 12 ++++++ tezt/lib_tezos/RPC.mli | 12 ++++++ tezt/lib_tezos/client.ml | 17 +++++++++ tezt/lib_tezos/client.mli | 20 ++++++++++ tezt/tests/sc_rollup.ml | 53 ++++++++++++++++++++++++++- 7 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 tezt/_regressions/sc_rollup_inbox.out diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index e302e23a17..0360e939d2 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -2604,6 +2604,10 @@ module RPC = struct let register_inbox () = Registration.register1 ~chunked:true S.inbox (fun ctxt rollup () () -> + Stdlib.Format.eprintf + "@[Context level at RPC time at %a@]@." + Level.pp + (Level.current ctxt) ; Sc_rollup.inbox ctxt rollup >>=? fun (inbox, _ctxt) -> return inbox) let register_kind () = diff --git a/tezt/_regressions/sc_rollup_inbox.out b/tezt/_regressions/sc_rollup_inbox.out new file mode 100644 index 0000000000..9c1b331dee --- /dev/null +++ b/tezt/_regressions/sc_rollup_inbox.out @@ -0,0 +1 @@ +tezt/_regressions/sc_rollup_inbox.out diff --git a/tezt/lib_tezos/RPC.ml b/tezt/lib_tezos/RPC.ml index 26948d303f..bce6526ea1 100644 --- a/tezt/lib_tezos/RPC.ml +++ b/tezt/lib_tezos/RPC.ml @@ -646,6 +646,18 @@ module Tx_rollup = struct Client.rpc ?endpoint ?hooks GET path client end +module Sc_rollup = struct + let path ~chain ~block ~sc_rollup_address = + [ + "chains"; chain; "blocks"; block; "context"; "sc_rollup"; sc_rollup_address; + ] + + let get_inbox ?endpoint ?hooks ?(chain = "main") ?(block = "head") + ~sc_rollup_address client = + let path = path ~chain ~block ~sc_rollup_address @ ["inbox"] in + Client.rpc ?endpoint ?hooks GET path client +end + module Curl = struct let curl_path_cache = ref None diff --git a/tezt/lib_tezos/RPC.mli b/tezt/lib_tezos/RPC.mli index c7192d9382..abedc550c3 100644 --- a/tezt/lib_tezos/RPC.mli +++ b/tezt/lib_tezos/RPC.mli @@ -975,6 +975,18 @@ module Tx_rollup : sig JSON.t Lwt.t end +module Sc_rollup : sig + (** Call RPC /chain/[chain]/blocks/[block]/context/sc_rollup/[rollup_hash]/state *) + val get_inbox : + ?endpoint:Client.endpoint -> + ?hooks:Process.hooks -> + ?chain:string -> + ?block:string -> + sc_rollup_address:string -> + Client.t -> + JSON.t Lwt.t +end + module Curl : sig (** [get ()] returns [Some curl] where [curl ~url] returns the raw response obtained by curl when requesting [url]. Returns [None] if [curl] cannot be found. *) diff --git a/tezt/lib_tezos/client.ml b/tezt/lib_tezos/client.ml index b7548c1faa..73a39678f9 100644 --- a/tezt/lib_tezos/client.ml +++ b/tezt/lib_tezos/client.ml @@ -1118,6 +1118,23 @@ let originate_sc_rollup ?wait ?burn_cap ~src ~kind ~boot_sector client = let* output = Process.check_and_read_stdout process in parse_rollup_address_in_receipt output +let spawn_send_sc_rollup_message ?(wait = "none") ?burn_cap ~msg ~src ~dst + client = + spawn_command + client + (["--wait"; wait] + @ ["send"; "sc"; "rollup"; "message"; msg; "from"; src; "to"; dst] + @ Option.fold + ~none:[] + ~some:(fun burn_cap -> ["--burn-cap"; Tez.to_string burn_cap]) + burn_cap) + +let send_sc_rollup_message ?wait ?burn_cap ~msg ~src ~dst client = + let process = + spawn_send_sc_rollup_message ?wait ?burn_cap ~msg ~src ~dst client + in + Process.check process + let init ?path ?admin_path ?name ?color ?base_dir ?endpoint ?media_type () = let client = create ?path ?admin_path ?name ?color ?base_dir ?endpoint ?media_type () diff --git a/tezt/lib_tezos/client.mli b/tezt/lib_tezos/client.mli index f96916d27d..b86a8e5015 100644 --- a/tezt/lib_tezos/client.mli +++ b/tezt/lib_tezos/client.mli @@ -828,6 +828,26 @@ val spawn_originate_sc_rollup : t -> Process.t +(** Run [tezos-client send rollup message from to ]. *) +val send_sc_rollup_message : + ?wait:string -> + ?burn_cap:Tez.t -> + msg:string -> + src:string -> + dst:string -> + t -> + unit Lwt.t + +(** Same as [send_sc_rollup_message], but do not wait for the process to exit. *) +val spawn_send_sc_rollup_message : + ?wait:string -> + ?burn_cap:Tez.t -> + msg:string -> + src:string -> + dst:string -> + t -> + Process.t + (** {2 High-Level Functions} *) (** Create a client with mode [Client] and import all secret keys diff --git a/tezt/tests/sc_rollup.ml b/tezt/tests/sc_rollup.ml index 8047100689..8447ed6adb 100644 --- a/tezt/tests/sc_rollup.ml +++ b/tezt/tests/sc_rollup.ml @@ -198,8 +198,59 @@ let test_rollup_client_gets_address = rollup_address_from_client) ; return ()) +(* Pushing message in the inbox + ---------------------------- + + A message can be pushed to a smart-contract rollup inbox through + the Tezos node. Then we can observe that the messages are included in the + inbox. +*) +let test_rollup_inbox = + let output_file = "sc_rollup_inbox" in + test + ~__FILE__ + ~output_file + ~tags:["inbox"] + "pushing messages in the inbox" + (fun protocol -> + setup ~protocol @@ fun node client -> + ( with_fresh_rollup @@ fun sc_rollup_address _sc_rollup_node _filename -> + let send msg = + let* () = + Client.send_sc_rollup_message + ~src:"bootstrap1" + ~dst:sc_rollup_address + ~msg + client + in + Client.bake_for client + in + let n = 10 in + let messages = + range 1 n |> fun is -> + List.map + (fun i -> + Printf.sprintf "text:[%s]" @@ String.concat ", " + @@ List.map (fun _ -> Printf.sprintf "\"CAFEBABE\"") (range 1 i)) + is + in + let* () = Lwt_list.iter_s send messages in + let* () = Client.bake_for client in + let* inbox = RPC.Sc_rollup.get_inbox ~sc_rollup_address client in + (List.assoc_opt "inbox_size" (JSON.as_object inbox) |> function + | None -> failwith "inbox_size is undefined" + | Some inbox_size -> + Check.( + (JSON.as_int inbox_size = n * (n + 1) / 2) + int + ~error_msg:"expected value %R, got %L")) ; + return () ) + node + client) + let register ~protocols = test_origination ~protocols ; test_rollup_node_configuration ~protocols ; test_rollup_node_running ~protocols ; - test_rollup_client_gets_address ~protocols + test_rollup_client_gets_address ~protocols ; + test_rollup_inbox ~protocols From eed1589cd5ed6281eaf19547f44b7c18d02160ec Mon Sep 17 00:00:00 2001 From: Yann Regis-Gianas Date: Mon, 10 Jan 2022 17:21:28 +0100 Subject: [PATCH 0100/1220] Proto,SCORU: Fix dependency order Signed-off-by: Yann Regis-Gianas --- src/proto_alpha/lib_protocol/TEZOS_PROTOCOL | 4 ++-- src/proto_alpha/lib_protocol/dune.inc | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL index 01ab87f823..048ea910ea 100644 --- a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL +++ b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL @@ -14,8 +14,6 @@ "Block_payload_hash", "Origination_nonce", - "Sc_rollup_inbox", - "Sc_rollup_repr", "Slot_repr", "Tez_repr", "Period_repr", @@ -30,6 +28,8 @@ "Fitness_repr", "Cycle_repr", "Level_repr", + "Sc_rollup_inbox", + "Sc_rollup_repr", "Seed_repr", "Sampler", "Voting_period_repr", diff --git a/src/proto_alpha/lib_protocol/dune.inc b/src/proto_alpha/lib_protocol/dune.inc index c1e17006bf..a5a26bb854 100644 --- a/src/proto_alpha/lib_protocol/dune.inc +++ b/src/proto_alpha/lib_protocol/dune.inc @@ -39,8 +39,6 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end blinded_public_key_hash.mli blinded_public_key_hash.ml block_payload_hash.mli block_payload_hash.ml origination_nonce.mli origination_nonce.ml - sc_rollup_inbox.mli sc_rollup_inbox.ml - sc_rollup_repr.mli sc_rollup_repr.ml slot_repr.mli slot_repr.ml tez_repr.mli tez_repr.ml period_repr.mli period_repr.ml @@ -55,6 +53,8 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end fitness_repr.mli fitness_repr.ml cycle_repr.mli cycle_repr.ml level_repr.mli level_repr.ml + sc_rollup_inbox.mli sc_rollup_inbox.ml + sc_rollup_repr.mli sc_rollup_repr.ml seed_repr.mli seed_repr.ml sampler.mli sampler.ml voting_period_repr.mli voting_period_repr.ml @@ -177,8 +177,6 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end blinded_public_key_hash.mli blinded_public_key_hash.ml block_payload_hash.mli block_payload_hash.ml origination_nonce.mli origination_nonce.ml - sc_rollup_inbox.mli sc_rollup_inbox.ml - sc_rollup_repr.mli sc_rollup_repr.ml slot_repr.mli slot_repr.ml tez_repr.mli tez_repr.ml period_repr.mli period_repr.ml @@ -193,6 +191,8 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end fitness_repr.mli fitness_repr.ml cycle_repr.mli cycle_repr.ml level_repr.mli level_repr.ml + sc_rollup_inbox.mli sc_rollup_inbox.ml + sc_rollup_repr.mli sc_rollup_repr.ml seed_repr.mli seed_repr.ml sampler.mli sampler.ml voting_period_repr.mli voting_period_repr.ml @@ -315,8 +315,6 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end blinded_public_key_hash.mli blinded_public_key_hash.ml block_payload_hash.mli block_payload_hash.ml origination_nonce.mli origination_nonce.ml - sc_rollup_inbox.mli sc_rollup_inbox.ml - sc_rollup_repr.mli sc_rollup_repr.ml slot_repr.mli slot_repr.ml tez_repr.mli tez_repr.ml period_repr.mli period_repr.ml @@ -331,6 +329,8 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end fitness_repr.mli fitness_repr.ml cycle_repr.mli cycle_repr.ml level_repr.mli level_repr.ml + sc_rollup_inbox.mli sc_rollup_inbox.ml + sc_rollup_repr.mli sc_rollup_repr.ml seed_repr.mli seed_repr.ml sampler.mli sampler.ml voting_period_repr.mli voting_period_repr.ml @@ -475,8 +475,6 @@ include Tezos_raw_protocol_alpha.Main Blinded_public_key_hash Block_payload_hash Origination_nonce - Sc_rollup_inbox - Sc_rollup_repr Slot_repr Tez_repr Period_repr @@ -491,6 +489,8 @@ include Tezos_raw_protocol_alpha.Main Fitness_repr Cycle_repr Level_repr + Sc_rollup_inbox + Sc_rollup_repr Seed_repr Sampler Voting_period_repr @@ -654,8 +654,6 @@ include Tezos_raw_protocol_alpha.Main blinded_public_key_hash.mli blinded_public_key_hash.ml block_payload_hash.mli block_payload_hash.ml origination_nonce.mli origination_nonce.ml - sc_rollup_inbox.mli sc_rollup_inbox.ml - sc_rollup_repr.mli sc_rollup_repr.ml slot_repr.mli slot_repr.ml tez_repr.mli tez_repr.ml period_repr.mli period_repr.ml @@ -670,6 +668,8 @@ include Tezos_raw_protocol_alpha.Main fitness_repr.mli fitness_repr.ml cycle_repr.mli cycle_repr.ml level_repr.mli level_repr.ml + sc_rollup_inbox.mli sc_rollup_inbox.ml + sc_rollup_repr.mli sc_rollup_repr.ml seed_repr.mli seed_repr.ml sampler.mli sampler.ml voting_period_repr.mli voting_period_repr.ml From 4932a6bc3fac9d17eb66b315fa89fc747e9f1f7d Mon Sep 17 00:00:00 2001 From: Marcin Pastudzki Date: Fri, 7 Jan 2022 13:06:16 +0100 Subject: [PATCH 0101/1220] Tezt: Add a regression test measuring gas costs of calling views. --- tezt/_regressions/run_views.out | 252 ++++++++++++++++++++++++++++++++ tezt/lib_tezos/client.ml | 25 ++-- tezt/lib_tezos/client.mli | 18 ++- tezt/tests/main.ml | 1 + tezt/tests/views.ml | 158 ++++++++++++++++++++ 5 files changed, 442 insertions(+), 12 deletions(-) create mode 100644 tezt/_regressions/run_views.out create mode 100644 tezt/tests/views.ml diff --git a/tezt/_regressions/run_views.out b/tezt/_regressions/run_views.out new file mode 100644 index 0000000000..57e07aa186 --- /dev/null +++ b/tezt/_regressions/run_views.out @@ -0,0 +1,252 @@ +tezt/_regressions/run_views.out + +./tezos-client --mode mockup --base-dir '' --wait none originate contract register_calls transferring 0 from bootstrap1 running ' +parameter unit; +storage (list address); +code { + CDR ; + SOURCE ; + CONS ; + NIL operation ; + PAIR ; + }; +view "calls_count" unit nat { CDR ; SIZE }; +view "last_caller" unit (option address) { CDR ; IF_CONS { DIP { DROP } ; SOME } { NONE address } }; +' --init '{}' --burn-cap 1 +Node is bootstrapped. +Estimated gas: 1417.213 units (will add 100 for safety) +Estimated storage: 409 bytes added (will add 20 for safety) +Operation successfully injected in the node. +Operation hash is 'oo5VNxswL6HtEs7vaoTekiDz9QE5ZXW2DV6H4h5DnCuEtyUfhmt' +NOT waiting for the operation to be included. +Use command + tezos-client wait for oo5VNxswL6HtEs7vaoTekiDz9QE5ZXW2DV6H4h5DnCuEtyUfhmt to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + Fee to the baker: ꜩ0.000531 + Expected counter: 1 + Gas limit: 1518 + Storage limit: 429 bytes + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000531 + payload fees(the block proposer) ....... +ꜩ0.000531 + Origination: + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + Credit: ꜩ0 + Script: + { parameter unit ; + storage (list address) ; + code { CDR ; SOURCE ; CONS ; NIL operation ; PAIR } ; + view "calls_count" unit nat { CDR ; SIZE } ; + view "last_caller" + unit + (option address) + { CDR ; IF_CONS { DIP { DROP } ; SOME } { NONE address } } } + Initial storage: {} + No delegate for this contract + This origination was successfully applied + Originated contracts: + KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD + Storage size: 152 bytes + Paid storage size diff: 152 bytes + Consumed gas: 1417.213 + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.038 + storage fees ........................... +ꜩ0.038 + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.06425 + storage fees ........................... +ꜩ0.06425 + +New contract KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD originated. +Contract memorized as register_calls. + +./tezos-client --mode mockup --base-dir '' --wait none originate contract check_caller transferring 0 from bootstrap1 running ' +parameter address ; +storage (option address) ; +code { + CAR ; + DUP ; + UNIT ; + VIEW "calls_count" nat ; + IF_NONE { UNIT ; FAILWITH } {} ; + DIP { + UNIT ; + VIEW "last_caller" (option address) ; + } ; + PUSH nat 0 ; + /* Check if the caller address is consistent with given calls count. */ + IFCMPEQ { + IF_NONE { UNIT ; FAILWITH } { IF_NONE {} { UNIT ; FAILWITH }} ; + NONE address ; + } + { + IF_NONE { UNIT ; FAILWITH } { IF_NONE { UNIT ; FAILWITH } {}} ; + SOME ; + } ; + NIL operation ; + PAIR ; + } + ' --init None --burn-cap 1 +Node is bootstrapped. +Estimated gas: 1432.729 units (will add 100 for safety) +Estimated storage: 465 bytes added (will add 20 for safety) +Operation successfully injected in the node. +Operation hash is 'ooYj2QbiRiwv8K5dGfGVn6RhN29WLZsUBSkPHpTWJ68iZhCxBcw' +NOT waiting for the operation to be included. +Use command + tezos-client wait for ooYj2QbiRiwv8K5dGfGVn6RhN29WLZsUBSkPHpTWJ68iZhCxBcw to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + Fee to the baker: ꜩ0.000589 + Expected counter: 2 + Gas limit: 1533 + Storage limit: 485 bytes + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000589 + payload fees(the block proposer) ....... +ꜩ0.000589 + Origination: + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + Credit: ꜩ0 + Script: + { parameter address ; + storage (option address) ; + code { CAR ; + DUP ; + UNIT ; + VIEW "calls_count" nat ; + IF_NONE { UNIT ; FAILWITH } {} ; + DIP { UNIT ; VIEW "last_caller" (option address) } ; + PUSH nat 0 ; + IFCMPEQ + { IF_NONE { UNIT ; FAILWITH } { IF_NONE {} { UNIT ; FAILWITH } } ; + NONE address } + { IF_NONE { UNIT ; FAILWITH } { IF_NONE { UNIT ; FAILWITH } {} } ; + SOME } ; + NIL operation ; + PAIR } } + Initial storage: None + No delegate for this contract + This origination was successfully applied + Originated contracts: + KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L + Storage size: 208 bytes + Paid storage size diff: 208 bytes + Consumed gas: 1432.729 + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.052 + storage fees ........................... +ꜩ0.052 + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.06425 + storage fees ........................... +ꜩ0.06425 + +New contract KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L originated. +Contract memorized as check_caller. + +./tezos-client --mode mockup --base-dir '' --wait none transfer 1 from bootstrap1 to KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L --burn-cap 1 --arg '"KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD"' +Node is bootstrapped. +Estimated gas: 4448.948 units (will add 100 for safety) +Estimated storage: no bytes added +Operation successfully injected in the node. +Operation hash is 'ooeWJ1x8vuNSdxzJnQPjw3Jz9XMJFqJe1Cga8quXXbWcucEujBy' +NOT waiting for the operation to be included. +Use command + tezos-client wait for ooeWJ1x8vuNSdxzJnQPjw3Jz9XMJFqJe1Cga8quXXbWcucEujBy to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + Fee to the baker: ꜩ0.000751 + Expected counter: 3 + Gas limit: 4549 + Storage limit: 0 bytes + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000751 + payload fees(the block proposer) ....... +ꜩ0.000751 + Transaction: + Amount: ꜩ1 + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + To: KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L + Parameter: "KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD" + This transaction was successfully applied + Updated storage: None + Storage size: 208 bytes + Consumed gas: 4449.746 + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ1 + KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L ... +ꜩ1 + + +./tezos-client --mode mockup --base-dir '' --wait none transfer 1 from bootstrap1 to KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD --burn-cap 1 +Node is bootstrapped. +Estimated gas: 2067.348 units (will add 100 for safety) +Estimated storage: 27 bytes added (will add 20 for safety) +Operation successfully injected in the node. +Operation hash is 'ooqdCJ1FcbQQtnEg3bJA2CWxvv1To8aVBGgnBT7nYpU7zFM33pW' +NOT waiting for the operation to be included. +Use command + tezos-client wait for ooqdCJ1FcbQQtnEg3bJA2CWxvv1To8aVBGgnBT7nYpU7zFM33pW to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + Fee to the baker: ꜩ0.000467 + Expected counter: 4 + Gas limit: 2168 + Storage limit: 47 bytes + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000467 + payload fees(the block proposer) ....... +ꜩ0.000467 + Transaction: + Amount: ꜩ1 + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + To: KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD + This transaction was successfully applied + Updated storage: { 0x000002298c03ed7d454a101eb7022bc95f7e5f41ac78 } + Storage size: 179 bytes + Paid storage size diff: 27 bytes + Consumed gas: 2068.260 + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.00675 + storage fees ........................... +ꜩ0.00675 + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ1 + KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD ... +ꜩ1 + + +./tezos-client --mode mockup --base-dir '' --wait none transfer 1 from bootstrap1 to KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L --burn-cap 1 --arg '"KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD"' +Node is bootstrapped. +Estimated gas: 5761.955 units (will add 100 for safety) +Estimated storage: 27 bytes added (will add 20 for safety) +Operation successfully injected in the node. +Operation hash is 'oohh2J6m4DnZ9e4d57NeUfNjK3eWQh5xcTxoCLGwCyktxswEYUp' +NOT waiting for the operation to be included. +Use command + tezos-client wait for oohh2J6m4DnZ9e4d57NeUfNjK3eWQh5xcTxoCLGwCyktxswEYUp to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + Fee to the baker: ꜩ0.000883 + Expected counter: 5 + Gas limit: 5862 + Storage limit: 47 bytes + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000883 + payload fees(the block proposer) ....... +ꜩ0.000883 + Transaction: + Amount: ꜩ1 + From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx + To: KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L + Parameter: "KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD" + This transaction was successfully applied + Updated storage: (Some 0x000002298c03ed7d454a101eb7022bc95f7e5f41ac78) + Storage size: 235 bytes + Paid storage size diff: 27 bytes + Consumed gas: 5762.753 + Balance updates: + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.00675 + storage fees ........................... +ꜩ0.00675 + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ1 + KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L ... +ꜩ1 + diff --git a/tezt/lib_tezos/client.ml b/tezt/lib_tezos/client.ml index 73a39678f9..b90b0a930e 100644 --- a/tezt/lib_tezos/client.ml +++ b/tezt/lib_tezos/client.ml @@ -567,10 +567,11 @@ let gen_and_show_keys ?alias client = let* alias = gen_keys ?alias client in show_address ~alias client -let spawn_transfer ?endpoint ?(wait = "none") ?burn_cap ?fee ?gas_limit +let spawn_transfer ?hooks ?endpoint ?(wait = "none") ?burn_cap ?fee ?gas_limit ?storage_limit ?counter ?arg ~amount ~giver ~receiver client = spawn_command ?endpoint + ?hooks client (["--wait"; wait] @ ["transfer"; Tez.to_string amount; "from"; giver; "to"; receiver] @@ -596,10 +597,11 @@ let spawn_transfer ?endpoint ?(wait = "none") ?burn_cap ?fee ?gas_limit counter @ Option.fold ~none:[] ~some:(fun p -> ["--arg"; p]) arg) -let transfer ?endpoint ?wait ?burn_cap ?fee ?gas_limit ?storage_limit ?counter - ?arg ~amount ~giver ~receiver client = +let transfer ?hooks ?endpoint ?wait ?burn_cap ?fee ?gas_limit ?storage_limit + ?counter ?arg ~amount ~giver ~receiver client = spawn_transfer ?endpoint + ?hooks ?wait ?burn_cap ?fee @@ -743,9 +745,10 @@ let spawn_submit_ballot ?(key = Constant.bootstrap1.alias) ?(wait = "none") let submit_ballot ?key ?wait ~proto_hash vote client = spawn_submit_ballot ?key ?wait ~proto_hash vote client |> Process.check -let spawn_originate_contract ?endpoint ?(wait = "none") ?init ?burn_cap ~alias - ~amount ~src ~prg client = +let spawn_originate_contract ?hooks ?endpoint ?(wait = "none") ?init ?burn_cap + ~alias ~amount ~src ~prg client = spawn_command + ?hooks ?endpoint client (["--wait"; wait] @@ -782,11 +785,12 @@ let convert_script_to_json ?endpoint ~script client = let convert_data_to_json ?endpoint ~data client = convert_michelson_to_json ~kind:"data" ?endpoint ~input:data client -let originate_contract ?endpoint ?wait ?init ?burn_cap ~alias ~amount ~src ~prg - client = +let originate_contract ?hooks ?endpoint ?wait ?init ?burn_cap ~alias ~amount + ~src ~prg client = let* client_output = spawn_originate_contract ?endpoint + ?hooks ?wait ?init ?burn_cap @@ -885,14 +889,15 @@ let stresstest ?endpoint ?source_aliases ?source_pkhs ?source_accounts ?seed client |> Process.check -let spawn_run_script ~src ~storage ~input client = +let spawn_run_script ?hooks ~src ~storage ~input client = spawn_command + ?hooks client ["run"; "script"; src; "on"; "storage"; storage; "and"; "input"; input] -let run_script ~src ~storage ~input client = +let run_script ?hooks ~src ~storage ~input client = let* client_output = - spawn_run_script ~src ~storage ~input client + spawn_run_script ?hooks ~src ~storage ~input client |> Process.check_and_read_stdout in match client_output =~* rex "storage\n(.*)" with diff --git a/tezt/lib_tezos/client.mli b/tezt/lib_tezos/client.mli index b86a8e5015..a96e74c045 100644 --- a/tezt/lib_tezos/client.mli +++ b/tezt/lib_tezos/client.mli @@ -413,6 +413,7 @@ val gen_and_show_keys : ?alias:string -> t -> Account.key Lwt.t (** Run [tezos-client transfer amount from giver to receiver]. *) val transfer : + ?hooks:Process.hooks -> ?endpoint:endpoint -> ?wait:string -> ?burn_cap:Tez.t -> @@ -429,6 +430,7 @@ val transfer : (** Same as [transfer], but do not wait for the process to exit. *) val spawn_transfer : + ?hooks:Process.hooks -> ?endpoint:endpoint -> ?wait:string -> ?burn_cap:Tez.t -> @@ -563,6 +565,7 @@ val spawn_submit_ballot : (** Run [tezos-client originate contract alias transferring amount from src running prg]. Returns the originated contract hash *) val originate_contract : + ?hooks:Process.hooks -> ?endpoint:endpoint -> ?wait:string -> ?init:string -> @@ -576,6 +579,7 @@ val originate_contract : (** Same as [originate_contract], but do not wait for the process to exit. *) val spawn_originate_contract : + ?hooks:Process.hooks -> ?endpoint:endpoint -> ?wait:string -> ?init:string -> @@ -653,11 +657,21 @@ val spawn_stresstest : Fails if the new storage cannot be extracted from the output. *) val run_script : - src:string -> storage:string -> input:string -> t -> string Lwt.t + ?hooks:Process.hooks -> + src:string -> + storage:string -> + input:string -> + t -> + string Lwt.t (** Same as [run_script] but do not wait for the process to exit. *) val spawn_run_script : - src:string -> storage:string -> input:string -> t -> Process.t + ?hooks:Process.hooks -> + src:string -> + storage:string -> + input:string -> + t -> + Process.t (** Run [tezos-client register global constant value from src]. Returns the address hash of the new constant. *) diff --git a/tezt/tests/main.ml b/tezt/tests/main.ml index 7e706555d8..792fd66ccb 100644 --- a/tezt/tests/main.ml +++ b/tezt/tests/main.ml @@ -108,5 +108,6 @@ let () = Manager_operations.register ~protocols ; Replace_by_fees.register ~protocols:[Alpha] ; Sc_rollup.register ~protocols:[Alpha] ; + Views.register ~protocols:[Alpha] () ; (* Test.run () should be the last statement, don't register afterwards! *) Test.run () diff --git a/tezt/tests/views.ml b/tezt/tests/views.ml new file mode 100644 index 0000000000..96ff3770ce --- /dev/null +++ b/tezt/tests/views.ml @@ -0,0 +1,158 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(* Testing + ------- + Component: Michelson + Invocation: dune exec tezt/tests/main.exe -- --file views.ml + Subject: Call smart contract views to catch performance regressions. + *) + +(* This contract registers all SOURCE addresses that ever call it. It has views + that return registered callers count and the last caller address respectively. *) +let register_callers_src = + {| +parameter unit; +storage (list address); +code { + CDR ; + SOURCE ; + CONS ; + NIL operation ; + PAIR ; + }; +view "calls_count" unit nat { CDR ; SIZE }; +view "last_caller" unit (option address) { CDR ; IF_CONS { DIP { DROP } ; SOME } { NONE address } }; +|} + +(* This script calls views on register_callers contract and verifies whether + its responses are consistent, i.e. if the view calls_count returned 0, then + last caller is None, otherwise – it's Some address. *) +let check_caller_src = + {| +parameter address ; +storage (option address) ; +code { + CAR ; + DUP ; + UNIT ; + VIEW "calls_count" nat ; + IF_NONE { UNIT ; FAILWITH } {} ; + DIP { + UNIT ; + VIEW "last_caller" (option address) ; + } ; + PUSH nat 0 ; + /* Check if the caller address is consistent with given calls count. */ + IFCMPEQ { + IF_NONE { UNIT ; FAILWITH } { IF_NONE {} { UNIT ; FAILWITH }} ; + NONE address ; + } + { + IF_NONE { UNIT ; FAILWITH } { IF_NONE { UNIT ; FAILWITH } {}} ; + SOME ; + } ; + NIL operation ; + PAIR ; + } + |} + +(* Normally "--base-dir" would appear in regression logs. However, since + it is a different dir on every run, we need to mask it in regression + logs so that it doesn't cause false differences. *) +let hooks = + let rec mask_temp_dir = function + | [] -> [] + | "--base-dir" :: _ :: rest -> "--base-dir" :: "" :: rest + | arg :: args -> arg :: mask_temp_dir args + in + { + Regression.hooks with + on_spawn = + (fun cmd args -> mask_temp_dir args |> Regression.hooks.on_spawn cmd); + } + +let register ~protocols () = + Protocol.register_regression_test + ~__FILE__ + ~title:"Run views" + ~tags:["client"; "michelson"] + ~output_file:"run_views" + ~protocols + @@ fun protocol -> + let* client = Client.init_mockup ~protocol () in + let* register_callers = + Client.originate_contract + ~hooks + ~burn_cap:Tez.one + ~alias:"register_calls" + ~amount:Tez.zero + ~src:"bootstrap1" + ~prg:register_callers_src + ~init:"{}" + client + in + let arg = Format.sprintf "\"%s\"" register_callers in + let* check_caller = + Client.originate_contract + ~hooks + ~burn_cap:Tez.one + ~alias:"check_caller" + ~amount:Tez.zero + ~src:"bootstrap1" + ~prg:check_caller_src + ~init:"None" + client + in + let* () = + Client.transfer + ~hooks + ~burn_cap:Tez.one + ~amount:Tez.one + ~giver:"bootstrap1" + ~receiver:check_caller + ~arg + client + in + let* () = + Client.transfer + ~hooks + ~burn_cap:Tez.one + ~amount:Tez.one + ~giver:"bootstrap1" + ~receiver:register_callers + client + in + let* () = + Client.transfer + ~hooks + ~burn_cap:Tez.one + ~amount:Tez.one + ~giver:"bootstrap1" + ~receiver:check_caller + ~arg + client + in + return () From dbe218ee7c36b001538e89997436084199e04196 Mon Sep 17 00:00:00 2001 From: Marcin Pastudzki Date: Thu, 18 Nov 2021 16:25:52 +0100 Subject: [PATCH 0102/1220] Proto Alpha: Make balance a step constant in Michelson interpreter. Signed-off-by: Marcin Pastudzki --- .../lib_benchmark/execution_context.ml | 34 +++++++++++++++---- .../interpreter_benchmarks.ml | 1 + src/proto_alpha/lib_plugin/plugin.ml | 24 +++++++++++-- src/proto_alpha/lib_protocol/apply.ml | 19 ++++++++++- .../lib_protocol/script_interpreter.ml | 8 +++-- .../lib_protocol/script_interpreter.mli | 1 + .../lib_protocol/script_typed_ir.ml | 1 + .../lib_protocol/script_typed_ir.mli | 1 + .../test/helpers/contract_helpers.ml | 1 + 9 files changed, 77 insertions(+), 13 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/execution_context.ml b/src/proto_alpha/lib_benchmark/execution_context.ml index 725e24204d..f9e6b1a1fd 100644 --- a/src/proto_alpha/lib_benchmark/execution_context.ml +++ b/src/proto_alpha/lib_benchmark/execution_context.ml @@ -28,16 +28,18 @@ open Error_monad type context = Alpha_context.context * Script_interpreter.step_constants +let initial_balance = 4_000_000_000_000L + let context_init_memory ~rng_state = Context.init ~rng_state ~initial_balances: [ - 4_000_000_000_000L; - 4_000_000_000_000L; - 4_000_000_000_000L; - 4_000_000_000_000L; - 4_000_000_000_000L; + initial_balance; + initial_balance; + initial_balance; + initial_balance; + initial_balance; ] 5 >>=? fun (block, accounts) -> @@ -61,12 +63,30 @@ let make ~rng_state = let payer = bs2 in let self = bs3 in let step_constants = - {source; payer; self; amount; chain_id; now; level} + { + source; + payer; + self; + amount; + balance = Alpha_context.Tez.of_mutez_exn initial_balance; + chain_id; + now; + level; + } in return (block, step_constants) | `Disk_block (block, source) -> let step_constants = - {source; payer = source; self = source; amount; chain_id; now; level} + { + source; + payer = source; + self = source; + amount; + balance = Alpha_context.Tez.of_mutez_exn initial_balance; + chain_id; + now; + level; + } in return (block, step_constants)) >>=? fun (block, step_constants) -> diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml index b7570a634a..3ec52df528 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml @@ -2899,6 +2899,7 @@ module Registration_section = struct payer = zero; self = zero; amount = Tez.zero; + balance = Tez.zero; chain_id = Chain_id.zero; now = Script_timestamp.of_zint Z.zero; level = Script_int.zero_n; diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 0360e939d2..7cc34ca3d5 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -1967,7 +1967,16 @@ module RPC = struct in let step_constants = let open Script_interpreter in - {source; payer; self = dummy_contract; amount; chain_id; now; level} + { + source; + payer; + self = dummy_contract; + amount; + balance; + chain_id; + now; + level; + } in Script_interpreter.execute ctxt @@ -2033,7 +2042,16 @@ module RPC = struct in let step_constants = let open Script_interpreter in - {source; payer; self = dummy_contract; amount; chain_id; now; level} + { + source; + payer; + self = dummy_contract; + amount; + balance; + chain_id; + now; + level; + } in let module Unparsing_mode = struct let unparsing_mode = unparsing_mode @@ -2080,6 +2098,7 @@ module RPC = struct >>=? fun view_ty -> View_helpers.extract_view_output_type entrypoint view_ty >>?= fun ty -> + Contract.get_balance ctxt contract >>=? fun balance -> Error_monad.trace View_helpers.View_callback_origination_failed @@ originate_dummy_contract ctxt @@ -2116,6 +2135,7 @@ module RPC = struct payer; self = contract; amount = Tez.zero; + balance; chain_id; now; level; diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index f4e07926e0..ef57bcc9c9 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -931,6 +931,9 @@ let apply_manager_operation_content : in (ctxt, result, []) ) | Some (script, script_ir) -> + (* Token.transfer which is being called above already loads this + value into the Irmin cache, so no need to burn gas for it. *) + Contract.get_balance ctxt destination >>=? fun balance -> let now = Script_timestamp.now ctxt in let level = (Level.current ctxt).level |> Raw_level.to_int32 @@ -938,7 +941,16 @@ let apply_manager_operation_content : in let step_constants = let open Script_interpreter in - {source; payer; self = destination; amount; chain_id; now; level} + { + source; + payer; + self = destination; + amount; + chain_id; + balance; + now; + level; + } in Script_interpreter.execute ctxt @@ -2389,6 +2401,10 @@ let apply_liquidity_baking_subsidy ctxt ~escape_vote = match script with | None -> fail (Script_tc_errors.No_such_entrypoint Entrypoint.default) | Some (script, script_ir) -> ( + (* Token.transfer which is being called above already loads this + value into the Irmin cache, so no need to burn gas for it. *) + Contract.get_balance ctxt liquidity_baking_cpmm_contract + >>=? fun balance -> let now = Script_timestamp.now ctxt in let level = (Level.current ctxt).level |> Raw_level.to_int32 @@ -2404,6 +2420,7 @@ let apply_liquidity_baking_subsidy ctxt ~escape_vote = payer = liquidity_baking_cpmm_contract; self = liquidity_baking_cpmm_contract; amount = liquidity_baking_subsidy; + balance; chain_id = Chain_id.zero; now; level; diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 4486c4705b..f979279bd2 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -95,6 +95,7 @@ type step_constants = Script_typed_ir.step_constants = { payer : Contract.t; self : Contract.t; amount : Tez.t; + balance : Tez.t; chain_id : Chain_id.t; now : Script_timestamp.t; level : Script_int.n Script_int.num; @@ -1102,6 +1103,8 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = let kstack_ty = Item_t (output_ty, s) in let kkinfo = {kkinfo with kstack_ty} in let ks = KCons (ICons_some (kkinfo, k), ks) in + Contract.get_balance_carbonated ctxt c + >>=? fun (ctxt, balance) -> (step [@ocaml.tailcall]) ( outdated ctxt, { @@ -1109,6 +1112,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = source = sc.self; self = c; amount = Tez.zero; + balance; } ) (update_local_gas_counter ctxt) kinstr @@ -1155,12 +1159,10 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) (ctxt, sc) gas k ks res stack | IBalance (_, k) -> let ctxt = update_context gas ctxt in - Contract.get_balance_carbonated ctxt sc.self - >>=? fun (ctxt, balance) -> let gas = update_local_gas_counter ctxt in let ctxt = outdated ctxt in let g = (ctxt, sc) in - (step [@ocaml.tailcall]) g gas k ks balance (accu, stack) + (step [@ocaml.tailcall]) g gas k ks sc.balance (accu, stack) | ILevel (_, k) -> (step [@ocaml.tailcall]) g gas k ks sc.level (accu, stack) | INow (_, k) -> (step [@ocaml.tailcall]) g gas k ks sc.now (accu, stack) diff --git a/src/proto_alpha/lib_protocol/script_interpreter.mli b/src/proto_alpha/lib_protocol/script_interpreter.mli index 0fce503243..1d03e3cb79 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.mli +++ b/src/proto_alpha/lib_protocol/script_interpreter.mli @@ -62,6 +62,7 @@ type step_constants = Script_typed_ir.step_constants = { payer : Contract.t; self : Contract.t; amount : Tez.t; + balance : Tez.t; chain_id : Chain_id.t; now : Script_timestamp.t; level : Script_int.n Script_int.num; diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 1b795de98d..5d9fe73d0a 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -49,6 +49,7 @@ type step_constants = { - as caller in VIEW, TRANSFER_TOKENS, and CREATE_CONTRACT *) amount : Tez.t; (** The amount of the current transaction, as returned by AMOUNT. *) + balance : Tez.t; (** The balance of the contract as returned by BALANCE. *) chain_id : Chain_id.t; (** The chain id of the chain, as returned by CHAIN_ID. *) now : Script_timestamp.t; diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 7c586021b6..4991feaedf 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -33,6 +33,7 @@ type step_constants = { payer : Contract.t; self : Contract.t; amount : Tez.t; + balance : Tez.t; chain_id : Chain_id.t; now : Script_timestamp.t; level : Script_int.n Script_int.num; diff --git a/src/proto_alpha/lib_protocol/test/helpers/contract_helpers.ml b/src/proto_alpha/lib_protocol/test/helpers/contract_helpers.ml index ad37f1aa03..2570b95a18 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/contract_helpers.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/contract_helpers.ml @@ -73,6 +73,7 @@ let default_step_constants = payer = default_source; self = default_source; amount = Tez.zero; + balance = Tez.zero; chain_id = Chain_id.zero; now = Script_timestamp.of_zint Z.zero; level = Script_int.zero_n; From 56f813742587ad4cce6001b0898a4269531374da Mon Sep 17 00:00:00 2001 From: Marcin Pastudzki Date: Thu, 18 Nov 2021 16:27:21 +0100 Subject: [PATCH 0103/1220] Proto Alpha: Update regression tests output. Making contract balance a step constant reduced gas costs and baker fees of executing contracts which use BALANCE instruction. It also probably increased said values for contracts using VIEW instruction. Other contracts should be unaffected. Real-life effects might be different due to caching. Signed-off-by: Marcin Pastudzki --- ...ddressTransfer::test_send_self_address.out | 12 +++---- ...ef0e55c43a9a857214d8761e67b.7da5c9014e.out | 12 +++---- ...TestContractOpcodes::test_balance[0.5].out | 6 ++-- ...s.TestContractOpcodes::test_balance[0].out | 6 ++-- ...estContractOpcodes::test_balance[1000].out | 6 ++-- ...s.TestContractOpcodes::test_balance[1].out | 6 ++-- ...stContractOpcodes::test_balance[1e-06].out | 6 ++-- ...s.TestContractOpcodes::test_balance[5].out | 6 ++-- ...Opcodes::test_balance[8000000000000.0].out | 6 ++-- ...put[balance.tz-111-Unit-4000000000000].out | 6 ++-- tezt/_regressions/run_views.out | 32 +++++++++---------- 11 files changed, 52 insertions(+), 52 deletions(-) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestSelfAddressTransfer::test_send_self_address.out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestSelfAddressTransfer::test_send_self_address.out index a7b397372f..67a8582529 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestSelfAddressTransfer::test_send_self_address.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestSelfAddressTransfer::test_send_self_address.out @@ -1,7 +1,7 @@ tests_alpha/test_contract.py::TestSelfAddressTransfer::test_send_self_address Node is bootstrapped. -Estimated gas: 5413.006 units (will add 100 for safety) +Estimated gas: 5192.990 units (will add 100 for safety) Estimated storage: no bytes added Operation successfully injected in the node. Operation hash is '[BLOCK_HASH]' @@ -12,13 +12,13 @@ and/or an external block explorer to make sure that it has been included. This sequence of operations was run: Manager signed operations: From: [CONTRACT_HASH] - Fee to the baker: ꜩ0.000846 + Fee to the baker: ꜩ0.000824 Expected counter: [EXPECTED_COUNTER] - Gas limit: 5514 + Gas limit: 5293 Storage limit: 0 bytes Balance updates: - [CONTRACT_HASH] ... -ꜩ0.000846 - payload fees(the block proposer) ....... +ꜩ0.000846 + [CONTRACT_HASH] ... -ꜩ0.000824 + payload fees(the block proposer) ....... +ꜩ0.000824 Transaction: Amount: ꜩ0 From: [CONTRACT_HASH] @@ -27,7 +27,7 @@ This sequence of operations was run: This transaction was successfully applied Updated storage: Unit Storage size: 82 bytes - Consumed gas: 3353.748 + Consumed gas: 3133.732 Internal operations: Transaction: Amount: ꜩ0 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out index 4f437d5c94..05e09c848d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out @@ -1,7 +1,7 @@ tests_alpha/test_contract_onchain_opcodes.py::TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b75ba63500a5694fb2ffe174acc2de22d01ccb7259342437f05e1987949f0ad82e9f32e9a0b79cb252d7f7b8236ad728893f4e7150742eefdbeda254970f9fcd92c6228c178e1a923e5600758eb83f2a05edd0be7625657901f2ba81eaf145d003dbef78e33f43a32a3788bdf0501000000085341554349535345 "spsig1PPUFZucuAQybs5wsqsNQ68QNgFaBnVKMFaoZZfi1BtNnuCAWnmL9wVy5HfHkR6AeodjVGxpBVVSYcJKyMURn6K1yknYLm")] Node is bootstrapped. -Estimated gas: 4184.720 units (will add 100 for safety) +Estimated gas: 3964.704 units (will add 100 for safety) Estimated storage: 257 bytes added (will add 20 for safety) Operation successfully injected in the node. Operation hash is '[BLOCK_HASH]' @@ -12,13 +12,13 @@ and/or an external block explorer to make sure that it has been included. This sequence of operations was run: Manager signed operations: From: [CONTRACT_HASH] - Fee to the baker: ꜩ0.000936 + Fee to the baker: ꜩ0.000914 Expected counter: [EXPECTED_COUNTER] - Gas limit: 4285 + Gas limit: 4065 Storage limit: 277 bytes Balance updates: - [CONTRACT_HASH] ... -ꜩ0.000936 - payload fees(the block proposer) ....... +ꜩ0.000936 + [CONTRACT_HASH] ... -ꜩ0.000914 + payload fees(the block proposer) ....... +ꜩ0.000914 Transaction: Amount: ꜩ0 From: [CONTRACT_HASH] @@ -29,7 +29,7 @@ This sequence of operations was run: Updated storage: [OPERATION_HASH]48f709699019725ba Storage size: 578 bytes - Consumed gas: 2764.720 + Consumed gas: 2544.704 Internal operations: Transaction: Amount: ꜩ1000 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out index 49508b6ba6..ddd26b5b18 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0.5].out @@ -11,11 +11,11 @@ trace [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - - location: 8 (remaining gas: 1039774.922 units remaining) + - location: 8 (remaining gas: 1039994.938 units remaining) [ 500000 ] - - location: 9 (remaining gas: 1039774.907 units remaining) + - location: 9 (remaining gas: 1039994.923 units remaining) [ {} 500000 ] - - location: 11 (remaining gas: 1039774.892 units remaining) + - location: 11 (remaining gas: 1039994.908 units remaining) [ (Pair {} 500000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out index 5e66595481..c7f286bb44 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[0].out @@ -11,11 +11,11 @@ trace [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - - location: 8 (remaining gas: 1039774.922 units remaining) + - location: 8 (remaining gas: 1039994.938 units remaining) [ 0 ] - - location: 9 (remaining gas: 1039774.907 units remaining) + - location: 9 (remaining gas: 1039994.923 units remaining) [ {} 0 ] - - location: 11 (remaining gas: 1039774.892 units remaining) + - location: 11 (remaining gas: 1039994.908 units remaining) [ (Pair {} 0) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out index a579be096a..a1ed7938b6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1000].out @@ -11,11 +11,11 @@ trace [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - - location: 8 (remaining gas: 1039774.922 units remaining) + - location: 8 (remaining gas: 1039994.938 units remaining) [ 1000000000 ] - - location: 9 (remaining gas: 1039774.907 units remaining) + - location: 9 (remaining gas: 1039994.923 units remaining) [ {} 1000000000 ] - - location: 11 (remaining gas: 1039774.892 units remaining) + - location: 11 (remaining gas: 1039994.908 units remaining) [ (Pair {} 1000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out index bf19a152b9..e27ed8107f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1].out @@ -11,11 +11,11 @@ trace [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - - location: 8 (remaining gas: 1039774.922 units remaining) + - location: 8 (remaining gas: 1039994.938 units remaining) [ 1000000 ] - - location: 9 (remaining gas: 1039774.907 units remaining) + - location: 9 (remaining gas: 1039994.923 units remaining) [ {} 1000000 ] - - location: 11 (remaining gas: 1039774.892 units remaining) + - location: 11 (remaining gas: 1039994.908 units remaining) [ (Pair {} 1000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out index 9ac426c714..f7e51d2d2d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[1e-06].out @@ -11,11 +11,11 @@ trace [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - - location: 8 (remaining gas: 1039774.922 units remaining) + - location: 8 (remaining gas: 1039994.938 units remaining) [ 1 ] - - location: 9 (remaining gas: 1039774.907 units remaining) + - location: 9 (remaining gas: 1039994.923 units remaining) [ {} 1 ] - - location: 11 (remaining gas: 1039774.892 units remaining) + - location: 11 (remaining gas: 1039994.908 units remaining) [ (Pair {} 1) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out index ce8cb06010..ee4e150005 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[5].out @@ -11,11 +11,11 @@ trace [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - - location: 8 (remaining gas: 1039774.922 units remaining) + - location: 8 (remaining gas: 1039994.938 units remaining) [ 5000000 ] - - location: 9 (remaining gas: 1039774.907 units remaining) + - location: 9 (remaining gas: 1039994.923 units remaining) [ {} 5000000 ] - - location: 11 (remaining gas: 1039774.892 units remaining) + - location: 11 (remaining gas: 1039994.908 units remaining) [ (Pair {} 5000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out index 47b7efaaaf..fb69d27649 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_balance[8000000000000.0].out @@ -11,11 +11,11 @@ trace [ (Pair Unit 0) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - - location: 8 (remaining gas: 1039774.922 units remaining) + - location: 8 (remaining gas: 1039994.938 units remaining) [ 8000000000000000000 ] - - location: 9 (remaining gas: 1039774.907 units remaining) + - location: 9 (remaining gas: 1039994.923 units remaining) [ {} 8000000000000000000 ] - - location: 11 (remaining gas: 1039774.892 units remaining) + - location: 11 (remaining gas: 1039994.908 units remaining) [ (Pair {} 8000000000000000000) ] diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out index 78cc5b8253..8bc1c350c1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_opcodes.TestContractOpcodes::test_contract_input_output[balance.tz-111-Unit-4000000000000].out @@ -11,11 +11,11 @@ trace [ (Pair Unit 111) ] - location: 7 (remaining gas: 1039994.938 units remaining) [ ] - - location: 8 (remaining gas: 1039774.922 units remaining) + - location: 8 (remaining gas: 1039994.938 units remaining) [ 4000000000000 ] - - location: 9 (remaining gas: 1039774.907 units remaining) + - location: 9 (remaining gas: 1039994.923 units remaining) [ {} 4000000000000 ] - - location: 11 (remaining gas: 1039774.892 units remaining) + - location: 11 (remaining gas: 1039994.908 units remaining) [ (Pair {} 4000000000000) ] diff --git a/tezt/_regressions/run_views.out b/tezt/_regressions/run_views.out index 57e07aa186..2f1c0b721f 100644 --- a/tezt/_regressions/run_views.out +++ b/tezt/_regressions/run_views.out @@ -146,24 +146,24 @@ Contract memorized as check_caller. ./tezos-client --mode mockup --base-dir '' --wait none transfer 1 from bootstrap1 to KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L --burn-cap 1 --arg '"KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD"' Node is bootstrapped. -Estimated gas: 4448.948 units (will add 100 for safety) +Estimated gas: 4888.980 units (will add 100 for safety) Estimated storage: no bytes added Operation successfully injected in the node. -Operation hash is 'ooeWJ1x8vuNSdxzJnQPjw3Jz9XMJFqJe1Cga8quXXbWcucEujBy' +Operation hash is 'op4wu7aQT9ofgup46yvygx2td15DfJ2o8CLgamEkaZkRnqyPMvL' NOT waiting for the operation to be included. Use command - tezos-client wait for ooeWJ1x8vuNSdxzJnQPjw3Jz9XMJFqJe1Cga8quXXbWcucEujBy to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU + tezos-client wait for op4wu7aQT9ofgup46yvygx2td15DfJ2o8CLgamEkaZkRnqyPMvL to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU and/or an external block explorer to make sure that it has been included. This sequence of operations was run: Manager signed operations: From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx - Fee to the baker: ꜩ0.000751 + Fee to the baker: ꜩ0.000795 Expected counter: 3 - Gas limit: 4549 + Gas limit: 4989 Storage limit: 0 bytes Balance updates: - tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000751 - payload fees(the block proposer) ....... +ꜩ0.000751 + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000795 + payload fees(the block proposer) ....... +ꜩ0.000795 Transaction: Amount: ꜩ1 From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx @@ -172,7 +172,7 @@ This sequence of operations was run: This transaction was successfully applied Updated storage: None Storage size: 208 bytes - Consumed gas: 4449.746 + Consumed gas: 4889.778 Balance updates: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ1 KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L ... +ꜩ1 @@ -216,24 +216,24 @@ This sequence of operations was run: ./tezos-client --mode mockup --base-dir '' --wait none transfer 1 from bootstrap1 to KT1EYwqeAzgkynYXJnHJ7ZxuXk5bNBBy6R6L --burn-cap 1 --arg '"KT19P9vLfrXCEwUMpiURQ5vY8Ncp5idkyKTD"' Node is bootstrapped. -Estimated gas: 5761.955 units (will add 100 for safety) +Estimated gas: 6201.987 units (will add 100 for safety) Estimated storage: 27 bytes added (will add 20 for safety) Operation successfully injected in the node. -Operation hash is 'oohh2J6m4DnZ9e4d57NeUfNjK3eWQh5xcTxoCLGwCyktxswEYUp' +Operation hash is 'oo6wNGAK8aSyy6XkpBd1Eij4DvdV6te4V91uYzSdtZCPcRNPnAG' NOT waiting for the operation to be included. Use command - tezos-client wait for oohh2J6m4DnZ9e4d57NeUfNjK3eWQh5xcTxoCLGwCyktxswEYUp to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU + tezos-client wait for oo6wNGAK8aSyy6XkpBd1Eij4DvdV6te4V91uYzSdtZCPcRNPnAG to be included --confirmations 1 --branch BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU and/or an external block explorer to make sure that it has been included. This sequence of operations was run: Manager signed operations: From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx - Fee to the baker: ꜩ0.000883 + Fee to the baker: ꜩ0.000927 Expected counter: 5 - Gas limit: 5862 + Gas limit: 6302 Storage limit: 47 bytes Balance updates: - tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000883 - payload fees(the block proposer) ....... +ꜩ0.000883 + tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.000927 + payload fees(the block proposer) ....... +ꜩ0.000927 Transaction: Amount: ꜩ1 From: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx @@ -243,7 +243,7 @@ This sequence of operations was run: Updated storage: (Some 0x000002298c03ed7d454a101eb7022bc95f7e5f41ac78) Storage size: 235 bytes Paid storage size diff: 27 bytes - Consumed gas: 5762.753 + Consumed gas: 6202.785 Balance updates: tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx ... -ꜩ0.00675 storage fees ........................... +ꜩ0.00675 From f6376c8e43a833e93e1195e3482017d12a8e9bca Mon Sep 17 00:00:00 2001 From: Marcin Pastudzki Date: Thu, 2 Dec 2021 16:34:22 +0100 Subject: [PATCH 0104/1220] Docs: Mention the new constant in changelog. Signed-off-by: Marcin Pastudzki --- docs/protocols/alpha.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/protocols/alpha.rst b/docs/protocols/alpha.rst index 09a1d38a74..63d822e241 100644 --- a/docs/protocols/alpha.rst +++ b/docs/protocols/alpha.rst @@ -49,3 +49,13 @@ Michelson In their output encodings, the objects containing the fields ``item`` and ``annot`` are replaced with the contents of the field ``item``. (MR :gl:`!4139`) + +Internal +-------- + +The following changes are not visible to the users but reflect +improvements of the codebase. + +- ``BALANCE`` is now passed to the Michelson interpreter as a step constant + instead of being read from the context each time this instruction is + executed. (MR :gl:`!3871`) From 5796c8ca0dfde28ecd6162114c7037d93f8e12e5 Mon Sep 17 00:00:00 2001 From: Valentin Chaboche Date: Fri, 7 Jan 2022 17:47:09 +0100 Subject: [PATCH 0105/1220] lib_plugin/test: upgrade qcheck to qcheck2 --- .../lib_plugin/test/test_consensus_filter.ml | 187 +++++++++--------- .../lib_plugin/test/test_consensus_filter.ml | 187 +++++++++--------- 2 files changed, 178 insertions(+), 196 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_plugin/test/test_consensus_filter.ml b/src/proto_012_PsiThaCa/lib_plugin/test/test_consensus_filter.ml index e8cc059118..1c634daf0f 100644 --- a/src/proto_012_PsiThaCa/lib_plugin/test/test_consensus_filter.ml +++ b/src/proto_012_PsiThaCa/lib_plugin/test/test_consensus_filter.ml @@ -23,7 +23,7 @@ (* *) (*****************************************************************************) -open Lib_test.Qcheck_helpers +open Lib_test.Qcheck2_helpers open Plugin.Mempool open Alpha_context @@ -38,7 +38,7 @@ let config drift_opt = type Environment.Error_monad.error += Generation_failure -(** Conversion helpers *) +(** {2. Conversion helpers} *) let int32_of_timestamp ts = let i64 = Timestamp.to_seconds ts in @@ -55,79 +55,67 @@ let timestamp_of_int32 ts = Timestamp.of_seconds (Int64.of_int32 ts) (** Data Generators *) module Generator = struct - open QCheck + open QCheck2.Gen - let decorate ?(prefix = "") ?(suffix = "") printer gen = - set_print (fun d -> prefix ^ printer d ^ suffix) gen + let decorate ?(prefix = "") ?(suffix = "") printer d = + prefix ^ printer d ^ suffix let config = + let+ x = opt small_nat in + config x + + let print_config = decorate ~prefix:"clock_drift " (fun config -> Option.fold ~none:"round_0 duration" ~some:(fun drift -> Int64.to_string @@ Period.to_seconds drift) config.clock_drift) - @@ map - ~rev:(fun {clock_drift; _} -> - Option.map - (fun drift -> Int64.to_int @@ Period.to_seconds drift) - clock_drift) - config - (option small_nat) - - let of_error_arb gen = - of_option_arb - @@ map - ~rev:(function - | Some x -> Ok x - | None -> Environment.Error_monad.error Generation_failure) - (function Ok x -> Some x | Error _err -> None) - gen - - let small_nat_32 ?prefix ?suffix () = - decorate ?prefix ?suffix Int32.to_string - @@ map ~rev:Int32.to_int Int32.of_int small_nat - - let small_signed_32 ?prefix ?suffix () = - decorate ?prefix ?suffix Int32.to_string - @@ map ~rev:Int32.to_int Int32.of_int small_signed_int - - let decorated_small_nat ?prefix ?suffix () = - decorate ?prefix ?suffix string_of_int small_nat - - let dup gen = map ~rev:fst (fun x -> (x, x)) gen + + let of_result = Result.value_f ~default:(fun _ -> assert false) + + let print_int32 ?prefix ?suffix () = decorate ?prefix ?suffix Int32.to_string + + let small_nat_32 = + let+ small_nat = small_nat in + Int32.of_int small_nat + + let small_signed_32 = + let+ small_signed_int = small_signed_int in + Int32.of_int small_signed_int + + let print_small_nat ?prefix ?suffix () = + decorate ?prefix ?suffix string_of_int + + let dup gen = + let+ x = gen in + (x, x) let round = - of_error_arb - @@ map - ~rev:(function Ok l -> Round.to_int32 l | Error _ -> -1l) - (fun i32 -> Round.of_int32 i32) - (small_nat_32 ~prefix:"rnd " ()) + let+ x = map (fun i32 -> Round.of_int32 i32) small_nat_32 in + of_result x + + let print_round = Format.asprintf "%a" Round.pp let same_rounds = dup round let level = - of_error_arb - @@ map - ~rev:(function Ok l -> Raw_level.to_int32 l | Error _ -> -1l) - Raw_level.of_int32 - (small_nat_32 ~prefix:"lev " ()) + let+ x = map Raw_level.of_int32 small_nat_32 in + of_result x + + let print_level = Format.asprintf "%a" Raw_level.pp let same_levels = dup level let timestamp = - set_print Timestamp.to_notation - @@ map ~rev:int32_of_timestamp_exn (fun f -> timestamp_of_int32 f) int32 + let+ i32 = int32 in + timestamp_of_int32 i32 + + let print_timestamp = Timestamp.to_notation let near_timestamps = - map - ~rev:(fun (ts1, ts2) -> - let its1 = int32_of_timestamp_exn ts1 in - let its2 = int32_of_timestamp_exn ts2 in - Int32.(its1, sub its2 its1)) - (fun (i, diff) -> - timestamp_of_int32 i |> fun ts1 -> - timestamp_of_int32 Int32.(add i diff) |> fun ts2 -> (ts1, ts2)) - (pair int32 (small_signed_32 ~prefix:"+" ~suffix:"sec." ())) + let+ (i, diff) = pair int32 small_signed_32 in + timestamp_of_int32 i |> fun ts1 -> + timestamp_of_int32 Int32.(add i diff) |> fun ts2 -> (ts1, ts2) let dummy_timestamp = match Timestamp.of_seconds_string "0" with @@ -142,19 +130,23 @@ module Generator = struct | Error _ -> assert false let successive_timestamp = - of_error_arb - @@ map - ~rev:(function - | Ok (ts1, ts2) -> (ts1, unsafe_sub ts2 ts1) - | Error _ -> (dummy_timestamp, -1)) - (fun (ts, (diff : int)) -> - Period.of_seconds (Int64.of_int diff) >>? fun diff -> - Timestamp.(ts +? diff) >>? fun ts2 -> Ok (ts, ts2)) - (pair timestamp (decorated_small_nat ~prefix:"+" ~suffix:"sec." ())) + let+ (ts, (diff : int)) = pair timestamp small_nat in + let x = + Period.of_seconds (Int64.of_int diff) >>? fun diff -> + Timestamp.(ts +? diff) >>? fun ts2 -> Ok (ts, ts2) + in + of_result x let param_acceptable ?(rounds = pair round round) ?(levels = pair level level) ?(timestamps = near_timestamps) () = pair config (pair (pair rounds levels) timestamps) + + let print_param_acceptable = + let open QCheck2.Print in + let print_levels = pair print_level print_level in + let print_timestamps = pair print_timestamp print_timestamp in + let print_rounds = pair print_round print_round in + pair print_config (pair (pair print_rounds print_levels) print_timestamps) end let assert_no_error d = match d with Error _ -> assert false | Ok d -> d @@ -225,8 +217,6 @@ let drift_of = let max_ts clock_drift prop_ts now = Timestamp.(max prop_ts now +? drift_of clock_drift) -let count = None - let predecessor_start proposal_timestamp proposal_round grandparent_round = assert_no_error @@ ( Round.level_offset_of_round @@ -239,14 +229,16 @@ let predecessor_start proposal_timestamp proposal_round grandparent_round = >>? fun proposal_offset -> Ok Timestamp.(proposal_timestamp - proposal_offset) ) -(** TESTS *) +(** {2. Tests} *) (** Test past operations that are accepted whatever the current timestamp is: strictly before the predecessor level or at the current level and with a strictly lower round than the head. *) let test_acceptable_past_level = - QCheck.Test.make + let open QCheck2 in + Test.make + ~print:Generator.print_param_acceptable ~name:"acceptable past op " (Generator.param_acceptable ()) (fun @@ -254,33 +246,32 @@ let test_acceptable_past_level = ( ((proposal_round, op_round), (proposal_level, op_level)), (proposal_timestamp, now_timestamp) ) ) -> - QCheck.( - Raw_level.( - proposal_level > succ op_level - || (proposal_level = op_level && Round.(proposal_round > op_round))) - ==> no_error - @@ acceptable_op - ~config - ~round_durations - ~round_zero_duration - ~proposal_level - ~proposal_round - ~proposal_timestamp - ~proposal_predecessor_level_start: - (predecessor_start - proposal_timestamp - proposal_round - Round.zero) - ~op_level - ~op_round - ~now_timestamp)) + Raw_level.( + proposal_level > succ op_level + || (proposal_level = op_level && Round.(proposal_round > op_round))) + ==> no_error + @@ acceptable_op + ~config + ~round_durations + ~round_zero_duration + ~proposal_level + ~proposal_round + ~proposal_timestamp + ~proposal_predecessor_level_start: + (predecessor_start + proposal_timestamp + proposal_round + Round.zero) + ~op_level + ~op_round + ~now_timestamp) (** Test acceptable operations at current level, current round, i.e. on the currently considered proposal *) let test_acceptable_current_level_current_round = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"same round, same level " Generator.(param_acceptable ~rounds:same_rounds ~levels:same_levels ()) (fun ( config, @@ -305,9 +296,9 @@ let test_acceptable_current_level_current_round = (** Test operations at same level, different round, with an acceptable expected timestamp for the operation. *) let test_acceptable_current_level = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"same level, different round, acceptable op" Generator.(param_acceptable ~levels:same_levels ()) (fun ( config, @@ -344,9 +335,9 @@ let test_acceptable_current_level = (** Test operations at same level, different round, with a too high expected timestamp for the operation, and not at current round (which is always accepted). *) let test_not_acceptable_current_level = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"same level, different round, too far" Generator.(param_acceptable ~levels:same_levels ()) (fun ( config, @@ -387,9 +378,9 @@ let test_not_acceptable_current_level = (** Test operations at next level, different round, with an acceptable timestamp for the operation. *) let test_acceptable_next_level = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"next level, acceptable op" Generator.(param_acceptable ~levels:same_levels ()) (fun ( config, @@ -432,9 +423,9 @@ let test_acceptable_next_level = (** Test operations at next level, different round, with a too high timestamp for the operation. *) let test_not_acceptable_next_level = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"next level, too far" Generator.( param_acceptable ~levels:same_levels ~timestamps:successive_timestamp ()) diff --git a/src/proto_alpha/lib_plugin/test/test_consensus_filter.ml b/src/proto_alpha/lib_plugin/test/test_consensus_filter.ml index e8cc059118..1c634daf0f 100644 --- a/src/proto_alpha/lib_plugin/test/test_consensus_filter.ml +++ b/src/proto_alpha/lib_plugin/test/test_consensus_filter.ml @@ -23,7 +23,7 @@ (* *) (*****************************************************************************) -open Lib_test.Qcheck_helpers +open Lib_test.Qcheck2_helpers open Plugin.Mempool open Alpha_context @@ -38,7 +38,7 @@ let config drift_opt = type Environment.Error_monad.error += Generation_failure -(** Conversion helpers *) +(** {2. Conversion helpers} *) let int32_of_timestamp ts = let i64 = Timestamp.to_seconds ts in @@ -55,79 +55,67 @@ let timestamp_of_int32 ts = Timestamp.of_seconds (Int64.of_int32 ts) (** Data Generators *) module Generator = struct - open QCheck + open QCheck2.Gen - let decorate ?(prefix = "") ?(suffix = "") printer gen = - set_print (fun d -> prefix ^ printer d ^ suffix) gen + let decorate ?(prefix = "") ?(suffix = "") printer d = + prefix ^ printer d ^ suffix let config = + let+ x = opt small_nat in + config x + + let print_config = decorate ~prefix:"clock_drift " (fun config -> Option.fold ~none:"round_0 duration" ~some:(fun drift -> Int64.to_string @@ Period.to_seconds drift) config.clock_drift) - @@ map - ~rev:(fun {clock_drift; _} -> - Option.map - (fun drift -> Int64.to_int @@ Period.to_seconds drift) - clock_drift) - config - (option small_nat) - - let of_error_arb gen = - of_option_arb - @@ map - ~rev:(function - | Some x -> Ok x - | None -> Environment.Error_monad.error Generation_failure) - (function Ok x -> Some x | Error _err -> None) - gen - - let small_nat_32 ?prefix ?suffix () = - decorate ?prefix ?suffix Int32.to_string - @@ map ~rev:Int32.to_int Int32.of_int small_nat - - let small_signed_32 ?prefix ?suffix () = - decorate ?prefix ?suffix Int32.to_string - @@ map ~rev:Int32.to_int Int32.of_int small_signed_int - - let decorated_small_nat ?prefix ?suffix () = - decorate ?prefix ?suffix string_of_int small_nat - - let dup gen = map ~rev:fst (fun x -> (x, x)) gen + + let of_result = Result.value_f ~default:(fun _ -> assert false) + + let print_int32 ?prefix ?suffix () = decorate ?prefix ?suffix Int32.to_string + + let small_nat_32 = + let+ small_nat = small_nat in + Int32.of_int small_nat + + let small_signed_32 = + let+ small_signed_int = small_signed_int in + Int32.of_int small_signed_int + + let print_small_nat ?prefix ?suffix () = + decorate ?prefix ?suffix string_of_int + + let dup gen = + let+ x = gen in + (x, x) let round = - of_error_arb - @@ map - ~rev:(function Ok l -> Round.to_int32 l | Error _ -> -1l) - (fun i32 -> Round.of_int32 i32) - (small_nat_32 ~prefix:"rnd " ()) + let+ x = map (fun i32 -> Round.of_int32 i32) small_nat_32 in + of_result x + + let print_round = Format.asprintf "%a" Round.pp let same_rounds = dup round let level = - of_error_arb - @@ map - ~rev:(function Ok l -> Raw_level.to_int32 l | Error _ -> -1l) - Raw_level.of_int32 - (small_nat_32 ~prefix:"lev " ()) + let+ x = map Raw_level.of_int32 small_nat_32 in + of_result x + + let print_level = Format.asprintf "%a" Raw_level.pp let same_levels = dup level let timestamp = - set_print Timestamp.to_notation - @@ map ~rev:int32_of_timestamp_exn (fun f -> timestamp_of_int32 f) int32 + let+ i32 = int32 in + timestamp_of_int32 i32 + + let print_timestamp = Timestamp.to_notation let near_timestamps = - map - ~rev:(fun (ts1, ts2) -> - let its1 = int32_of_timestamp_exn ts1 in - let its2 = int32_of_timestamp_exn ts2 in - Int32.(its1, sub its2 its1)) - (fun (i, diff) -> - timestamp_of_int32 i |> fun ts1 -> - timestamp_of_int32 Int32.(add i diff) |> fun ts2 -> (ts1, ts2)) - (pair int32 (small_signed_32 ~prefix:"+" ~suffix:"sec." ())) + let+ (i, diff) = pair int32 small_signed_32 in + timestamp_of_int32 i |> fun ts1 -> + timestamp_of_int32 Int32.(add i diff) |> fun ts2 -> (ts1, ts2) let dummy_timestamp = match Timestamp.of_seconds_string "0" with @@ -142,19 +130,23 @@ module Generator = struct | Error _ -> assert false let successive_timestamp = - of_error_arb - @@ map - ~rev:(function - | Ok (ts1, ts2) -> (ts1, unsafe_sub ts2 ts1) - | Error _ -> (dummy_timestamp, -1)) - (fun (ts, (diff : int)) -> - Period.of_seconds (Int64.of_int diff) >>? fun diff -> - Timestamp.(ts +? diff) >>? fun ts2 -> Ok (ts, ts2)) - (pair timestamp (decorated_small_nat ~prefix:"+" ~suffix:"sec." ())) + let+ (ts, (diff : int)) = pair timestamp small_nat in + let x = + Period.of_seconds (Int64.of_int diff) >>? fun diff -> + Timestamp.(ts +? diff) >>? fun ts2 -> Ok (ts, ts2) + in + of_result x let param_acceptable ?(rounds = pair round round) ?(levels = pair level level) ?(timestamps = near_timestamps) () = pair config (pair (pair rounds levels) timestamps) + + let print_param_acceptable = + let open QCheck2.Print in + let print_levels = pair print_level print_level in + let print_timestamps = pair print_timestamp print_timestamp in + let print_rounds = pair print_round print_round in + pair print_config (pair (pair print_rounds print_levels) print_timestamps) end let assert_no_error d = match d with Error _ -> assert false | Ok d -> d @@ -225,8 +217,6 @@ let drift_of = let max_ts clock_drift prop_ts now = Timestamp.(max prop_ts now +? drift_of clock_drift) -let count = None - let predecessor_start proposal_timestamp proposal_round grandparent_round = assert_no_error @@ ( Round.level_offset_of_round @@ -239,14 +229,16 @@ let predecessor_start proposal_timestamp proposal_round grandparent_round = >>? fun proposal_offset -> Ok Timestamp.(proposal_timestamp - proposal_offset) ) -(** TESTS *) +(** {2. Tests} *) (** Test past operations that are accepted whatever the current timestamp is: strictly before the predecessor level or at the current level and with a strictly lower round than the head. *) let test_acceptable_past_level = - QCheck.Test.make + let open QCheck2 in + Test.make + ~print:Generator.print_param_acceptable ~name:"acceptable past op " (Generator.param_acceptable ()) (fun @@ -254,33 +246,32 @@ let test_acceptable_past_level = ( ((proposal_round, op_round), (proposal_level, op_level)), (proposal_timestamp, now_timestamp) ) ) -> - QCheck.( - Raw_level.( - proposal_level > succ op_level - || (proposal_level = op_level && Round.(proposal_round > op_round))) - ==> no_error - @@ acceptable_op - ~config - ~round_durations - ~round_zero_duration - ~proposal_level - ~proposal_round - ~proposal_timestamp - ~proposal_predecessor_level_start: - (predecessor_start - proposal_timestamp - proposal_round - Round.zero) - ~op_level - ~op_round - ~now_timestamp)) + Raw_level.( + proposal_level > succ op_level + || (proposal_level = op_level && Round.(proposal_round > op_round))) + ==> no_error + @@ acceptable_op + ~config + ~round_durations + ~round_zero_duration + ~proposal_level + ~proposal_round + ~proposal_timestamp + ~proposal_predecessor_level_start: + (predecessor_start + proposal_timestamp + proposal_round + Round.zero) + ~op_level + ~op_round + ~now_timestamp) (** Test acceptable operations at current level, current round, i.e. on the currently considered proposal *) let test_acceptable_current_level_current_round = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"same round, same level " Generator.(param_acceptable ~rounds:same_rounds ~levels:same_levels ()) (fun ( config, @@ -305,9 +296,9 @@ let test_acceptable_current_level_current_round = (** Test operations at same level, different round, with an acceptable expected timestamp for the operation. *) let test_acceptable_current_level = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"same level, different round, acceptable op" Generator.(param_acceptable ~levels:same_levels ()) (fun ( config, @@ -344,9 +335,9 @@ let test_acceptable_current_level = (** Test operations at same level, different round, with a too high expected timestamp for the operation, and not at current round (which is always accepted). *) let test_not_acceptable_current_level = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"same level, different round, too far" Generator.(param_acceptable ~levels:same_levels ()) (fun ( config, @@ -387,9 +378,9 @@ let test_not_acceptable_current_level = (** Test operations at next level, different round, with an acceptable timestamp for the operation. *) let test_acceptable_next_level = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"next level, acceptable op" Generator.(param_acceptable ~levels:same_levels ()) (fun ( config, @@ -432,9 +423,9 @@ let test_acceptable_next_level = (** Test operations at next level, different round, with a too high timestamp for the operation. *) let test_not_acceptable_next_level = - let open QCheck in + let open QCheck2 in Test.make - ?count + ~print:Generator.print_param_acceptable ~name:"next level, too far" Generator.( param_acceptable ~levels:same_levels ~timestamps:successive_timestamp ()) From ff5ee620ee5f43c2261d39293e74a0642aff800d Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 15 Oct 2021 09:49:22 +0200 Subject: [PATCH 0106/1220] CI/Lint: fix rule repetition check to include subdirectories --- src/tooling/lint.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tooling/lint.sh b/src/tooling/lint.sh index 7caa6e3ca7..7c7263376a 100755 --- a/src/tooling/lint.sh +++ b/src/tooling/lint.sh @@ -176,7 +176,10 @@ check_redirects () { update_gitlab_ci_yml () { # Check that a rule is not defined twice, which would result in the first # one being ignored. Gitlab linter doesn't warn for it - repeated=$(grep '^[^ #]' .gitlab-ci.yml .gitlab/ci/*.yml | sort | uniq --repeated) + + repeated=$(find .gitlab-ci.yml .gitlab/ci/ -iname \*.yml -exec grep '^[^ #-]' \{\} \; \ + | sort \ + | uniq --repeated) if [ -n "$repeated" ]; then echo ".gitlab-ci.yml contains repeated rules:" echo "$repeated" From 9852b4ed6d34c4a9852c823c1782e59fb8ee13b2 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Oct 2021 12:47:19 +0200 Subject: [PATCH 0107/1220] CI: rename bootstrap stage to packaging --- .gitlab-ci.yml | 5 ++--- .gitlab/ci/{bootstrap-opam-pipeline.yml => packaging.yml} | 2 +- .gitlab/ci/templates.yml | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) rename .gitlab/ci/{bootstrap-opam-pipeline.yml => packaging.yml} (96%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ab7a9d85f1..431725b219 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,12 +28,11 @@ workflow: # The "manual" stage exists to fix a UI problem that occurs when mixing # manual and non-manual jobs. stages: - - bootstrap + - packaging - sanity - build - test - doc - - packaging - build_release - publish_release - test_coverage @@ -44,7 +43,7 @@ include: # Actual jobs are defined in these included files - - .gitlab/ci/bootstrap-opam-pipeline.yml + - .gitlab/ci/packaging.yml - .gitlab/ci/sanity.yml - .gitlab/ci/build.yml - .gitlab/ci/lints.yml diff --git a/.gitlab/ci/bootstrap-opam-pipeline.yml b/.gitlab/ci/packaging.yml similarity index 96% rename from .gitlab/ci/bootstrap-opam-pipeline.yml rename to .gitlab/ci/packaging.yml index ccfc759ab5..b221a7ceee 100644 --- a/.gitlab/ci/bootstrap-opam-pipeline.yml +++ b/.gitlab/ci/packaging.yml @@ -3,7 +3,7 @@ opam:create_pipeline: - .default_settings_template - .image_template__runtime_build_test_dependencies_template - .rules_template__trigger_opam_pipeline - stage: bootstrap + stage: packaging script: - ./scripts/generate_opam_pipeline.sh - cat opam-ci.yml diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index 0aa1c1c3e3..c763b7588a 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -209,7 +209,7 @@ variables: # Job templates # This template is used by the opam test jobs in the child pipeline -# triggered by `bootstrap-opam-pipeline.yml`. +# triggered by `packaging.yml`. .opam_template: extends: - .default_settings_template From d4b41bafb4dbb8815e036a0ce99e8feb336e08e6 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Oct 2021 12:50:12 +0200 Subject: [PATCH 0108/1220] CI: lints are tests --- .gitlab-ci.yml | 2 +- .gitlab/ci/{ => test}/lints.yml | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename .gitlab/ci/{ => test}/lints.yml (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 431725b219..1baea40981 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,8 +46,8 @@ include: - .gitlab/ci/packaging.yml - .gitlab/ci/sanity.yml - .gitlab/ci/build.yml - - .gitlab/ci/lints.yml - .gitlab/ci/unittest.yml + - .gitlab/ci/test/lints.yml - .gitlab/ci/integration.yml - .gitlab/ci/liquidity-baking-scripts-integrity.yml - .gitlab/ci/coq.yml diff --git a/.gitlab/ci/lints.yml b/.gitlab/ci/test/lints.yml similarity index 100% rename from .gitlab/ci/lints.yml rename to .gitlab/ci/test/lints.yml From 156ced731f825754b3da8eceaa3f182c260cd915 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Fri, 14 Jan 2022 10:48:29 +0100 Subject: [PATCH 0109/1220] CI: move .build_template to templates.yml --- .gitlab/ci/build.yml | 12 ------------ .gitlab/ci/templates.yml | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.gitlab/ci/build.yml b/.gitlab/ci/build.yml index 1674bc550e..cc0a31d5e8 100644 --- a/.gitlab/ci/build.yml +++ b/.gitlab/ci/build.yml @@ -1,17 +1,5 @@ --- -.build_template: - extends: - - .default_settings_template - - .image_template__runtime_build_test_dependencies_template - - .template__coverage - stage: build - before_script: - - . ./scripts/version.sh - # Load the environment poetry previously created in the docker image. - # Give access to the Python dependencies/executables - - . $HOME/.venv/bin/activate - .build: extends: .build_template needs: [] diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index c763b7588a..88c6c8411f 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -263,3 +263,15 @@ variables: - $BISECT_FILE expire_in: 1 day when: on_success + +.build_template: + extends: + - .default_settings_template + - .image_template__runtime_build_test_dependencies_template + - .template__coverage + stage: build + before_script: + - . ./scripts/version.sh + # Load the environment poetry previously created in the docker image. + # Give access to the Python dependencies/executables + - . $HOME/.venv/bin/activate From 8ed4154e4de072b9b83a7da168cce59164bd6963 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 9 Dec 2021 18:31:56 +0100 Subject: [PATCH 0110/1220] CI: move test-script-gen-genesis to integration.yml and rename --- .gitlab/ci/integration.yml | 12 ++++++++++++ .gitlab/ci/unittest.yml | 12 ------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.gitlab/ci/integration.yml b/.gitlab/ci/integration.yml index 3c6a6c0a66..4275999b24 100644 --- a/.gitlab/ci/integration.yml +++ b/.gitlab/ci/integration.yml @@ -52,6 +52,18 @@ script:snapshot_alpha_and_link: - make - dune build src/proto_"$new_proto_version"_*/ +script:test-gen-genesis: + extends: + - .default_settings_template + - .image_template__runtime_build_test_dependencies_template + - .rules_template__development + stage: test + needs: [] + before_script: + - cd scripts/gen-genesis + script: + - dune build gen_genesis.exe + ############################################################ ## Stage: run OCaml integration tests ## ############################################################ diff --git a/.gitlab/ci/unittest.yml b/.gitlab/ci/unittest.yml index 600c4d3cbf..90913818d9 100644 --- a/.gitlab/ci/unittest.yml +++ b/.gitlab/ci/unittest.yml @@ -1,15 +1,3 @@ -test-script-gen-genesis: - extends: - - .default_settings_template - - .image_template__runtime_build_test_dependencies_template - - .rules_template__development - stage: test - needs: [] - before_script: - - cd scripts/gen-genesis - script: - - dune build gen_genesis.exe - .test_template: extends: - .default_settings_template From 8a5e885ca6c4d96b2911584831dfb95c8943c632 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Oct 2021 12:55:40 +0200 Subject: [PATCH 0111/1220] CI: move out unit tests to test/unit.yml --- .gitlab-ci.yml | 1 + .gitlab/ci/test/unit.yml | 89 ++++++++++++++++++ .gitlab/ci/unittest.yml | 90 ------------------- ...tributing-adding-a-new-opam-dependency.rst | 2 +- docs/developer/protocol_release_checklist.rst | 2 +- docs/developer/testing.rst | 2 +- .../declare-new-protocol-unit-test/main.ml | 8 +- 7 files changed, 97 insertions(+), 97 deletions(-) create mode 100644 .gitlab/ci/test/unit.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1baea40981..cfc11327d8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -48,6 +48,7 @@ include: - .gitlab/ci/build.yml - .gitlab/ci/unittest.yml - .gitlab/ci/test/lints.yml + - .gitlab/ci/test/unit.yml - .gitlab/ci/integration.yml - .gitlab/ci/liquidity-baking-scripts-integrity.yml - .gitlab/ci/coq.yml diff --git a/.gitlab/ci/test/unit.yml b/.gitlab/ci/test/unit.yml new file mode 100644 index 0000000000..51404471f8 --- /dev/null +++ b/.gitlab/ci/test/unit.yml @@ -0,0 +1,89 @@ +.unit_test_template: + extends: .test_template + variables: + ARCH: "" + MAKE_TARGETS: "" + script: + - make $MAKE_TARGETS + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHA-${ARCH}" + paths: + - test_results + reports: + junit: test_results/*.xml + expire_in: 1 day + when: always + +.unit_test_template_x86_64: + extends: .unit_test_template + needs: ["build_x86_64"] + variables: + ARCH: "x86_64" + +.unit_test_template_arm64: + extends: .unit_test_template + needs: ["build_arm64"] + variables: + ARCH: "arm64" + tags: + - arm64 + +unit:011_PtHangz2: + extends: + - .unit_test_template_x86_64 + - .template__coverage_files + variables: + MAKE_TARGETS: > + src/proto_011_PtHangz2/lib_benchmark/lib_benchmark_type_inference.test_proto + src/proto_011_PtHangz2/lib_benchmark.test_proto + src/proto_011_PtHangz2/lib_client.test_proto + src/proto_011_PtHangz2/lib_protocol.test_proto + +unit:012_PsiThaCa: + extends: + - .unit_test_template_x86_64 + - .template__coverage_files + variables: + MAKE_TARGETS: > + src/proto_012_PsiThaCa/lib_benchmark/lib_benchmark_type_inference.test_proto + src/proto_012_PsiThaCa/lib_benchmark.test_proto + src/proto_012_PsiThaCa/lib_client.test_proto + src/proto_012_PsiThaCa/lib_plugin.test_proto + src/proto_012_PsiThaCa/lib_protocol.test_proto + src/proto_012_PsiThaCa/lib_delegate.test_proto + +unit:alpha: + extends: + - .unit_test_template_x86_64 + - .template__coverage_files + variables: + MAKE_TARGETS: > + src/proto_alpha/lib_benchmark/lib_benchmark_type_inference.test_proto + src/proto_alpha/lib_benchmark.test_proto + src/proto_alpha/lib_client.test_proto + src/proto_alpha/lib_plugin.test_proto + src/proto_alpha/lib_protocol.test_proto + src/proto_alpha/lib_delegate.test_proto +unit:non-proto-x86_64: + extends: + - .unit_test_template_x86_64 + - .template__coverage_files + variables: + MAKE_TARGETS: test-nonproto-unit + +unit:non-proto-arm64: + extends: .unit_test_template_arm64 + variables: + MAKE_TARGETS: test-nonproto-unit + +unit:js_components: + extends: .unit_test_template_x86_64 + script: + # install node + - . ./scripts/install_build_deps.js.sh + - make test-js + +unit:protocol_compiles: + extends: .unit_test_template_x86_64 + script: + - dune build @runtest_compile_protocol diff --git a/.gitlab/ci/unittest.yml b/.gitlab/ci/unittest.yml index 90913818d9..c4be8d2b67 100644 --- a/.gitlab/ci/unittest.yml +++ b/.gitlab/ci/unittest.yml @@ -12,93 +12,3 @@ cache: key: "$CI_COMMIT_REF_SLUG" policy: pull - -.unit_test_template: - extends: .test_template - variables: - ARCH: "" - MAKE_TARGETS: "" - script: - - make $MAKE_TARGETS - artifacts: - name: "$CI_JOB_NAME-$CI_COMMIT_SHA-${ARCH}" - paths: - - test_results - reports: - junit: test_results/*.xml - expire_in: 1 day - when: always - -.unit_test_template_x86_64: - extends: .unit_test_template - needs: ["build_x86_64"] - variables: - ARCH: "x86_64" - -.unit_test_template_arm64: - extends: .unit_test_template - needs: ["build_arm64"] - variables: - ARCH: "arm64" - tags: - - arm64 - -unit:011_PtHangz2: - extends: - - .unit_test_template_x86_64 - - .template__coverage_files - variables: - MAKE_TARGETS: > - src/proto_011_PtHangz2/lib_benchmark/lib_benchmark_type_inference.test_proto - src/proto_011_PtHangz2/lib_benchmark.test_proto - src/proto_011_PtHangz2/lib_client.test_proto - src/proto_011_PtHangz2/lib_protocol.test_proto - -unit:012_PsiThaCa: - extends: - - .unit_test_template_x86_64 - - .template__coverage_files - variables: - MAKE_TARGETS: > - src/proto_012_PsiThaCa/lib_benchmark/lib_benchmark_type_inference.test_proto - src/proto_012_PsiThaCa/lib_benchmark.test_proto - src/proto_012_PsiThaCa/lib_client.test_proto - src/proto_012_PsiThaCa/lib_plugin.test_proto - src/proto_012_PsiThaCa/lib_protocol.test_proto - src/proto_012_PsiThaCa/lib_delegate.test_proto - -unit:alpha: - extends: - - .unit_test_template_x86_64 - - .template__coverage_files - variables: - MAKE_TARGETS: > - src/proto_alpha/lib_benchmark/lib_benchmark_type_inference.test_proto - src/proto_alpha/lib_benchmark.test_proto - src/proto_alpha/lib_client.test_proto - src/proto_alpha/lib_plugin.test_proto - src/proto_alpha/lib_protocol.test_proto - src/proto_alpha/lib_delegate.test_proto -unit:non-proto-x86_64: - extends: - - .unit_test_template_x86_64 - - .template__coverage_files - variables: - MAKE_TARGETS: test-nonproto-unit - -unit:non-proto-arm64: - extends: .unit_test_template_arm64 - variables: - MAKE_TARGETS: test-nonproto-unit - -unit:js_components: - extends: .unit_test_template_x86_64 - script: - # install node - - . ./scripts/install_build_deps.js.sh - - make test-js - -unit:protocol_compiles: - extends: .unit_test_template_x86_64 - script: - - dune build @runtest_compile_protocol diff --git a/docs/developer/contributing-adding-a-new-opam-dependency.rst b/docs/developer/contributing-adding-a-new-opam-dependency.rst index 8ecf7ba596..55352bc063 100644 --- a/docs/developer/contributing-adding-a-new-opam-dependency.rst +++ b/docs/developer/contributing-adding-a-new-opam-dependency.rst @@ -105,7 +105,7 @@ into the following places: - the ``before_script`` section of the ``tezt:manual:migration`` rule of ``.gitlab/ci/tezt.yml``, and - the ``before_script`` section of the ``test-script-gen-genesis`` rule - of ``.gitlab/ci/unittest.yml``. + of ``.gitlab/ci/test.yml``. With this ``opam pin`` hack, it can be tested but it cannot be merged onto master. You can push you branch to Gitlab and open an MR. diff --git a/docs/developer/protocol_release_checklist.rst b/docs/developer/protocol_release_checklist.rst index 0922c19d2b..ff1c3088bf 100644 --- a/docs/developer/protocol_release_checklist.rst +++ b/docs/developer/protocol_release_checklist.rst @@ -66,7 +66,7 @@ This is done by adding and removing the respective protocols to :src:`.gitlab/ci/build.yml` to ``rm`` the appropriate older protocol. Additionally, the ``unit:NNN_PROTONAME`` unit test jobs in -:src:`.gitlab/ci/unittest.yml` must be updated to test the new protocols and stop +:src:`.gitlab/ci/test/unit.yml` must be updated to test the new protocols and stop testing the old ones, in the same manner as above. **Final Tests and sign-off:** diff --git a/docs/developer/testing.rst b/docs/developer/testing.rst index 816837be24..21fc72b100 100644 --- a/docs/developer/testing.rst +++ b/docs/developer/testing.rst @@ -560,7 +560,7 @@ The OCaml package tests (Alcotest & QCheck) Any non-protocol tests located in a folder named ``src/**/test/`` will be picked up automatically by the CI. No intervention is necessary. - Protocol tests must be added to :src:`.gitlab/ci/unittest.yml` under the + Protocol tests must be added to :src:`.gitlab/ci/test/unit.yml` under the protocol that they are testing. For example, to run a new protocol test for ``proto_XXX_YYYYYYYY``, add the corresponding ``src/proto_XXX_YYYYYYYY/lib_\*.test_proto`` to the ``unit:XXX_YYYYYYYY`` diff --git a/scripts/declare-new-protocol-unit-test/main.ml b/scripts/declare-new-protocol-unit-test/main.ml index 095becd015..393c8c1f19 100755 --- a/scripts/declare-new-protocol-unit-test/main.ml +++ b/scripts/declare-new-protocol-unit-test/main.ml @@ -35,9 +35,9 @@ let () = let proto_version = Sys.argv.(1) in let proto_short_hash = Sys.argv.(2) in let new_proto_name = proto_version ^ "_" ^ proto_short_hash in - let in_ch = open_in ".gitlab/ci/unittest.yml" in + let in_ch = open_in ".gitlab/ci/test/unit.yml" in Fun.protect ~finally: (fun () -> close_in in_ch) @@ fun () -> - let out_ch = open_out ".gitlab/ci/unittest2.yml" in + let out_ch = open_out ".gitlab/ci/test/unit2.yml" in Fun.protect ~finally: (fun () -> close_out out_ch) @@ fun () -> let output_line line = output_string out_ch line; @@ -72,7 +72,7 @@ let () = | exception End_of_file -> error "End of file reached before seeing unit:alpha: - check \ - .gitlab/ci/unittest.yml" + .gitlab/ci/test/unit.yml" | "unit:alpha:" as line -> (* Found the job we were looking for, start replacing it. *) output_line (replace line); @@ -82,4 +82,4 @@ let () = find_unit_alpha () in find_unit_alpha (); - Sys.rename ".gitlab/ci/unittest2.yml" ".gitlab/ci/unittest.yml" + Sys.rename ".gitlab/ci/test/unit2.yml" ".gitlab/ci/test/unit.yml" From fd48082fc2f70570ab9388f154754cfb093cf8ab Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 9 Dec 2021 19:02:02 +0100 Subject: [PATCH 0112/1220] CI: rename integration.yml to test/integration.yml --- .gitlab-ci.yml | 2 +- .gitlab/ci/{ => test}/integration.yml | 0 .../contributing-adding-a-new-opam-dependency.rst | 8 ++++---- docs/developer/testing.rst | 2 +- sandbox.Makefile | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename .gitlab/ci/{ => test}/integration.yml (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cfc11327d8..b49e2c79a3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -49,7 +49,7 @@ include: - .gitlab/ci/unittest.yml - .gitlab/ci/test/lints.yml - .gitlab/ci/test/unit.yml - - .gitlab/ci/integration.yml + - .gitlab/ci/test/integration.yml - .gitlab/ci/liquidity-baking-scripts-integrity.yml - .gitlab/ci/coq.yml - .gitlab/ci/tezt.yml diff --git a/.gitlab/ci/integration.yml b/.gitlab/ci/test/integration.yml similarity index 100% rename from .gitlab/ci/integration.yml rename to .gitlab/ci/test/integration.yml diff --git a/docs/developer/contributing-adding-a-new-opam-dependency.rst b/docs/developer/contributing-adding-a-new-opam-dependency.rst index 55352bc063..41aa10ee46 100644 --- a/docs/developer/contributing-adding-a-new-opam-dependency.rst +++ b/docs/developer/contributing-adding-a-new-opam-dependency.rst @@ -98,14 +98,14 @@ into the following places: ``.gitlab/ci/build.yml``, - the ``script`` section of the ``documentation:build`` rule of ``.gitlab/ci/doc.yml``, -- the ``before_script`` section of the ``integration_template`` rule of - ``.gitlab/ci/integration.yml``, +- the ``before_script`` section of the ``.integration_template`` rule of + ``.gitlab/ci/test/integration.yml``, - the ``before_script`` section of the ``tezt:main`` rule of ``.gitlab/ci/tezt.yml``, - the ``before_script`` section of the ``tezt:manual:migration`` rule of ``.gitlab/ci/tezt.yml``, and -- the ``before_script`` section of the ``test-script-gen-genesis`` rule - of ``.gitlab/ci/test.yml``. +- the ``before_script`` section of the ``script:test-gen-genesis`` rule + of :src:`.gitlab/ci/test/integration.yml`. With this ``opam pin`` hack, it can be tested but it cannot be merged onto master. You can push you branch to Gitlab and open an MR. diff --git a/docs/developer/testing.rst b/docs/developer/testing.rst index 21fc72b100..a743ab87d0 100644 --- a/docs/developer/testing.rst +++ b/docs/developer/testing.rst @@ -515,7 +515,7 @@ pipeline. The grain used varies slightly for different types of tests: Python integration and regression tests - Python tests are grouped in a number of batch jobs (chosen in ``.gitlab/ci/integration.yml``). This number is + Python tests are grouped in a number of batch jobs (chosen in :src:`.gitlab/ci/test/integration.yml`). This number is chosen to keep the duration of job each lower under 10 minutes on average, and to accommodate the addition of new protocol test suites. diff --git a/sandbox.Makefile b/sandbox.Makefile index 91c10ec9d4..fd873a75c8 100644 --- a/sandbox.Makefile +++ b/sandbox.Makefile @@ -16,7 +16,7 @@ all: accusations_simple_double_endorsing \ daemons_upgrade_next \ daemons_upgrade_alpha -# These are the targets that are actually run in ./.gitlab/ci/integration.yml +# These are the targets that are actually run in ./.gitlab/ci/test/integration.yml ci: all From 5e36a08c0b62ff4948f53ebcfbf14bbe19abcd4f Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 9 Dec 2021 18:38:17 +0100 Subject: [PATCH 0113/1220] CI: rename unittest.yml to test/templates.yml --- .gitlab-ci.yml | 2 +- .gitlab/ci/{unittest.yml => test/templates.yml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename .gitlab/ci/{unittest.yml => test/templates.yml} (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b49e2c79a3..570c83900d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,7 +46,7 @@ include: - .gitlab/ci/packaging.yml - .gitlab/ci/sanity.yml - .gitlab/ci/build.yml - - .gitlab/ci/unittest.yml + - .gitlab/ci/test/templates.yml - .gitlab/ci/test/lints.yml - .gitlab/ci/test/unit.yml - .gitlab/ci/test/integration.yml diff --git a/.gitlab/ci/unittest.yml b/.gitlab/ci/test/templates.yml similarity index 100% rename from .gitlab/ci/unittest.yml rename to .gitlab/ci/test/templates.yml From e0d622c49a3fcce5e0ee74111fecd734689b81da Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Oct 2021 13:02:08 +0200 Subject: [PATCH 0114/1220] CI: re-organize test stage --- .gitlab-ci.yml | 6 +++--- .gitlab/ci/{ => test}/coq.yml | 0 .gitlab/ci/test/integration.yml | 15 --------------- .../liquidity-baking-scripts-integrity.yml | 0 .gitlab/ci/test/templates.yml | 15 +++++++++++++++ .gitlab/ci/{ => test}/tezt.yml | 0 .../contributing-adding-a-new-opam-dependency.rst | 10 +++++----- 7 files changed, 23 insertions(+), 23 deletions(-) rename .gitlab/ci/{ => test}/coq.yml (100%) rename .gitlab/ci/{ => test}/liquidity-baking-scripts-integrity.yml (100%) rename .gitlab/ci/{ => test}/tezt.yml (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 570c83900d..23e17d92ae 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -50,9 +50,9 @@ include: - .gitlab/ci/test/lints.yml - .gitlab/ci/test/unit.yml - .gitlab/ci/test/integration.yml - - .gitlab/ci/liquidity-baking-scripts-integrity.yml - - .gitlab/ci/coq.yml - - .gitlab/ci/tezt.yml + - .gitlab/ci/test/liquidity-baking-scripts-integrity.yml + - .gitlab/ci/test/coq.yml + - .gitlab/ci/test/tezt.yml - .gitlab/ci/doc.yml - .gitlab/ci/publish.yml - .gitlab/ci/coverage.yml diff --git a/.gitlab/ci/coq.yml b/.gitlab/ci/test/coq.yml similarity index 100% rename from .gitlab/ci/coq.yml rename to .gitlab/ci/test/coq.yml diff --git a/.gitlab/ci/test/integration.yml b/.gitlab/ci/test/integration.yml index 4275999b24..58097c8c12 100644 --- a/.gitlab/ci/test/integration.yml +++ b/.gitlab/ci/test/integration.yml @@ -1,18 +1,3 @@ -# Definition for the environment to run all integration tests. -# This is also used by Tezt tests. -# In general we do not have to run make, which takes a while, -# because the binaries have been produced by the build job and are -# in the cache. But if they are not, we need to build them. -# Ideally we should also check that the baker / accuser / endorser -# exist (some tests use them) but their actual name depend on the protocol. -.integration_template: - extends: - - .test_template - - .template__coverage_files - dependencies: ["build_x86_64"] - before_script: - - if [ ! -f tezos-node ] || [ ! -f tezos-client ] || [ ! -f tezos-codec ] || [ ! -f tezos-sandbox ]; then make; fi - # integration:proto:sandbox and integration:compiler-rejections do not # require access to the binaries like the "true" integration tests # below. Therefore, they do not extend the .integration_template. diff --git a/.gitlab/ci/liquidity-baking-scripts-integrity.yml b/.gitlab/ci/test/liquidity-baking-scripts-integrity.yml similarity index 100% rename from .gitlab/ci/liquidity-baking-scripts-integrity.yml rename to .gitlab/ci/test/liquidity-baking-scripts-integrity.yml diff --git a/.gitlab/ci/test/templates.yml b/.gitlab/ci/test/templates.yml index c4be8d2b67..31e8a426aa 100644 --- a/.gitlab/ci/test/templates.yml +++ b/.gitlab/ci/test/templates.yml @@ -12,3 +12,18 @@ cache: key: "$CI_COMMIT_REF_SLUG" policy: pull + +# Definition for the environment to run all integration tests. +# This is also used by Tezt tests. +# In general we do not have to run make, which takes a while, +# because the binaries have been produced by the build job and are +# in the cache. But if they are not, we need to build them. +# Ideally we should also check that the baker / accuser / endorser +# exist (some tests use them) but their actual name depend on the protocol. +.integration_template: + extends: + - .test_template + - .template__coverage_files + dependencies: ["build_x86_64"] + before_script: + - if [ ! -f tezos-node ] || [ ! -f tezos-client ] || [ ! -f tezos-codec ] || [ ! -f tezos-sandbox ]; then make; fi diff --git a/.gitlab/ci/tezt.yml b/.gitlab/ci/test/tezt.yml similarity index 100% rename from .gitlab/ci/tezt.yml rename to .gitlab/ci/test/tezt.yml diff --git a/docs/developer/contributing-adding-a-new-opam-dependency.rst b/docs/developer/contributing-adding-a-new-opam-dependency.rst index 41aa10ee46..dec29a1a02 100644 --- a/docs/developer/contributing-adding-a-new-opam-dependency.rst +++ b/docs/developer/contributing-adding-a-new-opam-dependency.rst @@ -93,15 +93,15 @@ this chunk into may change with the CI. At the time of writing, you must insert into the following places: - the ``before_script`` section of the ``.build_template`` rule of - ``.gitlab/ci/build.yml``, + :src:`.gitlab/ci/build.yml`, - the ``script`` section of the ``build_arm64`` rule of - ``.gitlab/ci/build.yml``, + :src:`.gitlab/ci/build.yml`, - the ``script`` section of the ``documentation:build`` rule of - ``.gitlab/ci/doc.yml``, + :src:`.gitlab/ci/doc.yml`, - the ``before_script`` section of the ``.integration_template`` rule of - ``.gitlab/ci/test/integration.yml``, + :src:`.gitlab/ci/test/integration.yml`, - the ``before_script`` section of the ``tezt:main`` rule of - ``.gitlab/ci/tezt.yml``, + :src:`.gitlab/ci/test/tezt.yml`, - the ``before_script`` section of the ``tezt:manual:migration`` rule of ``.gitlab/ci/tezt.yml``, and - the ``before_script`` section of the ``script:test-gen-genesis`` rule From f87c0010882ee8c71750d98c1e96cc2a66202c15 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Oct 2021 13:10:26 +0200 Subject: [PATCH 0115/1220] CI: re-organize doc stage --- .gitlab-ci.yml | 2 +- .gitlab/ci/doc.yml | 41 +++++++++++++++++++ .../test-scripts.yml} | 0 .gitlab/ci/publish.yml | 41 ------------------- docs/introduction/test_howtoget.sh | 2 +- 5 files changed, 43 insertions(+), 43 deletions(-) rename .gitlab/ci/{test-doc-scripts.yml => doc/test-scripts.yml} (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 23e17d92ae..fa42ef1790 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -54,6 +54,6 @@ include: - .gitlab/ci/test/coq.yml - .gitlab/ci/test/tezt.yml - .gitlab/ci/doc.yml + - .gitlab/ci/doc/test-scripts.yml - .gitlab/ci/publish.yml - .gitlab/ci/coverage.yml - - .gitlab/ci/test-doc-scripts.yml diff --git a/.gitlab/ci/doc.yml b/.gitlab/ci/doc.yml index 91ca70f9c4..a5258db931 100644 --- a/.gitlab/ci/doc.yml +++ b/.gitlab/ci/doc.yml @@ -62,3 +62,44 @@ documentation:linkcheck: - make -C docs linkcheck - make -C docs sanitycheck allow_failure: true + +# here we use this hack to publish the tezos documentation on +# gitlab.io because we want to publish the doc for the project +# tezos under https://tezos.gitlab.io and not https://tezos.gitlab.io/tezos +# The latter follows the gitlab url convention of +# https://.gitlab.io// +# Notice that we push only if CI_COMMIT_REF_NAME is really master . +# This allows to test the release workflow +publish:documentation: + extends: + - .default_settings_template + - .image_template__runtime_build_test_dependencies_template + - .rules_template__master + stage: doc + before_script: + - sudo apk add --no-cache openssh-client rsync + - echo "${CI_PK_GITLAB_DOC}" > ~/.ssh/id_ed25519 + - echo "${CI_KH}" > ~/.ssh/known_hosts + - chmod 400 ~/.ssh/id_ed25519 + # Load the environment poetry previously created in the docker image. + # Give access to the Python dependencies/executables + - . $HOME/.venv/bin/activate + script: + - if [ "${CI_COMMIT_REF_NAME}" == "master" ] ; then + make -C docs all ; + git clone --depth 5 git@gitlab.com:${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAMESPACE}.gitlab.io gitlab.io ; + rsync --recursive --links --perms --delete + --exclude=.doctrees --exclude={{main,alpha,zero}net,master}/index.html + docs/_build/ gitlab.io/public/ ; + cd gitlab.io ; + else + echo "Skip pushing documentation. Only pushing for real master" ; + fi + - if [ -z "$(git status -s)" ] ; then + echo "Nothing to commit!" ; + else + git add public ; + git commit -m "Import doc of ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_SHA}" ; + git push origin master ; + fi + interruptible: false diff --git a/.gitlab/ci/test-doc-scripts.yml b/.gitlab/ci/doc/test-scripts.yml similarity index 100% rename from .gitlab/ci/test-doc-scripts.yml rename to .gitlab/ci/doc/test-scripts.yml diff --git a/.gitlab/ci/publish.yml b/.gitlab/ci/publish.yml index 78fca63d68..07302ff200 100644 --- a/.gitlab/ci/publish.yml +++ b/.gitlab/ci/publish.yml @@ -185,44 +185,3 @@ merge-manifest: --amend "${DOCKER_IMAGE_NAME%?}:arm64_${TAG_NAME}" - docker manifest push "${DOCKER_IMAGE_NAME%?}:${TAG_NAME}_${CI_COMMIT_SHORT_SHA}_${LAST_COMMIT_DATE_TIME}" interruptible: false - -# here we use this hack to publish the tezos documentation on -# gitlab.io because we want to publish the doc for the project -# tezos under https://tezos.gitlab.io and not https://tezos.gitlab.io/tezos -# The latter follows the gitlab url convention of -# https://.gitlab.io// -# Notice that we push only if CI_COMMIT_REF_NAME is really master . -# This allows to test the release workflow -publish:documentation: - extends: - - .default_settings_template - - .image_template__runtime_build_test_dependencies_template - - .rules_template__master - stage: doc - before_script: - - sudo apk add --no-cache openssh-client rsync - - echo "${CI_PK_GITLAB_DOC}" > ~/.ssh/id_ed25519 - - echo "${CI_KH}" > ~/.ssh/known_hosts - - chmod 400 ~/.ssh/id_ed25519 - # Load the environment poetry previously created in the docker image. - # Give access to the Python dependencies/executables - - . $HOME/.venv/bin/activate - script: - - if [ "${CI_COMMIT_REF_NAME}" == "master" ] ; then - make -C docs all ; - git clone --depth 5 git@gitlab.com:${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAMESPACE}.gitlab.io gitlab.io ; - rsync --recursive --links --perms --delete - --exclude=.doctrees --exclude={{main,alpha,zero}net,master}/index.html - docs/_build/ gitlab.io/public/ ; - cd gitlab.io ; - else - echo "Skip pushing documentation. Only pushing for real master" ; - fi - - if [ -z "$(git status -s)" ] ; then - echo "Nothing to commit!" ; - else - git add public ; - git commit -m "Import doc of ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_SHA}" ; - git push origin master ; - fi - interruptible: false diff --git a/docs/introduction/test_howtoget.sh b/docs/introduction/test_howtoget.sh index 03f004dba4..66e1b91907 100755 --- a/docs/introduction/test_howtoget.sh +++ b/docs/introduction/test_howtoget.sh @@ -10,7 +10,7 @@ # - by the CI to check them on a regular basis (e.g. every day) # # Therefore, mind keeping in sync the list of scenarios with both the Makefile -# and the CI (file .gitlab/ci/test-doc-scripts.yml). +# and the CI (file .gitlab/ci/doc/doc-scripts.yml). # Ubuntu Bionic Beaver 18.04 LTS: UBUNTU_BIONIC=public.ecr.aws/lts/ubuntu:18.04_stable From 459f5f2d6db16c3a667c6da2e47b536d59ae660b Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Oct 2021 13:17:03 +0200 Subject: [PATCH 0116/1220] CI: re-organize build_/publish_release stages --- .gitlab-ci.yml | 3 +- .gitlab/ci/build_release.yml | 67 +++++++++++++ .../ci/{publish.yml => publish_release.yml} | 95 ------------------- .gitlab/ci/templates.yml | 25 +++++ 4 files changed, 94 insertions(+), 96 deletions(-) create mode 100644 .gitlab/ci/build_release.yml rename .gitlab/ci/{publish.yml => publish_release.yml} (54%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fa42ef1790..acca664009 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,5 +55,6 @@ include: - .gitlab/ci/test/tezt.yml - .gitlab/ci/doc.yml - .gitlab/ci/doc/test-scripts.yml - - .gitlab/ci/publish.yml + - .gitlab/ci/build_release.yml + - .gitlab/ci/publish_release.yml - .gitlab/ci/coverage.yml diff --git a/.gitlab/ci/build_release.yml b/.gitlab/ci/build_release.yml new file mode 100644 index 0000000000..ca6def0e48 --- /dev/null +++ b/.gitlab/ci/build_release.yml @@ -0,0 +1,67 @@ +.build_docker_release_template: + extends: + - .default_settings_template + - .image_template__latest + - .docker_registry_auth # this setup a before_script for the auth + services: + - docker:dind + variables: + DOCKER_DRIVER: overlay2 + IMAGE_ARCH_PREFIX: "" + script: + - apk --no-cache --virtual add git + # Build normal, bare and debug image + - ./scripts/create_docker_image.sh + "${DOCKER_IMAGE_NAME}" + "${TAG_NAME}" + "${build_deps_image_name}" + "${build_deps_image_version}" + "${CI_COMMIT_SHORT_SHA}" + # auth gitlab or dockerhub registry + # notice the different namespace for gitlab and that we remove the `-` + # Test the bare image + - ./scripts/ci/docker_smoke_test.sh "${DOCKER_IMAGE_NAME}bare:${TAG_NAME}" "${CI_COMMIT_SHORT_SHA}" version + - docker push "${DOCKER_IMAGE_NAME%?}:${TAG_NAME}" ; + - docker push "${DOCKER_IMAGE_NAME}bare:${TAG_NAME}" ; + - docker push "${DOCKER_IMAGE_NAME}debug:${TAG_NAME}" ; + interruptible: false + +publish:docker_manual_amd64: + extends: + - .build_docker_release_template + - .rules_template__development_docker + variables: + IMAGE_ARCH_PREFIX: "amd64_" + stage: manual + needs: [] + +publish:docker_manual_arm64: + extends: + - .build_docker_release_template + - .rules_template__development_docker + variables: + IMAGE_ARCH_PREFIX: "arm64_" + stage: manual + needs: [] + tags: + - arm64 + +build_release:docker_amd64: + extends: + - .build_docker_release_template + - .rules_template__master_and_releases + variables: + IMAGE_ARCH_PREFIX: "amd64_" + stage: build_release + tags: + - safe_docker + +build_release:docker_arm64: + extends: + - .build_docker_release_template + - .rules_template__master_and_releases + variables: + IMAGE_ARCH_PREFIX: "arm64_" + stage: build_release + tags: + - arm64 diff --git a/.gitlab/ci/publish.yml b/.gitlab/ci/publish_release.yml similarity index 54% rename from .gitlab/ci/publish.yml rename to .gitlab/ci/publish_release.yml index 07302ff200..d985139fec 100644 --- a/.gitlab/ci/publish.yml +++ b/.gitlab/ci/publish_release.yml @@ -1,98 +1,3 @@ -# Setup authentication for either Docker Hub (release) or GitLab registry (dev). -# Also setup Docker names such that they are valid for the target (Docker Hub or GitLab). -# Docker constraints on tags: https://docs.docker.com/engine/reference/commandline/tag/ -# -# A tag name must be valid ASCII and may contain lowercase and -# uppercase letters, digits, underscores, periods and dashes. A tag -# name may not start with a period or a dash and may contain a maximum -# of 128 characters. -# -# To detect dev mode we test the value of $MASTER_OR_RELEASE -# The variable MASTER_OR_RELEASE is set in the template -# .rules_template__master_and_releases -# GitLab image name must follow this format: -# https://docs.gitlab.com/ee/user/packages/container_registry/#image-naming-convention -.docker_registry_auth: - before_script: - - mkdir ~/.docker || true - - if [ "$MASTER_OR_RELEASE" = "true" ]; then - export DOCKER_IMAGE_NAME="docker.io/${CI_PROJECT_PATH}-" ; - echo "{ \"auths\":{ \"https://index.docker.io/v1/\":{ \"auth\":\"${CI_DOCKER_AUTH}\" } } }" > ~/.docker/config.json ; - else - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY ; - export DOCKER_IMAGE_NAME="${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/" ; - fi - - TAG_NAME=$(echo "${IMAGE_ARCH_PREFIX}${CI_COMMIT_REF_NAME}" | tr -c -- '-._\n[:alnum:]' '_') - - echo "Building images ${DOCKER_IMAGE_NAME%?} ( /bare & /debug ) ${TAG_NAME}" - -.build_docker_release_template: - extends: - - .default_settings_template - - .image_template__latest - - .docker_registry_auth # this setup a before_script for the auth - services: - - docker:dind - variables: - DOCKER_DRIVER: overlay2 - IMAGE_ARCH_PREFIX: "" - script: - - apk --no-cache --virtual add git - # Build normal, bare and debug image - - ./scripts/create_docker_image.sh - "${DOCKER_IMAGE_NAME}" - "${TAG_NAME}" - "${build_deps_image_name}" - "${build_deps_image_version}" - "${CI_COMMIT_SHORT_SHA}" - # auth gitlab or dockerhub registry - # notice the different namespace for gitlab and that we remove the `-` - # Test the bare image - - ./scripts/ci/docker_smoke_test.sh "${DOCKER_IMAGE_NAME}bare:${TAG_NAME}" "${CI_COMMIT_SHORT_SHA}" version - - docker push "${DOCKER_IMAGE_NAME%?}:${TAG_NAME}" ; - - docker push "${DOCKER_IMAGE_NAME}bare:${TAG_NAME}" ; - - docker push "${DOCKER_IMAGE_NAME}debug:${TAG_NAME}" ; - interruptible: false - -publish:docker_manual_amd64: - extends: - - .build_docker_release_template - - .rules_template__development_docker - variables: - IMAGE_ARCH_PREFIX: "amd64_" - stage: manual - needs: [] - -publish:docker_manual_arm64: - extends: - - .build_docker_release_template - - .rules_template__development_docker - variables: - IMAGE_ARCH_PREFIX: "arm64_" - stage: manual - needs: [] - tags: - - arm64 - -build_release:docker_amd64: - extends: - - .build_docker_release_template - - .rules_template__master_and_releases - variables: - IMAGE_ARCH_PREFIX: "amd64_" - stage: build_release - tags: - - safe_docker - -build_release:docker_arm64: - extends: - - .build_docker_release_template - - .rules_template__master_and_releases - variables: - IMAGE_ARCH_PREFIX: "arm64_" - stage: build_release - tags: - - arm64 - .release_static_binaries_template: extends: - .rules_template__release_tag diff --git a/.gitlab/ci/templates.yml b/.gitlab/ci/templates.yml index 88c6c8411f..17465b91eb 100644 --- a/.gitlab/ci/templates.yml +++ b/.gitlab/ci/templates.yml @@ -275,3 +275,28 @@ variables: # Load the environment poetry previously created in the docker image. # Give access to the Python dependencies/executables - . $HOME/.venv/bin/activate + +# Setup authentication for either Docker Hub (release) or GitLab registry (dev). +# Also setup Docker names such that they are valid for the target (Docker Hub or GitLab). +# Docker constraints on tags: https://docs.docker.com/engine/reference/commandline/tag/ +# +# A tag name must be valid ASCII and may contain lowercase and +# uppercase letters, digits, underscores, periods and dashes. A tag +# name may not start with a period or a dash and may contain a maximum +# of 128 characters. +# +# To detect dev mode we test the value of $CI_REGISTRY. +# GitLab image name must follow this format: +# https://docs.gitlab.com/ee/user/packages/container_registry/#image-naming-convention +.docker_registry_auth: + before_script: + - mkdir ~/.docker || true + - if [ "$MASTER_OR_RELEASE" = "true" ]; then + export DOCKER_IMAGE_NAME="docker.io/${CI_PROJECT_PATH}-" ; + echo "{ \"auths\":{ \"https://index.docker.io/v1/\":{ \"auth\":\"${CI_DOCKER_AUTH}\" } } }" > ~/.docker/config.json ; + else + docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY ; + export DOCKER_IMAGE_NAME="${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/" ; + fi + - TAG_NAME=$(echo "${IMAGE_ARCH_PREFIX}${CI_COMMIT_REF_NAME}" | tr -c -- '-._\n[:alnum:]' '_') + - echo "Building images ${DOCKER_IMAGE_NAME%?} ( /bare & /debug ) ${TAG_NAME}" From 6f56f217ea3d90b040c8613bc97d7541afe5ca68 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Oct 2021 13:19:30 +0200 Subject: [PATCH 0117/1220] CI: move coverage.yml to test_coverage.yml --- .gitlab-ci.yml | 2 +- .gitlab/ci/{coverage.yml => test_coverage.yml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename .gitlab/ci/{coverage.yml => test_coverage.yml} (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index acca664009..20fbe03b79 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,4 +57,4 @@ include: - .gitlab/ci/doc/test-scripts.yml - .gitlab/ci/build_release.yml - .gitlab/ci/publish_release.yml - - .gitlab/ci/coverage.yml + - .gitlab/ci/test_coverage.yml diff --git a/.gitlab/ci/coverage.yml b/.gitlab/ci/test_coverage.yml similarity index 100% rename from .gitlab/ci/coverage.yml rename to .gitlab/ci/test_coverage.yml From 348304a533f4f9e669c17a20451eb69fc67492ad Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Thu, 14 Oct 2021 13:38:42 +0200 Subject: [PATCH 0118/1220] CI: document new structure and give guidelines --- .gitlab-ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 20fbe03b79..9c81bf70b2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,6 +38,18 @@ stages: - test_coverage - manual +# All the jobs belonging to a stage X should be in +# .gitlab/ci/X.yml. The stage "manual" is an exception to this rule, +# as jobs of that stage are not logically related. + +# If the configuration for stage X is long, it can be broken up in +# subfiles .gitlab/ci/X/a.yml, .gitlab/ci/X/b.yml, etc (see e.g. the +# stage test). + +# Finally, templates shall not be defined in one stage file and used +# in another. That is, a template defined in test.yml shall not be +# used in doc.yml (but it's fine to use it in a subfile test/X.yml). + include: - .gitlab/ci/templates.yml From c18e46f3f1254a06e61dd7fde7b95eac4dc08c6d Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Tue, 30 Nov 2021 10:41:37 +0100 Subject: [PATCH 0119/1220] Proto/Micheslon: add Nomadic Labs copyright. --- .../lib_benchmark/michelson_samplers.ml | 2 +- .../lib_benchmark/michelson_samplers.mli | 2 +- .../interpreter_benchmarks.ml | 2 +- .../interpreter_workload.ml | 2 +- src/proto_alpha/lib_benchmarks_proto/size.ml | 2 +- src/proto_alpha/lib_protocol/alpha_context.ml | 2 +- .../lib_protocol/alpha_context.mli | 2 +- .../lib_protocol/michelson_v1_gas.ml | 2 +- .../lib_protocol/michelson_v1_gas.mli | 1 + .../lib_protocol/script_comparable.ml | 1 + .../lib_protocol/script_int_repr.ml | 1 + .../lib_protocol/script_int_repr.mli | 1 + .../lib_protocol/script_interpreter.ml | 2 +- .../lib_protocol/script_interpreter_defs.ml | 2 +- .../lib_protocol/script_ir_translator.ml | 1 + .../lib_protocol/script_ir_translator.mli | 1 + src/proto_alpha/lib_protocol/script_map.ml | 1 + src/proto_alpha/lib_protocol/script_set.ml | 1 + .../lib_protocol/script_string_repr.ml | 2 +- .../lib_protocol/script_string_repr.mli | 2 +- .../lib_protocol/script_timestamp_repr.ml | 1 + .../lib_protocol/script_timestamp_repr.mli | 1 + .../lib_protocol/script_typed_ir.ml | 1 + .../lib_protocol/script_typed_ir.mli | 1 + .../lib_protocol/script_typed_ir_size.ml | 2 +- .../lib_protocol/script_typed_ir_size.mli | 2 +- .../michelson/test_typechecking.ml | 25 +++++++++++++++++++ .../test/pbt/test_script_comparison.ml | 2 +- src/proto_alpha/lib_protocol/tez_repr.ml | 2 +- src/proto_alpha/lib_protocol/tez_repr.mli | 2 +- .../lib_protocol/ticket_balance_key.ml | 1 + .../lib_protocol/ticket_scanner.ml | 1 + 32 files changed, 56 insertions(+), 17 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index 3a6103d3dc..9af0814916 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.mli b/src/proto_alpha/lib_benchmark/michelson_samplers.mli index 813638f3ca..4ab6d5bd30 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.mli +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.mli @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml index 3ec52df528..e2cc54fa76 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml index 7f48a5271d..93a80c06aa 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_benchmarks_proto/size.ml b/src/proto_alpha/lib_benchmarks_proto/size.ml index e3a3e0c14a..834b27b7c7 100644 --- a/src/proto_alpha/lib_benchmarks_proto/size.ml +++ b/src/proto_alpha/lib_benchmarks_proto/size.ml @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/alpha_context.ml b/src/proto_alpha/lib_protocol/alpha_context.ml index d4706d7c73..cd38eb3b12 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.ml +++ b/src/proto_alpha/lib_protocol/alpha_context.ml @@ -2,7 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) -(* Copyright (c) 2019-2020 Nomadic Labs *) +(* Copyright (c) 2019-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 4049cb49da..51a7d6eb28 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -2,7 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) -(* Copyright (c) 2019-2021 Nomadic Labs *) +(* Copyright (c) 2019-2022 Nomadic Labs *) (* Copyright (c) 2021 Trili Tech, *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) diff --git a/src/proto_alpha/lib_protocol/michelson_v1_gas.ml b/src/proto_alpha/lib_protocol/michelson_v1_gas.ml index 55f8e60ec3..6c5e392eb4 100644 --- a/src/proto_alpha/lib_protocol/michelson_v1_gas.ml +++ b/src/proto_alpha/lib_protocol/michelson_v1_gas.ml @@ -2,7 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) -(* Copyright (c) 2019-2020 Nomadic Labs *) +(* Copyright (c) 2019-2022 Nomadic Labs *) (* Copyright (c) 2020 Metastate AG *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) diff --git a/src/proto_alpha/lib_protocol/michelson_v1_gas.mli b/src/proto_alpha/lib_protocol/michelson_v1_gas.mli index 2b4674cbcc..bd90bd06db 100644 --- a/src/proto_alpha/lib_protocol/michelson_v1_gas.mli +++ b/src/proto_alpha/lib_protocol/michelson_v1_gas.mli @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2019-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_comparable.ml b/src/proto_alpha/lib_protocol/script_comparable.ml index 93c58db7b9..da761092cd 100644 --- a/src/proto_alpha/lib_protocol/script_comparable.ml +++ b/src/proto_alpha/lib_protocol/script_comparable.ml @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* Copyright (c) 2020 Metastate AG *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) diff --git a/src/proto_alpha/lib_protocol/script_int_repr.ml b/src/proto_alpha/lib_protocol/script_int_repr.ml index f5eff71ab4..7bea740237 100644 --- a/src/proto_alpha/lib_protocol/script_int_repr.ml +++ b/src/proto_alpha/lib_protocol/script_int_repr.ml @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_int_repr.mli b/src/proto_alpha/lib_protocol/script_int_repr.mli index b31894d598..b104b36201 100644 --- a/src/proto_alpha/lib_protocol/script_int_repr.mli +++ b/src/proto_alpha/lib_protocol/script_int_repr.mli @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index f979279bd2..ce1e602a42 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -3,7 +3,7 @@ (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) (* Copyright (c) 2020 Metastate AG *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index bcafd60fcf..1b9c2a9ed9 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 655d8db2d9..55a938c0e3 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3,6 +3,7 @@ (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) (* Copyright (c) 2020 Metastate AG *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.mli b/src/proto_alpha/lib_protocol/script_ir_translator.mli index 24c1d6ef4d..0fef3a64fd 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.mli +++ b/src/proto_alpha/lib_protocol/script_ir_translator.mli @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_map.ml b/src/proto_alpha/lib_protocol/script_map.ml index d53d16aeef..4404669e8e 100644 --- a/src/proto_alpha/lib_protocol/script_map.ml +++ b/src/proto_alpha/lib_protocol/script_map.ml @@ -3,6 +3,7 @@ (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) (* Copyright (c) 2020 Metastate AG *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_set.ml b/src/proto_alpha/lib_protocol/script_set.ml index 703ffae7aa..76cbb2249a 100644 --- a/src/proto_alpha/lib_protocol/script_set.ml +++ b/src/proto_alpha/lib_protocol/script_set.ml @@ -3,6 +3,7 @@ (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) (* Copyright (c) 2020 Metastate AG *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_string_repr.ml b/src/proto_alpha/lib_protocol/script_string_repr.ml index e6e45dd9ee..a3507f16fa 100644 --- a/src/proto_alpha/lib_protocol/script_string_repr.ml +++ b/src/proto_alpha/lib_protocol/script_string_repr.ml @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_string_repr.mli b/src/proto_alpha/lib_protocol/script_string_repr.mli index f94b65b389..1ff3572808 100644 --- a/src/proto_alpha/lib_protocol/script_string_repr.mli +++ b/src/proto_alpha/lib_protocol/script_string_repr.mli @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_timestamp_repr.ml b/src/proto_alpha/lib_protocol/script_timestamp_repr.ml index 22b51a4945..aed8577b5d 100644 --- a/src/proto_alpha/lib_protocol/script_timestamp_repr.ml +++ b/src/proto_alpha/lib_protocol/script_timestamp_repr.ml @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_timestamp_repr.mli b/src/proto_alpha/lib_protocol/script_timestamp_repr.mli index 2e628dae29..3e735bbe65 100644 --- a/src/proto_alpha/lib_protocol/script_timestamp_repr.mli +++ b/src/proto_alpha/lib_protocol/script_timestamp_repr.mli @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 5d9fe73d0a..788c4789bb 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -3,6 +3,7 @@ (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) (* Copyright (c) 2020 Metastate AG *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 4991feaedf..c1e55c91ae 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -3,6 +3,7 @@ (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) (* Copyright (c) 2020 Metastate AG *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index c9825ec644..bcb1ca4294 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.mli b/src/proto_alpha/lib_protocol/script_typed_ir_size.mli index b40ad8c451..9b51ba8b8c 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.mli @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml index 2a5e6d612a..3718c81602 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml @@ -1,3 +1,28 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021-2022 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + (** Testing ------- Component: Protocol (type-checking) diff --git a/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml b/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml index 640f7266f3..b5b4471f74 100644 --- a/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml @@ -1,7 +1,7 @@ (*****************************************************************************) (* *) (* Open Source License *) -(* Copyright (c) 2021 Nomadic Labs, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/tez_repr.ml b/src/proto_alpha/lib_protocol/tez_repr.ml index 5636b07a16..b1612b974c 100644 --- a/src/proto_alpha/lib_protocol/tez_repr.ml +++ b/src/proto_alpha/lib_protocol/tez_repr.ml @@ -2,7 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) -(* Copyright (c) 2020 Nomadic Labs *) +(* Copyright (c) 2020-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/tez_repr.mli b/src/proto_alpha/lib_protocol/tez_repr.mli index 168dcac9b0..155edc54df 100644 --- a/src/proto_alpha/lib_protocol/tez_repr.mli +++ b/src/proto_alpha/lib_protocol/tez_repr.mli @@ -2,7 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) -(* Copyright (c) 2020 Nomadic Labs *) +(* Copyright (c) 2020-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/ticket_balance_key.ml b/src/proto_alpha/lib_protocol/ticket_balance_key.ml index 2a12426b0e..1011c9a082 100644 --- a/src/proto_alpha/lib_protocol/ticket_balance_key.ml +++ b/src/proto_alpha/lib_protocol/ticket_balance_key.ml @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2021 Trili Tech, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) diff --git a/src/proto_alpha/lib_protocol/ticket_scanner.ml b/src/proto_alpha/lib_protocol/ticket_scanner.ml index ddccfb016c..c553c3d22d 100644 --- a/src/proto_alpha/lib_protocol/ticket_scanner.ml +++ b/src/proto_alpha/lib_protocol/ticket_scanner.ml @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2021 Trili Tech, *) +(* Copyright (c) 2021-2022 Nomadic Labs *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) From 5cde8dac10420e6a776757735bb42b51f5b2b004 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Tue, 30 Nov 2021 11:00:07 +0100 Subject: [PATCH 0120/1220] Proto/Michelson: make Script_string_repr.t algebraic. --- .../lib_protocol/script_string_repr.ml | 22 +++++++++++-------- .../lib_protocol/script_string_repr.mli | 6 ++++- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_string_repr.ml b/src/proto_alpha/lib_protocol/script_string_repr.ml index a3507f16fa..b3108eb31e 100644 --- a/src/proto_alpha/lib_protocol/script_string_repr.ml +++ b/src/proto_alpha/lib_protocol/script_string_repr.ml @@ -25,7 +25,9 @@ (** Strings of printable characters *) -type t = string (* Invariant: contains only printable characters *) +type repr = string (* Invariant: contains only printable characters *) + +type t = String_tag of repr [@@ocaml.unboxed] type error += Non_printable_character of (int * string) @@ -52,11 +54,11 @@ let () = (function Non_printable_character (pos, s) -> Some (pos, s) | _ -> None) (fun (pos, s) -> Non_printable_character (pos, s)) -let empty = "" +let empty = String_tag "" let of_string v = let rec check_printable_ascii i = - if Compare.Int.(i < 0) then ok v + if Compare.Int.(i < 0) then ok (String_tag v) else match v.[i] with | '\n' | '\x20' .. '\x7E' -> check_printable_ascii (i - 1) @@ -64,14 +66,16 @@ let of_string v = in check_printable_ascii (String.length v - 1) -let to_string s = s +let to_string (String_tag s) = s -let compare = Compare.String.compare +let compare (String_tag x) (String_tag y) = Compare.String.compare x y -let length = String.length +let length (String_tag s) = String.length s -let concat_pair x y = x ^ y +let concat_pair (String_tag x) (String_tag y) = String_tag (x ^ y) -let concat l = String.concat "" l +let concat l = + let l = List.map (fun (String_tag s) -> s) l in + String_tag (String.concat "" l) -let sub s offset length = String.sub s offset length +let sub (String_tag s) offset length = String_tag (String.sub s offset length) diff --git a/src/proto_alpha/lib_protocol/script_string_repr.mli b/src/proto_alpha/lib_protocol/script_string_repr.mli index 1ff3572808..e76a3b15e6 100644 --- a/src/proto_alpha/lib_protocol/script_string_repr.mli +++ b/src/proto_alpha/lib_protocol/script_string_repr.mli @@ -25,7 +25,11 @@ (** Strings of printable characters *) -type t +type repr + +(** [t] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) +type t = String_tag of repr [@@ocaml.unboxed] type error += Non_printable_character of (int * string) From 56536db745bad900c2dfc01d24b6ff05c5c260d7 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Tue, 30 Nov 2021 13:48:22 +0100 Subject: [PATCH 0121/1220] Proto/Michelson: make Tez_repr.t algebraic. --- .../lib_protocol/alpha_context.mli | 6 +- src/proto_alpha/lib_protocol/tez_repr.ml | 88 +++++++++++++------ src/proto_alpha/lib_protocol/tez_repr.mli | 6 +- 3 files changed, 72 insertions(+), 28 deletions(-) diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 51a7d6eb28..a1bc60ac31 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -89,7 +89,11 @@ module Slot : sig end module Tez : sig - include BASIC_DATA + type repr + + type t = Tez_tag of repr [@@ocaml.unboxed] + + include BASIC_DATA with type t := t type tez = t diff --git a/src/proto_alpha/lib_protocol/tez_repr.ml b/src/proto_alpha/lib_protocol/tez_repr.ml index b1612b974c..44a82ec666 100644 --- a/src/proto_alpha/lib_protocol/tez_repr.ml +++ b/src/proto_alpha/lib_protocol/tez_repr.ml @@ -28,7 +28,11 @@ let id = "tez" let name = "mutez" -include Compare.Int64 (* invariant: positive *) +open Compare.Int64 (* invariant: positive *) + +type repr = t + +type t = Tez_tag of repr [@@ocaml.unboxed] type error += | Addition_overflow of t * t (* `Temporary *) @@ -39,17 +43,19 @@ type error += (* `Temporary *) -let zero = 0L +let zero = Tez_tag 0L (* all other constant are defined from the value of one micro tez *) -let one_mutez = 1L +let one_mutez = Tez_tag 1L -let one_cent = Int64.mul one_mutez 10_000L +let mul_int (Tez_tag tez) i = Tez_tag (Int64.mul tez i) -let fifty_cents = Int64.mul one_cent 50L +let one_cent = mul_int one_mutez 10_000L + +let fifty_cents = mul_int one_cent 50L (* 1 tez = 100 cents = 1_000_000 mutez *) -let one = Int64.mul one_cent 100L +let one = mul_int one_cent 100L let of_string s = let triplets = function @@ -70,7 +76,8 @@ let of_string s = let len = String.length s in String.init 6 (fun i -> if Compare.Int.(i < len) then s.[i] else '0') in - Int64.of_string_opt (remove_commas left ^ pad_to_six (remove_commas right)) + let prepared = remove_commas left ^ pad_to_six (remove_commas right) in + Option.map (fun i -> Tez_tag i) (Int64.of_string_opt prepared) in match String.split_on_char '.' s with | [left; right] -> @@ -86,7 +93,7 @@ let of_string s = else None | _ -> None -let pp ppf amount = +let pp ppf (Tez_tag amount) = let mult_int = 1_000_000L in let[@coq_struct "amount"] rec left ppf amount = let (d, r) = (Int64.(div amount 1000L), Int64.(rem amount 1000L)) in @@ -111,24 +118,33 @@ let pp ppf amount = let to_string t = Format.asprintf "%a" pp t -let ( -? ) t1 t2 = - if t2 <= t1 then ok (Int64.sub t1 t2) - else error (Subtraction_underflow (t1, t2)) +let ( -? ) tez1 tez2 = + let (Tez_tag t1) = tez1 in + let (Tez_tag t2) = tez2 in + if t2 <= t1 then ok (Tez_tag (Int64.sub t1 t2)) + else error (Subtraction_underflow (tez1, tez2)) -let sub_opt t1 t2 = if t2 <= t1 then Some (Int64.sub t1 t2) else None +let sub_opt (Tez_tag t1) (Tez_tag t2) = + if t2 <= t1 then Some (Tez_tag (Int64.sub t1 t2)) else None -let ( +? ) t1 t2 = +let ( +? ) tez1 tez2 = + let (Tez_tag t1) = tez1 in + let (Tez_tag t2) = tez2 in let t = Int64.add t1 t2 in - if t < t1 then error (Addition_overflow (t1, t2)) else ok t + if t < t1 then error (Addition_overflow (tez1, tez2)) else ok (Tez_tag t) -let ( *? ) t m = - if m < 0L then error (Negative_multiplicator (t, m)) - else if m = 0L then ok 0L - else if t > Int64.(div max_int m) then error (Multiplication_overflow (t, m)) - else ok (Int64.mul t m) +let ( *? ) tez m = + let (Tez_tag t) = tez in + if m < 0L then error (Negative_multiplicator (tez, m)) + else if m = 0L then ok (Tez_tag 0L) + else if t > Int64.(div max_int m) then + error (Multiplication_overflow (tez, m)) + else ok (Tez_tag (Int64.mul t m)) -let ( /? ) t d = - if d <= 0L then error (Invalid_divisor (t, d)) else ok (Int64.div t d) +let ( /? ) tez d = + let (Tez_tag t) = tez in + if d <= 0L then error (Invalid_divisor (tez, d)) + else ok (Tez_tag (Int64.div t d)) let mul_exn t m = match t *? Int64.(of_int m) with @@ -140,18 +156,18 @@ let div_exn t d = | Ok v -> v | Error _ -> invalid_arg "div_exn" -let of_mutez t = if t < 0L then None else Some t +let of_mutez t = if t < 0L then None else Some (Tez_tag t) let of_mutez_exn x = match of_mutez x with None -> invalid_arg "Tez.of_mutez" | Some v -> v -let to_mutez t = t +let to_mutez (Tez_tag t) = t let encoding = let open Data_encoding in - Data_encoding.def - name - (check_size 10 (conv Z.of_int64 (Json.wrap_error Z.to_int64) n)) + let decode (Tez_tag t) = Z.of_int64 t in + let encode = Json.wrap_error (fun i -> Tez_tag (Z.to_int64 i)) in + Data_encoding.def name (check_size 10 (conv decode encode n)) let () = let open Data_encoding in @@ -243,3 +259,23 @@ let () = (fun (a, b) -> Invalid_divisor (a, b)) type tez = t + +let compare (Tez_tag x) (Tez_tag y) = compare x y + +let ( = ) (Tez_tag x) (Tez_tag y) = x = y + +let ( <> ) (Tez_tag x) (Tez_tag y) = x <> y + +let ( < ) (Tez_tag x) (Tez_tag y) = x < y + +let ( > ) (Tez_tag x) (Tez_tag y) = x > y + +let ( <= ) (Tez_tag x) (Tez_tag y) = x <= y + +let ( >= ) (Tez_tag x) (Tez_tag y) = x >= y + +let equal (Tez_tag x) (Tez_tag y) = equal x y + +let max (Tez_tag x) (Tez_tag y) = Tez_tag (max x y) + +let min (Tez_tag x) (Tez_tag y) = Tez_tag (min x y) diff --git a/src/proto_alpha/lib_protocol/tez_repr.mli b/src/proto_alpha/lib_protocol/tez_repr.mli index 155edc54df..1ceab70371 100644 --- a/src/proto_alpha/lib_protocol/tez_repr.mli +++ b/src/proto_alpha/lib_protocol/tez_repr.mli @@ -24,7 +24,11 @@ (* *) (*****************************************************************************) -type t +type repr + +(** [t] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) +type t = Tez_tag of repr [@@ocaml.unboxed] type tez = t From 67f5439832e310c6d6656439fcf6327bd8dd6a20 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Tue, 30 Nov 2021 16:49:23 +0100 Subject: [PATCH 0122/1220] Proto/Michelson: make Script_timestamp_repr.t algebraic. --- .../lib_protocol/alpha_context.mli | 4 ++- .../lib_protocol/script_timestamp_repr.ml | 29 +++++++++++-------- .../lib_protocol/script_timestamp_repr.mli | 8 +++-- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index a1bc60ac31..0316d49538 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -464,7 +464,9 @@ module Script_int : module type of Script_int_repr module Script_timestamp : sig open Script_int - type t + type repr + + type t = Timestamp_tag of repr [@@ocaml.unboxed] val compare : t -> t -> int diff --git a/src/proto_alpha/lib_protocol/script_timestamp_repr.ml b/src/proto_alpha/lib_protocol/script_timestamp_repr.ml index aed8577b5d..f62077e319 100644 --- a/src/proto_alpha/lib_protocol/script_timestamp_repr.ml +++ b/src/proto_alpha/lib_protocol/script_timestamp_repr.ml @@ -24,33 +24,38 @@ (* *) (*****************************************************************************) -type t = Z.t +type repr = Z.t -let compare = Z.compare +type t = Timestamp_tag of repr [@@ocaml.unboxed] -let of_int64 = Z.of_int64 +let compare (Timestamp_tag x) (Timestamp_tag y) = Z.compare x y + +let of_int64 i = Timestamp_tag (Z.of_int64 i) let of_string x = match Time_repr.of_notation x with - | None -> Option.catch (fun () -> Z.of_string x) + | None -> Option.catch (fun () -> Timestamp_tag (Z.of_string x)) | Some time -> Some (of_int64 (Time_repr.to_seconds time)) -let to_notation x = +let to_notation (Timestamp_tag x) = Option.catch (fun () -> Time_repr.to_notation (Time.of_seconds (Z.to_int64 x))) -let to_num_str = Z.to_string +let to_num_str (Timestamp_tag x) = Z.to_string x let to_string x = match to_notation x with None -> to_num_str x | Some s -> s -let diff x y = Script_int_repr.of_zint @@ Z.sub x y +let diff (Timestamp_tag x) (Timestamp_tag y) = + Script_int_repr.of_zint @@ Z.sub x y -let sub_delta t delta = Z.sub t (Script_int_repr.to_zint delta) +let sub_delta (Timestamp_tag t) delta = + Timestamp_tag (Z.sub t (Script_int_repr.to_zint delta)) -let add_delta t delta = Z.add t (Script_int_repr.to_zint delta) +let add_delta (Timestamp_tag t) delta = + Timestamp_tag (Z.add t (Script_int_repr.to_zint delta)) -let to_zint x = x +let to_zint (Timestamp_tag x) = x -let of_zint x = x +let of_zint x = Timestamp_tag x -let encoding : t Data_encoding.encoding = Data_encoding.z +let encoding = Data_encoding.(conv to_zint of_zint z) diff --git a/src/proto_alpha/lib_protocol/script_timestamp_repr.mli b/src/proto_alpha/lib_protocol/script_timestamp_repr.mli index 3e735bbe65..258302cd26 100644 --- a/src/proto_alpha/lib_protocol/script_timestamp_repr.mli +++ b/src/proto_alpha/lib_protocol/script_timestamp_repr.mli @@ -29,9 +29,13 @@ open Script_int_repr +type repr + (** Representation of timestamps specific to the Michelson interpreter. - A number of seconds since the epoch. *) -type t + A number of seconds since the epoch. + [t] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) +type t = Timestamp_tag of repr [@@ocaml.unboxed] (** Convert a number of seconds since the epoch to a timestamp.*) val of_int64 : int64 -> t From 22669a946e68533f92de485d7373e0a00236f4fe Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Wed, 5 Jan 2022 23:28:05 +0100 Subject: [PATCH 0123/1220] Proto/Michelson: make Script_typed_ir.address unique. --- .../lib_benchmark/michelson_samplers.ml | 15 ++++---- src/proto_alpha/lib_benchmarks_proto/size.ml | 2 +- .../lib_protocol/script_comparable.ml | 8 +++-- .../lib_protocol/script_interpreter.ml | 32 +++++++++-------- .../lib_protocol/script_ir_translator.ml | 34 ++++++++++--------- .../lib_protocol/script_typed_ir.ml | 2 +- .../lib_protocol/script_typed_ir.mli | 2 +- .../lib_protocol/script_typed_ir_size.ml | 6 ++-- .../test/helpers/liquidity_baking_machine.ml | 4 +-- .../michelson/test_typechecking.ml | 4 +-- .../lib_protocol/ticket_balance_key.ml | 8 +++-- 11 files changed, 67 insertions(+), 50 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index 9af0814916..b0893a438a 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -488,9 +488,12 @@ end) end = struct let address rng_state = if Base_samplers.uniform_bool rng_state then - ( Alpha_context.Contract.implicit_contract - (Crypto_samplers.pkh rng_state), - Alpha_context.Entrypoint.default ) + { + contract = + Alpha_context.Contract.implicit_contract + (Crypto_samplers.pkh rng_state); + entrypoint = Alpha_context.Entrypoint.default; + } else (* For a description of the format, see tezos-codec describe alpha.contract binary encoding *) @@ -506,7 +509,7 @@ end) Alpha_context.Entrypoint.of_string_strict_exn @@ Base_samplers.string ~size:{min = 1; max = 31} rng_state in - (contract, ep) + {contract; entrypoint = ep} let chain_id rng_state = let string = Base_samplers.uniform_string ~nbytes:4 rng_state in @@ -662,8 +665,8 @@ end) arg Script_typed_ir.ty -> arg Script_typed_ir.typed_contract sampler = fun arg_ty -> let open M in - let* addr = value (address_t ~annot:None) in - return (arg_ty, addr) + let* address = value (address_t ~annot:None) in + return (arg_ty, address) and generate_operation : (Alpha_context.packed_internal_operation diff --git a/src/proto_alpha/lib_benchmarks_proto/size.ml b/src/proto_alpha/lib_benchmarks_proto/size.ml index 834b27b7c7..e6b8431dfe 100644 --- a/src/proto_alpha/lib_benchmarks_proto/size.ml +++ b/src/proto_alpha/lib_benchmarks_proto/size.ml @@ -139,7 +139,7 @@ let public_key (public_key : Signature.public_key) : t = let chain_id (_chain_id : Chain_id.t) : t = Chain_id.size let address (addr : Script_typed_ir.address) : t = - let (_contract, entrypoint) = addr in + let entrypoint = addr.entrypoint in Signature.Public_key_hash.size + String.length (Alpha_context.Entrypoint.to_string entrypoint) diff --git a/src/proto_alpha/lib_protocol/script_comparable.ml b/src/proto_alpha/lib_protocol/script_comparable.ml index da761092cd..79a947cd2b 100644 --- a/src/proto_alpha/lib_protocol/script_comparable.ml +++ b/src/proto_alpha/lib_protocol/script_comparable.ml @@ -28,9 +28,11 @@ open Alpha_context open Script_typed_ir -let compare_address (x, ex) (y, ey) = - let lres = Contract.compare x y in - if Compare.Int.(lres = 0) then Entrypoint.compare ex ey else lres +let compare_address {contract = contract1; entrypoint = entrypoint1} + {contract = contract2; entrypoint = entrypoint2} = + let lres = Contract.compare contract1 contract2 in + if Compare.Int.(lres = 0) then Entrypoint.compare entrypoint1 entrypoint2 + else lres type compare_comparable_cont = | Compare_comparable : diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index ce1e602a42..c33a8add55 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -986,11 +986,10 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = let (_, address) = accu in (step [@ocaml.tailcall]) g gas k ks address stack | IContract (kinfo, t, entrypoint, k) -> ( - let (contract, contract_entrypoint) = accu in + let addr = accu in let entrypoint_opt = - if Entrypoint.is_default contract_entrypoint then Some entrypoint - else if Entrypoint.is_default entrypoint then - Some contract_entrypoint + if Entrypoint.is_default addr.entrypoint then Some entrypoint + else if Entrypoint.is_default entrypoint then Some addr.entrypoint else (* both entrypoints are non-default *) None in match entrypoint_opt with @@ -1000,7 +999,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = ctxt kinfo.iloc t - contract + addr.contract ~entrypoint >>=? fun (ctxt, maybe_contract) -> let gas = update_local_gas_counter ctxt in @@ -1010,18 +1009,22 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = | None -> (step [@ocaml.tailcall]) (ctxt, sc) gas k ks None stack) | ITransfer_tokens (_, k) -> let p = accu in - let (amount, ((tp, (destination, entrypoint)), stack)) = stack in + let (amount, ((tp, addr_dst), stack)) = stack in + let destination = addr_dst.contract in + let entrypoint = addr_dst.entrypoint in transfer (ctxt, sc) gas amount tp p destination entrypoint >>=? fun (accu, ctxt, gas) -> (step [@ocaml.tailcall]) (ctxt, sc) gas k ks accu stack | IImplicit_account (_, k) -> let key = accu in let contract = Contract.implicit_contract key in - let res = (unit_t ~annot:None, (contract, Entrypoint.default)) in + let entrypoint = Entrypoint.default in + let res = (unit_t ~annot:None, {contract; entrypoint}) in (step [@ocaml.tailcall]) g gas k ks res stack | IView (_, View_signature {name; input_ty; output_ty}, k) -> ( let input = accu in - let ((c, _entrypoint_is_ignored), stack) = stack in + let (addr, stack) = stack in + let c = addr.contract in let ctxt = update_context gas ctxt in Contract.get_script ctxt c >>=? fun (ctxt, script_opt) -> let return_none ctxt = @@ -1144,7 +1147,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = credit init >>=? fun (res, contract, ctxt, gas) -> - let stack = ((contract, Entrypoint.default), stack) in + let stack = ({contract; entrypoint = Entrypoint.default}, stack) in (step [@ocaml.tailcall]) (ctxt, sc) gas k ks res stack | ISet_delegate (_, k) -> let delegate = accu in @@ -1187,16 +1190,16 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = let hash = Raw_hashes.sha512 bytes in (step [@ocaml.tailcall]) g gas k ks hash stack | ISource (_, k) -> - let res = (sc.payer, Entrypoint.default) in + let res = {contract = sc.payer; entrypoint = Entrypoint.default} in (step [@ocaml.tailcall]) g gas k ks res (accu, stack) | ISender (_, k) -> - let res = (sc.source, Entrypoint.default) in + let res = {contract = sc.source; entrypoint = Entrypoint.default} in (step [@ocaml.tailcall]) g gas k ks res (accu, stack) | ISelf (_, ty, entrypoint, k) -> - let res = (ty, (sc.self, entrypoint)) in + let res = (ty, {contract = sc.self; entrypoint}) in (step [@ocaml.tailcall]) g gas k ks res (accu, stack) | ISelf_address (_, k) -> - let res = (sc.self, Entrypoint.default) in + let res = {contract = sc.self; entrypoint = Entrypoint.default} in (step [@ocaml.tailcall]) g gas k ks res (accu, stack) | IAmount (_, k) -> let accu = sc.amount and stack = (accu, stack) in @@ -1423,7 +1426,8 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = | IRead_ticket (_, k) -> let {ticketer; contents; amount} = accu in let stack = (accu, stack) in - let accu = ((ticketer, Entrypoint.default), (contents, amount)) in + let addr = {contract = ticketer; entrypoint = Entrypoint.default} in + let accu = (addr, (contents, amount)) in (step [@ocaml.tailcall]) g gas k ks accu stack | ISplit_ticket (_, k) -> let ticket = accu and ((amount_a, amount_b), stack) = stack in diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 55a938c0e3..9d8a0e040e 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -465,19 +465,19 @@ let unparse_timestamp ~loc ctxt mode t = | None -> ok (Int (loc, Script_timestamp.to_zint t), ctxt) | Some s -> ok (String (loc, s), ctxt)) -let unparse_address ~loc ctxt mode (c, entrypoint) = +let unparse_address ~loc ctxt mode {contract; entrypoint} = Gas.consume ctxt Unparse_costs.contract >|? fun ctxt -> match mode with | Optimized | Optimized_legacy -> let bytes = Data_encoding.Binary.to_bytes_exn Data_encoding.(tup2 Contract.encoding Entrypoint.value_encoding) - (c, entrypoint) + (contract, entrypoint) in (Bytes (loc, bytes), ctxt) | Readable -> let notation = - Contract.to_b58check c ^ Entrypoint.to_address_suffix entrypoint + Contract.to_b58check contract ^ Entrypoint.to_address_suffix entrypoint in (String (loc, notation), ctxt) @@ -2253,7 +2253,7 @@ let parse_address ctxt : Script.node -> (address * context) tzresult = function Data_encoding.(tup2 Contract.encoding Entrypoint.value_encoding) bytes with - | Some addr -> Ok (addr, ctxt) + | Some (contract, entrypoint) -> Ok ({contract; entrypoint}, ctxt) | None -> error @@ Invalid_syntactic_constant @@ -2268,7 +2268,8 @@ let parse_address ctxt : Script.node -> (address * context) tzresult = function Entrypoint.of_string_strict ~loc name >|? fun entrypoint -> (String.sub s 0 pos, entrypoint)) >>? fun (addr, entrypoint) -> - Contract.of_b58check addr >|? fun c -> ((c, entrypoint), ctxt) + Contract.of_b58check addr >|? fun contract -> + ({contract; entrypoint}, ctxt) | expr -> error @@ Invalid_kind (location expr, [String_kind; Bytes_kind], kind expr) @@ -2592,7 +2593,7 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : Lwt.return @@ traced_no_lwt @@ parse_address ctxt expr | (Contract_t (ty, _), expr) -> traced - ( parse_address ctxt expr >>?= fun ((c, entrypoint), ctxt) -> + ( parse_address ctxt expr >>?= fun (address, ctxt) -> let loc = location expr in parse_contract ~stack_depth:(stack_depth + 1) @@ -2600,9 +2601,9 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : ctxt loc ty - c - ~entrypoint - >|=? fun (ctxt, _) -> ((ty, (c, entrypoint)), ctxt) ) + address.contract + ~entrypoint:address.entrypoint + >|=? fun (ctxt, _) -> ((ty, address), ctxt) ) (* Pairs *) | (Pair_t ((tl, _, _), (tr, _, _), _), expr) -> let r_witness = comb_witness1 tr in @@ -2658,8 +2659,8 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : if allow_forged then opened_ticket_type (location expr) t >>?= fun ty -> parse_comparable_data ?type_logger ctxt ty expr - >|=? fun (((ticketer, _entrypoint), (contents, amount)), ctxt) -> - ({ticketer; contents; amount}, ctxt) + >|=? fun (({contract; entrypoint = _}, (contents, amount)), ctxt) -> + ({ticketer = contract; contents; amount}, ctxt) else traced_fail (Unexpected_forged_value (location expr)) (* Sets *) | (Set_t (t, _ty_name), (Seq (loc, vs) as expr)) -> @@ -5216,7 +5217,7 @@ and[@coq_axiom_with_reason "complex mutually recursive definition"] parse_contra Lwt.return ( ty_eq ~legacy:true ctxt loc arg (unit_t ~annot:None) >|? fun (Eq, ctxt) -> - let contract : arg typed_contract = (arg, (contract, entrypoint)) in + let contract : arg typed_contract = (arg, {contract; entrypoint}) in (ctxt, contract) ) else fail (No_such_entrypoint entrypoint) | None -> ( @@ -5255,7 +5256,7 @@ and[@coq_axiom_with_reason "complex mutually recursive definition"] parse_contra >>? fun (entrypoint_arg, ctxt) -> entrypoint_arg >|? fun (entrypoint, arg) -> let contract : arg typed_contract = - (arg, (contract, entrypoint)) + (arg, {contract; entrypoint}) in (ctxt, contract) )) @@ -5405,7 +5406,7 @@ let parse_contract_for_script : match eq_ty with | Ok (Eq, _ty) -> let contract : arg typed_contract = - (arg, (contract, entrypoint)) + (arg, {contract; entrypoint}) in (ctxt, Some contract) | Error Inconsistent_types_fast -> (ctxt, None) ) @@ -5451,7 +5452,7 @@ let parse_contract_for_script : match entrypoint_arg with | Ok (entrypoint, arg) -> let contract : arg typed_contract = - (arg, (contract, entrypoint)) + (arg, {contract; entrypoint}) in (ctxt, Some contract) | Error Inconsistent_types_fast -> (ctxt, None))) )) @@ -5800,12 +5801,13 @@ let[@coq_axiom_with_reason "gadt"] rec unparse_data : (* ideally we would like to allow a little overhead here because it is only used for unparsing *) opened_ticket_type loc t >>?= fun opened_ticket_ty -> let t = ty_of_comparable_ty opened_ticket_ty in + let addr = {contract = ticketer; entrypoint = Entrypoint.default} in (unparse_data [@tailcall]) ctxt ~stack_depth mode t - ((ticketer, Entrypoint.default), (contents, amount)) + (addr, (contents, amount)) | (Set_t (t, _), set) -> List.fold_left_es (fun (l, ctxt) item -> diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 788c4789bb..1a31aaa41a 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -63,7 +63,7 @@ type step_constants = { type never = | -type address = Contract.t * Entrypoint.t +type address = {contract : Contract.t; entrypoint : Entrypoint.t} type ('a, 'b) pair = 'a * 'b diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index c1e55c91ae..14db2ea40c 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -44,7 +44,7 @@ type step_constants = { type never = | -type address = Contract.t * Entrypoint.t +type address = {contract : Contract.t; entrypoint : Entrypoint.t} type ('a, 'b) pair = 'a * 'b diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index bcb1ca4294..5c6104f80c 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -137,8 +137,10 @@ let timestamp_size x = Script_timestamp.to_zint x |> z_size let contract_size = Contract.in_memory_size -let address_size ((c, s) : address) = - h2w +! contract_size c +! Entrypoint.in_memory_size s +let address_size addr = + h2w + +! contract_size addr.contract + +! Entrypoint.in_memory_size addr.entrypoint let view_signature_size (View_signature {name; input_ty; output_ty}) = ret_adding diff --git a/src/proto_alpha/lib_protocol/test/helpers/liquidity_baking_machine.ml b/src/proto_alpha/lib_protocol/test/helpers/liquidity_baking_machine.ml index 00561546aa..68b417ed27 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/liquidity_baking_machine.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/liquidity_baking_machine.ml @@ -737,7 +737,7 @@ module ConcreteBaseMachine : Lqt_fa12_repr.Storage.getBalance_opt (B blk) ~contract:env.tzbtc_contract - (contract, Entrypoint.default) + {contract; entrypoint = Entrypoint.default} >>=? fun mamount -> pure (Option.value (Option.map Z.to_int mamount) ~default:0) @@ -745,7 +745,7 @@ module ConcreteBaseMachine : Lqt_fa12_repr.Storage.getBalance_opt (B blk) ~contract:env.liquidity_contract - (contract, Entrypoint.default) + {contract; entrypoint = Entrypoint.default} >>=? fun mamount -> pure (Option.value (Option.map Z.to_int mamount) ~default:0) diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml index 3718c81602..e4e7081e7c 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml @@ -707,7 +707,7 @@ let test_parse_address () = ctxt (address_t ~annot:None) (String (-1, "KT1FAKEFAKEFAKEFAKEFAKEFAKEFAKGGSE2x%")) - (kt1fake, Entrypoint.default) + {contract = kt1fake; entrypoint = Entrypoint.default} >>=? fun ctxt -> (* tz1% (empty entrypoint) *) wrap_error_lwt @@ -718,7 +718,7 @@ let test_parse_address () = ctxt (address_t ~annot:None) (String (-1, "tz1fakefakefakefakefakefakefakcphLA5%")) - (tz1fake, Entrypoint.default) + {contract = tz1fake; entrypoint = Entrypoint.default} >|=? fun _ctxt -> () let test_unparse_data loc ctxt ty x ~expected_readable ~expected_optimized = diff --git a/src/proto_alpha/lib_protocol/ticket_balance_key.ml b/src/proto_alpha/lib_protocol/ticket_balance_key.ml index 1011c9a082..e38d1e0134 100644 --- a/src/proto_alpha/lib_protocol/ticket_balance_key.ml +++ b/src/proto_alpha/lib_protocol/ticket_balance_key.ml @@ -44,8 +44,12 @@ let ticket_balance_key ctxt ~owner Gas.consume ctxt (Script.strip_annotations_cost cont_ty_unstripped) >>?= fun ctxt -> let typ = Script.strip_annotations cont_ty_unstripped in - let ticketer_address = (ticketer, Entrypoint.default) in - let owner_address = (owner, Entrypoint.default) in + let ticketer_address = + Script_typed_ir.{contract = ticketer; entrypoint = Entrypoint.default} + in + let owner_address = + Script_typed_ir.{contract = owner; entrypoint = Entrypoint.default} + in let address_t = Script_typed_ir.address_t ~annot:None in Script_ir_translator.unparse_data ctxt From 3661f865b1d295732301975664e94873f56f1528 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Wed, 5 Jan 2022 23:58:46 +0100 Subject: [PATCH 0124/1220] Proto/Michelson: make Script_typed_ir.typed_contract unique. --- .../lib_benchmark/michelson_samplers.ml | 2 +- .../lib_protocol/script_interpreter.ml | 17 +++++------ .../lib_protocol/script_ir_translator.ml | 28 ++++++++----------- .../lib_protocol/script_typed_ir.ml | 2 +- .../lib_protocol/script_typed_ir.mli | 2 +- .../lib_protocol/script_typed_ir_size.ml | 2 +- 6 files changed, 25 insertions(+), 28 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index b0893a438a..baf71242d1 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -666,7 +666,7 @@ end) fun arg_ty -> let open M in let* address = value (address_t ~annot:None) in - return (arg_ty, address) + return {arg_ty; address} and generate_operation : (Alpha_context.packed_internal_operation diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index c33a8add55..1ec094c4dc 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -983,8 +983,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = >>=? fun (opt, ctxt, gas) -> (step [@ocaml.tailcall]) (ctxt, sc) gas k ks opt stack | IAddress (_, k) -> - let (_, address) = accu in - (step [@ocaml.tailcall]) g gas k ks address stack + (step [@ocaml.tailcall]) g gas k ks accu.address stack | IContract (kinfo, t, entrypoint, k) -> ( let addr = accu in let entrypoint_opt = @@ -1009,17 +1008,19 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = | None -> (step [@ocaml.tailcall]) (ctxt, sc) gas k ks None stack) | ITransfer_tokens (_, k) -> let p = accu in - let (amount, ((tp, addr_dst), stack)) = stack in - let destination = addr_dst.contract in - let entrypoint = addr_dst.entrypoint in + let (amount, (tcontract, stack)) = stack in + let tp = tcontract.arg_ty in + let destination = tcontract.address.contract in + let entrypoint = tcontract.address.entrypoint in transfer (ctxt, sc) gas amount tp p destination entrypoint >>=? fun (accu, ctxt, gas) -> (step [@ocaml.tailcall]) (ctxt, sc) gas k ks accu stack | IImplicit_account (_, k) -> let key = accu in + let arg_ty = unit_t ~annot:None in let contract = Contract.implicit_contract key in - let entrypoint = Entrypoint.default in - let res = (unit_t ~annot:None, {contract; entrypoint}) in + let address = {contract; entrypoint = Entrypoint.default} in + let res = {arg_ty; address} in (step [@ocaml.tailcall]) g gas k ks res stack | IView (_, View_signature {name; input_ty; output_ty}, k) -> ( let input = accu in @@ -1196,7 +1197,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = let res = {contract = sc.source; entrypoint = Entrypoint.default} in (step [@ocaml.tailcall]) g gas k ks res (accu, stack) | ISelf (_, ty, entrypoint, k) -> - let res = (ty, {contract = sc.self; entrypoint}) in + let res = {arg_ty = ty; address = {contract = sc.self; entrypoint}} in (step [@ocaml.tailcall]) g gas k ks res (accu, stack) | ISelf_address (_, k) -> let res = {contract = sc.self; entrypoint = Entrypoint.default} in diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 9d8a0e040e..d1b42cf630 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -481,7 +481,7 @@ let unparse_address ~loc ctxt mode {contract; entrypoint} = in (String (loc, notation), ctxt) -let unparse_contract ~loc ctxt mode (_, address) = +let unparse_contract ~loc ctxt mode {arg_ty = _; address} = unparse_address ~loc ctxt mode address let unparse_signature ~loc ctxt mode s = @@ -2591,7 +2591,7 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : Lwt.return @@ traced_no_lwt @@ parse_chain_id ctxt expr | (Address_t _, expr) -> Lwt.return @@ traced_no_lwt @@ parse_address ctxt expr - | (Contract_t (ty, _), expr) -> + | (Contract_t (arg_ty, _), expr) -> traced ( parse_address ctxt expr >>?= fun (address, ctxt) -> let loc = location expr in @@ -2600,10 +2600,10 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : ~legacy ctxt loc - ty + arg_ty address.contract ~entrypoint:address.entrypoint - >|=? fun (ctxt, _) -> ((ty, address), ctxt) ) + >|=? fun (ctxt, _) -> ({arg_ty; address}, ctxt) ) (* Pairs *) | (Pair_t ((tl, _, _), (tr, _, _), _), expr) -> let r_witness = comb_witness1 tr in @@ -5217,8 +5217,7 @@ and[@coq_axiom_with_reason "complex mutually recursive definition"] parse_contra Lwt.return ( ty_eq ~legacy:true ctxt loc arg (unit_t ~annot:None) >|? fun (Eq, ctxt) -> - let contract : arg typed_contract = (arg, {contract; entrypoint}) in - (ctxt, contract) ) + (ctxt, {arg_ty = arg; address = {contract; entrypoint}}) ) else fail (No_such_entrypoint entrypoint) | None -> ( (* Originated account *) @@ -5254,11 +5253,8 @@ and[@coq_axiom_with_reason "complex mutually recursive definition"] parse_contra entrypoint loc >>? fun (entrypoint_arg, ctxt) -> - entrypoint_arg >|? fun (entrypoint, arg) -> - let contract : arg typed_contract = - (arg, {contract; entrypoint}) - in - (ctxt, contract) )) + entrypoint_arg >|? fun (entrypoint, arg_ty) -> + (ctxt, {arg_ty; address = {contract; entrypoint}}) )) and parse_view_name ctxt : Script.node -> (Script_string.t * context) tzresult = function @@ -5405,8 +5401,8 @@ let parse_contract_for_script : >|? fun (eq_ty, ctxt) -> match eq_ty with | Ok (Eq, _ty) -> - let contract : arg typed_contract = - (arg, {contract; entrypoint}) + let contract = + {arg_ty = arg; address = {contract; entrypoint}} in (ctxt, Some contract) | Error Inconsistent_types_fast -> (ctxt, None) ) @@ -5450,9 +5446,9 @@ let parse_contract_for_script : loc >|? fun (entrypoint_arg, ctxt) -> match entrypoint_arg with - | Ok (entrypoint, arg) -> - let contract : arg typed_contract = - (arg, {contract; entrypoint}) + | Ok (entrypoint, arg_ty) -> + let contract = + {arg_ty; address = {contract; entrypoint}} in (ctxt, Some contract) | Error Inconsistent_types_fast -> (ctxt, None))) )) diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 1a31aaa41a..0186df3a5e 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -1046,7 +1046,7 @@ and ('arg, 'ret) lambda = -> ('arg, 'ret) lambda [@@coq_force_gadt] -and 'arg typed_contract = 'arg ty * address +and 'arg typed_contract = {arg_ty : 'arg ty; address : address} and (_, _, _, _) continuation = | KNil : ('r, 'f, 'r, 'f) continuation diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 14db2ea40c..60ce3e22d3 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -1057,7 +1057,7 @@ and ('arg, 'ret) lambda = -> ('arg, 'ret) lambda [@@coq_force_gadt] -and 'arg typed_contract = 'arg ty * address +and 'arg typed_contract = {arg_ty : 'arg ty; address : address} (* diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index 5c6104f80c..5bc3c2aa99 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -168,7 +168,7 @@ let comb_set_gadt_witness_size = peano_shape_proof let dup_n_gadt_witness_size = peano_shape_proof -let contract_size (arg_ty, address) = +let contract_size {arg_ty; address} = ret_adding (ty_size arg_ty) (h2w +! address_size address) let sapling_state_size {Sapling.id; diff; memo_size = _} = From 19ad1adf96f5d99fb95a6739fd51d3435aaeac47 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Thu, 6 Jan 2022 00:20:14 +0100 Subject: [PATCH 0125/1220] Proto/Michelson: make Script_typed_ir.operation unique. --- src/proto_alpha/lib_benchmark/michelson_samplers.ml | 7 ++----- src/proto_alpha/lib_protocol/script_interpreter.ml | 10 ++++++---- .../lib_protocol/script_interpreter_defs.ml | 7 +++---- src/proto_alpha/lib_protocol/script_ir_translator.ml | 4 ++-- src/proto_alpha/lib_protocol/script_typed_ir.ml | 5 ++++- src/proto_alpha/lib_protocol/script_typed_ir.mli | 5 ++++- src/proto_alpha/lib_protocol/script_typed_ir_size.ml | 9 +++------ 7 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index baf71242d1..90b87f92dd 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -668,13 +668,10 @@ end) let* address = value (address_t ~annot:None) in return {arg_ty; address} - and generate_operation : - (Alpha_context.packed_internal_operation - * Alpha_context.Lazy_storage.diffs option) - sampler = + and generate_operation : Script_typed_ir.operation sampler = fun rng_state -> let transfer = generate_transfer_tokens rng_state in - (transfer, None) + Script_typed_ir.{piop = transfer; lazy_storage_diff = None} and generate_transfer_tokens : Alpha_context.packed_internal_operation sampler = diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 1ec094c4dc..3f10f486a8 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1155,9 +1155,8 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = let operation = Delegation delegate in let ctxt = update_context gas ctxt in fresh_internal_nonce ctxt >>?= fun (ctxt, nonce) -> - let res = - (Internal_operation {source = sc.self; operation; nonce}, None) - in + let piop = Internal_operation {source = sc.self; operation; nonce} in + let res = {piop; lazy_storage_diff = None} in let gas = update_local_gas_counter ctxt in let ctxt = outdated ctxt in (step [@ocaml.tailcall]) (ctxt, sc) gas k ks res stack @@ -1732,7 +1731,10 @@ let execute logger ctxt mode step_constants ~entrypoint ~internal ) >>=? fun (unparsed_storage, ctxt) -> Lwt.return - (let (ops, op_diffs) = List.split ops.elements in + (let op_to_couple op = (op.piop, op.lazy_storage_diff) in + let (ops, op_diffs) = + ops.elements |> List.map op_to_couple |> List.split + in let lazy_storage_diff = match List.flatten diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index 1b9c2a9ed9..53e8eb21a3 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -524,7 +524,7 @@ let transfer (ctxt, sc) gas amount tp p destination entrypoint = in fresh_internal_nonce ctxt >>?= fun (ctxt, nonce) -> let iop = {source = sc.self; operation; nonce} in - let res = (Internal_operation iop, lazy_storage_diff) in + let res = {piop = Internal_operation iop; lazy_storage_diff} in let gas = update_local_gas_counter ctxt in let ctxt = outdated ctxt in return (res, ctxt, gas) @@ -599,9 +599,8 @@ let create_contract (ctxt, sc) gas storage_type param_type code views root_name } in fresh_internal_nonce ctxt >>?= fun (ctxt, nonce) -> - let res = - (Internal_operation {source = sc.self; operation; nonce}, lazy_storage_diff) - in + let piop = Internal_operation {source = sc.self; operation; nonce} in + let res = {piop; lazy_storage_diff} in let gas = update_local_gas_counter ctxt in let ctxt = outdated ctxt in return (res, contract, ctxt, gas) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index d1b42cf630..91f9c3372f 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -520,9 +520,9 @@ let unparse_key_hash ~loc ctxt mode k = Gas.consume ctxt Unparse_costs.key_hash_readable >|? fun ctxt -> (String (loc, Signature.Public_key_hash.to_b58check k), ctxt) -let unparse_operation ~loc ctxt (op, _big_map_diff) = +let unparse_operation ~loc ctxt {piop; lazy_storage_diff = _} = let bytes = - Data_encoding.Binary.to_bytes_exn Operation.internal_operation_encoding op + Data_encoding.Binary.to_bytes_exn Operation.internal_operation_encoding piop in Gas.consume ctxt (Unparse_costs.operation bytes) >|? fun ctxt -> (Bytes (loc, bytes), ctxt) diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 0186df3a5e..5a1d835548 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -69,7 +69,10 @@ type ('a, 'b) pair = 'a * 'b type ('a, 'b) union = L of 'a | R of 'b -type operation = packed_internal_operation * Lazy_storage.diffs option +type operation = { + piop : packed_internal_operation; + lazy_storage_diff : Lazy_storage.diffs option; +} type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 60ce3e22d3..7904eb24e3 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -50,7 +50,10 @@ type ('a, 'b) pair = 'a * 'b type ('a, 'b) union = L of 'a | R of 'b -type operation = packed_internal_operation * Lazy_storage.diffs option +type operation = { + piop : packed_internal_operation; + lazy_storage_diff : Lazy_storage.diffs option; +} type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index 5bc3c2aa99..8e707e20bf 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -177,13 +177,10 @@ let sapling_state_size {Sapling.id; diff; memo_size = _} = +! Sapling.diff_in_memory_size diff +! sapling_memo_size_size -let operation_size - (operation : - packed_internal_operation * Lazy_storage.diffs_item list option) = - let (poi, diffs) = operation in +let operation_size {piop; lazy_storage_diff} = ret_adding - (Operation.packed_internal_operation_in_memory_size poi - ++ option_size_vec Lazy_storage.diffs_in_memory_size diffs) + (Operation.packed_internal_operation_in_memory_size piop + ++ option_size_vec Lazy_storage.diffs_in_memory_size lazy_storage_diff) h2w let chain_id_size = h1w +? Chain_id.size From 46b8e00e2c57b8fa7b9bc765f06cf2625198551c Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Tue, 14 Dec 2021 17:34:58 +0100 Subject: [PATCH 0126/1220] Proto/Michelson: make Script_typed_ir.Script_chain_id.t algebraic. --- .../lib_benchmark/michelson_samplers.ml | 2 +- src/proto_alpha/lib_benchmarks_proto/size.ml | 3 +- .../lib_protocol/script_comparable.ml | 3 +- .../lib_protocol/script_interpreter.ml | 6 ++-- .../lib_protocol/script_ir_translator.ml | 14 +++++---- .../lib_protocol/script_typed_ir.ml | 25 ++++++++++++++-- .../lib_protocol/script_typed_ir.mli | 30 +++++++++++++++---- .../test/pbt/test_script_comparison.ml | 2 +- 8 files changed, 65 insertions(+), 20 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index 90b87f92dd..f4c592d909 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -513,7 +513,7 @@ end) let chain_id rng_state = let string = Base_samplers.uniform_string ~nbytes:4 rng_state in - Data_encoding.Binary.of_string_exn Chain_id.encoding string + Data_encoding.Binary.of_string_exn Script_chain_id.encoding string let rec value : type a. a Script_typed_ir.ty -> a sampler = let open Script_typed_ir in diff --git a/src/proto_alpha/lib_benchmarks_proto/size.ml b/src/proto_alpha/lib_benchmarks_proto/size.ml index e6b8431dfe..2420c0a387 100644 --- a/src/proto_alpha/lib_benchmarks_proto/size.ml +++ b/src/proto_alpha/lib_benchmarks_proto/size.ml @@ -136,7 +136,8 @@ let key_hash (_keyhash : Signature.public_key_hash) : t = let public_key (public_key : Signature.public_key) : t = Signature.Public_key.size public_key -let chain_id (_chain_id : Chain_id.t) : t = Chain_id.size +let chain_id (_chain_id : Script_typed_ir.Script_chain_id.t) : t = + Script_typed_ir.Script_chain_id.size let address (addr : Script_typed_ir.address) : t = let entrypoint = addr.entrypoint in diff --git a/src/proto_alpha/lib_protocol/script_comparable.ml b/src/proto_alpha/lib_protocol/script_comparable.ml index 79a947cd2b..ce9ca359b4 100644 --- a/src/proto_alpha/lib_protocol/script_comparable.ml +++ b/src/proto_alpha/lib_protocol/script_comparable.ml @@ -61,7 +61,8 @@ let compare_comparable : type a. a comparable_ty -> a -> a -> int = (apply [@tailcall]) (Script_timestamp.compare x y) k | (Address_key _, x, y) -> (apply [@tailcall]) (compare_address x y) k | (Bytes_key _, x, y) -> (apply [@tailcall]) (Compare.Bytes.compare x y) k - | (Chain_id_key _, x, y) -> (apply [@tailcall]) (Chain_id.compare x y) k + | (Chain_id_key _, x, y) -> + (apply [@tailcall]) (Script_chain_id.compare x y) k | (Pair_key ((tl, _), (tr, _), _), (lx, rx), (ly, ry)) -> (compare_comparable [@tailcall]) tl diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 3f10f486a8..0f8363ea72 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1255,7 +1255,8 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = let transaction = accu in let (state, stack) = stack in let address = Contract.to_b58check sc.self in - let chain_id = Chain_id.to_b58check sc.chain_id in + let sc_chain_id = Script_chain_id.make sc.chain_id in + let chain_id = Script_chain_id.to_b58check sc_chain_id in let anti_replay = address ^ chain_id in let ctxt = update_context gas ctxt in Sapling.verify_update ctxt state transaction anti_replay @@ -1268,7 +1269,8 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) (ctxt, sc) gas k ks state stack | None -> (step [@ocaml.tailcall]) (ctxt, sc) gas k ks None stack) | IChainId (_, k) -> - let accu = sc.chain_id and stack = (accu, stack) in + let accu = Script_chain_id.make sc.chain_id + and stack = (accu, stack) in (step [@ocaml.tailcall]) g gas k ks accu stack | INever _ -> ( match accu with _ -> .) | IVoting_power (_, k) -> diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 91f9c3372f..8685bffdb5 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -532,12 +532,12 @@ let unparse_chain_id ~loc ctxt mode chain_id = | Optimized | Optimized_legacy -> Gas.consume ctxt Unparse_costs.chain_id_optimized >|? fun ctxt -> let bytes = - Data_encoding.Binary.to_bytes_exn Chain_id.encoding chain_id + Data_encoding.Binary.to_bytes_exn Script_chain_id.encoding chain_id in (Bytes (loc, bytes), ctxt) | Readable -> Gas.consume ctxt Unparse_costs.chain_id_readable >|? fun ctxt -> - (String (loc, Chain_id.to_b58check chain_id), ctxt) + (String (loc, Script_chain_id.to_b58check chain_id), ctxt) let unparse_bls12_381_g1 ~loc ctxt x = Gas.consume ctxt Unparse_costs.bls12_381_g1 >|? fun ctxt -> @@ -2224,11 +2224,13 @@ let parse_signature ctxt : Script.node -> (signature * context) tzresult = | expr -> error @@ Invalid_kind (location expr, [String_kind; Bytes_kind], kind expr) -let parse_chain_id ctxt : Script.node -> (Chain_id.t * context) tzresult = - function +let parse_chain_id ctxt : Script.node -> (Script_chain_id.t * context) tzresult + = function | Bytes (loc, bytes) as expr -> ( Gas.consume ctxt Typecheck_costs.chain_id_optimized >>? fun ctxt -> - match Data_encoding.Binary.of_bytes_opt Chain_id.encoding bytes with + match + Data_encoding.Binary.of_bytes_opt Script_chain_id.encoding bytes + with | Some k -> ok (k, ctxt) | None -> error @@ -2236,7 +2238,7 @@ let parse_chain_id ctxt : Script.node -> (Chain_id.t * context) tzresult = (loc, strip_locations expr, "a valid chain id")) | String (loc, s) as expr -> ( Gas.consume ctxt Typecheck_costs.chain_id_readable >>? fun ctxt -> - match Chain_id.of_b58check_opt s with + match Script_chain_id.of_b58check_opt s with | Some s -> ok (s, ctxt) | None -> error diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 5a1d835548..3c48a10b7f 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -74,6 +74,23 @@ type operation = { lazy_storage_diff : Lazy_storage.diffs option; } +module Script_chain_id = struct + type t = Chain_id_tag of Chain_id.t [@@ocaml.unboxed] + + let make x = Chain_id_tag x + + let compare (Chain_id_tag x) (Chain_id_tag y) = Chain_id.compare x y + + let size = Chain_id.size + + let encoding = + Data_encoding.conv (fun (Chain_id_tag x) -> x) make Chain_id.encoding + + let to_b58check (Chain_id_tag x) = Chain_id.to_b58check x + + let of_b58check_opt x = Option.map make (Chain_id.of_b58check_opt x) +end + type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} module type TYPE_SIZE = sig @@ -184,7 +201,9 @@ type _ comparable_ty = | Timestamp_key : Script_timestamp.t ty_metadata -> Script_timestamp.t comparable_ty - | Chain_id_key : Chain_id.t ty_metadata -> Chain_id.t comparable_ty + | Chain_id_key : + Script_chain_id.t ty_metadata + -> Script_chain_id.t comparable_ty | Address_key : address ty_metadata -> address comparable_ty | Pair_key : ('a comparable_ty * field_annot option) @@ -919,7 +938,7 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * ('b, 'u, 'r, 'f) kinstr -> ('a, 's, 'r, 'f) kinstr | IChainId : - ('a, 's) kinfo * (Chain_id.t, 'a * 's, 'r, 'f) kinstr + ('a, 's) kinfo * (Script_chain_id.t, 'a * 's, 'r, 'f) kinstr -> ('a, 's, 'r, 'f) kinstr | INever : (never, 's) kinfo -> (never, 's, 'r, 'f) kinstr | IVoting_power : @@ -1172,7 +1191,7 @@ and 'ty ty = Sapling.Memo_size.t * Sapling.state ty_metadata -> Sapling.state ty | Operation_t : operation ty_metadata -> operation ty - | Chain_id_t : Chain_id.t ty_metadata -> Chain_id.t ty + | Chain_id_t : Script_chain_id.t ty_metadata -> Script_chain_id.t ty | Never_t : never ty_metadata -> never ty | Bls12_381_g1_t : Bls12_381.G1.t ty_metadata -> Bls12_381.G1.t ty | Bls12_381_g2_t : Bls12_381.G2.t ty_metadata -> Bls12_381.G2.t ty diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 7904eb24e3..a59fb45591 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -55,6 +55,24 @@ type operation = { lazy_storage_diff : Lazy_storage.diffs option; } +module Script_chain_id : sig + (** [t] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) + type t = Chain_id_tag of Chain_id.t [@@ocaml.unboxed] + + val make : Chain_id.t -> t + + val compare : t -> t -> int + + val size : int + + val encoding : t Data_encoding.t + + val to_b58check : t -> string + + val of_b58check_opt : string -> t option +end + type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} type empty_cell = EmptyCell @@ -90,7 +108,9 @@ type _ comparable_ty = | Timestamp_key : Script_timestamp.t ty_metadata -> Script_timestamp.t comparable_ty - | Chain_id_key : Chain_id.t ty_metadata -> Chain_id.t comparable_ty + | Chain_id_key : + Script_chain_id.t ty_metadata + -> Script_chain_id.t comparable_ty | Address_key : address ty_metadata -> address comparable_ty | Pair_key : ('a comparable_ty * field_annot option) @@ -130,7 +150,7 @@ val key_key : annot:type_annot option -> public_key comparable_ty val timestamp_key : annot:type_annot option -> Script_timestamp.t comparable_ty -val chain_id_key : annot:type_annot option -> Chain_id.t comparable_ty +val chain_id_key : annot:type_annot option -> Script_chain_id.t comparable_ty val address_key : annot:type_annot option -> address comparable_ty @@ -926,7 +946,7 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * ('b, 'u, 'r, 'f) kinstr -> ('a, 's, 'r, 'f) kinstr | IChainId : - ('a, 's) kinfo * (Chain_id.t, 'a * 's, 'r, 'f) kinstr + ('a, 's) kinfo * (Script_chain_id.t, 'a * 's, 'r, 'f) kinstr -> ('a, 's, 'r, 'f) kinstr | INever : (never, 's) kinfo -> (never, 's, 'r, 'f) kinstr | IVoting_power : @@ -1279,7 +1299,7 @@ and 'ty ty = Sapling.Memo_size.t * Sapling.state ty_metadata -> Sapling.state ty | Operation_t : operation ty_metadata -> operation ty - | Chain_id_t : Chain_id.t ty_metadata -> Chain_id.t ty + | Chain_id_t : Script_chain_id.t ty_metadata -> Script_chain_id.t ty | Never_t : never ty_metadata -> never ty | Bls12_381_g1_t : Bls12_381.G1.t ty_metadata -> Bls12_381.G1.t ty | Bls12_381_g2_t : Bls12_381.G2.t ty_metadata -> Bls12_381.G2.t ty @@ -1528,7 +1548,7 @@ val sapling_state_t : val operation_t : annot:type_annot option -> operation ty -val chain_id_t : annot:type_annot option -> Chain_id.t ty +val chain_id_t : annot:type_annot option -> Script_chain_id.t ty val never_t : annot:type_annot option -> never ty diff --git a/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml b/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml index b5b4471f74..6a0012dfbb 100644 --- a/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml @@ -65,7 +65,7 @@ let rec reference_compare_comparable : type a. a comparable_ty -> a -> a -> int | (Address_key _, x, y) -> normalize_compare @@ Script_comparable.compare_address x y | (Bytes_key _, x, y) -> normalize_compare @@ Compare.Bytes.compare x y - | (Chain_id_key _, x, y) -> normalize_compare @@ Chain_id.compare x y + | (Chain_id_key _, x, y) -> normalize_compare @@ Script_chain_id.compare x y | (Pair_key ((tl, _), (tr, _), _), (lx, rx), (ly, ry)) -> let cl = reference_compare_comparable tl lx ly in if Compare.Int.(cl = 0) then reference_compare_comparable tr rx ry else cl From 958a973202c9b3a2bc4ac0dedb11e3f0f12742ef Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Wed, 15 Dec 2021 10:04:04 +0100 Subject: [PATCH 0127/1220] Proto/Michelson: make Script_typed_ir.Script_bls.Fr.t algebraic. --- .../lib_benchmark/michelson_samplers.ml | 4 +- .../lib_protocol/script_interpreter.ml | 16 ++-- .../lib_protocol/script_ir_translator.ml | 6 +- .../lib_protocol/script_typed_ir.ml | 78 ++++++++++++++----- .../lib_protocol/script_typed_ir.mli | 72 ++++++++++++----- 5 files changed, 124 insertions(+), 52 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index f4c592d909..2b7d5bd22d 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -691,10 +691,10 @@ end) | Some x -> x | None -> assert false - and generate_bls12_381_fr : Environment.Bls12_381.Fr.t sampler = + and generate_bls12_381_fr : Script_bls.Fr.t sampler = fun rng_state -> let b = Bls12_381.Fr.(to_bytes (random ~state:rng_state ())) in - match Environment.Bls12_381.Fr.of_bytes_opt b with + match Script_bls.Fr.of_bytes_opt b with | Some x -> x | None -> assert false diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 0f8363ea72..dfdf6990cf 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1307,7 +1307,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks accu stack | IAdd_bls12_381_fr (_, k) -> let x = accu and (y, stack) = stack in - let accu = Bls12_381.Fr.add x y in + let accu = Script_bls.Fr.add x y in (step [@ocaml.tailcall]) g gas k ks accu stack | IMul_bls12_381_g1 (_, k) -> let x = accu and (y, stack) = stack in @@ -1319,21 +1319,21 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks accu stack | IMul_bls12_381_fr (_, k) -> let x = accu and (y, stack) = stack in - let accu = Bls12_381.Fr.mul x y in + let accu = Script_bls.Fr.mul x y in (step [@ocaml.tailcall]) g gas k ks accu stack | IMul_bls12_381_fr_z (_, k) -> let x = accu and (y, stack) = stack in - let x = Bls12_381.Fr.of_z (Script_int.to_zint x) in - let res = Bls12_381.Fr.mul x y in + let x = Script_bls.Fr.of_z (Script_int.to_zint x) in + let res = Script_bls.Fr.mul x y in (step [@ocaml.tailcall]) g gas k ks res stack | IMul_bls12_381_z_fr (_, k) -> let y = accu and (x, stack) = stack in - let x = Bls12_381.Fr.of_z (Script_int.to_zint x) in - let res = Bls12_381.Fr.mul x y in + let x = Script_bls.Fr.of_z (Script_int.to_zint x) in + let res = Script_bls.Fr.mul x y in (step [@ocaml.tailcall]) g gas k ks res stack | IInt_bls12_381_fr (_, k) -> let x = accu in - let res = Script_int.of_zint (Bls12_381.Fr.to_z x) in + let res = Script_int.of_zint (Script_bls.Fr.to_z x) in (step [@ocaml.tailcall]) g gas k ks res stack | INeg_bls12_381_g1 (_, k) -> let x = accu in @@ -1345,7 +1345,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks accu stack | INeg_bls12_381_fr (_, k) -> let x = accu in - let accu = Bls12_381.Fr.negate x in + let accu = Script_bls.Fr.negate x in (step [@ocaml.tailcall]) g gas k ks accu stack | IPairing_check_bls12_381 (_, k) -> let pairs = accu in diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 8685bffdb5..f7f31b61ea 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -551,7 +551,7 @@ let unparse_bls12_381_g2 ~loc ctxt x = let unparse_bls12_381_fr ~loc ctxt x = Gas.consume ctxt Unparse_costs.bls12_381_fr >|? fun ctxt -> - let bytes = Bls12_381.Fr.to_bytes x in + let bytes = Script_bls.Fr.to_bytes x in (Bytes (loc, bytes), ctxt) let unparse_with_data_encoding ~loc ctxt s unparse_cost encoding = @@ -2767,12 +2767,12 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : traced_fail (Invalid_kind (location expr, [Bytes_kind], kind expr)) | (Bls12_381_fr_t _, Bytes (_, bs)) -> ( Gas.consume ctxt Typecheck_costs.bls12_381_fr >>?= fun ctxt -> - match Bls12_381.Fr.of_bytes_opt bs with + match Script_bls.Fr.of_bytes_opt bs with | Some pt -> return (pt, ctxt) | None -> fail_parse_data ()) | (Bls12_381_fr_t _, Int (_, v)) -> Gas.consume ctxt Typecheck_costs.bls12_381_fr >>?= fun ctxt -> - return (Bls12_381.Fr.of_z v, ctxt) + return (Script_bls.Fr.of_z v, ctxt) | (Bls12_381_fr_t _, expr) -> traced_fail (Invalid_kind (location expr, [Bytes_kind], kind expr)) (* diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 3c48a10b7f..0ec25207a2 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -91,6 +91,44 @@ module Script_chain_id = struct let of_b58check_opt x = Option.map make (Chain_id.of_b58check_opt x) end +module Script_bls = struct + module type S = sig + type t + + type fr + + val add : t -> t -> t + + val mul : t -> fr -> t + + val negate : t -> t + + val of_bytes_opt : Bytes.t -> t option + + val to_bytes : t -> Bytes.t + end + + module Fr = struct + type t = Fr_tag of Bls12_381.Fr.t [@@ocaml.unboxed] + + open Bls12_381.Fr + + let add (Fr_tag x) (Fr_tag y) = Fr_tag (add x y) + + let mul (Fr_tag x) (Fr_tag y) = Fr_tag (mul x y) + + let negate (Fr_tag x) = Fr_tag (negate x) + + let of_bytes_opt bytes = Option.map (fun x -> Fr_tag x) (of_bytes_opt bytes) + + let to_bytes (Fr_tag x) = to_bytes x + + let of_z z = Fr_tag (of_z z) + + let to_z (Fr_tag x) = to_z x + end +end + type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} module type TYPE_SIZE = sig @@ -962,30 +1000,32 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * (Bls12_381.G2.t, 's, 'r, 'f) kinstr -> (Bls12_381.G2.t, Bls12_381.G2.t * 's, 'r, 'f) kinstr | IAdd_bls12_381_fr : - (Bls12_381.Fr.t, Bls12_381.Fr.t * 's) kinfo - * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + (Script_bls.Fr.t, Script_bls.Fr.t * 's) kinfo + * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g1 : - (Bls12_381.G1.t, Bls12_381.Fr.t * 's) kinfo + (Bls12_381.G1.t, Script_bls.Fr.t * 's) kinfo * (Bls12_381.G1.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G1.t, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + -> (Bls12_381.G1.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g2 : - (Bls12_381.G2.t, Bls12_381.Fr.t * 's) kinfo + (Bls12_381.G2.t, Script_bls.Fr.t * 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G2.t, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + -> (Bls12_381.G2.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_fr : - (Bls12_381.Fr.t, Bls12_381.Fr.t * 's) kinfo - * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + (Script_bls.Fr.t, Script_bls.Fr.t * 's) kinfo + * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_z_fr : - (Bls12_381.Fr.t, 'a num * 's) kinfo * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, 'a num * 's, 'r, 'f) kinstr + (Script_bls.Fr.t, 'a num * 's) kinfo + * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, 'a num * 's, 'r, 'f) kinstr | IMul_bls12_381_fr_z : - ('a num, Bls12_381.Fr.t * 's) kinfo * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> ('a num, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + ('a num, Script_bls.Fr.t * 's) kinfo + * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> ('a num, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IInt_bls12_381_fr : - (Bls12_381.Fr.t, 's) kinfo * (z num, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, 's, 'r, 'f) kinstr + (Script_bls.Fr.t, 's) kinfo * (z num, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | INeg_bls12_381_g1 : (Bls12_381.G1.t, 's) kinfo * (Bls12_381.G1.t, 's, 'r, 'f) kinstr -> (Bls12_381.G1.t, 's, 'r, 'f) kinstr @@ -993,8 +1033,8 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (Bls12_381.G2.t, 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr -> (Bls12_381.G2.t, 's, 'r, 'f) kinstr | INeg_bls12_381_fr : - (Bls12_381.Fr.t, 's) kinfo * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, 's, 'r, 'f) kinstr + (Script_bls.Fr.t, 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | IPairing_check_bls12_381 : ((Bls12_381.G1.t, Bls12_381.G2.t) pair boxed_list, 's) kinfo * (bool, 's, 'r, 'f) kinstr @@ -1195,7 +1235,7 @@ and 'ty ty = | Never_t : never ty_metadata -> never ty | Bls12_381_g1_t : Bls12_381.G1.t ty_metadata -> Bls12_381.G1.t ty | Bls12_381_g2_t : Bls12_381.G2.t ty_metadata -> Bls12_381.G2.t ty - | Bls12_381_fr_t : Bls12_381.Fr.t ty_metadata -> Bls12_381.Fr.t ty + | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty | Chest_key_t : Timelock.chest_key ty_metadata -> Timelock.chest_key ty | Chest_t : Timelock.chest ty_metadata -> Timelock.chest ty diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index a59fb45591..69003e448d 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -73,6 +73,36 @@ module Script_chain_id : sig val of_b58check_opt : string -> t option end +module Script_bls : sig + module type S = sig + type t + + type fr + + val add : t -> t -> t + + val mul : t -> fr -> t + + val negate : t -> t + + val of_bytes_opt : Bytes.t -> t option + + val to_bytes : t -> Bytes.t + end + + module Fr : sig + (** [t] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) + type t = Fr_tag of Bls12_381.Fr.t [@@ocaml.unboxed] + + include S with type t := t and type fr := t + + val of_z : Z.t -> t + + val to_z : t -> Z.t + end +end + type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} type empty_cell = EmptyCell @@ -970,30 +1000,32 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * (Bls12_381.G2.t, 's, 'r, 'f) kinstr -> (Bls12_381.G2.t, Bls12_381.G2.t * 's, 'r, 'f) kinstr | IAdd_bls12_381_fr : - (Bls12_381.Fr.t, Bls12_381.Fr.t * 's) kinfo - * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + (Script_bls.Fr.t, Script_bls.Fr.t * 's) kinfo + * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g1 : - (Bls12_381.G1.t, Bls12_381.Fr.t * 's) kinfo + (Bls12_381.G1.t, Script_bls.Fr.t * 's) kinfo * (Bls12_381.G1.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G1.t, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + -> (Bls12_381.G1.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g2 : - (Bls12_381.G2.t, Bls12_381.Fr.t * 's) kinfo + (Bls12_381.G2.t, Script_bls.Fr.t * 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G2.t, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + -> (Bls12_381.G2.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_fr : - (Bls12_381.Fr.t, Bls12_381.Fr.t * 's) kinfo - * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + (Script_bls.Fr.t, Script_bls.Fr.t * 's) kinfo + * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_z_fr : - (Bls12_381.Fr.t, 'a num * 's) kinfo * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, 'a num * 's, 'r, 'f) kinstr + (Script_bls.Fr.t, 'a num * 's) kinfo + * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, 'a num * 's, 'r, 'f) kinstr | IMul_bls12_381_fr_z : - ('a num, Bls12_381.Fr.t * 's) kinfo * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> ('a num, Bls12_381.Fr.t * 's, 'r, 'f) kinstr + ('a num, Script_bls.Fr.t * 's) kinfo + * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> ('a num, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IInt_bls12_381_fr : - (Bls12_381.Fr.t, 's) kinfo * (z num, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, 's, 'r, 'f) kinstr + (Script_bls.Fr.t, 's) kinfo * (z num, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | INeg_bls12_381_g1 : (Bls12_381.G1.t, 's) kinfo * (Bls12_381.G1.t, 's, 'r, 'f) kinstr -> (Bls12_381.G1.t, 's, 'r, 'f) kinstr @@ -1001,8 +1033,8 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (Bls12_381.G2.t, 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr -> (Bls12_381.G2.t, 's, 'r, 'f) kinstr | INeg_bls12_381_fr : - (Bls12_381.Fr.t, 's) kinfo * (Bls12_381.Fr.t, 's, 'r, 'f) kinstr - -> (Bls12_381.Fr.t, 's, 'r, 'f) kinstr + (Script_bls.Fr.t, 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr + -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | IPairing_check_bls12_381 : ((Bls12_381.G1.t, Bls12_381.G2.t) pair boxed_list, 's) kinfo * (bool, 's, 'r, 'f) kinstr @@ -1303,7 +1335,7 @@ and 'ty ty = | Never_t : never ty_metadata -> never ty | Bls12_381_g1_t : Bls12_381.G1.t ty_metadata -> Bls12_381.G1.t ty | Bls12_381_g2_t : Bls12_381.G2.t ty_metadata -> Bls12_381.G2.t ty - | Bls12_381_fr_t : Bls12_381.Fr.t ty_metadata -> Bls12_381.Fr.t ty + | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty | Chest_key_t : Timelock.chest_key ty_metadata -> Timelock.chest_key ty | Chest_t : Timelock.chest ty_metadata -> Timelock.chest ty @@ -1556,7 +1588,7 @@ val bls12_381_g1_t : annot:type_annot option -> Bls12_381.G1.t ty val bls12_381_g2_t : annot:type_annot option -> Bls12_381.G2.t ty -val bls12_381_fr_t : annot:type_annot option -> Bls12_381.Fr.t ty +val bls12_381_fr_t : annot:type_annot option -> Script_bls.Fr.t ty val ticket_t : Script.location -> From 74f99e373f25e6bbe78c184094221ad3e248ad86 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Wed, 15 Dec 2021 10:02:48 +0100 Subject: [PATCH 0128/1220] Proto/Michelson: make Script_typed_ir.Script_bls.G1.t algebraic. --- .../lib_benchmark/michelson_samplers.ml | 4 +- .../lib_protocol/script_interpreter.ml | 6 +-- .../lib_protocol/script_ir_translator.ml | 4 +- .../lib_protocol/script_typed_ir.ml | 38 +++++++++++++------ .../lib_protocol/script_typed_ir.mli | 32 ++++++++++------ 5 files changed, 54 insertions(+), 30 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index 2b7d5bd22d..c8ff9dce60 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -677,10 +677,10 @@ end) Alpha_context.packed_internal_operation sampler = fun _rng_state -> fail_sampling "generate_transfer_tokens: unimplemented" - and generate_bls12_381_g1 : Environment.Bls12_381.G1.t sampler = + and generate_bls12_381_g1 : Script_bls.G1.t sampler = fun rng_state -> let b = Bls12_381.G1.(to_bytes (random ~state:rng_state ())) in - match Environment.Bls12_381.G1.of_bytes_opt b with + match Script_bls.G1.of_bytes_opt b with | Some x -> x | None -> assert false diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index dfdf6990cf..3bb257e22d 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1299,7 +1299,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks hash stack | IAdd_bls12_381_g1 (_, k) -> let x = accu and (y, stack) = stack in - let accu = Bls12_381.G1.add x y in + let accu = Script_bls.G1.add x y in (step [@ocaml.tailcall]) g gas k ks accu stack | IAdd_bls12_381_g2 (_, k) -> let x = accu and (y, stack) = stack in @@ -1311,7 +1311,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks accu stack | IMul_bls12_381_g1 (_, k) -> let x = accu and (y, stack) = stack in - let accu = Bls12_381.G1.mul x y in + let accu = Script_bls.G1.mul x y in (step [@ocaml.tailcall]) g gas k ks accu stack | IMul_bls12_381_g2 (_, k) -> let x = accu and (y, stack) = stack in @@ -1337,7 +1337,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks res stack | INeg_bls12_381_g1 (_, k) -> let x = accu in - let accu = Bls12_381.G1.negate x in + let accu = Script_bls.G1.negate x in (step [@ocaml.tailcall]) g gas k ks accu stack | INeg_bls12_381_g2 (_, k) -> let x = accu in diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index f7f31b61ea..af750a6b5e 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -541,7 +541,7 @@ let unparse_chain_id ~loc ctxt mode chain_id = let unparse_bls12_381_g1 ~loc ctxt x = Gas.consume ctxt Unparse_costs.bls12_381_g1 >|? fun ctxt -> - let bytes = Bls12_381.G1.to_bytes x in + let bytes = Script_bls.G1.to_bytes x in (Bytes (loc, bytes), ctxt) let unparse_bls12_381_g2 ~loc ctxt x = @@ -2753,7 +2753,7 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : (* Bls12_381 types *) | (Bls12_381_g1_t _, Bytes (_, bs)) -> ( Gas.consume ctxt Typecheck_costs.bls12_381_g1 >>?= fun ctxt -> - match Bls12_381.G1.of_bytes_opt bs with + match Script_bls.G1.of_bytes_opt bs with | Some pt -> return (pt, ctxt) | None -> fail_parse_data ()) | (Bls12_381_g1_t _, expr) -> diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 0ec25207a2..a92ed6ab2d 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -127,6 +127,22 @@ module Script_bls = struct let to_z (Fr_tag x) = to_z x end + + module G1 = struct + type t = G1_tag of Bls12_381.G1.t [@@ocaml.unboxed] + + open Bls12_381.G1 + + let add (G1_tag x) (G1_tag y) = G1_tag (add x y) + + let mul (G1_tag x) (Fr.Fr_tag y) = G1_tag (mul x y) + + let negate (G1_tag x) = G1_tag (negate x) + + let of_bytes_opt bytes = Option.map (fun x -> G1_tag x) (of_bytes_opt bytes) + + let to_bytes (G1_tag x) = to_bytes x + end end type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} @@ -992,9 +1008,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (bytes, 's) kinfo * (bytes, 's, 'r, 'f) kinstr -> (bytes, 's, 'r, 'f) kinstr | IAdd_bls12_381_g1 : - (Bls12_381.G1.t, Bls12_381.G1.t * 's) kinfo - * (Bls12_381.G1.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G1.t, Bls12_381.G1.t * 's, 'r, 'f) kinstr + (Script_bls.G1.t, Script_bls.G1.t * 's) kinfo + * (Script_bls.G1.t, 's, 'r, 'f) kinstr + -> (Script_bls.G1.t, Script_bls.G1.t * 's, 'r, 'f) kinstr | IAdd_bls12_381_g2 : (Bls12_381.G2.t, Bls12_381.G2.t * 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr @@ -1004,9 +1020,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * (Script_bls.Fr.t, 's, 'r, 'f) kinstr -> (Script_bls.Fr.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g1 : - (Bls12_381.G1.t, Script_bls.Fr.t * 's) kinfo - * (Bls12_381.G1.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G1.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr + (Script_bls.G1.t, Script_bls.Fr.t * 's) kinfo + * (Script_bls.G1.t, 's, 'r, 'f) kinstr + -> (Script_bls.G1.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g2 : (Bls12_381.G2.t, Script_bls.Fr.t * 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr @@ -1027,8 +1043,8 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (Script_bls.Fr.t, 's) kinfo * (z num, 's, 'r, 'f) kinstr -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | INeg_bls12_381_g1 : - (Bls12_381.G1.t, 's) kinfo * (Bls12_381.G1.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G1.t, 's, 'r, 'f) kinstr + (Script_bls.G1.t, 's) kinfo * (Script_bls.G1.t, 's, 'r, 'f) kinstr + -> (Script_bls.G1.t, 's, 'r, 'f) kinstr | INeg_bls12_381_g2 : (Bls12_381.G2.t, 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr -> (Bls12_381.G2.t, 's, 'r, 'f) kinstr @@ -1036,9 +1052,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (Script_bls.Fr.t, 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | IPairing_check_bls12_381 : - ((Bls12_381.G1.t, Bls12_381.G2.t) pair boxed_list, 's) kinfo + ((Script_bls.G1.t, Bls12_381.G2.t) pair boxed_list, 's) kinfo * (bool, 's, 'r, 'f) kinstr - -> ((Bls12_381.G1.t, Bls12_381.G2.t) pair boxed_list, 's, 'r, 'f) kinstr + -> ((Script_bls.G1.t, Bls12_381.G2.t) pair boxed_list, 's, 'r, 'f) kinstr | IComb : ('a, 's) kinfo * int @@ -1233,7 +1249,7 @@ and 'ty ty = | Operation_t : operation ty_metadata -> operation ty | Chain_id_t : Script_chain_id.t ty_metadata -> Script_chain_id.t ty | Never_t : never ty_metadata -> never ty - | Bls12_381_g1_t : Bls12_381.G1.t ty_metadata -> Bls12_381.G1.t ty + | Bls12_381_g1_t : Script_bls.G1.t ty_metadata -> Script_bls.G1.t ty | Bls12_381_g2_t : Bls12_381.G2.t ty_metadata -> Bls12_381.G2.t ty | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 69003e448d..bae432ef3d 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -101,6 +101,14 @@ module Script_bls : sig val to_z : t -> Z.t end + + module G1 : sig + (** [t] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) + type t = G1_tag of Bls12_381.G1.t [@@ocaml.unboxed] + + include S with type t := t and type fr := Fr.t + end end type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} @@ -992,9 +1000,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (bytes, 's) kinfo * (bytes, 's, 'r, 'f) kinstr -> (bytes, 's, 'r, 'f) kinstr | IAdd_bls12_381_g1 : - (Bls12_381.G1.t, Bls12_381.G1.t * 's) kinfo - * (Bls12_381.G1.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G1.t, Bls12_381.G1.t * 's, 'r, 'f) kinstr + (Script_bls.G1.t, Script_bls.G1.t * 's) kinfo + * (Script_bls.G1.t, 's, 'r, 'f) kinstr + -> (Script_bls.G1.t, Script_bls.G1.t * 's, 'r, 'f) kinstr | IAdd_bls12_381_g2 : (Bls12_381.G2.t, Bls12_381.G2.t * 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr @@ -1004,9 +1012,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * (Script_bls.Fr.t, 's, 'r, 'f) kinstr -> (Script_bls.Fr.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g1 : - (Bls12_381.G1.t, Script_bls.Fr.t * 's) kinfo - * (Bls12_381.G1.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G1.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr + (Script_bls.G1.t, Script_bls.Fr.t * 's) kinfo + * (Script_bls.G1.t, 's, 'r, 'f) kinstr + -> (Script_bls.G1.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g2 : (Bls12_381.G2.t, Script_bls.Fr.t * 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr @@ -1027,8 +1035,8 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (Script_bls.Fr.t, 's) kinfo * (z num, 's, 'r, 'f) kinstr -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | INeg_bls12_381_g1 : - (Bls12_381.G1.t, 's) kinfo * (Bls12_381.G1.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G1.t, 's, 'r, 'f) kinstr + (Script_bls.G1.t, 's) kinfo * (Script_bls.G1.t, 's, 'r, 'f) kinstr + -> (Script_bls.G1.t, 's, 'r, 'f) kinstr | INeg_bls12_381_g2 : (Bls12_381.G2.t, 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr -> (Bls12_381.G2.t, 's, 'r, 'f) kinstr @@ -1036,9 +1044,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (Script_bls.Fr.t, 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | IPairing_check_bls12_381 : - ((Bls12_381.G1.t, Bls12_381.G2.t) pair boxed_list, 's) kinfo + ((Script_bls.G1.t, Bls12_381.G2.t) pair boxed_list, 's) kinfo * (bool, 's, 'r, 'f) kinstr - -> ((Bls12_381.G1.t, Bls12_381.G2.t) pair boxed_list, 's, 'r, 'f) kinstr + -> ((Script_bls.G1.t, Bls12_381.G2.t) pair boxed_list, 's, 'r, 'f) kinstr | IComb : ('a, 's) kinfo * int @@ -1333,7 +1341,7 @@ and 'ty ty = | Operation_t : operation ty_metadata -> operation ty | Chain_id_t : Script_chain_id.t ty_metadata -> Script_chain_id.t ty | Never_t : never ty_metadata -> never ty - | Bls12_381_g1_t : Bls12_381.G1.t ty_metadata -> Bls12_381.G1.t ty + | Bls12_381_g1_t : Script_bls.G1.t ty_metadata -> Script_bls.G1.t ty | Bls12_381_g2_t : Bls12_381.G2.t ty_metadata -> Bls12_381.G2.t ty | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty @@ -1584,7 +1592,7 @@ val chain_id_t : annot:type_annot option -> Script_chain_id.t ty val never_t : annot:type_annot option -> never ty -val bls12_381_g1_t : annot:type_annot option -> Bls12_381.G1.t ty +val bls12_381_g1_t : annot:type_annot option -> Script_bls.G1.t ty val bls12_381_g2_t : annot:type_annot option -> Bls12_381.G2.t ty From 88baacf49855f53d3390209186955009dca3a026 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Wed, 15 Dec 2021 00:11:41 +0100 Subject: [PATCH 0129/1220] Proto/Michelson: make Script_typed_ir.Script_bls.G2.t algebraic. --- .../lib_benchmark/michelson_samplers.ml | 4 +- .../lib_protocol/script_interpreter.ml | 8 ++-- .../lib_protocol/script_ir_translator.ml | 4 +- .../lib_protocol/script_typed_ir.ml | 42 ++++++++++++++----- .../lib_protocol/script_typed_ir.mli | 34 +++++++++------ 5 files changed, 61 insertions(+), 31 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index c8ff9dce60..b1c7011e64 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -684,10 +684,10 @@ end) | Some x -> x | None -> assert false - and generate_bls12_381_g2 : Environment.Bls12_381.G2.t sampler = + and generate_bls12_381_g2 : Script_bls.G2.t sampler = fun rng_state -> let b = Bls12_381.G2.(to_bytes (random ~state:rng_state ())) in - match Environment.Bls12_381.G2.of_bytes_opt b with + match Script_bls.G2.of_bytes_opt b with | Some x -> x | None -> assert false diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 3bb257e22d..315e135b7e 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1303,7 +1303,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks accu stack | IAdd_bls12_381_g2 (_, k) -> let x = accu and (y, stack) = stack in - let accu = Bls12_381.G2.add x y in + let accu = Script_bls.G2.add x y in (step [@ocaml.tailcall]) g gas k ks accu stack | IAdd_bls12_381_fr (_, k) -> let x = accu and (y, stack) = stack in @@ -1315,7 +1315,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks accu stack | IMul_bls12_381_g2 (_, k) -> let x = accu and (y, stack) = stack in - let accu = Bls12_381.G2.mul x y in + let accu = Script_bls.G2.mul x y in (step [@ocaml.tailcall]) g gas k ks accu stack | IMul_bls12_381_fr (_, k) -> let x = accu and (y, stack) = stack in @@ -1341,7 +1341,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks accu stack | INeg_bls12_381_g2 (_, k) -> let x = accu in - let accu = Bls12_381.G2.negate x in + let accu = Script_bls.G2.negate x in (step [@ocaml.tailcall]) g gas k ks accu stack | INeg_bls12_381_fr (_, k) -> let x = accu in @@ -1349,7 +1349,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = (step [@ocaml.tailcall]) g gas k ks accu stack | IPairing_check_bls12_381 (_, k) -> let pairs = accu in - let check = Bls12_381.pairing_check pairs.elements in + let check = Script_bls.pairing_check pairs.elements in (step [@ocaml.tailcall]) g gas k ks check stack | IComb (_, _, witness, k) -> let rec aux : diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index af750a6b5e..c00bfe7cee 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -546,7 +546,7 @@ let unparse_bls12_381_g1 ~loc ctxt x = let unparse_bls12_381_g2 ~loc ctxt x = Gas.consume ctxt Unparse_costs.bls12_381_g2 >|? fun ctxt -> - let bytes = Bls12_381.G2.to_bytes x in + let bytes = Script_bls.G2.to_bytes x in (Bytes (loc, bytes), ctxt) let unparse_bls12_381_fr ~loc ctxt x = @@ -2760,7 +2760,7 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : traced_fail (Invalid_kind (location expr, [Bytes_kind], kind expr)) | (Bls12_381_g2_t _, Bytes (_, bs)) -> ( Gas.consume ctxt Typecheck_costs.bls12_381_g2 >>?= fun ctxt -> - match Bls12_381.G2.of_bytes_opt bs with + match Script_bls.G2.of_bytes_opt bs with | Some pt -> return (pt, ctxt) | None -> fail_parse_data ()) | (Bls12_381_g2_t _, expr) -> diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index a92ed6ab2d..77bd8dd227 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -143,6 +143,26 @@ module Script_bls = struct let to_bytes (G1_tag x) = to_bytes x end + + module G2 = struct + type t = G2_tag of Bls12_381.G2.t [@@ocaml.unboxed] + + open Bls12_381.G2 + + let add (G2_tag x) (G2_tag y) = G2_tag (add x y) + + let mul (G2_tag x) (Fr.Fr_tag y) = G2_tag (mul x y) + + let negate (G2_tag x) = G2_tag (negate x) + + let of_bytes_opt bytes = Option.map (fun x -> G2_tag x) (of_bytes_opt bytes) + + let to_bytes (G2_tag x) = to_bytes x + end + + let pairing_check l = + let l = List.map (fun (G1.G1_tag x, G2.G2_tag y) -> (x, y)) l in + Bls12_381.pairing_check l end type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} @@ -1012,9 +1032,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * (Script_bls.G1.t, 's, 'r, 'f) kinstr -> (Script_bls.G1.t, Script_bls.G1.t * 's, 'r, 'f) kinstr | IAdd_bls12_381_g2 : - (Bls12_381.G2.t, Bls12_381.G2.t * 's) kinfo - * (Bls12_381.G2.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G2.t, Bls12_381.G2.t * 's, 'r, 'f) kinstr + (Script_bls.G2.t, Script_bls.G2.t * 's) kinfo + * (Script_bls.G2.t, 's, 'r, 'f) kinstr + -> (Script_bls.G2.t, Script_bls.G2.t * 's, 'r, 'f) kinstr | IAdd_bls12_381_fr : (Script_bls.Fr.t, Script_bls.Fr.t * 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr @@ -1024,9 +1044,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * (Script_bls.G1.t, 's, 'r, 'f) kinstr -> (Script_bls.G1.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g2 : - (Bls12_381.G2.t, Script_bls.Fr.t * 's) kinfo - * (Bls12_381.G2.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G2.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr + (Script_bls.G2.t, Script_bls.Fr.t * 's) kinfo + * (Script_bls.G2.t, 's, 'r, 'f) kinstr + -> (Script_bls.G2.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_fr : (Script_bls.Fr.t, Script_bls.Fr.t * 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr @@ -1046,15 +1066,15 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (Script_bls.G1.t, 's) kinfo * (Script_bls.G1.t, 's, 'r, 'f) kinstr -> (Script_bls.G1.t, 's, 'r, 'f) kinstr | INeg_bls12_381_g2 : - (Bls12_381.G2.t, 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G2.t, 's, 'r, 'f) kinstr + (Script_bls.G2.t, 's) kinfo * (Script_bls.G2.t, 's, 'r, 'f) kinstr + -> (Script_bls.G2.t, 's, 'r, 'f) kinstr | INeg_bls12_381_fr : (Script_bls.Fr.t, 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | IPairing_check_bls12_381 : - ((Script_bls.G1.t, Bls12_381.G2.t) pair boxed_list, 's) kinfo + ((Script_bls.G1.t, Script_bls.G2.t) pair boxed_list, 's) kinfo * (bool, 's, 'r, 'f) kinstr - -> ((Script_bls.G1.t, Bls12_381.G2.t) pair boxed_list, 's, 'r, 'f) kinstr + -> ((Script_bls.G1.t, Script_bls.G2.t) pair boxed_list, 's, 'r, 'f) kinstr | IComb : ('a, 's) kinfo * int @@ -1250,7 +1270,7 @@ and 'ty ty = | Chain_id_t : Script_chain_id.t ty_metadata -> Script_chain_id.t ty | Never_t : never ty_metadata -> never ty | Bls12_381_g1_t : Script_bls.G1.t ty_metadata -> Script_bls.G1.t ty - | Bls12_381_g2_t : Bls12_381.G2.t ty_metadata -> Bls12_381.G2.t ty + | Bls12_381_g2_t : Script_bls.G2.t ty_metadata -> Script_bls.G2.t ty | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty | Chest_key_t : Timelock.chest_key ty_metadata -> Timelock.chest_key ty diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index bae432ef3d..d76c7bfe10 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -109,6 +109,16 @@ module Script_bls : sig include S with type t := t and type fr := Fr.t end + + module G2 : sig + (** [t] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) + type t = G2_tag of Bls12_381.G2.t [@@ocaml.unboxed] + + include S with type t := t and type fr := Fr.t + end + + val pairing_check : (G1.t * G2.t) list -> bool end type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} @@ -1004,9 +1014,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * (Script_bls.G1.t, 's, 'r, 'f) kinstr -> (Script_bls.G1.t, Script_bls.G1.t * 's, 'r, 'f) kinstr | IAdd_bls12_381_g2 : - (Bls12_381.G2.t, Bls12_381.G2.t * 's) kinfo - * (Bls12_381.G2.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G2.t, Bls12_381.G2.t * 's, 'r, 'f) kinstr + (Script_bls.G2.t, Script_bls.G2.t * 's) kinfo + * (Script_bls.G2.t, 's, 'r, 'f) kinstr + -> (Script_bls.G2.t, Script_bls.G2.t * 's, 'r, 'f) kinstr | IAdd_bls12_381_fr : (Script_bls.Fr.t, Script_bls.Fr.t * 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr @@ -1016,9 +1026,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * (Script_bls.G1.t, 's, 'r, 'f) kinstr -> (Script_bls.G1.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_g2 : - (Bls12_381.G2.t, Script_bls.Fr.t * 's) kinfo - * (Bls12_381.G2.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G2.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr + (Script_bls.G2.t, Script_bls.Fr.t * 's) kinfo + * (Script_bls.G2.t, 's, 'r, 'f) kinstr + -> (Script_bls.G2.t, Script_bls.Fr.t * 's, 'r, 'f) kinstr | IMul_bls12_381_fr : (Script_bls.Fr.t, Script_bls.Fr.t * 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr @@ -1038,15 +1048,15 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = (Script_bls.G1.t, 's) kinfo * (Script_bls.G1.t, 's, 'r, 'f) kinstr -> (Script_bls.G1.t, 's, 'r, 'f) kinstr | INeg_bls12_381_g2 : - (Bls12_381.G2.t, 's) kinfo * (Bls12_381.G2.t, 's, 'r, 'f) kinstr - -> (Bls12_381.G2.t, 's, 'r, 'f) kinstr + (Script_bls.G2.t, 's) kinfo * (Script_bls.G2.t, 's, 'r, 'f) kinstr + -> (Script_bls.G2.t, 's, 'r, 'f) kinstr | INeg_bls12_381_fr : (Script_bls.Fr.t, 's) kinfo * (Script_bls.Fr.t, 's, 'r, 'f) kinstr -> (Script_bls.Fr.t, 's, 'r, 'f) kinstr | IPairing_check_bls12_381 : - ((Script_bls.G1.t, Bls12_381.G2.t) pair boxed_list, 's) kinfo + ((Script_bls.G1.t, Script_bls.G2.t) pair boxed_list, 's) kinfo * (bool, 's, 'r, 'f) kinstr - -> ((Script_bls.G1.t, Bls12_381.G2.t) pair boxed_list, 's, 'r, 'f) kinstr + -> ((Script_bls.G1.t, Script_bls.G2.t) pair boxed_list, 's, 'r, 'f) kinstr | IComb : ('a, 's) kinfo * int @@ -1342,7 +1352,7 @@ and 'ty ty = | Chain_id_t : Script_chain_id.t ty_metadata -> Script_chain_id.t ty | Never_t : never ty_metadata -> never ty | Bls12_381_g1_t : Script_bls.G1.t ty_metadata -> Script_bls.G1.t ty - | Bls12_381_g2_t : Bls12_381.G2.t ty_metadata -> Bls12_381.G2.t ty + | Bls12_381_g2_t : Script_bls.G2.t ty_metadata -> Script_bls.G2.t ty | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty | Chest_key_t : Timelock.chest_key ty_metadata -> Timelock.chest_key ty @@ -1594,7 +1604,7 @@ val never_t : annot:type_annot option -> never ty val bls12_381_g1_t : annot:type_annot option -> Script_bls.G1.t ty -val bls12_381_g2_t : annot:type_annot option -> Bls12_381.G2.t ty +val bls12_381_g2_t : annot:type_annot option -> Script_bls.G2.t ty val bls12_381_fr_t : annot:type_annot option -> Script_bls.Fr.t ty From ef0f939d1dcc68a3384de196f1060b5ab3b8c699 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Wed, 15 Dec 2021 13:54:33 +0100 Subject: [PATCH 0130/1220] Proto/Michelson: make Script_typed_ir.Script_timelock.chest algebraic. --- .../interpreter_benchmarks.ml | 6 +++-- .../interpreter_workload.ml | 2 +- .../lib_protocol/michelson_v1_gas.ml | 4 ++- .../lib_protocol/michelson_v1_gas.mli | 3 ++- .../lib_protocol/script_interpreter.ml | 2 +- .../lib_protocol/script_ir_translator.ml | 9 ++++--- .../lib_protocol/script_typed_ir.ml | 27 ++++++++++++++++--- .../lib_protocol/script_typed_ir.mli | 27 ++++++++++++++++--- .../lib_protocol/script_typed_ir_size.ml | 2 +- 9 files changed, 65 insertions(+), 17 deletions(-) diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml index e2cc54fa76..5a8b322f34 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml @@ -23,6 +23,7 @@ (* *) (*****************************************************************************) +module Timelock_samplers = Timelock open Protocol (* ------------------------------------------------------------------------- *) @@ -2794,6 +2795,7 @@ module Registration_section = struct halt (union bytes bool @$ bot) ) let resulting_stack chest chest_key time = + let chest = Script_timelock.make_chest chest in ( chest_key, ( chest, ( Script_int_repr.is_nat (Script_int_repr.of_int time) @@ -2807,7 +2809,7 @@ module Registration_section = struct ~kinstr ~stack_sampler:(fun _ rng_state () -> let (chest, chest_key) = - Timelock.chest_sampler ~plaintext_size:1 ~time:0 ~rng_state + Timelock_samplers.chest_sampler ~plaintext_size:1 ~time:0 ~rng_state in resulting_stack chest chest_key 0) () @@ -2830,7 +2832,7 @@ module Registration_section = struct in let (chest, chest_key) = - Timelock.chest_sampler ~plaintext_size ~time ~rng_state + Timelock_samplers.chest_sampler ~plaintext_size ~time ~rng_state in resulting_stack chest chest_key time) () diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml index 93a80c06aa..d015072843 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml @@ -1432,7 +1432,7 @@ let extract_ir_sized_step : | (IHalt _, _) -> Instructions.halt | (ILog _, _) -> Instructions.log | (IOpen_chest (_, _), (_, (chest, (time, _)))) -> - let plaintext_size = Timelock.get_plaintext_size chest - 1 in + let plaintext_size = Script_timelock.get_plaintext_size chest - 1 in let log_time = Z.log2 Z.(one + Script_int_repr.to_zint time) in Instructions.open_chest log_time plaintext_size diff --git a/src/proto_alpha/lib_protocol/michelson_v1_gas.ml b/src/proto_alpha/lib_protocol/michelson_v1_gas.ml index 6c5e392eb4..3994f39c4b 100644 --- a/src/proto_alpha/lib_protocol/michelson_v1_gas.ml +++ b/src/proto_alpha/lib_protocol/michelson_v1_gas.ml @@ -1300,7 +1300,9 @@ module Cost_of = struct (cost_N_ISplit_ticket (int_bytes amount_a) (int_bytes amount_b)) let open_chest ~chest ~time = - let plaintext = Timelock.get_plaintext_size chest in + let plaintext = + Script_typed_ir.Script_timelock.get_plaintext_size chest + in let log_time = Z.log2 Z.(add one time) in atomic_step_cost (cost_N_IOpen_chest ~chest:plaintext ~time:log_time) diff --git a/src/proto_alpha/lib_protocol/michelson_v1_gas.mli b/src/proto_alpha/lib_protocol/michelson_v1_gas.mli index bd90bd06db..bc83163750 100644 --- a/src/proto_alpha/lib_protocol/michelson_v1_gas.mli +++ b/src/proto_alpha/lib_protocol/michelson_v1_gas.mli @@ -360,7 +360,8 @@ module Cost_of : sig 'a Script_typed_ir.ticket -> Gas.cost - val open_chest : chest:Timelock.chest -> time:Z.t -> Gas.cost + val open_chest : + chest:Script_typed_ir.Script_timelock.chest -> time:Z.t -> Gas.cost module Control : sig val nil : Gas.cost diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 315e135b7e..803f7730d8 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1476,7 +1476,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = match Alpha_context.Script_int.to_int time_z with | None -> R false | Some time -> ( - match open_chest chest chest_key ~time with + match Script_timelock.open_chest chest chest_key ~time with | Correct bytes -> L bytes | Bogus_cipher -> R false | Bogus_opening -> R true) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index c00bfe7cee..8473e33b31 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -2829,7 +2829,9 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : | (Chest_t _, Bytes (_, bytes)) -> ( Gas.consume ctxt (Typecheck_costs.chest ~bytes:(Bytes.length bytes)) >>?= fun ctxt -> - match Data_encoding.Binary.of_bytes_opt Timelock.chest_encoding bytes with + match + Data_encoding.Binary.of_bytes_opt Script_timelock.chest_encoding bytes + with | Some chest -> return (chest, ctxt) | None -> fail_parse_data ()) | (Chest_t _, expr) -> @@ -5906,8 +5908,9 @@ let[@coq_axiom_with_reason "gadt"] rec unparse_data : ~loc ctxt s - (Unparse_costs.chest ~plaintext_size:(Timelock.get_plaintext_size s)) - Timelock.chest_encoding + (Unparse_costs.chest + ~plaintext_size:(Script_timelock.get_plaintext_size s)) + Script_timelock.chest_encoding and unparse_items : type k v. diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 77bd8dd227..6d42b254f3 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -165,6 +165,23 @@ module Script_bls = struct Bls12_381.pairing_check l end +module Script_timelock = struct + type chest = Chest_tag of Timelock.chest [@@ocaml.unboxed] + + let make_chest chest = Chest_tag chest + + let chest_encoding = + Data_encoding.conv + (fun (Chest_tag x) -> x) + (fun x -> Chest_tag x) + Timelock.chest_encoding + + let open_chest (Chest_tag chest) chest_key ~time = + Timelock.open_chest chest chest_key ~time + + let get_plaintext_size (Chest_tag x) = Timelock.get_plaintext_size x +end + type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} module type TYPE_SIZE = sig @@ -1122,9 +1139,13 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * ('a ticket option, 's, 'r, 'f) kinstr -> ('a ticket * 'a ticket, 's, 'r, 'f) kinstr | IOpen_chest : - (Timelock.chest_key, Timelock.chest * (n num * 's)) kinfo + (Timelock.chest_key, Script_timelock.chest * (n num * 's)) kinfo * ((bytes, bool) union, 's, 'r, 'f) kinstr - -> (Timelock.chest_key, Timelock.chest * (n num * 's), 'r, 'f) kinstr + -> ( Timelock.chest_key, + Script_timelock.chest * (n num * 's), + 'r, + 'f ) + kinstr (* Internal control instructions ----------------------------- @@ -1274,7 +1295,7 @@ and 'ty ty = | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty | Chest_key_t : Timelock.chest_key ty_metadata -> Timelock.chest_key ty - | Chest_t : Timelock.chest ty_metadata -> Timelock.chest ty + | Chest_t : Script_timelock.chest ty_metadata -> Script_timelock.chest ty and ('top_ty, 'resty) stack_ty = | Item_t : 'ty ty * ('ty2, 'rest) stack_ty -> ('ty, 'ty2 * 'rest) stack_ty diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index d76c7bfe10..edd13a315a 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -121,6 +121,21 @@ module Script_bls : sig val pairing_check : (G1.t * G2.t) list -> bool end +module Script_timelock : sig + (** [chest] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) + type chest = Chest_tag of Timelock.chest [@@ocaml.unboxed] + + val make_chest : Timelock.chest -> chest + + val chest_encoding : chest Data_encoding.t + + val open_chest : + chest -> Timelock.chest_key -> time:int -> Timelock.opening_result + + val get_plaintext_size : chest -> int +end + type 'a ticket = {ticketer : Contract.t; contents : 'a; amount : n num} type empty_cell = EmptyCell @@ -1104,9 +1119,13 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * ('a ticket option, 's, 'r, 'f) kinstr -> ('a ticket * 'a ticket, 's, 'r, 'f) kinstr | IOpen_chest : - (Timelock.chest_key, Timelock.chest * (n num * 's)) kinfo + (Timelock.chest_key, Script_timelock.chest * (n num * 's)) kinfo * ((bytes, bool) union, 's, 'r, 'f) kinstr - -> (Timelock.chest_key, Timelock.chest * (n num * 's), 'r, 'f) kinstr + -> ( Timelock.chest_key, + Script_timelock.chest * (n num * 's), + 'r, + 'f ) + kinstr (* Internal control instructions @@ -1356,7 +1375,7 @@ and 'ty ty = | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty | Chest_key_t : Timelock.chest_key ty_metadata -> Timelock.chest_key ty - | Chest_t : Timelock.chest ty_metadata -> Timelock.chest ty + | Chest_t : Script_timelock.chest ty_metadata -> Script_timelock.chest ty and ('top_ty, 'resty) stack_ty = | Item_t : 'ty ty * ('ty2, 'rest) stack_ty -> ('ty, 'ty2 * 'rest) stack_ty @@ -1616,7 +1635,7 @@ val ticket_t : val chest_key_t : annot:type_annot option -> Timelock.chest_key ty -val chest_t : annot:type_annot option -> Timelock.chest ty +val chest_t : annot:type_annot option -> Script_timelock.chest ty (** diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index 8e707e20bf..03c3606883 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -199,7 +199,7 @@ let chest_size chest = *) let locked_value_size = 256 in let rsa_public_size = 256 in - let ciphertext_size = Timelock.get_plaintext_size chest in + let ciphertext_size = Script_timelock.get_plaintext_size chest in h3w +? (locked_value_size + rsa_public_size + ciphertext_size) let chest_key_size _ = From e4a5e46ea3f16d266269af101b965725a0330f07 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Fri, 17 Dec 2021 16:34:57 +0100 Subject: [PATCH 0131/1220] Proto/Michelson: make Script_typed_ir.Script_timelock.chest_key algebraic. --- .../interpreter_benchmarks.ml | 1 + .../lib_protocol/script_ir_translator.ml | 6 ++++-- .../lib_protocol/script_typed_ir.ml | 20 ++++++++++++++---- .../lib_protocol/script_typed_ir.mli | 21 +++++++++++++------ 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml index 5a8b322f34..c222f4e600 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml @@ -2796,6 +2796,7 @@ module Registration_section = struct let resulting_stack chest chest_key time = let chest = Script_timelock.make_chest chest in + let chest_key = Script_timelock.make_chest_key chest_key in ( chest_key, ( chest, ( Script_int_repr.is_nat (Script_int_repr.of_int time) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 8473e33b31..9d90382198 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -2820,7 +2820,9 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : | (Chest_key_t _, Bytes (_, bytes)) -> ( Gas.consume ctxt Typecheck_costs.chest_key >>?= fun ctxt -> match - Data_encoding.Binary.of_bytes_opt Timelock.chest_key_encoding bytes + Data_encoding.Binary.of_bytes_opt + Script_timelock.chest_key_encoding + bytes with | Some chest_key -> return (chest_key, ctxt) | None -> fail_parse_data ()) @@ -5902,7 +5904,7 @@ let[@coq_axiom_with_reason "gadt"] rec unparse_data : ctxt s Unparse_costs.chest_key - Timelock.chest_key_encoding + Script_timelock.chest_key_encoding | (Chest_t _, s) -> unparse_with_data_encoding ~loc diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 6d42b254f3..c6e3668a01 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -166,6 +166,16 @@ module Script_bls = struct end module Script_timelock = struct + type chest_key = Chest_key_tag of Timelock.chest_key [@@ocaml.unboxed] + + let make_chest_key chest_key = Chest_key_tag chest_key + + let chest_key_encoding = + Data_encoding.conv + (fun (Chest_key_tag x) -> x) + (fun x -> Chest_key_tag x) + Timelock.chest_key_encoding + type chest = Chest_tag of Timelock.chest [@@ocaml.unboxed] let make_chest chest = Chest_tag chest @@ -176,7 +186,7 @@ module Script_timelock = struct (fun x -> Chest_tag x) Timelock.chest_encoding - let open_chest (Chest_tag chest) chest_key ~time = + let open_chest (Chest_tag chest) (Chest_key_tag chest_key) ~time = Timelock.open_chest chest chest_key ~time let get_plaintext_size (Chest_tag x) = Timelock.get_plaintext_size x @@ -1139,9 +1149,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * ('a ticket option, 's, 'r, 'f) kinstr -> ('a ticket * 'a ticket, 's, 'r, 'f) kinstr | IOpen_chest : - (Timelock.chest_key, Script_timelock.chest * (n num * 's)) kinfo + (Script_timelock.chest_key, Script_timelock.chest * (n num * 's)) kinfo * ((bytes, bool) union, 's, 'r, 'f) kinstr - -> ( Timelock.chest_key, + -> ( Script_timelock.chest_key, Script_timelock.chest * (n num * 's), 'r, 'f ) @@ -1294,7 +1304,9 @@ and 'ty ty = | Bls12_381_g2_t : Script_bls.G2.t ty_metadata -> Script_bls.G2.t ty | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty - | Chest_key_t : Timelock.chest_key ty_metadata -> Timelock.chest_key ty + | Chest_key_t : + Script_timelock.chest_key ty_metadata + -> Script_timelock.chest_key ty | Chest_t : Script_timelock.chest ty_metadata -> Script_timelock.chest ty and ('top_ty, 'resty) stack_ty = diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index edd13a315a..3a9dc42bcc 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -122,6 +122,14 @@ module Script_bls : sig end module Script_timelock : sig + (** [chest_key] is made algebraic in order to distinguish it from the other + type parameters of [Script_typed_ir.ty]. *) + type chest_key = Chest_key_tag of Timelock.chest_key [@@ocaml.unboxed] + + val make_chest_key : Timelock.chest_key -> chest_key + + val chest_key_encoding : chest_key Data_encoding.t + (** [chest] is made algebraic in order to distinguish it from the other type parameters of [Script_typed_ir.ty]. *) type chest = Chest_tag of Timelock.chest [@@ocaml.unboxed] @@ -130,8 +138,7 @@ module Script_timelock : sig val chest_encoding : chest Data_encoding.t - val open_chest : - chest -> Timelock.chest_key -> time:int -> Timelock.opening_result + val open_chest : chest -> chest_key -> time:int -> Timelock.opening_result val get_plaintext_size : chest -> int end @@ -1119,9 +1126,9 @@ and ('before_top, 'before, 'result_top, 'result) kinstr = * ('a ticket option, 's, 'r, 'f) kinstr -> ('a ticket * 'a ticket, 's, 'r, 'f) kinstr | IOpen_chest : - (Timelock.chest_key, Script_timelock.chest * (n num * 's)) kinfo + (Script_timelock.chest_key, Script_timelock.chest * (n num * 's)) kinfo * ((bytes, bool) union, 's, 'r, 'f) kinstr - -> ( Timelock.chest_key, + -> ( Script_timelock.chest_key, Script_timelock.chest * (n num * 's), 'r, 'f ) @@ -1374,7 +1381,9 @@ and 'ty ty = | Bls12_381_g2_t : Script_bls.G2.t ty_metadata -> Script_bls.G2.t ty | Bls12_381_fr_t : Script_bls.Fr.t ty_metadata -> Script_bls.Fr.t ty | Ticket_t : 'a comparable_ty * 'a ticket ty_metadata -> 'a ticket ty - | Chest_key_t : Timelock.chest_key ty_metadata -> Timelock.chest_key ty + | Chest_key_t : + Script_timelock.chest_key ty_metadata + -> Script_timelock.chest_key ty | Chest_t : Script_timelock.chest ty_metadata -> Script_timelock.chest ty and ('top_ty, 'resty) stack_ty = @@ -1633,7 +1642,7 @@ val ticket_t : annot:type_annot option -> 'a ticket ty tzresult -val chest_key_t : annot:type_annot option -> Timelock.chest_key ty +val chest_key_t : annot:type_annot option -> Script_timelock.chest_key ty val chest_t : annot:type_annot option -> Script_timelock.chest ty From 653208159d244eecd502358dcb569bc3c9dff3e1 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Fri, 3 Dec 2021 20:04:47 +0100 Subject: [PATCH 0132/1220] Proto/Michelson: make Script_int_repr.num algebraic. --- .../lib_protocol/script_int_repr.ml | 84 +++++++++++-------- .../lib_protocol/script_int_repr.mli | 6 +- 2 files changed, 52 insertions(+), 38 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_int_repr.ml b/src/proto_alpha/lib_protocol/script_int_repr.ml index 7bea740237..fba40417ad 100644 --- a/src/proto_alpha/lib_protocol/script_int_repr.ml +++ b/src/proto_alpha/lib_protocol/script_int_repr.ml @@ -29,86 +29,96 @@ type n = Natural_tag type z = Integer_tag (* We could define `num` as a GADT with constructors for `n` and `z`. - This would enable factorizing the code a bit in the Michelson interpreter and - also make formal the claim that `num` is only instantiated with `n` and `z`, - but it would result in space and time overheads when manipulating `num`s, by - having to deconstruct to and reconstruct from `Z.t`. *) -type 't num = Z.t + This would enable factorizing the code a bit in the Michelson interpreter and + also make formal the claim that `num` is only instantiated with `n` and `z`, + but it would result in space and time overheads when manipulating `num`s, by + having to deconstruct to and reconstruct from `Z.t`. *) +type 't repr = Z.t -let compare x y = Z.compare x y +type 't num = Num_tag of 't repr [@@ocaml.unboxed] -let zero = Z.zero +let compare (Num_tag x) (Num_tag y) = Z.compare x y -let zero_n = Z.zero +let zero = Num_tag Z.zero -let one_n = Z.one +let zero_n = Num_tag Z.zero -let to_string x = Z.to_string x +let one_n = Num_tag Z.one -let of_string s = Option.catch (fun () -> Z.of_string s) +let to_string (Num_tag x) = Z.to_string x -let of_int32 n = Z.of_int64 @@ Int64.of_int32 n +let of_string s = Option.catch (fun () -> Num_tag (Z.of_string s)) -let to_int64 x = Option.catch (fun () -> Z.to_int64 x) +let of_int32 n = Num_tag (Z.of_int64 @@ Int64.of_int32 n) -let of_int64 n = Z.of_int64 n +let to_int64 (Num_tag x) = Option.catch (fun () -> Z.to_int64 x) -let to_int x = Option.catch (fun () -> Z.to_int x) +let of_int64 n = Num_tag (Z.of_int64 n) -let of_int n = Z.of_int n +let to_int (Num_tag x) = Option.catch (fun () -> Z.to_int x) -let of_zint x = x +let of_int n = Num_tag (Z.of_int n) -let to_zint x = x +let of_zint x = Num_tag x -let add x y = Z.add x y +let to_zint (Num_tag x) = x -let sub x y = Z.sub x y +let add (Num_tag x) (Num_tag y) = Num_tag (Z.add x y) -let mul x y = Z.mul x y +let sub (Num_tag x) (Num_tag y) = Num_tag (Z.sub x y) -let ediv x y = Option.catch (fun () -> Z.ediv_rem x y) +let mul (Num_tag x) (Num_tag y) = Num_tag (Z.mul x y) + +let ediv (Num_tag x) (Num_tag y) = + let ediv_tagged x y = + let (quo, rem) = Z.ediv_rem x y in + (Num_tag quo, Num_tag rem) + in + Option.catch (fun () -> ediv_tagged x y) let add_n = add -let succ_n = Z.succ +let succ_n (Num_tag x) = Num_tag (Z.succ x) let mul_n = mul let ediv_n = ediv -let abs x = Z.abs x +let abs (Num_tag x) = Num_tag (Z.abs x) -let is_nat x = if Compare.Z.(x < Z.zero) then None else Some x +let is_nat (Num_tag x) = + if Compare.Z.(x < Z.zero) then None else Some (Num_tag x) -let neg x = Z.neg x +let neg (Num_tag x) = Num_tag (Z.neg x) -let int x = x +let int (Num_tag x) = Num_tag x -let shift_left x y = +let shift_left (Num_tag x) (Num_tag y) = if Compare.Int.(Z.compare y (Z.of_int 256) > 0) then None else let y = Z.to_int y in - Some (Z.shift_left x y) + Some (Num_tag (Z.shift_left x y)) -let shift_right x y = +let shift_right (Num_tag x) (Num_tag y) = if Compare.Int.(Z.compare y (Z.of_int 256) > 0) then None else let y = Z.to_int y in - Some (Z.shift_right x y) + Some (Num_tag (Z.shift_right x y)) let shift_left_n = shift_left let shift_right_n = shift_right -let logor x y = Z.logor x y +let logor (Num_tag x) (Num_tag y) = Num_tag (Z.logor x y) -let logxor x y = Z.logxor x y +let logxor (Num_tag x) (Num_tag y) = Num_tag (Z.logxor x y) -let logand x y = Z.logand x y +let logand (Num_tag x) (Num_tag y) = Num_tag (Z.logand x y) -let lognot x = Z.lognot x +let lognot (Num_tag x) = Num_tag (Z.lognot x) -let z_encoding : z num Data_encoding.encoding = Data_encoding.z +let z_encoding : z num Data_encoding.encoding = + Data_encoding.(conv (fun (Num_tag z) -> z) (fun z -> Num_tag z) z) -let n_encoding : n num Data_encoding.encoding = Data_encoding.n +let n_encoding : n num Data_encoding.encoding = + Data_encoding.(conv (fun (Num_tag n) -> n) (fun n -> Num_tag n) n) diff --git a/src/proto_alpha/lib_protocol/script_int_repr.mli b/src/proto_alpha/lib_protocol/script_int_repr.mli index b104b36201..1dbb542533 100644 --- a/src/proto_alpha/lib_protocol/script_int_repr.mli +++ b/src/proto_alpha/lib_protocol/script_int_repr.mli @@ -30,7 +30,11 @@ This is internally a [Z.t]. This module mostly adds signedness preservation guarantees. *) -type 't num [@@coq_phantom] +type 't repr [@@coq_phantom] + +(** [num] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) +type 't num = Num_tag of 't repr [@@ocaml.unboxed] (** Flag for natural numbers. *) type n = Natural_tag From 9b301eafdd507504672702789238e0df16c8adf9 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Mon, 6 Dec 2021 15:26:23 +0100 Subject: [PATCH 0133/1220] Proto/Michelson: make Script_typed_ir.Script_signature.t algebraic. --- .../lib_benchmark/michelson_samplers.ml | 5 +++- .../interpreter_benchmarks.ml | 1 + src/proto_alpha/lib_benchmarks_proto/size.ml | 3 ++- .../lib_protocol/script_comparable.ml | 3 ++- .../lib_protocol/script_interpreter.ml | 2 +- .../lib_protocol/script_ir_translator.ml | 7 +++-- .../lib_protocol/script_typed_ir.ml | 25 +++++++++++++++++ .../lib_protocol/script_typed_ir.mli | 27 +++++++++++++++++++ .../test/pbt/test_script_comparison.ml | 2 +- 9 files changed, 68 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index b1c7011e64..caa555e6c1 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -515,6 +515,9 @@ end) let string = Base_samplers.uniform_string ~nbytes:4 rng_state in Data_encoding.Binary.of_string_exn Script_chain_id.encoding string + let signature rng_state = + Script_signature.make (Michelson_base.signature rng_state) + let rec value : type a. a Script_typed_ir.ty -> a sampler = let open Script_typed_ir in fun typ -> @@ -523,7 +526,7 @@ end) | Unit_t _ -> M.return () | Int_t _ -> Michelson_base.int | Nat_t _ -> Michelson_base.nat - | Signature_t _ -> Michelson_base.signature + | Signature_t _ -> signature | String_t _ -> Michelson_base.string | Bytes_t _ -> Michelson_base.bytes | Mutez_t _ -> Michelson_base.tez diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml index c222f4e600..06c80120c0 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml @@ -2285,6 +2285,7 @@ module Registration_section = struct rng_state in let signed_message = Signature.sign sk unsigned_message in + let signed_message = Script_signature.make signed_message in (pk, (signed_message, (unsigned_message, eos)))) () diff --git a/src/proto_alpha/lib_benchmarks_proto/size.ml b/src/proto_alpha/lib_benchmarks_proto/size.ml index 2420c0a387..51ead05967 100644 --- a/src/proto_alpha/lib_benchmarks_proto/size.ml +++ b/src/proto_alpha/lib_benchmarks_proto/size.ml @@ -128,7 +128,8 @@ let mutez (_tez : Alpha_context.Tez.tez) : t = let bool (_ : bool) : t = 1 -let signature (_signature : Signature.t) : t = Signature.size +let signature (_signature : Script_typed_ir.Script_signature.t) : t = + Script_typed_ir.Script_signature.size let key_hash (_keyhash : Signature.public_key_hash) : t = Signature.Public_key_hash.size diff --git a/src/proto_alpha/lib_protocol/script_comparable.ml b/src/proto_alpha/lib_protocol/script_comparable.ml index ce9ca359b4..b921eaae61 100644 --- a/src/proto_alpha/lib_protocol/script_comparable.ml +++ b/src/proto_alpha/lib_protocol/script_comparable.ml @@ -47,7 +47,8 @@ let compare_comparable : type a. a comparable_ty -> a -> a -> int = match (kind, x, y) with | (Unit_key _, (), ()) -> (apply [@tailcall]) 0 k | (Never_key _, _, _) -> . - | (Signature_key _, x, y) -> (apply [@tailcall]) (Signature.compare x y) k + | (Signature_key _, x, y) -> + (apply [@tailcall]) (Script_signature.compare x y) k | (String_key _, x, y) -> (apply [@tailcall]) (Script_string.compare x y) k | (Bool_key _, x, y) -> (apply [@tailcall]) (Compare.Bool.compare x y) k | (Mutez_key _, x, y) -> (apply [@tailcall]) (Tez.compare x y) k diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 803f7730d8..46622fb6c5 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1171,7 +1171,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = | INow (_, k) -> (step [@ocaml.tailcall]) g gas k ks sc.now (accu, stack) | ICheck_signature (_, k) -> let key = accu and (signature, (message, stack)) = stack in - let res = Signature.check key signature message in + let res = Script_signature.check key signature message in (step [@ocaml.tailcall]) g gas k ks res stack | IHash_key (_, k) -> let key = accu in diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 9d90382198..15cf372803 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -485,6 +485,7 @@ let unparse_contract ~loc ctxt mode {arg_ty = _; address} = unparse_address ~loc ctxt mode address let unparse_signature ~loc ctxt mode s = + let s = Script_signature.get s in match mode with | Optimized | Optimized_legacy -> Gas.consume ctxt Unparse_costs.signature_optimized >|? fun ctxt -> @@ -2207,7 +2208,9 @@ let parse_signature ctxt : Script.node -> (signature * context) tzresult = function | Bytes (loc, bytes) as expr (* As unparsed with [Optimized]. *) -> ( Gas.consume ctxt Typecheck_costs.signature_optimized >>? fun ctxt -> - match Data_encoding.Binary.of_bytes_opt Signature.encoding bytes with + match + Data_encoding.Binary.of_bytes_opt Script_signature.encoding bytes + with | Some k -> ok (k, ctxt) | None -> error @@ -2215,7 +2218,7 @@ let parse_signature ctxt : Script.node -> (signature * context) tzresult = (loc, strip_locations expr, "a valid signature")) | String (loc, s) as expr (* As unparsed with [Readable]. *) -> ( Gas.consume ctxt Typecheck_costs.signature_readable >>? fun ctxt -> - match Signature.of_b58check_opt s with + match Script_signature.of_b58check_opt s with | Some s -> ok (s, ctxt) | None -> error diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index c6e3668a01..a49f02e3d6 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -65,6 +65,31 @@ type never = | type address = {contract : Contract.t; entrypoint : Entrypoint.t} +module Script_signature = struct + type t = Signature_tag of signature [@@ocaml.unboxed] + + let make s = Signature_tag s + + let get (Signature_tag s) = s + + let encoding = + Data_encoding.conv + (fun (Signature_tag x) -> x) + (fun x -> Signature_tag x) + Signature.encoding + + let of_b58check_opt x = Option.map make (Signature.of_b58check_opt x) + + let check ?watermark pub_key (Signature_tag s) bytes = + Signature.check ?watermark pub_key s bytes + + let compare (Signature_tag x) (Signature_tag y) = Signature.compare x y + + let size = Signature.size +end + +type signature = Script_signature.t + type ('a, 'b) pair = 'a * 'b type ('a, 'b) union = L of 'a | R of 'b diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 3a9dc42bcc..3e7dafa662 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -46,6 +46,33 @@ type never = | type address = {contract : Contract.t; entrypoint : Entrypoint.t} +module Script_signature : sig + (** [t] is made algebraic in order to distinguish it from the other type + parameters of [Script_typed_ir.ty]. *) + type t = Signature_tag of signature [@@ocaml.unboxed] + + val make : signature -> t + + val get : t -> signature + + val encoding : t Data_encoding.t + + val of_b58check_opt : string -> t option + + val check : + ?watermark:Signature.watermark -> + Signature.Public_key.t -> + t -> + Bytes.t -> + bool + + val compare : t -> t -> int + + val size : int +end + +type signature = Script_signature.t + type ('a, 'b) pair = 'a * 'b type ('a, 'b) union = L of 'a | R of 'b diff --git a/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml b/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml index 6a0012dfbb..c61f17a214 100644 --- a/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml +++ b/src/proto_alpha/lib_protocol/test/pbt/test_script_comparison.ml @@ -52,7 +52,7 @@ let rec reference_compare_comparable : type a. a comparable_ty -> a -> a -> int match (ty, x, y) with | (Unit_key _, (), ()) -> 0 | (Never_key _, _, _) -> . - | (Signature_key _, x, y) -> normalize_compare @@ Signature.compare x y + | (Signature_key _, x, y) -> normalize_compare @@ Script_signature.compare x y | (String_key _, x, y) -> normalize_compare @@ Script_string.compare x y | (Bool_key _, x, y) -> normalize_compare @@ Compare.Bool.compare x y | (Mutez_key _, x, y) -> normalize_compare @@ Tez.compare x y From ab1ead80638aa0d9c4953fb72e2df4790d8c5fe1 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Tue, 7 Dec 2021 10:31:54 +0100 Subject: [PATCH 0134/1220] Proto/Michelson: make Script_typed_ir.set algebraic. --- .../interpreter_workload.ml | 4 +- src/proto_alpha/lib_protocol/TEZOS_PROTOCOL | 4 +- src/proto_alpha/lib_protocol/dune.inc | 20 +++---- .../lib_protocol/michelson_v1_gas.ml | 9 ++-- src/proto_alpha/lib_protocol/script_set.ml | 52 +++++++++++-------- src/proto_alpha/lib_protocol/script_set.mli | 15 ++++-- .../lib_protocol/script_typed_ir.ml | 5 +- .../lib_protocol/script_typed_ir.mli | 5 +- .../lib_protocol/script_typed_ir_size.ml | 2 +- 9 files changed, 67 insertions(+), 49 deletions(-) diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml index d015072843..8a369495bd 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml @@ -1203,11 +1203,11 @@ let extract_ir_sized_step : | (IEmpty_set (_, _, _), _) -> Instructions.empty_set | (ISet_iter _, (set, _)) -> Instructions.set_iter (Size.set set) | (ISet_mem (_, _), (v, (set, _))) -> - let (module S) = set in + let (module S) = Script_set.get set in let sz = size_of_comparable_value S.elt_ty v in Instructions.set_mem sz (Size.set set) | (ISet_update (_, _), (v, (_flag, (set, _)))) -> - let (module S) = set in + let (module S) = Script_set.get set in let sz = size_of_comparable_value S.elt_ty v in Instructions.set_update sz (Size.set set) | (ISet_size (_, _), (set, _)) -> Instructions.set_size (Size.set set) diff --git a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL index 048ea910ea..36b6a9def8 100644 --- a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL +++ b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL @@ -104,12 +104,12 @@ "Gas_monad", "Script_ir_annot", "Script_typed_ir", + "Script_comparable", + "Script_set", "Script_typed_ir_size", "Script_typed_ir_size_costs", "Michelson_v1_gas", "Script_list", - "Script_comparable", - "Script_set", "Script_map", "Script_tc_context", "Script_ir_translator", diff --git a/src/proto_alpha/lib_protocol/dune.inc b/src/proto_alpha/lib_protocol/dune.inc index a5a26bb854..6f2f7a6d38 100644 --- a/src/proto_alpha/lib_protocol/dune.inc +++ b/src/proto_alpha/lib_protocol/dune.inc @@ -124,12 +124,12 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end gas_monad.mli gas_monad.ml script_ir_annot.mli script_ir_annot.ml script_typed_ir.mli script_typed_ir.ml + script_comparable.mli script_comparable.ml + script_set.mli script_set.ml script_typed_ir_size.mli script_typed_ir_size.ml script_typed_ir_size_costs.mli script_typed_ir_size_costs.ml michelson_v1_gas.mli michelson_v1_gas.ml script_list.mli script_list.ml - script_comparable.mli script_comparable.ml - script_set.mli script_set.ml script_map.mli script_map.ml script_tc_context.mli script_tc_context.ml script_ir_translator.mli script_ir_translator.ml @@ -262,12 +262,12 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end gas_monad.mli gas_monad.ml script_ir_annot.mli script_ir_annot.ml script_typed_ir.mli script_typed_ir.ml + script_comparable.mli script_comparable.ml + script_set.mli script_set.ml script_typed_ir_size.mli script_typed_ir_size.ml script_typed_ir_size_costs.mli script_typed_ir_size_costs.ml michelson_v1_gas.mli michelson_v1_gas.ml script_list.mli script_list.ml - script_comparable.mli script_comparable.ml - script_set.mli script_set.ml script_map.mli script_map.ml script_tc_context.mli script_tc_context.ml script_ir_translator.mli script_ir_translator.ml @@ -400,12 +400,12 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end gas_monad.mli gas_monad.ml script_ir_annot.mli script_ir_annot.ml script_typed_ir.mli script_typed_ir.ml + script_comparable.mli script_comparable.ml + script_set.mli script_set.ml script_typed_ir_size.mli script_typed_ir_size.ml script_typed_ir_size_costs.mli script_typed_ir_size_costs.ml michelson_v1_gas.mli michelson_v1_gas.ml script_list.mli script_list.ml - script_comparable.mli script_comparable.ml - script_set.mli script_set.ml script_map.mli script_map.ml script_tc_context.mli script_tc_context.ml script_ir_translator.mli script_ir_translator.ml @@ -560,12 +560,12 @@ include Tezos_raw_protocol_alpha.Main Gas_monad Script_ir_annot Script_typed_ir + Script_comparable + Script_set Script_typed_ir_size Script_typed_ir_size_costs Michelson_v1_gas Script_list - Script_comparable - Script_set Script_map Script_tc_context Script_ir_translator @@ -739,12 +739,12 @@ include Tezos_raw_protocol_alpha.Main gas_monad.mli gas_monad.ml script_ir_annot.mli script_ir_annot.ml script_typed_ir.mli script_typed_ir.ml + script_comparable.mli script_comparable.ml + script_set.mli script_set.ml script_typed_ir_size.mli script_typed_ir_size.ml script_typed_ir_size_costs.mli script_typed_ir_size_costs.ml michelson_v1_gas.mli michelson_v1_gas.ml script_list.mli script_list.ml - script_comparable.mli script_comparable.ml - script_set.mli script_set.ml script_map.mli script_map.ml script_tc_context.mli script_tc_context.ml script_ir_translator.mli script_ir_translator.ml diff --git a/src/proto_alpha/lib_protocol/michelson_v1_gas.ml b/src/proto_alpha/lib_protocol/michelson_v1_gas.ml index 3994f39c4b..3c155f1369 100644 --- a/src/proto_alpha/lib_protocol/michelson_v1_gas.ml +++ b/src/proto_alpha/lib_protocol/michelson_v1_gas.ml @@ -1005,7 +1005,8 @@ module Cost_of = struct let empty_set = atomic_step_cost cost_N_IEmpty_set - let set_iter (type a) ((module Box) : a Script_typed_ir.set) = + let set_iter (type a) (set : a Script_typed_ir.set) = + let (module Box) = Script_set.get set in atomic_step_cost (cost_N_ISet_iter Box.size) let set_size = atomic_step_cost cost_N_ISet_size @@ -1443,15 +1444,17 @@ module Cost_of = struct let intercept = atomic_step_cost (S.safe_int 80) in Gas.(intercept +@ (S.safe_int 2 * log2 size *@ per_elt_cost)) - let set_mem (type a) (elt : a) ((module Box) : a Script_typed_ir.set) = + let set_mem (type a) (elt : a) (set : a Script_typed_ir.set) = let open S_syntax in + let (module Box) = Script_set.get set in let per_elt_cost = compare Box.elt_ty elt elt in let size = S.safe_int Box.size in let intercept = atomic_step_cost (S.safe_int 115) in Gas.(intercept +@ (log2 size *@ per_elt_cost)) - let set_update (type a) (elt : a) ((module Box) : a Script_typed_ir.set) = + let set_update (type a) (elt : a) (set : a Script_typed_ir.set) = let open S_syntax in + let (module Box) = Script_set.get set in let per_elt_cost = compare Box.elt_ty elt elt in let size = S.safe_int Box.size in let intercept = atomic_step_cost (S.safe_int 130) in diff --git a/src/proto_alpha/lib_protocol/script_set.ml b/src/proto_alpha/lib_protocol/script_set.ml index 76cbb2249a..2567a9593c 100644 --- a/src/proto_alpha/lib_protocol/script_set.ml +++ b/src/proto_alpha/lib_protocol/script_set.ml @@ -28,6 +28,10 @@ open Alpha_context open Script_typed_ir +let make x = Set_tag x + +let get (Set_tag x) = x + let empty : type a. a comparable_ty -> a set = fun ty -> let module OPS = Set.Make (struct @@ -35,42 +39,44 @@ let empty : type a. a comparable_ty -> a set = let compare = Script_comparable.compare_comparable ty end) in - (module struct - type elt = a + Set_tag + (module struct + type elt = a - let elt_ty = ty + let elt_ty = ty - module OPS = OPS + module OPS = OPS - let boxed = OPS.empty + let boxed = OPS.empty - let size = 0 - end) + let size = 0 + end) let update : type a. a -> bool -> a set -> a set = - fun v b (module Box) -> - (module struct - type elt = a + fun v b (Set_tag (module Box)) -> + Set_tag + (module struct + type elt = a - let elt_ty = Box.elt_ty + let elt_ty = Box.elt_ty - module OPS = Box.OPS + module OPS = Box.OPS - let boxed = - if b then Box.OPS.add v Box.boxed else Box.OPS.remove v Box.boxed + let boxed = + if b then Box.OPS.add v Box.boxed else Box.OPS.remove v Box.boxed - let size = - let mem = Box.OPS.mem v Box.boxed in - if mem then if b then Box.size else Box.size - 1 - else if b then Box.size + 1 - else Box.size - end) + let size = + let mem = Box.OPS.mem v Box.boxed in + if mem then if b then Box.size else Box.size - 1 + else if b then Box.size + 1 + else Box.size + end) let mem : type elt. elt -> elt set -> bool = - fun v (module Box) -> Box.OPS.mem v Box.boxed + fun v (Set_tag (module Box)) -> Box.OPS.mem v Box.boxed let fold : type elt acc. (elt -> acc -> acc) -> elt set -> acc -> acc = - fun f (module Box) -> Box.OPS.fold f Box.boxed + fun f (Set_tag (module Box)) -> Box.OPS.fold f Box.boxed let size : type elt. elt set -> Script_int.n Script_int.num = - fun (module Box) -> Script_int.(abs (of_int Box.size)) + fun (Set_tag (module Box)) -> Script_int.(abs (of_int Box.size)) diff --git a/src/proto_alpha/lib_protocol/script_set.mli b/src/proto_alpha/lib_protocol/script_set.mli index f97a434c25..fe50a5e944 100644 --- a/src/proto_alpha/lib_protocol/script_set.mli +++ b/src/proto_alpha/lib_protocol/script_set.mli @@ -25,13 +25,18 @@ (*****************************************************************************) open Alpha_context +open Script_typed_ir -val empty : 'a Script_typed_ir.comparable_ty -> 'a Script_typed_ir.set +val make : (module Boxed_set with type elt = 'elt) -> 'elt set -val fold : ('elt -> 'acc -> 'acc) -> 'elt Script_typed_ir.set -> 'acc -> 'acc +val get : 'elt set -> (module Boxed_set with type elt = 'elt) -val update : 'a -> bool -> 'a Script_typed_ir.set -> 'a Script_typed_ir.set +val empty : 'a comparable_ty -> 'a set -val mem : 'elt -> 'elt Script_typed_ir.set -> bool +val fold : ('elt -> 'acc -> 'acc) -> 'elt set -> 'acc -> 'acc -val size : 'elt Script_typed_ir.set -> Script_int.n Script_int.num +val update : 'a -> bool -> 'a set -> 'a set + +val mem : 'elt -> 'elt set -> bool + +val size : 'elt set -> Script_int.n Script_int.num diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index a49f02e3d6..e78841b4f1 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -449,7 +449,8 @@ module type Boxed_set = sig val size : int end -type 'elt set = (module Boxed_set with type elt = 'elt) +type 'elt set = Set_tag of (module Boxed_set with type elt = 'elt) +[@@ocaml.unboxed] (* @@ -2305,7 +2306,7 @@ let value_traverse (type t) (ty : (t ty, t comparable_ty) union) (x : t) init f let bindings = M.OPS.fold (fun k v bs -> (k, v) :: bs) M.boxed [] in on_bindings accu kty ty' continue bindings | Set_t (ty', _) -> - let module M = (val x) in + let (Set_tag (module M)) = x in let elements = M.OPS.fold (fun x s -> x :: s) M.boxed [] in on_list' accu ty' elements continue | Big_map_t (_, _, _) -> diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 3e7dafa662..43558fd1af 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -306,7 +306,10 @@ module type Boxed_set = sig val size : int end -type 'elt set = (module Boxed_set with type elt = 'elt) +(** [set] is made algebraic in order to distinguish it from the other type + parameters of [ty]. *) +type 'elt set = Set_tag of (module Boxed_set with type elt = 'elt) +[@@ocaml.unboxed] module type Boxed_map_OPS = sig type t diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index 03c3606883..0f3fe182ad 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -261,7 +261,7 @@ let rec value_size : | Option_t (_, _) -> ret_succ_adding accu (option_size (fun _ -> !!0) x) | List_t (_, _) -> ret_succ_adding accu (h2w +! (h2w *? x.length)) | Set_t (_, _) -> - let module M = (val x) in + let module M = (val Script_set.get x) in let boxing_space = !!300 in ret_succ_adding accu (boxing_space +! (h4w *? M.size)) | Map_t (_, _, _) -> From da3e31d6dc1da68b65000f0b838c2d05c2ad300c Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Tue, 7 Dec 2021 11:11:54 +0100 Subject: [PATCH 0135/1220] Proto/Michelson: make Script_typed_ir.map algebraic. --- .../interpreter_benchmarks.ml | 4 +- .../interpreter_workload.ml | 15 +++-- src/proto_alpha/lib_protocol/TEZOS_PROTOCOL | 2 +- src/proto_alpha/lib_protocol/dune.inc | 10 ++-- .../lib_protocol/michelson_v1_gas.ml | 17 +++--- .../lib_protocol/script_ir_translator.ml | 8 ++- src/proto_alpha/lib_protocol/script_map.ml | 58 ++++++++++--------- src/proto_alpha/lib_protocol/script_map.mli | 30 +++++----- .../lib_protocol/script_typed_ir.ml | 5 +- .../lib_protocol/script_typed_ir.mli | 5 +- .../lib_protocol/script_typed_ir_size.ml | 2 +- .../lib_protocol/ticket_scanner.ml | 3 +- 12 files changed, 92 insertions(+), 67 deletions(-) diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml index 06c80120c0..c89d4241b0 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml @@ -1236,7 +1236,7 @@ module Registration_section = struct (Script_map.empty int_cmp) keys in - let (module M) = map in + let (module M) = Script_map.get_module map in let key = M.OPS.fold (fun k _ -> function None -> Some k | x -> x) M.boxed None |> WithExceptions.Option.get ~loc:__LOC__ @@ -1411,7 +1411,7 @@ module Registration_section = struct (Script_map.empty int_cmp) keys in - let (module M) = map in + let (module M) = Script_map.get_module map in let key = M.OPS.fold (fun k _ -> function None -> Some k | x -> x) M.boxed None |> WithExceptions.Option.get ~loc:__LOC__ diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml index 8a369495bd..ecfc28d8fc 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_workload.ml @@ -1214,16 +1214,20 @@ let extract_ir_sized_step : | (IEmpty_map (_, _, _), _) -> Instructions.empty_map | (IMap_map _, (map, _)) -> Instructions.map_map (Size.map map) | (IMap_iter _, (map, _)) -> Instructions.map_iter (Size.map map) - | (IMap_mem (_, _), (v, (((module Map) as map), _))) -> + | (IMap_mem (_, _), (v, (map, _))) -> + let (module Map) = Script_map.get_module map in let key_size = size_of_comparable_value Map.key_ty v in Instructions.map_mem key_size (Size.map map) - | (IMap_get (_, _), (v, (((module Map) as map), _))) -> + | (IMap_get (_, _), (v, (map, _))) -> + let (module Map) = Script_map.get_module map in let key_size = size_of_comparable_value Map.key_ty v in Instructions.map_get key_size (Size.map map) - | (IMap_update (_, _), (v, (_elt_opt, (((module Map) as map), _)))) -> + | (IMap_update (_, _), (v, (_elt_opt, (map, _)))) -> + let (module Map) = Script_map.get_module map in let key_size = size_of_comparable_value Map.key_ty v in Instructions.map_update key_size (Size.map map) - | (IMap_get_and_update (_, _), (v, (_elt_opt, (((module Map) as map), _)))) -> + | (IMap_get_and_update (_, _), (v, (_elt_opt, (map, _)))) -> + let (module Map) = Script_map.get_module map in let key_size = size_of_comparable_value Map.key_ty v in Instructions.map_get_and_update key_size (Size.map map) | (IMap_size (_, _), (map, _)) -> Instructions.map_size (Size.map map) @@ -1454,7 +1458,8 @@ let extract_control_trace (type bef_top bef aft_top aft) | KList_exit_body (_, _, _, _, _) -> Control.list_exit_body | KMap_enter_body (_, xs, _, _) -> Control.map_enter_body (Size.of_int (List.length xs)) - | KMap_exit_body (_, _, ((module Map) as map), k, _) -> + | KMap_exit_body (_, _, map, k, _) -> + let (module Map) = Script_map.get_module map in let key_size = size_of_comparable_value Map.key_ty k in Control.map_exit_body key_size (Size.map map) | KView_exit _ -> Control.view_exit diff --git a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL index 36b6a9def8..bd35f3a774 100644 --- a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL +++ b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL @@ -106,11 +106,11 @@ "Script_typed_ir", "Script_comparable", "Script_set", + "Script_map", "Script_typed_ir_size", "Script_typed_ir_size_costs", "Michelson_v1_gas", "Script_list", - "Script_map", "Script_tc_context", "Script_ir_translator", "Script_cache", diff --git a/src/proto_alpha/lib_protocol/dune.inc b/src/proto_alpha/lib_protocol/dune.inc index 6f2f7a6d38..583b2e9843 100644 --- a/src/proto_alpha/lib_protocol/dune.inc +++ b/src/proto_alpha/lib_protocol/dune.inc @@ -126,11 +126,11 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end script_typed_ir.mli script_typed_ir.ml script_comparable.mli script_comparable.ml script_set.mli script_set.ml + script_map.mli script_map.ml script_typed_ir_size.mli script_typed_ir_size.ml script_typed_ir_size_costs.mli script_typed_ir_size_costs.ml michelson_v1_gas.mli michelson_v1_gas.ml script_list.mli script_list.ml - script_map.mli script_map.ml script_tc_context.mli script_tc_context.ml script_ir_translator.mli script_ir_translator.ml script_cache.mli script_cache.ml @@ -264,11 +264,11 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end script_typed_ir.mli script_typed_ir.ml script_comparable.mli script_comparable.ml script_set.mli script_set.ml + script_map.mli script_map.ml script_typed_ir_size.mli script_typed_ir_size.ml script_typed_ir_size_costs.mli script_typed_ir_size_costs.ml michelson_v1_gas.mli michelson_v1_gas.ml script_list.mli script_list.ml - script_map.mli script_map.ml script_tc_context.mli script_tc_context.ml script_ir_translator.mli script_ir_translator.ml script_cache.mli script_cache.ml @@ -402,11 +402,11 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end script_typed_ir.mli script_typed_ir.ml script_comparable.mli script_comparable.ml script_set.mli script_set.ml + script_map.mli script_map.ml script_typed_ir_size.mli script_typed_ir_size.ml script_typed_ir_size_costs.mli script_typed_ir_size_costs.ml michelson_v1_gas.mli michelson_v1_gas.ml script_list.mli script_list.ml - script_map.mli script_map.ml script_tc_context.mli script_tc_context.ml script_ir_translator.mli script_ir_translator.ml script_cache.mli script_cache.ml @@ -562,11 +562,11 @@ include Tezos_raw_protocol_alpha.Main Script_typed_ir Script_comparable Script_set + Script_map Script_typed_ir_size Script_typed_ir_size_costs Michelson_v1_gas Script_list - Script_map Script_tc_context Script_ir_translator Script_cache @@ -741,11 +741,11 @@ include Tezos_raw_protocol_alpha.Main script_typed_ir.mli script_typed_ir.ml script_comparable.mli script_comparable.ml script_set.mli script_set.ml + script_map.mli script_map.ml script_typed_ir_size.mli script_typed_ir_size.ml script_typed_ir_size_costs.mli script_typed_ir_size_costs.ml michelson_v1_gas.mli michelson_v1_gas.ml script_list.mli script_list.ml - script_map.mli script_map.ml script_tc_context.mli script_tc_context.ml script_ir_translator.mli script_ir_translator.ml script_cache.mli script_cache.ml diff --git a/src/proto_alpha/lib_protocol/michelson_v1_gas.ml b/src/proto_alpha/lib_protocol/michelson_v1_gas.ml index 3c155f1369..04032bfaa6 100644 --- a/src/proto_alpha/lib_protocol/michelson_v1_gas.ml +++ b/src/proto_alpha/lib_protocol/michelson_v1_gas.ml @@ -1013,10 +1013,12 @@ module Cost_of = struct let empty_map = atomic_step_cost cost_N_IEmpty_map - let map_map (type k v) ((module Box) : (k, v) Script_typed_ir.map) = + let map_map (type k v) (map : (k, v) Script_typed_ir.map) = + let (module Box) = Script_map.get_module map in atomic_step_cost (cost_N_IMap_map Box.size) - let map_iter (type k v) ((module Box) : (k, v) Script_typed_ir.map) = + let map_iter (type k v) (map : (k, v) Script_typed_ir.map) = + let (module Box) = Script_map.get_module map in atomic_step_cost (cost_N_IMap_iter Box.size) let map_size = atomic_step_cost cost_N_IMap_size @@ -1462,9 +1464,9 @@ module Cost_of = struct on non-structured data *) Gas.(intercept +@ (S.safe_int 2 * log2 size *@ per_elt_cost)) - let map_mem (type k v) (elt : k) ((module Box) : (k, v) Script_typed_ir.map) - = + let map_mem (type k v) (elt : k) (map : (k, v) Script_typed_ir.map) = let open S_syntax in + let (module Box) = Script_map.get_module map in let per_elt_cost = compare Box.key_ty elt elt in let size = S.safe_int Box.size in let intercept = atomic_step_cost (S.safe_int 80) in @@ -1472,9 +1474,9 @@ module Cost_of = struct let map_get = map_mem - let map_update (type k v) (elt : k) - ((module Box) : (k, v) Script_typed_ir.map) = + let map_update (type k v) (elt : k) (map : (k, v) Script_typed_ir.map) = let open S_syntax in + let (module Box) = Script_map.get_module map in let per_elt_cost = compare Box.key_ty elt elt in let size = S.safe_int Box.size in let intercept = atomic_step_cost (S.safe_int 80) in @@ -1483,8 +1485,9 @@ module Cost_of = struct Gas.(intercept +@ (S.safe_int 2 * log2 size *@ per_elt_cost)) let map_get_and_update (type k v) (elt : k) - ((module Box) : (k, v) Script_typed_ir.map) = + (map : (k, v) Script_typed_ir.map) = let open S_syntax in + let (module Box) = Script_map.get_module map in let per_elt_cost = compare Box.key_ty elt elt in let size = S.safe_int Box.size in let intercept = atomic_step_cost (S.safe_int 80) in diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 15cf372803..12be2ee7a1 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -6339,7 +6339,8 @@ let[@coq_axiom_with_reason "gadt"] extract_lazy_storage_updates ctxt mode >|=? fun (ctxt, l, ids_to_copy, acc) -> let reversed = {length = l.length; elements = List.rev l.elements} in (ctxt, reversed, ids_to_copy, acc) - | (Map_f has_lazy_storage, Map_t (_, ty, _), (module M)) -> + | (Map_f has_lazy_storage, Map_t (_, ty, _), map) -> + let (module M) = Script_map.get_module map in let bindings m = M.OPS.fold (fun k v bs -> (k, v) :: bs) m [] in List.fold_left_es (fun (ctxt, m, ids_to_copy, acc) (k, x) -> @@ -6363,7 +6364,10 @@ let[@coq_axiom_with_reason "gadt"] extract_lazy_storage_updates ctxt mode let size = M.size end in ( ctxt, - (module M : Boxed_map with type key = M.key and type value = M.value), + Script_map.make + (module M : Boxed_map + with type key = M.key + and type value = M.value), ids_to_copy, acc ) | (_, Option_t (_, _), None) -> return (ctxt, None, ids_to_copy, acc) diff --git a/src/proto_alpha/lib_protocol/script_map.ml b/src/proto_alpha/lib_protocol/script_map.ml index 4404669e8e..ed7605ff49 100644 --- a/src/proto_alpha/lib_protocol/script_map.ml +++ b/src/proto_alpha/lib_protocol/script_map.ml @@ -28,8 +28,12 @@ open Alpha_context open Script_typed_ir +let make x = Map_tag x + +let get_module (Map_tag x) = x + let key_ty : type a b. (a, b) map -> a comparable_ty = - fun (module Box) -> Box.key_ty + fun (Map_tag (module Box)) -> Box.key_ty let empty : type a b. a comparable_ty -> (a, b) map = fun ty -> @@ -38,31 +42,32 @@ let empty : type a b. a comparable_ty -> (a, b) map = let compare = Script_comparable.compare_comparable ty end) in - (module struct - type key = a + Map_tag + (module struct + type key = a - type value = b + type value = b - let key_ty = ty + let key_ty = ty - module OPS = struct - type value = b + module OPS = struct + type value = b - include OPS + include OPS - type nonrec t = value t - end + type nonrec t = value t + end - let boxed = OPS.empty + let boxed = OPS.empty - let size = 0 - end) + let size = 0 + end) let get : type key value. key -> (key, value) map -> value option = - fun k (module Box) -> Box.OPS.find k Box.boxed + fun k (Map_tag (module Box)) -> Box.OPS.find k Box.boxed let update : type a b. a -> b option -> (a, b) map -> (a, b) map = - fun k v (module Box) -> + fun k v (Map_tag (module Box)) -> let (boxed, size) = let contains = match Box.OPS.find k Box.boxed with None -> false | _ -> true @@ -71,28 +76,29 @@ let update : type a b. a -> b option -> (a, b) map -> (a, b) map = | Some v -> (Box.OPS.add k v Box.boxed, Box.size + if contains then 0 else 1) | None -> (Box.OPS.remove k Box.boxed, Box.size - if contains then 1 else 0) in - (module struct - type key = a + Map_tag + (module struct + type key = a - type value = b + type value = b - let key_ty = Box.key_ty + let key_ty = Box.key_ty - module OPS = Box.OPS + module OPS = Box.OPS - let boxed = boxed + let boxed = boxed - let size = size - end) + let size = size + end) let mem : type key value. key -> (key, value) map -> bool = - fun k (module Box) -> + fun k (Map_tag (module Box)) -> match Box.OPS.find k Box.boxed with None -> false | _ -> true let fold : type key value acc. (key -> value -> acc -> acc) -> (key, value) map -> acc -> acc = - fun f (module Box) -> Box.OPS.fold f Box.boxed + fun f (Map_tag (module Box)) -> Box.OPS.fold f Box.boxed let size : type key value. (key, value) map -> Script_int.n Script_int.num = - fun (module Box) -> Script_int.(abs (of_int Box.size)) + fun (Map_tag (module Box)) -> Script_int.(abs (of_int Box.size)) diff --git a/src/proto_alpha/lib_protocol/script_map.mli b/src/proto_alpha/lib_protocol/script_map.mli index 7bd3cd51e4..5ed0630c88 100644 --- a/src/proto_alpha/lib_protocol/script_map.mli +++ b/src/proto_alpha/lib_protocol/script_map.mli @@ -25,25 +25,27 @@ (*****************************************************************************) open Alpha_context +open Script_typed_ir -val empty : 'a Script_typed_ir.comparable_ty -> ('a, 'b) Script_typed_ir.map +val make : + (module Boxed_map with type key = 'key and type value = 'value) -> + ('key, 'value) map + +val get_module : + ('key, 'value) map -> + (module Boxed_map with type key = 'key and type value = 'value) + +val empty : 'a comparable_ty -> ('a, 'b) map val fold : - ('key -> 'value -> 'acc -> 'acc) -> - ('key, 'value) Script_typed_ir.map -> - 'acc -> - 'acc + ('key -> 'value -> 'acc -> 'acc) -> ('key, 'value) map -> 'acc -> 'acc -val update : - 'a -> - 'b option -> - ('a, 'b) Script_typed_ir.map -> - ('a, 'b) Script_typed_ir.map +val update : 'a -> 'b option -> ('a, 'b) map -> ('a, 'b) map -val mem : 'key -> ('key, 'value) Script_typed_ir.map -> bool +val mem : 'key -> ('key, 'value) map -> bool -val get : 'key -> ('key, 'value) Script_typed_ir.map -> 'value option +val get : 'key -> ('key, 'value) map -> 'value option -val key_ty : ('a, 'b) Script_typed_ir.map -> 'a Script_typed_ir.comparable_ty +val key_ty : ('a, 'b) map -> 'a comparable_ty -val size : ('a, 'b) Script_typed_ir.map -> Script_int.n Script_int.num +val size : ('a, 'b) map -> Script_int.n Script_int.num diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index e78841b4f1..6cd41703eb 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -490,7 +490,8 @@ module type Boxed_map = sig end type ('key, 'value) map = - (module Boxed_map with type key = 'key and type value = 'value) + | Map_tag of (module Boxed_map with type key = 'key and type value = 'value) +[@@ocaml.unboxed] module Big_map_overlay = Map.Make (struct type t = Script_expr_hash.t @@ -2302,7 +2303,7 @@ let value_traverse (type t) (ty : (t ty, t comparable_ty) union) (x : t) init f | Ticket_t (cty, _) -> (aux' [@ocaml.tailcall]) accu cty x.contents continue | List_t (ty', _) -> on_list ty' accu x.elements | Map_t (kty, ty', _) -> - let module M = (val x) in + let (Map_tag (module M)) = x in let bindings = M.OPS.fold (fun k v bs -> (k, v) :: bs) M.boxed [] in on_bindings accu kty ty' continue bindings | Set_t (ty', _) -> diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 43558fd1af..2045c40502 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -343,8 +343,11 @@ module type Boxed_map = sig val size : int end +(** [map] is made algebraic in order to distinguish it from the other type + parameters of [ty]. *) type ('key, 'value) map = - (module Boxed_map with type key = 'key and type value = 'value) + | Map_tag of (module Boxed_map with type key = 'key and type value = 'value) +[@@ocaml.unboxed] module Big_map_overlay : Map.S with type key = Script_expr_hash.t diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index 0f3fe182ad..3702057e3b 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -265,7 +265,7 @@ let rec value_size : let boxing_space = !!300 in ret_succ_adding accu (boxing_space +! (h4w *? M.size)) | Map_t (_, _, _) -> - let module M = (val x) in + let module M = (val Script_map.get_module x) in let boxing_space = !!300 in ret_succ_adding accu (boxing_space +! (h5w *? M.size)) | Big_map_t (cty, ty', _) -> diff --git a/src/proto_alpha/lib_protocol/ticket_scanner.ml b/src/proto_alpha/lib_protocol/ticket_scanner.ml index c553c3d22d..20b285d2a8 100644 --- a/src/proto_alpha/lib_protocol/ticket_scanner.ml +++ b/src/proto_alpha/lib_protocol/ticket_scanner.ml @@ -447,7 +447,8 @@ module Ticket_collection = struct accumulator -> ret continuation -> ret tzresult Lwt.t = - fun ~include_lazy ctxt val_hty val_ty (module M) acc k -> + fun ~include_lazy ctxt val_hty val_ty map acc k -> + let (module M) = Script_map.get_module map in consume_gas_steps ctxt ~num_steps:1 >>?= fun ctxt -> (* Pay gas for folding over the values *) consume_gas_steps ctxt ~num_steps:M.size >>?= fun ctxt -> From 9e41cd18b094e891d82e3e47cd5171dc03e1b044 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Wed, 8 Dec 2021 00:13:58 +0100 Subject: [PATCH 0136/1220] Proto/Michelson: remove unused pattern cases. --- src/proto_alpha/lib_protocol/script_interpreter_defs.ml | 1 - src/proto_alpha/lib_protocol/script_ir_translator.ml | 6 +----- src/proto_alpha/lib_protocol/ticket_scanner.ml | 4 ---- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index 53e8eb21a3..0e139df046 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -492,7 +492,6 @@ let apply ctxt gas capture_ty capture lam = let lam' = Lam (full_descr, full_expr) in let gas = update_local_gas_counter ctxt in return (lam', outdated ctxt, gas) - | _ -> assert false (* [transfer (ctxt, sc) gas tez tp p destination entrypoint] creates an operation that transfers an amount of [tez] to diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 12be2ee7a1..a78595bfcb 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -4999,11 +4999,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : {apply = (fun kinfo k -> IJoin_tickets (kinfo, contents_ty, k))} in let stack = Item_t (res_ty, rest) in - typed ctxt loc instr stack - | _ -> - (* TODO: https://gitlab.com/tezos/tezos/-/issues/1962 - fix injectivity of types *) - assert false) + typed ctxt loc instr stack) (* Timelocks *) | ( Prim (loc, I_OPEN_CHEST, [], _), Item_t (Chest_key_t _, Item_t (Chest_t _, Item_t (Nat_t _, rest))) ) -> diff --git a/src/proto_alpha/lib_protocol/ticket_scanner.ml b/src/proto_alpha/lib_protocol/ticket_scanner.ml index 20b285d2a8..1090c458e6 100644 --- a/src/proto_alpha/lib_protocol/ticket_scanner.ml +++ b/src/proto_alpha/lib_protocol/ticket_scanner.ml @@ -26,9 +26,6 @@ open Alpha_context -(* Impossible error *) -type error += Unsupported_type_invariant_violated - type error += Unsupported_non_empty_overlay | Unsupported_type_operation let () = @@ -403,7 +400,6 @@ module Ticket_collection = struct else (k [@ocaml.tailcall]) ctxt acc | (True_ht, Ticket_t (comp_ty, _)) -> (k [@ocaml.tailcall]) ctxt (Ex_ticket (comp_ty, x) :: acc) - | _ -> fail Unsupported_type_invariant_violated and tickets_of_list : type a ret. From 5bb522acf9245c98c744bacea2ee71b29a12b015 Mon Sep 17 00:00:00 2001 From: Nicolas Ayache Date: Tue, 7 Dec 2021 23:55:25 +0100 Subject: [PATCH 0137/1220] Proto/Michelson: enrich has_lazy_storage. --- .../lib_protocol/script_ir_translator.ml | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index a78595bfcb..fdf22faecf 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -6199,8 +6199,10 @@ let diff_of_sapling_state ctxt ~temporary ~ids_to_copy Please keep the usage of this GADT local. *) + type 'ty has_lazy_storage = - | True_f : _ has_lazy_storage + | Big_map_f : ('a, 'b) big_map has_lazy_storage + | Sapling_state_f : Sapling.state has_lazy_storage | False_f : _ has_lazy_storage | Pair_f : 'a has_lazy_storage * 'b has_lazy_storage @@ -6229,8 +6231,8 @@ let rec has_lazy_storage : type t. t ty -> t has_lazy_storage = | (h1, h2) -> cons h1 h2 in match ty with - | Big_map_t (_, _, _) -> True_f - | Sapling_state_t _ -> True_f + | Big_map_t (_, _, _) -> Big_map_f + | Sapling_state_t _ -> Sapling_state_f | Unit_t _ -> False_f | Int_t _ -> False_f | Nat_t _ -> False_f @@ -6287,7 +6289,7 @@ let[@coq_axiom_with_reason "gadt"] extract_lazy_storage_updates ctxt mode Gas.consume ctxt Typecheck_costs.parse_instr_cycle >>?= fun ctxt -> match (has_lazy_storage, ty, x) with | (False_f, _, _) -> return (ctxt, x, ids_to_copy, acc) - | (_, Big_map_t (_, _, _), map) -> + | (Big_map_f, Big_map_t (_, _, _), map) -> diff_of_big_map ctxt mode ~temporary ~ids_to_copy map >|=? fun (diff, id, ctxt) -> let map = @@ -6300,7 +6302,7 @@ let[@coq_axiom_with_reason "gadt"] extract_lazy_storage_updates ctxt mode let diff = Lazy_storage.make Big_map id diff in let ids_to_copy = Lazy_storage.IdSet.add Big_map id ids_to_copy in (ctxt, map, ids_to_copy, diff :: acc) - | (_, Sapling_state_t _, sapling_state) -> + | (Sapling_state_f, Sapling_state_t _, sapling_state) -> diff_of_sapling_state ctxt ~temporary ~ids_to_copy sapling_state >|=? fun (diff, id, ctxt) -> let sapling_state = @@ -6367,10 +6369,6 @@ let[@coq_axiom_with_reason "gadt"] extract_lazy_storage_updates ctxt mode ids_to_copy, acc ) | (_, Option_t (_, _), None) -> return (ctxt, None, ids_to_copy, acc) - | _ -> - (* TODO: https://gitlab.com/tezos/tezos/-/issues/1962 - fix injectivity of types *) - assert false in let has_lazy_storage = has_lazy_storage ty in aux ctxt mode ~temporary ids_to_copy acc ty x ~has_lazy_storage @@ -6398,16 +6396,16 @@ let[@coq_axiom_with_reason "gadt"] rec fold_lazy_storage : fun ~f ~init ctxt ty x ~has_lazy_storage -> Gas.consume ctxt Typecheck_costs.parse_instr_cycle >>? fun ctxt -> match (has_lazy_storage, ty, x) with - | (_, Big_map_t (_, _, _), {id = Some id; _}) -> + | (Big_map_f, Big_map_t (_, _, _), {id = Some id; _}) -> Gas.consume ctxt Typecheck_costs.parse_instr_cycle >>? fun ctxt -> ok (f.f Big_map id (Fold_lazy_storage.Ok init), ctxt) - | (_, Sapling_state_t _, {id = Some id; _}) -> + | (Sapling_state_f, Sapling_state_t _, {id = Some id; _}) -> Gas.consume ctxt Typecheck_costs.parse_instr_cycle >>? fun ctxt -> ok (f.f Sapling_state id (Fold_lazy_storage.Ok init), ctxt) | (False_f, _, _) -> ok (Fold_lazy_storage.Ok init, ctxt) - | (_, Big_map_t (_, _, _), {id = None; _}) -> + | (Big_map_f, Big_map_t (_, _, _), {id = None; _}) -> ok (Fold_lazy_storage.Ok init, ctxt) - | (_, Sapling_state_t _, {id = None; _}) -> + | (Sapling_state_f, Sapling_state_t _, {id = None; _}) -> ok (Fold_lazy_storage.Ok init, ctxt) | (Pair_f (hl, hr), Pair_t ((tyl, _, _), (tyr, _, _), _), (xl, xr)) -> ( fold_lazy_storage ~f ~init ctxt tyl xl ~has_lazy_storage:hl @@ -6444,10 +6442,6 @@ let[@coq_axiom_with_reason "gadt"] rec fold_lazy_storage : | Fold_lazy_storage.Error -> ok (init, ctxt)) m (ok (Fold_lazy_storage.Ok init, ctxt)) - | _ -> - (* TODO: https://gitlab.com/tezos/tezos/-/issues/1962 - fix injectivity of types *) - assert false let[@coq_axiom_with_reason "gadt"] collect_lazy_storage ctxt ty x = let has_lazy_storage = has_lazy_storage ty in From f7474b781b44818ae895b467635f126418cef4a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Wed, 12 Jan 2022 12:01:36 +0100 Subject: [PATCH 0138/1220] Tezt: Fix flaky synchronisation test --- tezt/tests/synchronisation_heuristic.ml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tezt/tests/synchronisation_heuristic.ml b/tezt/tests/synchronisation_heuristic.ml index 726dac0bb9..d1463dd622 100644 --- a/tezt/tests/synchronisation_heuristic.ml +++ b/tezt/tests/synchronisation_heuristic.ml @@ -111,14 +111,19 @@ let check_node_synchronization_state = in Log.info "Restarting the nodes..." ; let* _ = - Lwt_list.iter_p (fun node -> Node.restart node []) (main_node :: nodes) + Lwt_list.iter_p (fun node -> Node.terminate node) (main_node :: nodes) in - Log.info "Waiting for nodes to be synchronized." ; - let* () = - Lwt_list.iter_p + (* We register this event before restarting the node to avoid to register it too late. *) + let synchronisation_events = + List.map (fun node -> wait_for ~statuses:["synced"; "stuck"] node) (main_node :: nodes) in + let* _ = + Lwt_list.iter_p (fun node -> Node.run node []) (main_node :: nodes) + in + Log.info "Waiting for nodes to be synchronized." ; + let* () = Lwt.join synchronisation_events in unit (* In order to check that the prevalidator is not alive, we cannot From 7307f2b4ebeda38d00d4123d3581dae44b72cd91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Wed, 12 Jan 2022 14:18:39 +0100 Subject: [PATCH 0139/1220] Tezt: Remove unused function `Node.restart` --- tezt/lib_tezos/node.ml | 5 ----- tezt/lib_tezos/node.mli | 10 ---------- 2 files changed, 15 deletions(-) diff --git a/tezt/lib_tezos/node.ml b/tezt/lib_tezos/node.ml index b76327f7a9..77891e9c79 100644 --- a/tezt/lib_tezos/node.ml +++ b/tezt/lib_tezos/node.ml @@ -583,11 +583,6 @@ let init ?runner ?path ?name ?color ?data_dir ?event_pipe ?net_port let* () = wait_for_ready node in return node -let restart node arguments = - let* () = terminate node in - let* () = run node arguments in - wait_for_ready node - let send_raw_data node ~data = (* Extracted from Lwt_utils_unix. *) let write_string ?(pos = 0) ?len descr buf = diff --git a/tezt/lib_tezos/node.mli b/tezt/lib_tezos/node.mli index 6661217ab9..75dc3f81d4 100644 --- a/tezt/lib_tezos/node.mli +++ b/tezt/lib_tezos/node.mli @@ -452,16 +452,6 @@ val init : argument list -> t Lwt.t -(** Restart a node. - - This {!terminate}s a node, then {!run}s it again and waits for it to be ready. - - If you passed arguments such as [Expected_pow] or [Singleprocess] - to {!run} they are not automatically passed again. - You can pass them to [restart], or you can pass other values if you want - to restart with other parameters. *) -val restart : t -> argument list -> unit Lwt.t - (** [send_raw_data node ~data] writes [~data] using an IP socket on the net port of [node]. *) val send_raw_data : t -> data:string -> unit Lwt.t From c22803c058854219b6a2a8b355dea70affc76147 Mon Sep 17 00:00:00 2001 From: Thomas Letan Date: Wed, 12 Jan 2022 13:48:25 +0100 Subject: [PATCH 0140/1220] Tezt,tx_rollup: Fix inconsistent naming for the rollup RPC argument --- tezt/lib_tezos/RPC.ml | 19 +++++-------------- tezt/lib_tezos/RPC.mli | 4 ++-- tezt/tests/RPC_test.ml | 4 ++-- tezt/tests/tx_rollup.ml | 10 +++++----- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/tezt/lib_tezos/RPC.ml b/tezt/lib_tezos/RPC.ml index bce6526ea1..75ca450e91 100644 --- a/tezt/lib_tezos/RPC.ml +++ b/tezt/lib_tezos/RPC.ml @@ -628,21 +628,12 @@ module Script_cache = struct end module Tx_rollup = struct - let sub_path ~chain ~block ~tx_rollup_hash sub = - [ - "chains"; - chain; - "blocks"; - block; - "context"; - "tx_rollup"; - tx_rollup_hash; - sub; - ] + let sub_path ~chain ~block ~tx_rollup sub = + ["chains"; chain; "blocks"; block; "context"; "tx_rollup"; tx_rollup; sub] - let get_state ?endpoint ?hooks ?(chain = "main") ?(block = "head") - ~tx_rollup_hash client = - let path = sub_path ~chain ~block ~tx_rollup_hash "state" in + let get_state ?endpoint ?hooks ?(chain = "main") ?(block = "head") ~tx_rollup + client = + let path = sub_path ~chain ~block ~tx_rollup "state" in Client.rpc ?endpoint ?hooks GET path client end diff --git a/tezt/lib_tezos/RPC.mli b/tezt/lib_tezos/RPC.mli index abedc550c3..b034800fc6 100644 --- a/tezt/lib_tezos/RPC.mli +++ b/tezt/lib_tezos/RPC.mli @@ -964,13 +964,13 @@ module Script_cache : sig end module Tx_rollup : sig - (** Call RPC /chain/[chain]/blocks/[block]/context/[rollup_hash]/state *) + (** Call RPC /chain/[chain]/blocks/[block]/context/tx_rollup/[tx_rollup_id]/state *) val get_state : ?endpoint:Client.endpoint -> ?hooks:Process.hooks -> ?chain:string -> ?block:string -> - tx_rollup_hash:string -> + tx_rollup:string -> Client.t -> JSON.t Lwt.t end diff --git a/tezt/tests/RPC_test.ml b/tezt/tests/RPC_test.ml index e2e2610a69..0488a60eed 100644 --- a/tezt/tests/RPC_test.ml +++ b/tezt/tests/RPC_test.ml @@ -617,7 +617,7 @@ let test_votes ?endpoint client = let test_tx_rollup ?endpoint client = let client_bake_for = make_client_bake_for () in - let* tx_rollup_hash = + let* tx_rollup = Client.originate_tx_rollup ~burn_cap:Tez.(of_int 9999999) ~storage_limit:60_000 @@ -625,7 +625,7 @@ let test_tx_rollup ?endpoint client = client in let* () = client_bake_for client in - let* _ = RPC.Tx_rollup.get_state ?endpoint ~tx_rollup_hash client in + let* _ = RPC.Tx_rollup.get_state ?endpoint ~tx_rollup client in unit (* Test the various other RPCs. *) diff --git a/tezt/tests/tx_rollup.ml b/tezt/tests/tx_rollup.ml index 6da1e5601e..337823b95f 100644 --- a/tezt/tests/tx_rollup.ml +++ b/tezt/tests/tx_rollup.ml @@ -25,8 +25,8 @@ (* utils *) -let get_state tx_rollup_hash client = - let* json = RPC.Tx_rollup.get_state ~tx_rollup_hash client in +let get_state tx_rollup client = + let* json = RPC.Tx_rollup.get_state ~tx_rollup client in JSON.(json |-> "state" |> as_opt |> Option.map (fun _ -> ())) |> Lwt.return (* test *) @@ -43,7 +43,7 @@ let test_simple_use_case = let* (_node, client) = Client.init_with_protocol ~parameter_file `Client ~protocol () in - let* tx_rollup_hash = + let* tx_rollup = Client.originate_tx_rollup ~burn_cap:Tez.(of_int 9999999) ~storage_limit:60_000 @@ -51,13 +51,13 @@ let test_simple_use_case = client in let* () = Client.bake_for client in - let* state = get_state tx_rollup_hash client in + let* state = get_state tx_rollup client in match state with | Some _ -> unit | None -> Test.fail "The tx rollups was not correctly originated and no state exists for \ %s." - tx_rollup_hash + tx_rollup let register ~protocols = test_simple_use_case ~protocols From 184a336bb970eaf9e972344c36349828a2e65bcd Mon Sep 17 00:00:00 2001 From: Thomas Letan Date: Thu, 13 Jan 2022 21:20:09 +0100 Subject: [PATCH 0141/1220] Tezt,tx_rollup: Refactor the [sub_path] helper function We do that to share more easily the default values for arguments [chain] and [block]; this will reduce the risk of error and increase code sharing. --- tezt/lib_tezos/RPC.ml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tezt/lib_tezos/RPC.ml b/tezt/lib_tezos/RPC.ml index 75ca450e91..1033da510b 100644 --- a/tezt/lib_tezos/RPC.ml +++ b/tezt/lib_tezos/RPC.ml @@ -628,12 +628,11 @@ module Script_cache = struct end module Tx_rollup = struct - let sub_path ~chain ~block ~tx_rollup sub = + let sub_path ?(chain = "main") ?(block = "head") ~tx_rollup sub = ["chains"; chain; "blocks"; block; "context"; "tx_rollup"; tx_rollup; sub] - let get_state ?endpoint ?hooks ?(chain = "main") ?(block = "head") ~tx_rollup - client = - let path = sub_path ~chain ~block ~tx_rollup "state" in + let get_state ?endpoint ?hooks ?chain ?block ~tx_rollup client = + let path = sub_path ?chain ?block ~tx_rollup "state" in Client.rpc ?endpoint ?hooks GET path client end From 4d3a8ee2ad8d91c97c731fa654e9a3a94edf4ab7 Mon Sep 17 00:00:00 2001 From: mujx <374817-mujx@users.noreply.gitlab.com> Date: Thu, 9 Dec 2021 14:08:43 +0000 Subject: [PATCH 0142/1220] TPS: Allow to run the benchmark with relaxed protocol parameters --- Makefile | 7 +- .../benchmark_tps_command.ml | 103 ++++++++++++++++-- src/bin_tps_evaluation/lift_limits.patch | 26 +++++ 3 files changed, 124 insertions(+), 12 deletions(-) create mode 100644 src/bin_tps_evaluation/lift_limits.patch diff --git a/Makefile b/Makefile index c3a6b3aae3..3f25f583b4 100644 --- a/Makefile +++ b/Makefile @@ -263,12 +263,17 @@ build-deps: build-dev-deps: @./scripts/install_build_deps.sh --dev +.PHONY: lift-protocol-limits-patch +lift-protocol-limits-patch: + @git apply -R ./src/bin_tps_evaluation/lift_limits.patch || true + @git apply ./src/bin_tps_evaluation/lift_limits.patch + .PHONY: build-tps-deps build-tps-deps: @./scripts/install_build_deps.sh --tps .PHONY: build-tps -build-tps: +build-tps: lift-protocol-limits-patch all @dune build ./src/bin_tps_evaluation @cp -f ./_build/install/default/bin/tezos-tps-evaluation . diff --git a/src/bin_tps_evaluation/benchmark_tps_command.ml b/src/bin_tps_evaluation/benchmark_tps_command.ml index c0d8324d73..4de127cd23 100644 --- a/src/bin_tps_evaluation/benchmark_tps_command.ml +++ b/src/bin_tps_evaluation/benchmark_tps_command.ml @@ -51,6 +51,46 @@ let get_blocks blocks_total client = Client.rpc ~query_string GET path client >|= fun json -> List.map JSON.as_string (JSON.as_list (JSON.geti 0 json)) +(** Get the total number of injected transactions. *) +let get_total_injected_transactions () = + let tmp_dir = Filename.get_temp_dir_name () in + + (* Choose the most recently created file. *) + let operations_file = + Sys.readdir tmp_dir |> Array.to_list + |> List.filter_map (fun file -> + if + String.has_prefix + ~prefix:"client-stresstest-injected_operations" + file + && Filename.extension file = ".json" + then + let f = Filename.concat tmp_dir file in + Some (Unix.stat f, f) + else None) + |> List.sort (fun (a1, _) (b1, _) -> Unix.(compare b1.st_ctime a1.st_ctime)) + |> List.map snd |> List.hd + in + + match operations_file with + | None -> + Format.kasprintf + Stdlib.failwith + "The injected operations json file was not found. It should have been \ + generated by the tezos-client stresstest command@." + | Some f -> + let block_transactions = JSON.as_list (JSON.parse_file f) in + + List.fold_left + (fun a b -> + match + List.assoc ~equal:String.equal "operation_hashes" (JSON.as_object b) + with + | Some v -> List.length (JSON.as_list v) + a + | None -> a) + 0 + block_transactions + (** Get the number of applied transactions in the block with the given hash. *) let get_total_applied_transactions_for_block block client = @@ -67,7 +107,8 @@ let get_total_applied_transactions_for_block block client = Client.rpc GET path client >|= fun json -> List.length (JSON.as_list json) (** The entry point of the benchmark. *) -let run_benchmark ~accounts_total ~blocks_total ~average_block_path () = +let run_benchmark ~lift_protocol_limits ~provided_tps_of_injection + ~accounts_total ~blocks_total ~average_block_path () = let all_bootstraps = List.filter (fun {Account.alias; _} -> alias <> "activator") @@ -84,7 +125,13 @@ let run_benchmark ~accounts_total ~blocks_total ~average_block_path () = Format.printf "Blocks to bake: %d@." blocks_total ; Protocol.write_parameter_file ~base:(Either.right (protocol, Some constants)) - [] + (if lift_protocol_limits then + [ + (* We're using the maximum representable number. (2 ^ 31 - 1) *) + (["hard_gas_limit_per_block"], Some {|"2147483647"|}); + (["hard_gas_limit_per_operation"], Some {|"2147483647"|}); + ] + else []) >>= fun parameter_file -> Average_block.load average_block_path >>= fun average_block -> let transaction_cost = Gas.average_transaction_cost average_block in @@ -117,13 +164,19 @@ let run_benchmark ~accounts_total ~blocks_total ~average_block_path () = this we risk obtaining a sub-estimated value for TPS. If we use a higher TPS than the maximal possible we risk to saturate the mempool and again obtain a less-than-perfect estimation in the end. *) - let tps_of_injection = - Gas.deduce_tps ~protocol ~constants ~transaction_cost () + let target_tps_of_injection = + match provided_tps_of_injection with + | Some tps_value -> tps_value + | None -> + (* This is a high enough value (not realistically achievable + by the benchmark) so we're not limited by it. *) + if lift_protocol_limits then max_int + else Gas.deduce_tps ~protocol ~constants ~transaction_cost () in let client_stresstest_process = Client.spawn_stresstest ~tps: - tps_of_injection + target_tps_of_injection (* The stresstest command allows a small probability of creating new accounts along the way. We do not want that, so we set it to 0. *) @@ -132,7 +185,8 @@ let run_benchmark ~accounts_total ~blocks_total ~average_block_path () = in Node.wait_for_level node (benchmark_starting_level + blocks_total) >>= fun _level -> - Process.kill client_stresstest_process ; + Process.terminate client_stresstest_process ; + Process.wait client_stresstest_process >>= fun _ -> let bench_end = Unix.gettimeofday () in let bench_duration = bench_end -. bench_start in Format.printf @@ -140,6 +194,7 @@ let run_benchmark ~accounts_total ~blocks_total ~average_block_path () = blocks_total bench_duration ; get_blocks blocks_total client >>= fun produced_block_hashes -> + let total_injected_transactions = get_total_injected_transactions () in let total_applied_transactions = ref 0 in let handle_one_block block_hash = get_total_applied_transactions_for_block block_hash client @@ -150,11 +205,16 @@ let run_benchmark ~accounts_total ~blocks_total ~average_block_path () = in List.iter_s handle_one_block (List.rev produced_block_hashes) >>= fun () -> Format.printf "Total applied transactions: %d@." !total_applied_transactions ; + Format.printf "Total injected transactions: %d@." total_injected_transactions ; let empirical_tps = Float.of_int !total_applied_transactions /. bench_duration in - Format.printf "TPS of injection: %d@\n" tps_of_injection ; - Format.printf "Empirical TPS: %f@." empirical_tps ; + let de_facto_tps_of_injection = + Float.of_int total_injected_transactions /. bench_duration + in + Format.printf "TPS of injection (target): %d@\n" target_tps_of_injection ; + Format.printf "TPS of injection (de facto): %.2f@\n" de_facto_tps_of_injection ; + Format.printf "Empirical TPS: %.2f@." empirical_tps ; Node.terminate ~kill:true node module Term = struct @@ -176,6 +236,20 @@ module Term = struct let docv = "AVERAGE_BLOCK_PATH" in Arg.(value & opt (some string) None & info ["average-block"] ~docv ~doc) + let lift_protocol_limits_arg = + let open Cmdliner in + let doc = + "Remove any protocol settings that may limit the maximum achievable TPS" + in + let docv = "LIFT_PROTOCOL_LIMITS" in + Arg.(value (flag & info ["lift-protocol-limits"] ~docv ~doc)) + + let tps_of_injection_arg = + let open Cmdliner in + let doc = "The injection TPS value that we should use" in + let docv = "TPS_OF_INJECTION" in + Arg.(value & opt (some int) None & info ["tps-of-injection"] ~docv ~doc) + let tezt_args = let open Cmdliner in let doc = "Extra arguments after -- to be passed directly to Tezt" in @@ -183,7 +257,8 @@ module Term = struct Arg.(value & pos_all string [] & info [] ~docv ~doc) let term = - let process accounts_total blocks_total average_block_path tezt_args = + let process accounts_total blocks_total average_block_path + lift_protocol_limits provided_tps_of_injection tezt_args = (try Cli.init ~args:tezt_args () with Arg.Help help_str -> Format.eprintf "%s@." help_str ; @@ -192,14 +267,20 @@ module Term = struct ~__FILE__ ~title:"tezos_tps_benchmark" ~tags:[] - (run_benchmark ~accounts_total ~blocks_total ~average_block_path) ; + (run_benchmark + ~lift_protocol_limits + ~provided_tps_of_injection + ~accounts_total + ~blocks_total + ~average_block_path) ; Test.run () ; `Ok () in let open Cmdliner.Term in ret (const process $ accounts_total_arg $ blocks_total_arg - $ average_block_path_arg $ tezt_args) + $ average_block_path_arg $ lift_protocol_limits_arg $ tps_of_injection_arg + $ tezt_args) end module Manpage = struct diff --git a/src/bin_tps_evaluation/lift_limits.patch b/src/bin_tps_evaluation/lift_limits.patch new file mode 100644 index 0000000000..80a61b6ff3 --- /dev/null +++ b/src/bin_tps_evaluation/lift_limits.patch @@ -0,0 +1,26 @@ +diff --git a/src/proto_alpha/lib_protocol/main.ml b/src/proto_alpha/lib_protocol/main.ml +index b226dc5417..cef4feef6e 100644 +--- a/src/proto_alpha/lib_protocol/main.ml ++++ b/src/proto_alpha/lib_protocol/main.ml +@@ -64,10 +64,9 @@ type operation = Alpha_context.packed_operation = { + + let acceptable_passes = Alpha_context.Operation.acceptable_passes + +-let max_block_length = Alpha_context.Block_header.max_header_length ++let max_block_length = max_int + +-let max_operation_data_length = +- Alpha_context.Constants.max_operation_data_length ++let max_operation_data_length = max_int + + let validation_passes = + let open Alpha_context.Constants in +@@ -83,7 +82,7 @@ let validation_passes = + max_op = Some max_anon_ops_per_block; + }; + (* 512kB *) +- {max_size = 512 * 1024; max_op = None}; ++ {max_size = max_int; max_op = None}; + ] + + let rpc_services = From e7dfbe2d1335328fdf143b79436c8d9374c98af0 Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Fri, 17 Dec 2021 21:41:19 +0100 Subject: [PATCH 0143/1220] Proto: support for --operation-pool option Hangz2: support for client and baker daemon and unit test for --operation-pool related sorting Alpha: Support for client and baker daemon Ithaca: backport alpha support for --operation-pool Tests/Tezt: update Tezt tests Tests/Python: add integration tests for new baking options Tests for --ignore-node-mempool, --operation-pool, in baker and client mode. Local or remote (HTTP) files Doc: CHANGES, mention encodings in --operation-pool option doc, add system variable to howtouse.rst --- CHANGES.rst | 17 + docs/introduction/howtouse.rst | 4 + .../lib_client/client_proto_args.ml | 2 + .../lib_client/client_proto_args.mli | 2 + .../lib_delegate/client_baking_forge.ml | 343 +- .../lib_delegate/client_baking_forge.mli | 79 +- .../lib_delegate/client_baking_lib.ml | 8 +- .../lib_delegate/client_baking_lib.mli | 3 +- .../lib_delegate/client_daemon.ml | 4 +- .../lib_delegate/client_daemon.mli | 1 + .../lib_delegate/delegate_commands.ml | 97 +- .../lib_delegate/delegate_events.ml | 24 + src/proto_011_PtHangz2/lib_delegate/dune | 1 + .../lib_delegate/test/.ocamlformat | 17 + src/proto_011_PtHangz2/lib_delegate/test/dune | 39 + .../lib_delegate/test/main.ml | 5 + .../test/test_client_baking_forge.ml | 122 + .../tezos-baking-011-PtHangz2.opam | 3 + .../lib_delegate/baking_actions.ml | 90 +- .../lib_delegate/baking_commands.ml | 99 +- .../lib_delegate/baking_configuration.ml | 26 +- .../lib_delegate/baking_configuration.mli | 12 +- .../lib_delegate/baking_events.ml | 24 + .../lib_delegate/baking_lib.ml | 21 +- .../lib_delegate/baking_lib.mli | 4 +- .../lib_delegate/block_forge.ml | 10 +- .../lib_delegate/block_forge.mli | 2 +- .../lib_delegate/client_daemon.ml | 5 +- .../lib_delegate/client_daemon.mli | 1 + .../lib_delegate/operation_pool.ml | 155 +- .../lib_delegate/operation_pool.mli | 72 +- .../lib_delegate/operation_selection.ml | 68 +- .../lib_delegate/operation_selection.mli | 4 +- .../lib_delegate/operation_worker.ml | 218 +- .../lib_delegate/operation_worker.mli | 14 +- .../lib_delegate/state_transitions.ml | 4 +- .../lib_delegate/baking_actions.ml | 90 +- .../lib_delegate/baking_commands.ml | 99 +- .../lib_delegate/baking_configuration.ml | 26 +- .../lib_delegate/baking_configuration.mli | 12 +- src/proto_alpha/lib_delegate/baking_events.ml | 24 + src/proto_alpha/lib_delegate/baking_lib.ml | 21 +- src/proto_alpha/lib_delegate/baking_lib.mli | 4 +- src/proto_alpha/lib_delegate/block_forge.ml | 10 +- src/proto_alpha/lib_delegate/block_forge.mli | 2 +- src/proto_alpha/lib_delegate/client_daemon.ml | 5 +- .../lib_delegate/client_daemon.mli | 1 + .../lib_delegate/operation_pool.ml | 155 +- .../lib_delegate/operation_pool.mli | 72 +- .../lib_delegate/operation_selection.ml | 68 +- .../lib_delegate/operation_selection.mli | 4 +- .../lib_delegate/operation_worker.ml | 218 +- .../lib_delegate/operation_worker.mli | 14 +- .../lib_delegate/state_transitions.ml | 4 +- .../operations_files/empty_operations.json | 1 + .../test_baker_operations_cli_options.py | 343 + .../operations_files/empty_operations.json | 1 + .../test_baker_operations_cli_options.py | 370 ++ .../operations_files/empty_operations.json | 1 + .../test_baker_operations_cli_options.py | 370 ++ .../_regressions/rpc/alpha.client.mempool.out | 17 +- tezt/_regressions/rpc/alpha.proxy.mempool.out | 17 +- .../rpc/granada.client.mempool.out | 5678 ++++++++++++++++ .../rpc/granada.proxy.mempool.out | 5694 +++++++++++++++++ .../rpc/hangzhou.client.mempool.out | 21 +- .../rpc/hangzhou.proxy.mempool.out | 21 +- tezt/lib_tezos/client.ml | 8 +- tezt/lib_tezos/client.mli | 16 + tezt/tests/RPC_test.ml | 37 +- tezt/tests/baking.ml | 11 +- tezt/tests/mempool.ml | 28 +- 71 files changed, 14169 insertions(+), 894 deletions(-) create mode 100644 src/proto_011_PtHangz2/lib_delegate/test/.ocamlformat create mode 100644 src/proto_011_PtHangz2/lib_delegate/test/dune create mode 100644 src/proto_011_PtHangz2/lib_delegate/test/main.ml create mode 100644 src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml create mode 100644 tests_python/tests_011/operations_files/empty_operations.json create mode 100644 tests_python/tests_011/test_baker_operations_cli_options.py create mode 100644 tests_python/tests_012/operations_files/empty_operations.json create mode 100644 tests_python/tests_012/test_baker_operations_cli_options.py create mode 100644 tests_python/tests_alpha/operations_files/empty_operations.json create mode 100644 tests_python/tests_alpha/test_baker_operations_cli_options.py create mode 100644 tezt/_regressions/rpc/granada.client.mempool.out create mode 100644 tezt/_regressions/rpc/granada.proxy.mempool.out diff --git a/CHANGES.rst b/CHANGES.rst index 1f6e99d5f4..07f7dc3651 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -180,6 +180,20 @@ Client The media accept header indicates to the node which format of data serialisation is supported. The value can be ``json``, ``binary`` or ``any``. +- Renamed the ``--mempool`` option into ``--operation-pool``. + The format of the file passed as parameter has changed from the one of RPC + ``pending_operations`` (that is, a key-value dictionary whose values are list + of operations) to a single list of operations to be considered for inclusion. + +- ``--operation-pool`` option supports URL parameters to fetch remote mempools + through HTTP. Environment variable `TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS` + may be set to specify custom HTTP headers. Only the Host header is supported + as of now (see description in `rfc2616, section 14.23 + `_) + +- Added new option ``--ignore-node-mempool`` to the ``bake for`` command + to avoid querying the node's mempool when baking a block. + - Added two options, ``--now`` and ``--level`` to the ``run script`` and ``run view`` commands simulating execution of Michelson code. These options can be used to override the values normally @@ -207,6 +221,9 @@ Baker / Endorser / Accuser The media accept header indicates to the node which format of data serialisation is supported. The value can be ``json``, ``binary`` or ``any``. +- Ported the ``--operation-pool`` option of the ``bake for`` command of the client + to the baker daemon. + - Removed baker, endorser and accuser for Granada. Miscellaneous diff --git a/docs/introduction/howtouse.rst b/docs/introduction/howtouse.rst index 6c4c4e4767..04523107bf 100644 --- a/docs/introduction/howtouse.rst +++ b/docs/introduction/howtouse.rst @@ -667,6 +667,10 @@ The behavior of the client can be configured using the following environment var If this variable is not set, or otherwise cannot be parsed as a positive integer, a default value of ``10`` seconds is used for each call. The two RPC calls this variable affects are queries that the client makes to the node in order to determine: (1) the protocol version of the node it connects to, and (2) the commands supported in that version. +- `TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS`: This variable specifies + custom HTTP headers to use with the ``-operation-pool`` option. Only the Host + header is supported as of now (see description in `rfc2616, section 14.23 + `_ Other binaries -------------- diff --git a/src/proto_011_PtHangz2/lib_client/client_proto_args.ml b/src/proto_011_PtHangz2/lib_client/client_proto_args.ml index 0a0595b6f1..c846bcc70b 100644 --- a/src/proto_011_PtHangz2/lib_client/client_proto_args.ml +++ b/src/proto_011_PtHangz2/lib_client/client_proto_args.ml @@ -129,6 +129,8 @@ let int_parameter = parameter (fun _ p -> try return (int_of_string p) with _ -> failwith "Cannot read int") +let uri_parameter = parameter (fun _ x -> return (Uri.of_string x)) + let bytes_of_prefixed_string s = match if String.length s < 2 || s.[0] <> '0' || s.[1] <> 'x' then None diff --git a/src/proto_011_PtHangz2/lib_client/client_proto_args.mli b/src/proto_011_PtHangz2/lib_client/client_proto_args.mli index 5ea6ce7f59..330480b2fe 100644 --- a/src/proto_011_PtHangz2/lib_client/client_proto_args.mli +++ b/src/proto_011_PtHangz2/lib_client/client_proto_args.mli @@ -117,6 +117,8 @@ end val int_parameter : (int, full) Clic.parameter +val uri_parameter : (Uri.t, full) Clic.parameter + val string_parameter : (string, full) Clic.parameter val bytes_of_prefixed_string : string -> Bytes.t tzresult Lwt.t diff --git a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml index 5aab546d97..2080495830 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml +++ b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml @@ -28,6 +28,138 @@ open Alpha_context open Protocol_client_context module Events = Delegate_events.Baking_forge +module Operations_source = struct + type t = + | Local of {filename : string} + | Remote of {uri : Uri.t; http_headers : (string * string) list option} + + let encoding = + let open Data_encoding in + union + ~tag_size:`Uint8 + [ + case + (Tag 1) + ~title:"Local" + (obj2 (req "filename" string) (req "kind" (constant "Local"))) + (function Local {filename} -> Some (filename, ()) | _ -> None) + (fun (filename, ()) -> Local {filename}); + case + (Tag 2) + ~title:"Remote" + (obj3 + (req "uri" string) + (opt "http_headers" (list (tup2 string string))) + (req "kind" (constant "Remote"))) + (function + | Remote {uri; http_headers} -> + Some (Uri.to_string uri, http_headers, ()) + | _ -> None) + (fun (uri_str, http_headers, ()) -> + Remote {uri = Uri.of_string uri_str; http_headers}); + ] + + type error += + | Failed_mempool_fetch of { + path : string; + reason : string; + details : Data_encoding.json option; + } + + let () = + register_error_kind + `Permanent + ~id:(Format.sprintf "baker-%s.failed_to_get_mempool" Protocol.name) + ~title:"Failed to get mempool" + ~description:"Failed to retrieve the mempool from the given file or uri." + ~pp:(fun fmt (path, reason, details) -> + Format.fprintf + fmt + "@[Failed to retrieve the mempool from %s:@ @[%s%a@]@]" + path + reason + (fun fmt -> function + | None -> () + | Some json -> Format.fprintf fmt ": %a" Data_encoding.Json.pp json) + details) + Data_encoding.( + obj3 + (req "path" string) + (req "reason" string) + (opt "details" Data_encoding.json)) + (function + | Failed_mempool_fetch {path; reason; details} -> + Some (path, reason, details) + | _ -> None) + (fun (path, reason, details) -> + Failed_mempool_fetch {path; reason; details}) + + let operations_encoding = + Data_encoding.(list (dynamic_size Alpha_context.Operation.encoding)) + + let retrieve mempool = + match mempool with + | None -> Lwt.return_none + | Some mempool -> ( + let fail reason details = + let path = + match mempool with + | Local {filename} -> filename + | Remote {uri; _} -> Uri.to_string uri + in + fail (Failed_mempool_fetch {path; reason; details}) + in + let decode_mempool json = + protect + ~on_error:(fun _ -> + fail "cannot decode the received JSON into mempool" (Some json)) + (fun () -> + return (Data_encoding.Json.destruct operations_encoding json)) + in + match mempool with + | Local {filename} -> + if Sys.file_exists filename then + Tezos_stdlib_unix.Lwt_utils_unix.Json.read_file filename + >>= function + | Error _ -> + Events.(emit invalid_json_file filename) >>= fun () -> + Lwt.return_none + | Ok json -> ( + decode_mempool json >>= function + | Ok mempool -> Lwt.return_some mempool + | Error _ -> assert false) + else + Events.(emit no_mempool_found_in_file filename) >>= fun () -> + Lwt.return_none + | Remote {uri; http_headers} -> ( + ( ((with_timeout + (Systime_os.sleep (Time.System.Span.of_seconds_exn 5.)) + (fun _ -> + Tezos_rpc_http_client_unix.RPC_client_unix + .generic_media_type_call + ~accept:[Media_type.json] + ?headers:http_headers + `GET + uri) + >>=? function + | `Json json -> return json + | _ -> fail "json not returned" None) + >>=? function + | `Ok json -> return json + | `Unauthorized json -> fail "unauthorized request" json + | `Gone json -> fail "gone" json + | `Error json -> fail "error" json + | `Not_found json -> fail "not found" json + | `Forbidden json -> fail "forbidden" json + | `Conflict json -> fail "conflict" json) + >>=? fun json -> decode_mempool json ) + >>= function + | Ok mempool -> Lwt.return_some mempool + | Error errs -> + Events.(emit cannot_fetch_mempool errs) >>= fun () -> + Lwt.return_none)) +end + (* The index of the different components of the protocol's validation passes *) (* TODO: ideally, we would like this to be more abstract and possibly part of the protocol, while retaining the generality of lists *) @@ -72,13 +204,14 @@ type state = { (* truly mutable *) mutable best_slot : slot option; mutable retry_counter : int; + extra_operations : Operations_source.t option; } let create_state ?(minimal_fees = default_minimal_fees) ?(minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit) ?(minimal_nanotez_per_byte = default_minimal_nanotez_per_byte) - ?(retry_counter = default_retry_counter) context_path index nonces_location - delegates constants = + ?(retry_counter = default_retry_counter) ?extra_operations context_path + index nonces_location delegates constants = { context_path; index; @@ -90,6 +223,7 @@ let create_state ?(minimal_fees = default_minimal_fees) minimal_nanotez_per_byte; best_slot = None; retry_counter; + extra_operations; } let get_delegates cctxt state = @@ -224,8 +358,40 @@ type manager_content = { counter : counter; } +module PrioritizedOperation : sig + type t = private High of packed_operation | Low of packed_operation + + (** prioritize operations coming from an external source (file, uri, ...)*) + val extern : packed_operation -> t + + (** prioritize operations coming from a node *) + val node : packed_operation -> t + + (** [packed t] is [t.operation]*) + val packed : t -> packed_operation + + val compare_priority : t -> t -> int +end = struct + (* Higher priority operations will be included first *) + type t = High of packed_operation | Low of packed_operation + + let extern op = High op + + let node op = Low op + + let packed = function High op | Low op -> op + + let compare_priority t1 t2 = + match (t1, t2) with + | (High _, Low _) -> 1 + | (Low _, High _) -> -1 + | (Low _, Low _) | (High _, High _) -> 0 +end + let get_manager_content op = - let {protocol_data = Operation_data {contents; _}; _} = op in + let {protocol_data = Operation_data {contents; _}; _} = + PrioritizedOperation.packed op + in let open Operation in let l = to_list (Contents_list contents) in List.fold_left_e @@ -255,7 +421,7 @@ let get_manager_content op = Weight = fee / (max ( (size/size_total), (gas/gas_total))) *) let sort_manager_operations ~max_size ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte - (operations : packed_operation list) = + (operations : PrioritizedOperation.t list) = let compute_weight op (fee, gas) = let size = Data_encoding.Binary.length Operation.encoding op in let size_f = Q.of_int size in @@ -275,7 +441,9 @@ let sort_manager_operations ~max_size ~hard_gas_limit_per_block ~minimal_fees if Tez.(total_fee < minimal_fees) then None else let (size, gas, weight_ratio) = - compute_weight op (total_fee, total_gas) + compute_weight + (PrioritizedOperation.packed op) + (total_fee, total_gas) in let fees_in_nanotez = Q.mul (Q.of_int64 (Tez.to_mutez total_fee)) (Q.of_int 1000) @@ -302,15 +470,19 @@ let sort_manager_operations ~max_size ~hard_gas_limit_per_block ~minimal_fees (* We order the operations by their weights except if they belong to the same manager, if they do, we order them by their counter. *) - let compare (_op, weight_ratio, source, counter) - (_op', weight_ratio', source', counter') = + let compare (op, weight_ratio, source, counter) + (op', weight_ratio', source', counter') = (* Be careful with the [compare]s *) if Signature.Public_key_hash.equal source source' then (* we want the smallest counter first *) Z.compare counter counter' else - (* We want the biggest weight first *) - Q.compare weight_ratio' weight_ratio + (* Prioritize according to tags first, then weight *) + match PrioritizedOperation.compare_priority op op' with + | 0 -> + (* We want the biggest weight first *) + Q.compare weight_ratio' weight_ratio + | n -> n in List.sort compare operations |> List.map (fun (op, _, _, _) -> op) @@ -343,7 +515,11 @@ let trim_manager_operations ~max_size ~hard_gas_limit_per_block (fun op -> match get_manager_content op with | Some {total_gas; _} -> - let size = Data_encoding.Binary.length Operation.encoding op in + let size = + Data_encoding.Binary.length + Operation.encoding + (PrioritizedOperation.packed op) + in Some (op, (size, total_gas)) | None -> None) manager_operations @@ -374,23 +550,25 @@ let trim_manager_operations ~max_size ~hard_gas_limit_per_block - Potentially overflowing operations *) let classify_operations (cctxt : #Protocol_client_context.full) ~chain ~block ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit - ~minimal_nanotez_per_byte (ops : packed_operation list) = + ~minimal_nanotez_per_byte (ops : PrioritizedOperation.t list) = Alpha_block_services.live_blocks cctxt ~chain ~block () >>=? fun live_blocks -> let t = (* Remove operations that are too old *) let ops = List.filter - (fun {shell = {branch; _}; _} -> Block_hash.Set.mem branch live_blocks) + (fun pop -> + let {shell = {branch; _}; _} = PrioritizedOperation.packed pop in + Block_hash.Set.mem branch live_blocks) ops in let validation_passes_len = List.length Main.validation_passes in let t = Array.make validation_passes_len [] in List.iter - (fun (op : packed_operation) -> + (fun (op : PrioritizedOperation.t) -> List.iter (fun pass -> t.(pass) <- op :: t.(pass)) - (Main.acceptable_passes op)) + (Main.acceptable_passes (PrioritizedOperation.packed op))) ops ; Array.map List.rev t in @@ -420,9 +598,12 @@ let classify_operations (cctxt : #Protocol_client_context.full) ~chain ~block t.(managers_index) <- desired_manager_operations ; ok overflowing_manager_operations in + Lwt.return ( overflowing_manager_operations >>? fun overflowing_manager_operations -> - ok (Array.to_list t, overflowing_manager_operations) ) + ok + ( Array.to_list t |> List.map (List.map PrioritizedOperation.packed), + overflowing_manager_operations ) ) let forge (op : Operation.packed) : Operation.raw = { @@ -436,30 +617,27 @@ let forge (op : Operation.packed) : Operation.raw = let ops_of_mempool (ops : Alpha_block_services.Mempool.t) = (* We only retain the applied, unprocessed and delayed operations *) List.rev - (Operation_hash.Map.fold (fun _ op acc -> op :: acc) ops.unprocessed + (Operation_hash.Map.fold + (fun _ op acc -> PrioritizedOperation.node op :: acc) + ops.unprocessed @@ Operation_hash.Map.fold - (fun _ (op, _) acc -> op :: acc) + (fun _ (op, _) acc -> PrioritizedOperation.node op :: acc) ops.branch_delayed - @@ List.rev_map (fun (_, op) -> op) ops.applied) + @@ List.rev_map (fun (_, op) -> PrioritizedOperation.node op) ops.applied) -let unopt_operations cctxt chain mempool = function - | None -> ( - match mempool with - | None -> - Alpha_block_services.Mempool.pending_operations cctxt ~chain () - >>=? fun mpool -> - let ops = ops_of_mempool mpool in - return ops - | Some file -> - Tezos_stdlib_unix.Lwt_utils_unix.Json.read_file file >>=? fun json -> - let mpool = - Data_encoding.Json.destruct - Alpha_block_services.S.Mempool.encoding - json - in - let ops = ops_of_mempool mpool in - return ops) - | Some operations -> return operations +let get_operations cctxt ~ignore_node_mempool chain mempool = + Operations_source.retrieve mempool >>= fun mempool_ops_opt -> + let mempool_ops = + match mempool_ops_opt with + | None -> [] + | Some ops -> List.map PrioritizedOperation.extern ops + in + if ignore_node_mempool then return mempool_ops + else + Alpha_block_services.Mempool.pending_operations cctxt ~chain () + >>=? fun mpool -> + let ops = ops_of_mempool mpool in + return (mempool_ops @ ops) let all_ops_valid (results : error Preapply_result.t list) = let open Operation_hash.Map in @@ -525,8 +703,8 @@ let merge_preapps (old : error Preapply_result.t) (* merge preapplies *) { Preapply_result.applied = []; - refused = merge old.refused neu.refused; outdated = merge old.outdated neu.outdated; + refused = merge old.refused neu.refused; branch_refused = merge old.branch_refused neu.branch_refused; branch_delayed = merge old.branch_delayed neu.branch_delayed; } @@ -561,13 +739,13 @@ let compute_endorsement_powers cctxt constants ~chain ~block = let compute_endorsing_power endorsement_powers operations = List.fold_left - (fun sum -> function + (fun sum op -> + match op with | { - Alpha_context.protocol_data = - Operation_data - {contents = Single (Endorsement_with_slot {slot; _}); _}; - _; - } -> ( + Alpha_context.protocol_data = + Operation_data {contents = Single (Endorsement_with_slot {slot; _}); _}; + _; + } -> ( try let endorsement_power = endorsement_powers.(slot) in sum + endorsement_power @@ -757,20 +935,25 @@ let finalize_block_header shell_header ~timestamp validation_result let context = Context.hash ~time:timestamp ?message context in return {header with context} -let forge_block cctxt ?force ?operations ?(best_effort = operations = None) - ?(sort = best_effort) ?(minimal_fees = default_minimal_fees) +let forge_block cctxt ?force ?(best_effort = true) ?(sort = best_effort) + ?(minimal_fees = default_minimal_fees) ?(minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit) ?(minimal_nanotez_per_byte = default_minimal_nanotez_per_byte) ?timestamp - ?mempool ?context_path ?seed_nonce_hash ~liquidity_baking_escape_vote ~chain - ~priority ~delegate_pkh ~delegate_sk block = + ?(ignore_node_mempool = false) ?extra_operations ?context_path + ?seed_nonce_hash ~liquidity_baking_escape_vote ~chain ~priority + ~delegate_pkh ~delegate_sk block = Alpha_services.Constants.all cctxt (chain, block) >>=? fun constants -> (* making the arguments usable *) - unopt_operations cctxt chain mempool operations >>=? fun operations_arg -> + get_operations cctxt ~ignore_node_mempool chain extra_operations + >>=? fun operations_arg -> Client_baking_blocks.info cctxt ~chain block >>=? fun block_info -> compute_endorsement_powers cctxt constants.parametric ~chain ~block:block_info >>=? fun endorsement_powers -> + let untagged_operations = + List.map PrioritizedOperation.packed operations_arg + in let endorsing_power = - compute_endorsing_power endorsement_powers operations_arg + compute_endorsing_power endorsement_powers untagged_operations in decode_priority cctxt chain block ~priority ~endorsing_power >>=? fun (priority, minimal_timestamp) -> @@ -838,7 +1021,8 @@ let forge_block cctxt ?force ?operations ?(best_effort = operations = None) let result = List.fold_left merge_preapps Preapply_result.empty result in - Lwt.return_error @@ List.filter_map (error_of_op result) operations_arg + Lwt.return_error + @@ List.filter_map (error_of_op result) untagged_operations | Some context_path -> assert sort ; assert best_effort ; @@ -857,6 +1041,7 @@ let forge_block cctxt ?force ?operations ?(best_effort = operations = None) minimal_nanotez_per_gas_unit = default_minimal_nanotez_per_gas_unit; minimal_nanotez_per_byte = default_minimal_nanotez_per_byte; retry_counter = default_retry_counter; + extra_operations; } in compute_endorsement_powers @@ -1135,10 +1320,10 @@ let fetch_operations (cctxt : #Protocol_client_context.full) ~chain state with consistent operations that went through the client-side validation *) let build_block cctxt ~user_activated_upgrades state seed_nonce_hash - ((slot_timestamp, (bi, priority, delegate)) as slot) + ((slot_timestamp, (block_info, priority, delegate)) as slot) ~liquidity_baking_escape_vote = - let chain = `Hash bi.Client_baking_blocks.chain_id in - let block = `Hash (bi.hash, 0) in + let chain = `Hash block_info.Client_baking_blocks.chain_id in + let block = `Hash (block_info.hash, 0) in Plugin.RPC.current_level cctxt ~offset:1l (chain, block) >>=? fun next_level -> let seed_nonce_hash = @@ -1146,12 +1331,27 @@ let build_block cctxt ~user_activated_upgrades state seed_nonce_hash in Client_keys.Public_key_hash.name cctxt delegate >>=? fun name -> let time = Time.System.of_protocol_exn slot_timestamp in - Events.(emit try_baking) (bi.hash, priority, name, time) >>= fun () -> - compute_endorsement_powers cctxt state.constants.parametric ~chain ~block:bi + Events.(emit try_baking) (block_info.hash, priority, name, time) >>= fun () -> + compute_endorsement_powers + cctxt + state.constants.parametric + ~chain + ~block:block_info >>=? fun endorsement_powers -> + (* if --ignore-node-mempool was implemented for the baker, this is + approximately where it would step in *) fetch_operations cctxt ~chain state endorsement_powers slot >>=? function | None -> Events.(emit new_head_received) () >>= fun () -> return_none | Some (operations, timestamp) -> ( + Operations_source.retrieve state.extra_operations + >>= fun external_mempool_ops_opt -> + (* prepend external mempool operations *) + let operations = + let mops = List.map PrioritizedOperation.node operations in + match external_mempool_ops_opt with + | None -> mops + | Some ops -> List.map PrioritizedOperation.extern ops @ mops + in classify_operations cctxt ~chain @@ -1169,7 +1369,7 @@ let build_block cctxt ~user_activated_upgrades state seed_nonce_hash ~user_activated_upgrades ~level:(Raw_level.to_int32 next_level.level) with - | None -> bi.next_protocol + | None -> block_info.next_protocol | Some hash -> hash in if Protocol_hash.(Protocol.hash <> next_version) then @@ -1197,7 +1397,7 @@ let build_block cctxt ~user_activated_upgrades state seed_nonce_hash ~block ~priority ~protocol_data - bi + block_info (operations, overflowing_ops) >>= function | Error errs -> @@ -1225,9 +1425,12 @@ let build_block cctxt ~user_activated_upgrades state seed_nonce_hash else Lwt.return_unit) >>= fun () -> Events.(emit try_forging) - (bi.hash, priority, name, Time.System.of_protocol_exn timestamp) + ( block_info.hash, + priority, + name, + Time.System.of_protocol_exn timestamp ) >>= fun () -> - let current_protocol = bi.next_protocol in + let current_protocol = block_info.next_protocol in let context = Shell_context.unwrap_disk_context validation_result.context in @@ -1237,14 +1440,14 @@ let build_block cctxt ~user_activated_upgrades state seed_nonce_hash final_context.header ~timestamp:valid_timestamp validation_result - bi.predecessor_block_metadata_hash - bi.predecessor_operations_metadata_hash + block_info.predecessor_block_metadata_hash + block_info.predecessor_operations_metadata_hash >>= function | Error _ as errs -> Lwt.return errs | Ok shell_header -> let raw_ops = List.map (List.map forge) operations in return_some - ( bi, + ( block_info, priority, shell_header, raw_ops, @@ -1577,8 +1780,8 @@ let reveal_potential_nonces (cctxt : #Client_context.full) constants ~chain the [delegates] *) let create (cctxt : #Protocol_client_context.full) ~user_activated_upgrades ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte - ?max_priority ?per_block_vote_file ~chain ~context_path delegates - block_stream = + ?max_priority ?per_block_vote_file ?extra_operations ~chain ~context_path + delegates block_stream = let state_maker bi = Alpha_services.Constants.all cctxt (chain, `Head 0) >>=? fun constants -> Client_baking_simulator.load_context ~context_path >>= fun index -> @@ -1593,6 +1796,7 @@ let create (cctxt : #Protocol_client_context.full) ~user_activated_upgrades ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte + ?extra_operations context_path index nonces_location @@ -1664,3 +1868,14 @@ let create (cctxt : #Protocol_client_context.full) ~user_activated_upgrades ~timeout_k ~event_k ~finalizer + +module Internal_for_tests = struct + module PrioritizedOperation = PrioritizedOperation + + let get_manager_content op = + match get_manager_content op with + | Some {source; counter; _} -> Some (source, counter) + | None -> None + + let sort_manager_operations = sort_manager_operations +end diff --git a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.mli b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.mli index 28bd86c529..260d86c658 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.mli +++ b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.mli @@ -26,6 +26,14 @@ open Protocol open Alpha_context +module Operations_source : sig + type t = + | Local of {filename : string} + | Remote of {uri : Uri.t; http_headers : (string * string) list option} + + val encoding : t Data_encoding.t +end + (** [generate_seed_nonce ()] is a random nonce that is typically used in block headers. When baking, bakers generate random nonces whose hash is committed in the block they bake. They will typically @@ -54,37 +62,45 @@ val inject_block : type error += Failed_to_preapply of Tezos_base.Operation.t * error list -(** [forge_block cctxt ?fee_threshold ?force ?operations ?best_effort - ?sort ?timestamp ?max_priority ?priority ~seed_nonce ~src_sk - pk_hash parent_blk] injects a block in the node. In addition of inject_block, - it will: +(** [forge_block cctxt ?fee_threshold ?force ?operations ?best_effort ?sort + ?timestamp ?max_priority ?priority ?mempool ?ignore_node_mempool ~seed_nonce + ~src_sk pk_hash parent_blk] injects a block in the node. In addition of + inject_block, it will: + + * Operations: If [?operations] is [None], it will get pending operations and + add them to the block. Otherwise, provided operations will be used. In both + cases, they will be validated. - * Operations: If [?operations] is [None], it will get pending - operations and add them to the block. Otherwise, provided - operations will be used. In both cases, they will be validated. + * Baking priority: If [`Auto] is used, it will be computed from the public + key hash of the specified contract, optionally capped to a maximum value, and + optionally restricting for free baking slot. - * Baking priority: If [`Auto] is used, it will be computed from - the public key hash of the specified contract, optionally capped - to a maximum value, and optionally restricting for free baking slot. + * Timestamp: If [?timestamp] is set, and is compatible with the computed + baking priority, it will be used. Otherwise, it will be set at the best + baking priority. - * Timestamp: If [?timestamp] is set, and is compatible with the - computed baking priority, it will be used. Otherwise, it will be - set at the best baking priority. + * Fee Threshold: If [?fee_threshold] is given, operations with fees lower + than it are not added to the block. - * Fee Threshold: If [?fee_threshold] is given, operations with fees lower than it - are not added to the block. + * if [?mempool] is provided, bake a block including the operations recorded + in this (out-of-node) mempool resource. + + * if [?ignore_node_mempool] is set to true, do not ask the nodes for + operations to be included in the block to be baked. Use in conjunction + with [~mempool] to restrict the operations to the ones containes in [mempool]. + Defaults to [false]. *) val forge_block : #Protocol_client_context.full -> ?force:bool -> - ?operations:Operation.packed list -> ?best_effort:bool -> ?sort:bool -> ?minimal_fees:Tez.t -> ?minimal_nanotez_per_gas_unit:Q.t -> ?minimal_nanotez_per_byte:Q.t -> ?timestamp:Time.Protocol.t -> - ?mempool:string -> + ?ignore_node_mempool:bool -> + ?extra_operations:Operations_source.t -> ?context_path:string -> ?seed_nonce_hash:Nonce_hash.t -> liquidity_baking_escape_vote:bool -> @@ -103,8 +119,37 @@ val create : ?minimal_nanotez_per_byte:Q.t -> ?max_priority:int -> ?per_block_vote_file:string -> + ?extra_operations:Operations_source.t -> chain:Chain_services.chain -> context_path:string -> public_key_hash list -> Client_baking_blocks.block_info tzresult Lwt_stream.t -> unit tzresult Lwt.t + +(**/**) + +module Internal_for_tests : sig + module PrioritizedOperation : sig + type t = private High of packed_operation | Low of packed_operation + + (** prioritize operations coming from an external source (file, uri, ...)*) + val extern : packed_operation -> t + + (** prioritize operations coming from a node *) + val node : packed_operation -> t + + val compare_priority : t -> t -> int + end + + val get_manager_content : + PrioritizedOperation.t -> (public_key_hash * counter) option + + val sort_manager_operations : + max_size:int -> + hard_gas_limit_per_block:Saturation_repr.may_saturate Saturation_repr.t -> + minimal_fees:Tez.t -> + minimal_nanotez_per_gas_unit:Q.t -> + minimal_nanotez_per_byte:Q.t -> + PrioritizedOperation.t trace -> + PrioritizedOperation.t trace +end diff --git a/src/proto_011_PtHangz2/lib_delegate/client_baking_lib.ml b/src/proto_011_PtHangz2/lib_delegate/client_baking_lib.ml index 68776cae33..543043b257 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_baking_lib.ml +++ b/src/proto_011_PtHangz2/lib_delegate/client_baking_lib.ml @@ -28,8 +28,9 @@ open Alpha_context let bake_block (cctxt : #Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?force ?max_priority - ?(minimal_timestamp = false) ?mempool ?context_path ?src_sk - ~liquidity_baking_escape_vote ~chain ~head delegate = + ?(minimal_timestamp = false) ?(ignore_node_mempool = false) + ?extra_operations ?context_path ?src_sk ~liquidity_baking_escape_vote ~chain + ~head delegate = (match src_sk with | None -> Client_keys.get_key cctxt delegate >>=? fun (_, _, src_sk) -> @@ -56,7 +57,8 @@ let bake_block (cctxt : #Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_byte ?timestamp ?seed_nonce_hash - ?mempool + ~ignore_node_mempool + ?extra_operations ?context_path ~liquidity_baking_escape_vote ~chain diff --git a/src/proto_011_PtHangz2/lib_delegate/client_baking_lib.mli b/src/proto_011_PtHangz2/lib_delegate/client_baking_lib.mli index a93daedc30..0a21c33b72 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_baking_lib.mli +++ b/src/proto_011_PtHangz2/lib_delegate/client_baking_lib.mli @@ -35,7 +35,8 @@ val bake_block : ?force:bool -> ?max_priority:int -> ?minimal_timestamp:bool -> - ?mempool:string -> + ?ignore_node_mempool:bool -> + ?extra_operations:Client_baking_forge.Operations_source.t -> ?context_path:string -> ?src_sk:Client_keys.sk_uri -> liquidity_baking_escape_vote:bool -> diff --git a/src/proto_011_PtHangz2/lib_delegate/client_daemon.ml b/src/proto_011_PtHangz2/lib_delegate/client_daemon.ml index 0613978394..b1c330305f 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_daemon.ml +++ b/src/proto_011_PtHangz2/lib_delegate/client_daemon.ml @@ -94,7 +94,8 @@ end module Baker = struct let run (cctxt : #Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?max_priority - ?per_block_vote_file ~chain ~context_path ~keep_alive delegates = + ?per_block_vote_file ?extra_operations ~chain ~context_path ~keep_alive + delegates = let process () = Config_services.user_activated_upgrades cctxt >>=? fun user_activated_upgrades -> @@ -118,6 +119,7 @@ module Baker = struct ?minimal_nanotez_per_byte ?max_priority ?per_block_vote_file + ?extra_operations ~chain ~context_path delegates diff --git a/src/proto_011_PtHangz2/lib_delegate/client_daemon.mli b/src/proto_011_PtHangz2/lib_delegate/client_daemon.mli index 06ef103ca5..3ed34afe48 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_daemon.mli +++ b/src/proto_011_PtHangz2/lib_delegate/client_daemon.mli @@ -44,6 +44,7 @@ module Baker : sig ?minimal_nanotez_per_byte:Q.t -> ?max_priority:int -> ?per_block_vote_file:string -> + ?extra_operations:Client_baking_forge.Operations_source.t -> chain:Chain_services.chain -> context_path:string -> keep_alive:bool -> diff --git a/src/proto_011_PtHangz2/lib_delegate/delegate_commands.ml b/src/proto_011_PtHangz2/lib_delegate/delegate_commands.ml index ef851656dd..658ed65175 100644 --- a/src/proto_011_PtHangz2/lib_delegate/delegate_commands.ml +++ b/src/proto_011_PtHangz2/lib_delegate/delegate_commands.ml @@ -35,14 +35,75 @@ let directory_parameter = failwith "Directory doesn't exist: '%s'" p else return p) -let mempool_arg = +let http_headers_env_variable = + "TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS" + +let http_headers = + match Sys.getenv_opt http_headers_env_variable with + | None -> None + | Some contents -> + let lines = String.split_on_char '\n' contents in + Some + (List.fold_left + (fun acc line -> + match String.index_opt line ':' with + | None -> + invalid_arg + (Printf.sprintf + "Http headers: invalid %s environment variable, missing \ + colon" + http_headers_env_variable) + | Some pos -> + let header = String.trim (String.sub line 0 pos) in + let header = String.lowercase_ascii header in + if header <> "host" then + invalid_arg + (Printf.sprintf + "Http headers: invalid %s environment variable, only \ + 'host' headers are supported" + http_headers_env_variable) ; + let value = + String.trim + (String.sub line (pos + 1) (String.length line - pos - 1)) + in + (header, value) :: acc) + [] + lines) + +let operations_arg = Clic.arg - ~long:"mempool" - ~placeholder:"file" + ~long:"operation-pool" + ~placeholder:"file|uri" ~doc: - "When used the client will read the mempool in the provided file instead \ - of querying the node through an RPC (useful for debugging only)." - string_parameter + (Printf.sprintf + "When specified, the baker will try to fetch operations from this \ + file (or uri) and to include retrieved operations in the block. The \ + expected format of the contents is a list of operations [ \ + 011-PtHangz2.operation ]. Environment variable '%s' may also be \ + specified to add headers to the requests (only 'host' headers are \ + supported). If the resource cannot be retrieved, e.g., if the file \ + is absent, unreadable, or the web service returns a 404 error, the \ + resource is simply ignored." + http_headers_env_variable) + (Clic.map_parameter + ~f:(fun uri -> + let open Client_baking_forge in + match Uri.scheme uri with + | Some "http" | Some "https" -> + Operations_source.(Remote {uri; http_headers}) + | None | Some _ -> + (* acts as if it were file even though it might no be *) + Operations_source.(Local {filename = Uri.to_string uri})) + uri_parameter) + +let ignore_node_mempool_switch = + Clic.switch + ~long:"ignore-node-mempool" + ~doc: + "Ignore mempool operations from the node and do not subsequently monitor \ + them. Use in conjunction with --operations option to restrict the \ + observed operations to those of the mempool file." + () let context_path_arg = Clic.arg @@ -110,16 +171,17 @@ let delegate_commands () = command ~group ~desc:"Forge and inject block using the delegate rights." - (args9 + (args10 max_priority_arg minimal_fees_arg minimal_nanotez_per_gas_unit_arg minimal_nanotez_per_byte_arg force_switch minimal_timestamp_switch - mempool_arg + operations_arg context_path_arg - liquidity_baking_escape_vote_switch) + liquidity_baking_escape_vote_switch + ignore_node_mempool_switch) (prefixes ["bake"; "for"] @@ Client_keys.Public_key_hash.source_param ~name:"baker" @@ -131,9 +193,10 @@ let delegate_commands () = minimal_nanotez_per_byte, force, minimal_timestamp, - mempool, + extra_operations, context_path, - liquidity_baking_escape_vote ) + liquidity_baking_escape_vote, + ignore_node_mempool ) delegate cctxt -> bake_block @@ -144,7 +207,8 @@ let delegate_commands () = ~force ?max_priority ~minimal_timestamp - ?mempool + ~ignore_node_mempool + ?extra_operations ?context_path ~liquidity_baking_escape_vote ~chain:cctxt#chain @@ -266,14 +330,15 @@ let baker_commands () = command ~group ~desc:"Launch the baker daemon." - (args7 + (args8 pidfile_arg max_priority_arg minimal_fees_arg minimal_nanotez_per_gas_unit_arg minimal_nanotez_per_byte_arg keep_alive_arg - per_block_vote_file_arg) + per_block_vote_file_arg + operations_arg) (prefixes ["run"; "with"; "local"; "node"] @@ param ~name:"context_path" @@ -286,7 +351,8 @@ let baker_commands () = minimal_nanotez_per_gas_unit, minimal_nanotez_per_byte, keep_alive, - per_block_vote_file ) + per_block_vote_file, + extra_operations ) node_path delegates cctxt -> @@ -303,6 +369,7 @@ let baker_commands () = ~minimal_nanotez_per_byte ?max_priority ?per_block_vote_file + ?extra_operations ~context_path:(Filename.concat node_path "context") ~keep_alive (List.map snd delegates)); diff --git a/src/proto_011_PtHangz2/lib_delegate/delegate_events.ml b/src/proto_011_PtHangz2/lib_delegate/delegate_events.ml index 0be3b39584..63a41f0cf6 100644 --- a/src/proto_011_PtHangz2/lib_delegate/delegate_events.ml +++ b/src/proto_011_PtHangz2/lib_delegate/delegate_events.ml @@ -648,6 +648,30 @@ module Baking_forge = struct ~level:Notice ~msg:"Will vote to continue Liquidity Baking" () + + let invalid_json_file = + declare_1 + ~section + ~name:"invalid_json_file" + ~level:Warning + ~msg:"{filename} is not a valid JSON file" + ("filename", Data_encoding.string) + + let no_mempool_found_in_file = + declare_1 + ~section + ~name:"no_mempool_found_in_file" + ~level:Warning + ~msg:"no mempool found in file {filename}" + ("filename", Data_encoding.string) + + let cannot_fetch_mempool = + declare_1 + ~section + ~name:"cannot_fetch_mempool" + ~level:Error + ~msg:"cannot fetch mempool: {errs}" + ("errs", Error_monad.(TzTrace.encoding error_encoding)) end module Endorsement = struct diff --git a/src/proto_011_PtHangz2/lib_delegate/dune b/src/proto_011_PtHangz2/lib_delegate/dune index 9884f1ed0a..1a06fbde56 100644 --- a/src/proto_011_PtHangz2/lib_delegate/dune +++ b/src/proto_011_PtHangz2/lib_delegate/dune @@ -15,6 +15,7 @@ tezos-stdlib-unix tezos-context tezos-rpc-http + tezos-rpc-http-client-unix tezos-rpc lwt-canceler lwt-exit) diff --git a/src/proto_011_PtHangz2/lib_delegate/test/.ocamlformat b/src/proto_011_PtHangz2/lib_delegate/test/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/proto_011_PtHangz2/lib_delegate/test/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/proto_011_PtHangz2/lib_delegate/test/dune b/src/proto_011_PtHangz2/lib_delegate/test/dune new file mode 100644 index 0000000000..4ca139f126 --- /dev/null +++ b/src/proto_011_PtHangz2/lib_delegate/test/dune @@ -0,0 +1,39 @@ +(executables + (names main) + (libraries + tezos-base + tezos-protocol-environment + alcotest-lwt + tezos-test-helpers + tezos-011-PtHangz2-test-helpers + tezos-client-base + tezos-baking-011-PtHangz2 + tezos-base-test-helpers) + (flags (:standard -open Tezos_base__TzPervasives + -open Tezos_micheline + -open Tezos_client_011_PtHangz2 + -open Tezos_baking_011_PtHangz2 + -open Tezos_protocol_011_PtHangz2 + -open Tezos_protocol_environment_011_PtHangz2 + -open Tezos_011_PtHangz2_test_helpers + -open Tezos_base_test_helpers))) + +; runs both `Quick and `Slow tests +(rule + (alias + runtest_baking_011_PtHangz2) + (package + tezos-baking-011-PtHangz2) + (deps main.exe) + (action (run %{exe:main.exe}))) + +(rule + (alias runtest) + (package + tezos-baking-011-PtHangz2) + (deps + (alias + runtest_baking_011_PtHangz2)) + (action (progn))) + + diff --git a/src/proto_011_PtHangz2/lib_delegate/test/main.ml b/src/proto_011_PtHangz2/lib_delegate/test/main.ml new file mode 100644 index 0000000000..6e4e0d7fad --- /dev/null +++ b/src/proto_011_PtHangz2/lib_delegate/test/main.ml @@ -0,0 +1,5 @@ +let () = + Alcotest_lwt.run + "delegate_011_PtHangz2" + [("client_baking_forge", Test_client_baking_forge.tests)] + |> Lwt_main.run diff --git a/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml b/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml new file mode 100644 index 0000000000..54282b5ea2 --- /dev/null +++ b/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml @@ -0,0 +1,122 @@ +open Client_baking_forge +module I = Internal_for_tests +module A = Protocol.Alpha_context + +(* [contains ~equal l1 l2] return true if all elements of [l2] are in [l1] *) +let contains ~equal l1 = List.for_all (fun e -> List.mem ~equal e l1) + +(* A single dummy container for a manager operation *) +let dummy_manager_operation_template = + {| +{ + "branch": "BMZhH77UuS2yLjMiWvysPC93UKviNXpZbRT7F2HctzJbwhzweF7", + "contents": [ + { + "amount": "2000000", + "counter": "%d", + "destination": "tz1faswCTDciRzE4oJ9jn2Vm2dvjeyA9fUzU", + "fee": "402", + "gas_limit": "1520", + "kind": "transaction", + "source": "%s", + "storage_limit": "0" + } + ], + "signature": "sigPycg9iKVw5H1FxupKf8PK4JoSpUpd7pYr7d1akhTr8X2mWQHmPh7Ew9JUtwQhgwiGBUe9Mz1pp2VBgNq8KQ4vh4YakEMy" +} + |} + +(* Constructing manager operations. These unit tests only care about changing + source and counter to test the sorting routine, *) +let manager_operation ?(source = "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN") + ~(counter : int) () = + let fmt = Scanf.format_from_string dummy_manager_operation_template "%d %s" in + Format.asprintf fmt counter source + +(* default contents for operation sources *) +let external_mempool_operations = + [manager_operation ~counter:2 (); manager_operation ~counter:3 ()] + +let node_mempool_operations = [manager_operation ~counter:3 ()] + +let empty_operations = [] + +let read_json_op_from_string s = + Format.printf "Decoding %s@." s ; + match Data_encoding.Json.from_string s with + | Ok json -> Data_encoding.Json.destruct A.Operation.encoding json + | Error _ -> assert false + +let prioritized_operations = + List.map + (fun op -> I.PrioritizedOperation.extern (read_json_op_from_string op)) + external_mempool_operations + @ List.map + (fun op -> I.PrioritizedOperation.node (read_json_op_from_string op)) + node_mempool_operations + +(* Verify that we do not introduce operations for the empty list*) +let test_empty () = + let sorted_operations = + I.sort_manager_operations + ~max_size:max_int + ~hard_gas_limit_per_block:Protocol.Saturation_repr.zero + ~minimal_fees:A.Tez.zero + ~minimal_nanotez_per_byte:Q.zero + ~minimal_nanotez_per_gas_unit:Q.zero + empty_operations + in + if not @@ contains ~equal:( == ) empty_operations sorted_operations then + failwith "oops" + else return_unit + +(* Check that any 2 consecutive elements in list l obey the following sorting + rule. + + If a happens before b in l then: + - a's priority is higher than b's; or + - if a and b have the same source, then a's counter is smaller than b's; or + - if they do not have the same source, we assume it's okay. + The real ordering actually depends on a computed weight but we do not check that here. + *) +let rec check_2_by_2 l = + let open I in + let open PrioritizedOperation in + match l with + | [] | [_] -> true + | x :: (y :: _ as l) -> ( + if Compare.Int.(compare_priority x y > 0) then check_2_by_2 l + else + Compare.Int.(compare_priority x y = 0) + && + match (I.get_manager_content x, I.get_manager_content y) with + | (Some (xsrc, xcounter), Some (ysrc, ycounter)) -> + if Signature.Public_key_hash.equal xsrc ysrc then + (* lower counter should come first *) + Z.compare xcounter ycounter < 0 && check_2_by_2 l + else check_2_by_2 l + (* As said in the opening comment, there is another weight criterion + used for ordering but we do not test it *) + | (None, _) | (_, None) -> false) + +let test_sorting () = + let sorted_operations = + I.sort_manager_operations + ~max_size:max_int + ~hard_gas_limit_per_block:Protocol.Saturation_repr.one + ~minimal_fees:A.Tez.zero + ~minimal_nanotez_per_byte:Q.zero + ~minimal_nanotez_per_gas_unit:Q.zero + prioritized_operations + in + (* All elements in the results exist in the original*) + if not @@ contains ~equal:( == ) prioritized_operations sorted_operations then + failwith "oops" + else if check_2_by_2 sorted_operations then return_unit + else failwith "oops resorted" + +let tests = + [ + Tztest.tztest "empty is empty" `Quick test_empty; + Tztest.tztest "sorting ok" `Quick test_sorting; + ] diff --git a/src/proto_011_PtHangz2/lib_delegate/tezos-baking-011-PtHangz2.opam b/src/proto_011_PtHangz2/lib_delegate/tezos-baking-011-PtHangz2.opam index eb97452d22..b41b10a721 100644 --- a/src/proto_011_PtHangz2/lib_delegate/tezos-baking-011-PtHangz2.opam +++ b/src/proto_011_PtHangz2/lib_delegate/tezos-baking-011-PtHangz2.opam @@ -18,6 +18,9 @@ depends: [ "tezos-client-011-PtHangz2" "lwt-canceler" { >= "0.3" & < "0.4" } "lwt-exit" + "tezos-base-test-helpers" {with-test} + "alcotest-lwt" {with-test} + "tezos-011-PtHangz2-test-helpers" { with-test } ] build: [ ["dune" "build" "-p" name "-j" jobs] diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml index 83ed9d5d92..9cf783c500 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml @@ -28,6 +28,85 @@ open Alpha_context open Baking_state module Events = Baking_events.Actions +module Operations_source = struct + type error += + | Failed_mempool_fetch of { + path : string; + reason : string; + details : Data_encoding.json option; + } + + let operations_encoding = + Data_encoding.(list (dynamic_size Operation.encoding)) + + let retrieve mempool = + match mempool with + | None -> Lwt.return_none + | Some mempool -> ( + let fail reason details = + let path = + match mempool with + | Baking_configuration.Operations_source.Local {filename} -> + filename + | Baking_configuration.Operations_source.Remote {uri; _} -> + Uri.to_string uri + in + fail (Failed_mempool_fetch {path; reason; details}) + in + let decode_mempool json = + protect + ~on_error:(fun _ -> + fail "cannot decode the received JSON into mempool" (Some json)) + (fun () -> + return (Data_encoding.Json.destruct operations_encoding json)) + in + + match mempool with + | Baking_configuration.Operations_source.Local {filename} -> + if Sys.file_exists filename then + Tezos_stdlib_unix.Lwt_utils_unix.Json.read_file filename + >>= function + | Error _ -> + Events.(emit invalid_json_file filename) >>= fun () -> + Lwt.return_none + | Ok json -> ( + decode_mempool json >>= function + | Ok mempool -> Lwt.return_some mempool + | Error errs -> + Events.(emit cannot_fetch_mempool errs) >>= fun () -> + Lwt.return_none) + else + Events.(emit no_mempool_found_in_file filename) >>= fun () -> + Lwt.return_none + | Baking_configuration.Operations_source.Remote {uri; http_headers} -> ( + ( ((with_timeout + (Systime_os.sleep (Time.System.Span.of_seconds_exn 5.)) + (fun _ -> + Tezos_rpc_http_client_unix.RPC_client_unix + .generic_media_type_call + ~accept:[Media_type.json] + ?headers:http_headers + `GET + uri) + >>=? function + | `Json json -> return json + | _ -> fail "json not returned" None) + >>=? function + | `Ok json -> return json + | `Unauthorized json -> fail "unauthorized request" json + | `Gone json -> fail "gone" json + | `Error json -> fail "error" json + | `Not_found json -> fail "not found" json + | `Forbidden json -> fail "forbidden" json + | `Conflict json -> fail "conflict" json) + >>=? fun json -> decode_mempool json ) + >>= function + | Ok mempool -> Lwt.return_some mempool + | Error errs -> + Events.(emit cannot_fetch_mempool errs) >>= fun () -> + Lwt.return_none)) +end + type block_kind = | Fresh of Operation_pool.pool | Reproposal of { @@ -149,9 +228,18 @@ let inject_block ~state_recorder state block_to_bake ~updated_state = ~predecessor_round:predecessor.round ~round) >>?= fun timestamp -> + let external_operation_source = state.global_state.config.extra_operations in + Operations_source.retrieve external_operation_source >>= fun extern_ops -> let (simulation_kind, payload_round) = match kind with - | Fresh pool -> (Block_forge.Filter pool, round) + | Fresh pool -> + let pool = + match extern_ops with + | None -> Operation_pool.Prioritized.of_pool pool + | Some ops -> + Operation_pool.Prioritized.merge_external_operations pool ops + in + (Block_forge.Filter pool, round) | Reproposal {consensus_operations; payload_hash; payload_round; payload} -> ( Block_forge.Apply { diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_commands.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_commands.ml index c452ac7dba..63cb5977c4 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_commands.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_commands.ml @@ -43,8 +43,11 @@ let may_lock_pidfile pidfile_opt f = ~filename:pidfile f +let http_headers_env_variable = + "TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS" + let http_headers = - match Sys.getenv_opt "TEZOS_REMOTE_MEMPOOL_HTTP_HEADERS" with + match Sys.getenv_opt http_headers_env_variable with | None -> None | Some contents -> let lines = String.split_on_char '\n' contents in @@ -53,20 +56,20 @@ let http_headers = (fun acc line -> match String.index_opt line ':' with | None -> - Stdlib.failwith - "Http headers: invalid TEZOS_REMOTE_MEMPOOL_HTTP_HEADERS \ - environment variable, missing colon" + invalid_arg + (Printf.sprintf + "Http headers: invalid %s environment variable, missing \ + colon" + http_headers_env_variable) | Some pos -> let header = String.trim (String.sub line 0 pos) in let header = String.lowercase_ascii header in - if - header <> "host" - && (String.length header < 2 || String.sub header 0 2 <> "x-") - then - Stdlib.failwith - "Http headers: invalid TEZOS_REMOTE_MEMPOOL_HTTP_HEADERS \ - environment variable, only 'host' or 'x-' headers are \ - supported" ; + if header <> "host" then + invalid_arg + (Printf.sprintf + "Http headers: invalid %s environment variable, only \ + 'host' headers are supported" + http_headers_env_variable) ; let value = String.trim (String.sub line (pos + 1) (String.length line - pos - 1)) @@ -75,37 +78,30 @@ let http_headers = [] lines) -let check_endpoint_validity uri = - match Uri.scheme uri with - | Some "http" | Some "https" -> () - | None -> - Stdlib.failwith "no scheme detected, http and https scheme are required" - | Some x -> - Printf.ksprintf - Stdlib.failwith - "invalid scheme '%s' only http and https endpoints are supported" - x - -let mempool_arg = +let operations_arg = Clic.arg - ~long:"mempool" - ~placeholder:"file" + ~long:"operation-pool" + ~placeholder:"file|uri" ~doc: - "When specified, the baker will try to fetch a mempool from this file \ - (or uri) and will try to include the retrieved operations in the block. \ - The expected format of the content is of the form of the \ - '/chains//mempool/pending_operations' RPC. Environment \ - variable 'TEZOS_REMOTE_MEMPOOL_HTTP_HEADERS' may also be specified to \ - add headers to the requests (only 'host' and custom 'x-...' headers are \ - supported)." + (Printf.sprintf + "When specified, the baker will try to fetch operations from this \ + file (or uri) and to include retrieved operations in the block. The \ + expected format of the contents is a list of operations [ \ + 012-PsiThaCa.operation ]. Environment variable '%s' may also be \ + specified to add headers to the requests (only 'host' headers are \ + supported). If the resource cannot be retrieved, e.g., if the file \ + is absent, unreadable, or the web service returns a 404 error, the \ + resource is simply ignored." + http_headers_env_variable) (Clic.map_parameter ~f:(fun uri -> let open Baking_configuration in - let path = Uri.to_string uri in - if Sys.file_exists path then Mempool.(Local {filename = path}) - else ( - check_endpoint_validity uri ; - Mempool.(Remote {uri; http_headers}))) + match Uri.scheme uri with + | Some "http" | Some "https" -> + Operations_source.(Remote {uri; http_headers}) + | None | Some _ -> + (* acts as if it were file even though it might no be *) + Operations_source.(Local {filename = Uri.to_string uri})) uri_parameter) let context_path_arg = @@ -132,8 +128,8 @@ let do_not_monitor_node_mempool_arg = ~long:"ignore-node-mempool" ~doc: "Ignore mempool operations from the node and do not subsequently monitor \ - them. Use in conjunction with --mempool option to restrict the observed \ - operations to those of the mempool file." + them. Use in conjunction with --operations option to restrict the \ + observed operations to those of the mempool file." () let keep_alive_arg = @@ -179,7 +175,7 @@ let get_delegates (cctxt : Protocol_client_context.full) delegates) >>=? fun () -> let delegates_no_duplicates = List.sort_uniq compare delegates in - (if Compare.List_lengths.(delegates <> delegates_no_duplicates) then + (if List.compare_lengths delegates delegates_no_duplicates <> 0 then cctxt#warning "Warning: the list of public key hash aliases contains duplicate hashes, \ which are ignored" @@ -207,7 +203,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte_arg minimal_timestamp_switch force_switch - mempool_arg + operations_arg context_path_arg do_not_monitor_node_mempool_arg) (prefixes ["bake"; "for"] @@ sources_param) @@ -216,7 +212,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte, minimal_timestamp, force, - mempool, + extra_operations, context_path, do_not_monitor_node_mempool ) pkhs @@ -230,7 +226,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = ~minimal_fees ~force ~monitor_node_mempool:(not do_not_monitor_node_mempool) - ?mempool + ?extra_operations ?context_path delegates); command @@ -258,7 +254,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte_arg minimal_timestamp_switch force_switch - mempool_arg + operations_arg context_path_arg) (prefixes ["propose"; "for"] @@ sources_param) (fun ( minimal_fees, @@ -266,7 +262,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte, minimal_timestamp, force, - mempool, + extra_operations, context_path ) sources cctxt -> @@ -278,7 +274,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = ~minimal_nanotez_per_byte ~minimal_fees ~force - ?mempool + ?extra_operations ?context_path delegates); ] @@ -309,14 +305,15 @@ let baker_commands () : Protocol_client_context.full Clic.command list = command ~group ~desc:"Launch the baker daemon." - (args7 + (args8 pidfile_arg minimal_fees_arg minimal_nanotez_per_gas_unit_arg minimal_nanotez_per_byte_arg keep_alive_arg liquidity_baking_escape_vote_switch - per_block_vote_file_arg) + per_block_vote_file_arg + operations_arg) (prefixes ["run"; "with"; "local"; "node"] @@ param ~name:"node_data_path" @@ -329,7 +326,8 @@ let baker_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte, keep_alive, liquidity_baking_escape_vote, - per_block_vote_file ) + per_block_vote_file, + extra_operations ) node_data_path sources cctxt -> @@ -343,6 +341,7 @@ let baker_commands () : Protocol_client_context.full Clic.command list = ~minimal_nanotez_per_byte ~liquidity_baking_escape_vote ?per_block_vote_file + ?extra_operations ~chain:cctxt#chain ~context_path ~keep_alive diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_configuration.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_configuration.ml index bec18c12dc..a32a6db1d3 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_configuration.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_configuration.ml @@ -23,11 +23,15 @@ (* *) (*****************************************************************************) -module Mempool = struct +module Operations_source = struct type t = | Local of {filename : string} | Remote of {uri : Uri.t; http_headers : (string * string) list option} + let pp ppf = function + | Local {filename} -> Format.pp_print_string ppf filename + | Remote {uri; _} -> Format.fprintf ppf "%a" Uri.pp uri + let encoding = let open Data_encoding in union @@ -82,7 +86,7 @@ type t = { per_block_vote_file : string option; force : bool; state_recorder : state_recorder_config; - initial_mempool : Mempool.t option; + extra_operations : Operations_source.t option; } let default_fees_config = @@ -109,7 +113,7 @@ let default_force = false let default_state_recorder_config = Filesystem -let default_initial_mempool = None +let default_extra_operations = None let default_per_block_vote_file = None @@ -123,7 +127,7 @@ let default_config = liquidity_baking_escape_vote = default_liquidity_baking_escape_vote; force = default_force; state_recorder = default_state_recorder_config; - initial_mempool = default_initial_mempool; + extra_operations = default_extra_operations; per_block_vote_file = default_per_block_vote_file; } @@ -136,7 +140,7 @@ let make ?(minimal_fees = default_fees_config.minimal_fees) ?(user_activated_upgrades = default_user_activated_upgrades) ?(liquidity_baking_escape_vote = default_liquidity_baking_escape_vote) ?per_block_vote_file ?(force = default_force) - ?(state_recorder = default_state_recorder_config) ?initial_mempool () = + ?(state_recorder = default_state_recorder_config) ?extra_operations () = let fees = {minimal_fees; minimal_nanotez_per_gas_unit; minimal_nanotez_per_byte} in @@ -155,7 +159,7 @@ let make ?(minimal_fees = default_fees_config.minimal_fees) per_block_vote_file; force; state_recorder; - initial_mempool; + extra_operations; } let fees_config_encoding : fees_config Data_encoding.t = @@ -257,7 +261,7 @@ let encoding : t Data_encoding.t = per_block_vote_file; force; state_recorder; - initial_mempool; + extra_operations; } -> ( fees, validation, @@ -268,7 +272,7 @@ let encoding : t Data_encoding.t = per_block_vote_file, force, state_recorder, - initial_mempool )) + extra_operations )) (fun ( fees, validation, nonce, @@ -278,7 +282,7 @@ let encoding : t Data_encoding.t = per_block_vote_file, force, state_recorder, - initial_mempool ) -> + extra_operations ) -> { fees; validation; @@ -289,7 +293,7 @@ let encoding : t Data_encoding.t = per_block_vote_file; force; state_recorder; - initial_mempool; + extra_operations; }) (obj10 (req "fees" fees_config_encoding) @@ -303,7 +307,7 @@ let encoding : t Data_encoding.t = (opt "per_block_vote_file" Data_encoding.string) (req "force" force_config_encoding) (req "state_recorder" state_recorder_config_encoding) - (opt "initial_mempool" Mempool.encoding)) + (opt "extra_operations" Operations_source.encoding)) let pp fmt t = let json = Data_encoding.Json.construct encoding t in diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_configuration.mli b/src/proto_012_PsiThaCa/lib_delegate/baking_configuration.mli index 3b8e982353..fb959405a1 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_configuration.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_configuration.mli @@ -22,8 +22,8 @@ (* DEALINGS IN THE SOFTWARE. *) (* *) (*****************************************************************************) -(** {1 Mempool abstraction} *) -module Mempool : sig +(** {1 Operations_source abstraction} *) +module Operations_source : sig type t = | Local of {filename : string} (** local mempool resource located in [filename] *) @@ -32,6 +32,8 @@ module Mempool : sig parameters *) val encoding : t Data_encoding.t + + val pp : Format.formatter -> t -> unit end type fees_config = { @@ -59,7 +61,7 @@ type t = { per_block_vote_file : string option; force : bool; state_recorder : state_recorder_config; - initial_mempool : Mempool.t option; + extra_operations : Operations_source.t option; } val default_fees_config : fees_config @@ -78,7 +80,7 @@ val default_force : bool val default_state_recorder_config : state_recorder_config -val default_initial_mempool : Mempool.t option +val default_extra_operations : Operations_source.t option val default_per_block_vote_file : string option @@ -96,7 +98,7 @@ val make : ?per_block_vote_file:string -> ?force:bool -> ?state_recorder:state_recorder_config -> - ?initial_mempool:Mempool.t -> + ?extra_operations:Operations_source.t -> unit -> t diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_events.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_events.ml index d36324e3ad..4ba9b35d1c 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_events.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_events.ml @@ -600,6 +600,30 @@ module Actions = struct ~msg:"signing endorsement for {delegate}" ~pp1:Baking_state.pp_delegate ("delegate", Baking_state.delegate_encoding) + + let invalid_json_file = + declare_1 + ~section + ~name:"invalid_json_file" + ~level:Warning + ~msg:"{filename} is not a valid JSON file" + ("filename", Data_encoding.string) + + let no_mempool_found_in_file = + declare_1 + ~section + ~name:"no_mempool_found_in_file" + ~level:Warning + ~msg:"no mempool found in file {filename}" + ("filename", Data_encoding.string) + + let cannot_fetch_mempool = + declare_1 + ~section + ~name:"cannot_fetch_mempool" + ~level:Error + ~msg:"cannot fetch mempool: {errs}" + ("errs", Error_monad.(TzTrace.encoding error_encoding)) end module Nonces = struct diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml index 7528e873e6..700bc38db5 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml @@ -31,8 +31,7 @@ let create_state cctxt ?synchronize ?monitor_node_mempool ~config ~current_proposal delegates = let chain = cctxt#chain in let monitor_node_operations = monitor_node_mempool in - let initial_mempool = config.Baking_configuration.initial_mempool in - Operation_worker.create ?initial_mempool ?monitor_node_operations cctxt + Operation_worker.create ?monitor_node_operations cctxt >>= fun operation_worker -> Baking_scheduling.create_initial_state cctxt @@ -167,7 +166,7 @@ let generic_endorsing_power (filter : packed_operation list -> 'a list) let block_round = latest_proposal.block.round in let shell_level = latest_proposal.block.shell.level in let endorsements = - filter (Operation_pool.OpSet.elements current_mempool.consensus) + filter (Operation_pool.Operation_set.elements current_mempool.consensus) in let endorsements_in_mempool = List.filter_map @@ -266,17 +265,16 @@ let endorsement_quorum state = - No :: repropose fresh block for current round *) let propose (cctxt : Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?force - ?(minimal_timestamp = false) ?mempool ?context_path delegates = + ?(minimal_timestamp = false) ?extra_operations ?context_path delegates = get_current_proposal cctxt >>=? fun (_block_stream, current_proposal) -> let config = - let initial_mempool = mempool in Baking_configuration.make ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?context_path ?force - ?initial_mempool + ?extra_operations () in create_state cctxt ~config ~current_proposal delegates >>=? fun state -> @@ -389,7 +387,7 @@ let baking_minimal_timestamp state = in let endorsements_in_mempool = Operation_pool.( - filter_endorsements (OpSet.elements current_mempool.consensus)) + filter_endorsements (Operation_set.elements current_mempool.consensus)) |> List.filter_map (fun ({ @@ -438,7 +436,7 @@ let baking_minimal_timestamp state = let pool = Operation_pool.add_operations current_mempool - (List.map snd signed_endorsements) + (List.map (fun (_, endorsement) -> endorsement) signed_endorsements) in let kind = Baking_actions.Fresh pool in let block_to_bake : Baking_actions.block_to_bake = @@ -461,17 +459,16 @@ let baking_minimal_timestamp state = let bake (cctxt : Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?force - ?(minimal_timestamp = false) ?mempool ?monitor_node_mempool ?context_path - delegates = + ?(minimal_timestamp = false) ?extra_operations ?monitor_node_mempool + ?context_path delegates = let config = - let initial_mempool = mempool in Baking_configuration.make ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?context_path ?force - ?initial_mempool + ?extra_operations () in get_current_proposal cctxt >>=? fun (block_stream, current_proposal) -> diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_lib.mli b/src/proto_012_PsiThaCa/lib_delegate/baking_lib.mli index d027ec1910..547822f25d 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_lib.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_lib.mli @@ -34,7 +34,7 @@ val bake : ?minimal_nanotez_per_byte:Q.t -> ?force:bool -> ?minimal_timestamp:bool -> - ?mempool:Baking_configuration.Mempool.t -> + ?extra_operations:Baking_configuration.Operations_source.t -> ?monitor_node_mempool:bool -> ?context_path:string -> Baking_state.delegate list -> @@ -59,7 +59,7 @@ val propose : ?minimal_nanotez_per_byte:Q.t -> ?force:bool -> ?minimal_timestamp:bool -> - ?mempool:Baking_configuration.Mempool.t -> + ?extra_operations:Baking_configuration.Operations_source.t -> ?context_path:string -> Baking_state.delegate list -> unit tzresult Lwt.t diff --git a/src/proto_012_PsiThaCa/lib_delegate/block_forge.ml b/src/proto_012_PsiThaCa/lib_delegate/block_forge.ml index 35776a82ce..f3b92a1bd6 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/block_forge.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/block_forge.ml @@ -32,7 +32,7 @@ type unsigned_block = { } type simulation_kind = - | Filter of Operation_pool.pool + | Filter of Operation_pool.Prioritized.t | Apply of { ordered_pool : Operation_pool.ordered_pool; payload_hash : Block_payload_hash.t; @@ -110,7 +110,7 @@ let finalize_block_header shell_header timestamp validation_result return header let retain_live_operations_only ~live_blocks operation_pool = - Operation_pool.filter_pool + Operation_pool.Prioritized.filter (fun ({shell; _} : packed_operation) -> Block_hash.Set.mem shell.branch live_blocks) operation_pool @@ -221,9 +221,9 @@ let forge (cctxt : #Protocol_client_context.full) ~chain_id ~pred_info operations_hash; _; } -> - let _op_pool' = - Operation_pool.(add_operations empty (List.concat operations)) - in + (* let _op_pool' = + * Operation_pool.(add_operations empty (List.concat operations)) + * in *) protect ~on_error:(fun _ -> return_none) (fun () -> diff --git a/src/proto_012_PsiThaCa/lib_delegate/block_forge.mli b/src/proto_012_PsiThaCa/lib_delegate/block_forge.mli index 5549a3f198..9807e20788 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/block_forge.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/block_forge.mli @@ -32,7 +32,7 @@ type unsigned_block = { } type simulation_kind = - | Filter of Operation_pool.pool + | Filter of Operation_pool.Prioritized.t | Apply of { ordered_pool : Operation_pool.ordered_pool; payload_hash : Block_payload_hash.t; diff --git a/src/proto_012_PsiThaCa/lib_delegate/client_daemon.ml b/src/proto_012_PsiThaCa/lib_delegate/client_daemon.ml index a21ec55610..abc91504eb 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/client_daemon.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/client_daemon.ml @@ -69,8 +69,8 @@ let rec retry_on_disconnection (cctxt : #Protocol_client_context.full) f = module Baker = struct let run (cctxt : Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte - ?liquidity_baking_escape_vote ?per_block_vote_file ~chain ~context_path - ~keep_alive delegates = + ?liquidity_baking_escape_vote ?per_block_vote_file ?extra_operations + ~chain ~context_path ~keep_alive delegates = let process () = Config_services.user_activated_upgrades cctxt >>=? fun user_activated_upgrades -> @@ -81,6 +81,7 @@ module Baker = struct ?minimal_nanotez_per_byte ?liquidity_baking_escape_vote ?per_block_vote_file + ?extra_operations ~context_path ~user_activated_upgrades () diff --git a/src/proto_012_PsiThaCa/lib_delegate/client_daemon.mli b/src/proto_012_PsiThaCa/lib_delegate/client_daemon.mli index d7e1c5a01e..7cd8c4866f 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/client_daemon.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/client_daemon.mli @@ -34,6 +34,7 @@ module Baker : sig ?minimal_nanotez_per_byte:Q.t -> ?liquidity_baking_escape_vote:bool -> ?per_block_vote_file:string -> + ?extra_operations:Baking_configuration.Operations_source.t -> chain:Shell_services.chain -> context_path:string -> keep_alive:bool -> diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml index e680d7328a..3d05268d27 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml @@ -28,18 +28,49 @@ open Alpha_context (* Should we use a better ordering ? *) -module OpSet = Set.Make (struct +module Prioritized_operation = struct + (* Higher priority operations will be included first *) + type t = High of packed_operation | Low of packed_operation + + let extern op = High op + + let node op = Low op + + let packed = function High op | Low op -> op + + let compare_priority t1 t2 = + match (t1, t2) with + | (High _, Low _) -> 1 + | (Low _, High _) -> -1 + | (Low _, Low _) | (High _, High _) -> 0 + + let compare a b = + let c = compare_priority a b in + if c <> 0 then c else compare (packed a) (packed b) +end + +module Operation_set = Set.Make (struct type t = packed_operation - let compare = compare + let compare = Stdlib.compare end) +module Prioritized_operation_set = struct + include Set.Make (struct + type t = Prioritized_operation.t + + let compare = Prioritized_operation.compare + end) + + let operations set = elements set |> List.map Prioritized_operation.packed +end + (* TODO refine this: unpack operations *) type pool = { - consensus : OpSet.t; - votes : OpSet.t; - anonymous : OpSet.t; - managers : OpSet.t; + consensus : Operation_set.t; + votes : Operation_set.t; + anonymous : Operation_set.t; + managers : Operation_set.t; } (* TODO refine this: unpack operations *) @@ -94,10 +125,10 @@ let pp_payload fmt {votes_payload; anonymous_payload; managers_payload} = let empty = { - consensus = OpSet.empty; - votes = OpSet.empty; - anonymous = OpSet.empty; - managers = OpSet.empty; + consensus = Operation_set.empty; + votes = Operation_set.empty; + anonymous = Operation_set.empty; + managers = Operation_set.empty; } let empty_ordered = @@ -112,10 +143,10 @@ let pp_pool fmt {consensus; votes; anonymous; managers} = Format.fprintf fmt "[consensus: %d, votes: %d, anonymous: %d, managers: %d]" - (OpSet.cardinal consensus) - (OpSet.cardinal votes) - (OpSet.cardinal anonymous) - (OpSet.cardinal managers) + (Operation_set.cardinal consensus) + (Operation_set.cardinal votes) + (Operation_set.cardinal anonymous) + (Operation_set.cardinal managers) let pp_ordered_pool fmt {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} = @@ -148,23 +179,23 @@ let classify op = else `Bad | _ -> `Bad -let add_operation pool op = - match classify op with +let add_operation pool operation = + match classify operation with | `Consensus -> - let consensus = OpSet.add op pool.consensus in + let consensus = Operation_set.add operation pool.consensus in {pool with consensus} | `Votes -> - let votes = OpSet.add op pool.votes in + let votes = Operation_set.add operation pool.votes in {pool with votes} | `Anonymous -> - let anonymous = OpSet.add op pool.anonymous in + let anonymous = Operation_set.add operation pool.anonymous in {pool with anonymous} | `Managers -> - let managers = OpSet.add op pool.managers in + let managers = Operation_set.add operation pool.managers in {pool with managers} | `Bad -> pool -let add_operations pool new_ops = List.fold_left add_operation pool new_ops +let add_operations pool ops = List.fold_left add_operation pool ops type consensus_filter = { level : int32; @@ -178,7 +209,7 @@ type consensus_filter = { as well as preendorsements. *) let filter_with_relevant_consensus_ops ~(endorsement_filter : consensus_filter) ~(preendorsement_filter : consensus_filter option) operation_set = - OpSet.filter + Operation_set.filter (fun {protocol_data; _} -> match (protocol_data, preendorsement_filter) with (* 1a. Remove preendorsements. *) @@ -258,12 +289,6 @@ let filter_endorsements ops = | _ -> None) ops -let pool_to_list_list {consensus; votes; anonymous; managers} = - List.map OpSet.elements [consensus; votes; anonymous; managers] - -let pool_of_list_list (ll : packed_operation list list) = - List.fold_left add_operations empty ll - let ordered_to_list_list {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} = [ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers] @@ -320,8 +345,74 @@ let extract_operations_of_list_list = function let filter_pool p {consensus; votes; anonymous; managers} = { - consensus = OpSet.filter p consensus; - votes = OpSet.filter p votes; - anonymous = OpSet.filter p anonymous; - managers = OpSet.filter p managers; + consensus = Operation_set.filter p consensus; + votes = Operation_set.filter p votes; + anonymous = Operation_set.filter p anonymous; + managers = Operation_set.filter p managers; } + +module Prioritized = struct + type t = { + consensus : Prioritized_operation_set.t; + votes : Prioritized_operation_set.t; + anonymous : Prioritized_operation_set.t; + managers : Prioritized_operation_set.t; + } + + let of_operation_set (operation_set : Operation_set.t) = + Operation_set.fold + (fun elt set -> + Prioritized_operation_set.add (Prioritized_operation.node elt) set) + operation_set + Prioritized_operation_set.empty + + let of_pool (pool : pool) : t = + { + consensus = of_operation_set pool.consensus; + votes = of_operation_set pool.votes; + anonymous = of_operation_set pool.anonymous; + managers = of_operation_set pool.managers; + } + + let add_operation pool operation = + match classify (Prioritized_operation.packed operation) with + | `Consensus -> + let consensus = + Prioritized_operation_set.add operation pool.consensus + in + {pool with consensus} + | `Votes -> + let votes = Prioritized_operation_set.add operation pool.votes in + {pool with votes} + | `Anonymous -> + let anonymous = + Prioritized_operation_set.add operation pool.anonymous + in + {pool with anonymous} + | `Managers -> + let managers = Prioritized_operation_set.add operation pool.managers in + {pool with managers} + | `Bad -> pool + + let add_external_operation pool operation = + add_operation pool (Prioritized_operation.extern operation) + + let add_operations prioritized_pool operations = + List.fold_left add_operation prioritized_pool operations + + let merge_external_operations (pool : pool) + (external_operations : packed_operation list) = + List.fold_left add_external_operation (of_pool pool) external_operations + + let filter p {consensus; votes; anonymous; managers} = + let filter = + Prioritized_operation_set.filter (fun pop -> + p (Prioritized_operation.packed pop)) + in + { + consensus = filter consensus; + votes = filter votes; + anonymous = filter anonymous; + managers = filter managers; + } +end diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli index 54d8501cd6..044d13cf18 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli @@ -34,23 +34,22 @@ val anonymous_index : int val managers_index : int -module OpSet : Set.S with type elt = packed_operation +module Operation_set : Set.S with type elt = packed_operation +(** A pool of operations for a single origin, or undifferenciated origin, + typically used for operations coming from the node *) type pool = { - consensus : OpSet.t; - votes : OpSet.t; - anonymous : OpSet.t; - managers : OpSet.t; + consensus : Operation_set.t; + votes : Operation_set.t; + anonymous : Operation_set.t; + managers : Operation_set.t; } +(** on pool *) val empty : pool val pp_pool : Format.formatter -> pool -> unit -val pool_to_list_list : pool -> packed_operation list list - -val pool_of_list_list : packed_operation list list -> pool - val filter_pool : (packed_operation -> bool) -> pool -> pool type ordered_pool = { @@ -96,8 +95,8 @@ type consensus_filter = { val filter_with_relevant_consensus_ops : endorsement_filter:consensus_filter -> preendorsement_filter:consensus_filter option -> - OpSet.t -> - OpSet.t + Operation_set.t -> + Operation_set.t val unpack_preendorsement : packed_operation -> Kind.preendorsement operation option @@ -121,3 +120,54 @@ val extract_operations_of_list_list : * Kind.endorsement operation list * payload) option + +module Prioritized_operation : sig + type t + + (** prioritize operations coming from an external source (file, uri, ...)*) + val extern : packed_operation -> t + + (** prioritize operations coming from a node *) + val node : packed_operation -> t + + (** [packed t] retrieves the [packed_operation] wrapped inside [t] *) + val packed : t -> packed_operation + + (** [compare_priority o1 o2] compares whether [o1] has higher priority than [o2] *) + val compare_priority : t -> t -> int + + (** [compare] is [compare_priority] when non-zero. This is suitable to + construct sets of prioritized operations **) + val compare : t -> t -> int +end + +module Prioritized_operation_set : sig + include Set.S with type elt = Prioritized_operation.t + + (** [operations set] is [elements set |> List.map Prioritized_operation.packed]*) + val operations : t -> packed_operation list +end + +(** Pool of prioritized operations *) +module Prioritized : sig + (** Same record fields as [type pool], but with a different set base *) + type t = { + consensus : Prioritized_operation_set.t; + votes : Prioritized_operation_set.t; + anonymous : Prioritized_operation_set.t; + managers : Prioritized_operation_set.t; + } + + (** [of_pool pool] transforms [pool] into a prioritized pool of operations of + low priority. *) + val of_pool : pool -> t + + (** [merge_external_operations pool extern_ops] creates a prioritized pool + from a [pool], assumed to contained operations taken from a node and + [extern_ops] coming from an external source, which we prioritize. *) + val merge_external_operations : pool -> packed_operation list -> t + + val filter : (packed_operation -> bool) -> t -> t + + val add_operations : t -> Prioritized_operation.t list -> t +end diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml index ea8012e375..3f3f23d627 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml @@ -37,8 +37,8 @@ let anonymous_quota = Stdlib.List.nth quota Operation_pool.anonymous_index let managers_quota = Stdlib.List.nth quota Operation_pool.managers_index -type weighted_manager = { - op : packed_operation; +type prioritized_manager = { + op : Prioritized_operation.t; size : int; fee : Tez.t; gas : Fixed_point_repr.integral_tag Gas.Arith.t; @@ -47,32 +47,39 @@ type weighted_manager = { counter : counter; } -module WeightedManagerSet = Set.Make (struct - type t = weighted_manager +module PrioritizedManagerSet = Set.Make (struct + type t = prioritized_manager (* We order the operations by their weights except if they belong to the same manager, if they do, we order them by their counter. *) - let compare {source; counter; weight; _} - {source = source'; counter = counter'; weight = weight'; _} = + let compare {source; counter; weight; op; _} + {source = source'; counter = counter'; weight = weight'; op = op'; _} = (* Be careful with the [compare] *) let cmp_src = Signature.Public_key_hash.compare source source' in if cmp_src = 0 then (* we want the smallest counter first *) let c = Z.compare counter counter' in - if c <> 0 then c else Q.compare weight' weight + if c <> 0 then c + else + let c = Prioritized_operation.compare_priority op op' in + if c <> 0 then c else Q.compare weight' weight (* if same counter, biggest weight first *) else - (* We want the biggest weight first *) - let c = Q.compare weight' weight in - if c <> 0 then c else cmp_src + let c = Prioritized_operation.compare_priority op op' in + if c <> 0 then c + else + (* We want the biggest weight first *) + let c = Q.compare weight' weight in + if c <> 0 then c else cmp_src end) (* Note: This weight is also used by the plugin and the prevalidator to sort operations in the pending mempool. @see {!Tezos_protocol_plugin_alpha.Plugin.Mempool.weight_manager_operation}. *) -let weight_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees - ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte op = +let prioritized_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees + ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte operation = + let op = Operation_pool.Prioritized_operation.packed operation in let {protocol_data = Operation_data {contents; _}; _} = op in let open Operation in let l = to_list (Contents_list contents) in @@ -127,16 +134,16 @@ let weight_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees Q.compare minimal_fees_in_nanotez fees_in_nanotez <= 0 in if enough_fees_for_size && enough_fees_for_gas then - Some {op; size; weight; fee; gas; source; counter} + Some {op = operation; size; weight; fee; gas; source; counter} else None | _ -> None let weight_managers ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte managers = - OpSet.fold + Prioritized_operation_set.fold (fun op acc -> match - weight_manager + prioritized_manager ~max_size:managers_quota.max_size ~hard_gas_limit_per_block ~minimal_fees @@ -145,9 +152,9 @@ let weight_managers ~hard_gas_limit_per_block ~minimal_fees op with | None -> acc - | Some w_op -> WeightedManagerSet.add w_op acc) + | Some w_op -> PrioritizedManagerSet.add w_op acc) managers - WeightedManagerSet.empty + PrioritizedManagerSet.empty (** Simulation *) @@ -212,7 +219,8 @@ let filter_valid_operations_up_to_quota inc (ops, quota) = with Full (inc, l) -> Lwt.return (inc, List.rev l) let filter_operations_with_simulation initial_inc fees_config - ~hard_gas_limit_per_block {consensus; votes; anonymous; managers} = + ~hard_gas_limit_per_block + Operation_pool.Prioritized.{consensus; votes; anonymous; managers} = let { Baking_configuration.minimal_fees; minimal_nanotez_per_gas_unit; @@ -222,13 +230,15 @@ let filter_operations_with_simulation initial_inc fees_config in filter_valid_operations_up_to_quota initial_inc - (OpSet.elements consensus, consensus_quota) + (Prioritized_operation_set.operations consensus, consensus_quota) >>= fun (inc, consensus) -> - filter_valid_operations_up_to_quota inc (OpSet.elements votes, votes_quota) + filter_valid_operations_up_to_quota + inc + (Prioritized_operation_set.operations votes, votes_quota) >>= fun (inc, votes) -> filter_valid_operations_up_to_quota inc - (OpSet.elements anonymous, anonymous_quota) + (Prioritized_operation_set.operations anonymous, anonymous_quota) >>= fun (inc, anonymous) -> (* Sort the managers *) let weighted_managers = @@ -241,8 +251,8 @@ let filter_operations_with_simulation initial_inc fees_config in filter_valid_operations_up_to_quota inc - ( WeightedManagerSet.elements weighted_managers - |> List.map (fun {op; _} -> op), + ( PrioritizedManagerSet.elements weighted_managers + |> List.map (fun {op; _} -> Prioritized_operation.packed op), managers_quota ) >>= fun (inc, managers) -> let operations = [consensus; votes; anonymous; managers] in @@ -280,18 +290,18 @@ let filter_valid_operations_up_to_quota_without_simulation (ops, quota) = with Full l -> List.rev l let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block - {consensus; votes; anonymous; managers} = + Operation_pool.Prioritized.{consensus; votes; anonymous; managers} = let consensus = filter_valid_operations_up_to_quota_without_simulation - (OpSet.elements consensus, consensus_quota) + (Prioritized_operation_set.operations consensus, consensus_quota) in let votes = filter_valid_operations_up_to_quota_without_simulation - (OpSet.elements votes, votes_quota) + (Prioritized_operation_set.operations votes, votes_quota) in let anonymous = filter_valid_operations_up_to_quota_without_simulation - (OpSet.elements anonymous, anonymous_quota) + (Prioritized_operation_set.operations anonymous, anonymous_quota) in let { Baking_configuration.minimal_fees; @@ -311,8 +321,8 @@ let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block in let managers = filter_valid_operations_up_to_quota_without_simulation - ( WeightedManagerSet.elements weighted_managers - |> List.map (fun {op; _} -> op), + ( PrioritizedManagerSet.elements weighted_managers + |> List.map (fun {op; _} -> Prioritized_operation.packed op), managers_quota ) in let operations = [consensus; votes; anonymous; managers] in diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.mli b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.mli index 1159a6cba7..1f9ab96920 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.mli @@ -38,11 +38,11 @@ val filter_operations_with_simulation : Baking_simulator.incremental -> Baking_configuration.fees_config -> hard_gas_limit_per_block:Gas.Arith.integral -> - Operation_pool.pool -> + Operation_pool.Prioritized.t -> simulation_result tzresult Lwt.t val filter_operations_without_simulation : Baking_configuration.fees_config -> hard_gas_limit_per_block:Gas.Arith.integral -> - Operation_pool.pool -> + Operation_pool.Prioritized.t -> packed_operation list list diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_worker.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_worker.ml index 8c9ad6b68a..86910b184b 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_worker.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_worker.ml @@ -150,125 +150,6 @@ module Events = struct ~level:Info ~msg:"shutting down operation worker" () - - let mempool_initial_additions = - declare_1 - ~section - ~name:"mempool_initial_additions" - ~level:Info - ~msg:"added {count} initial operations in baker mempool" - ("count", Data_encoding.int31) - - let invalid_json_file = - declare_1 - ~section - ~name:"invalid_json_file" - ~level:Warning - ~msg:"{filename} is not a valid JSON file" - ("filename", Data_encoding.string) - - let no_mempool_found_in_file = - declare_1 - ~section - ~name:"no_mempool_found_in_file" - ~level:Warning - ~msg:"no mempool found in file {filename}" - ("filename", Data_encoding.string) - - let cannot_fetch_mempool = - declare_1 - ~section - ~name:"cannot_fetch_mempool" - ~level:Error - ~msg:"cannot fetch mempool: {errs}" - ("errs", Error_monad.(TzTrace.encoding error_encoding)) -end - -module Mempool = struct - type error += - | Failed_mempool_fetch of { - path : string; - reason : string; - details : Data_encoding.json option; - } - - let ops_of_mempool - (ops : Protocol_client_context.Alpha_block_services.Mempool.t) = - (* We only retain the applied, unprocessed and delayed operations *) - List.rev - (Operation_hash.Map.fold (fun _ op acc -> op :: acc) ops.unprocessed - @@ Operation_hash.Map.fold - (fun _ (op, _) acc -> op :: acc) - ops.branch_delayed - @@ List.rev_map (fun (_, op) -> op) ops.applied) - - let retrieve mempool = - match mempool with - | None -> Lwt.return_none - | Some mempool -> ( - let fail reason details = - let path = - match mempool with - | Baking_configuration.Mempool.Local {filename} -> filename - | Baking_configuration.Mempool.Remote {uri; _} -> Uri.to_string uri - in - fail (Failed_mempool_fetch {path; reason; details}) - in - let decode_mempool json = - protect - ~on_error:(fun _ -> - fail "cannot decode the received JSON into mempool" (Some json)) - (fun () -> - let mempool = - Data_encoding.Json.destruct - Protocol_client_context.Alpha_block_services.S.Mempool - .encoding - json - in - return (ops_of_mempool mempool)) - in - match mempool with - | Baking_configuration.Mempool.Local {filename} -> - if Sys.file_exists filename then - Tezos_stdlib_unix.Lwt_utils_unix.Json.read_file filename - >>= function - | Error _ -> - Events.(emit invalid_json_file filename) >>= fun () -> - Lwt.return_none - | Ok json -> ( - decode_mempool json >>= function - | Ok mempool -> Lwt.return_some mempool - | Error errs -> - Events.(emit cannot_fetch_mempool errs) >>= fun () -> - Lwt.return_none) - else - Events.(emit no_mempool_found_in_file filename) >>= fun () -> - Lwt.return_none - | Baking_configuration.Mempool.Remote {uri; http_headers} -> ( - ( (with_timeout - (Systime_os.sleep (Time.System.Span.of_seconds_exn 5.)) - (fun _ -> - Tezos_rpc_http_client_unix.RPC_client_unix - .generic_media_type_call - ?headers:http_headers - ~accept:[Media_type.json] - `GET - uri) - >>=? function - | `Json (`Ok json) -> return json - | `Json (`Unauthorized json) -> fail "unauthorized request" json - | `Json (`Gone json) -> fail "gone" json - | `Json (`Error json) -> fail "error" json - | `Json (`Not_found json) -> fail "not found" json - | `Json (`Forbidden json) -> fail "forbidden" json - | `Json (`Conflict json) -> fail "conflict" json - | _ -> fail "unexpected media type" None) - >>=? fun json -> decode_mempool json ) - >>= function - | Ok mempool -> Lwt.return_some mempool - | Error errs -> - Events.(emit cannot_fetch_mempool errs) >>= fun () -> - Lwt.return_none)) end type candidate = { @@ -358,27 +239,23 @@ let monitor_operations (cctxt : #Protocol_client_context.full) = in return ((shell_header.level, round), operation_stream, stream_stopper) -let make_initial_state ?initial_mempool ?(monitor_node_operations = true) () = +let make_initial_state ?(monitor_node_operations = true) () = let qc_event_stream = let (stream, push) = Lwt_stream.create () in {stream; push} in let canceler = Lwt_canceler.create () in - let operation_pool = - Option.fold - ~none:Operation_pool.empty - ~some:(Operation_pool.add_operations Operation_pool.empty) - initial_mempool - in + let operation_pool = Operation_pool.empty in let lock = Lwt_mutex.create () in - { - operation_pool; - canceler; - proposal_watched = None; - qc_event_stream; - lock; - monitor_node_operations; - } + Lwt.return + { + operation_pool; + canceler; + proposal_watched = None; + qc_event_stream; + lock; + monitor_node_operations; + } let is_valid_consensus_content (candidate : candidate) consensus_content = let {hash = _; round_watched; payload_hash_watched} = candidate in @@ -522,7 +399,7 @@ let monitor_quorum state new_proposal_watched = if state.proposal_watched <> None then cancel_monitoring state ; state.proposal_watched <- new_proposal_watched ; let current_consensus_operations = - Operation_pool.OpSet.elements state.operation_pool.consensus + Operation_pool.Operation_set.elements state.operation_pool.consensus in (* initialize with the currently present consensus operations *) update_monitoring ~should_lock:false state current_consensus_operations @@ -580,11 +457,11 @@ let shutdown_worker state = to add them. But these endorsements become 'Outdated' in the mempool once (L+1, 0) is received. Hence the cache for previous level. *) -let may_update_operations_pool state (head_level, head_round) = +let update_operations_pool state (head_level, head_round) = let endorsements = let head_round_i32 = Round.to_int32 head_round in let head_level_i32 = head_level in - Operation_pool.OpSet.filter + Operation_pool.Operation_set.filter (function | { protocol_data = @@ -602,50 +479,43 @@ let may_update_operations_pool state (head_level, head_round) = | _ -> false) state.operation_pool.consensus in - let operation_pool = - {Operation_pool.empty with Operation_pool.consensus = endorsements} - in + let operation_pool = {Operation_pool.empty with consensus = endorsements} in state.operation_pool <- operation_pool -let create ?initial_mempool ?(monitor_node_operations = true) +let create ?(monitor_node_operations = true) (cctxt : #Protocol_client_context.full) = - Mempool.retrieve initial_mempool >>= fun initial_mempool -> - let state = make_initial_state ?initial_mempool ~monitor_node_operations () in + make_initial_state ~monitor_node_operations () >>= fun state -> (* TODO should we continue forever ? *) let rec worker_loop () = - monitor_operations cctxt >>= function - | Error err -> Events.(emit loop_failed err) - | Ok (head, operation_stream, op_stream_stopper) -> - Events.(emit starting_new_monitoring ()) >>= fun () -> - state.canceler <- Lwt_canceler.create () ; - Lwt_canceler.on_cancel state.canceler (fun () -> - op_stream_stopper () ; - cancel_monitoring state ; - Lwt.return_unit) ; - may_update_operations_pool state head ; - let rec loop () = - Lwt_stream.get operation_stream >>= function - | None -> - (* When the stream closes, it means a new head has been set, - we cancel the monitoring and flush current operations *) - Events.(emit end_of_stream ()) >>= fun () -> + if state.monitor_node_operations then ( + monitor_operations cctxt >>= function + | Error err -> Events.(emit loop_failed err) + | Ok (head, operation_stream, op_stream_stopper) -> + Events.(emit starting_new_monitoring ()) >>= fun () -> + state.canceler <- Lwt_canceler.create () ; + Lwt_canceler.on_cancel state.canceler (fun () -> op_stream_stopper () ; cancel_monitoring state ; - worker_loop () - | Some ops -> - Events.(emit received_new_operations ()) >>= fun () -> - state.operation_pool <- - Operation_pool.add_operations state.operation_pool ops ; - update_monitoring state ops >>= fun () -> loop () - in - loop () - in - let worker_loop () = - (match initial_mempool with - | None -> Lwt.return_unit - | Some ops -> Events.(emit mempool_initial_additions (List.length ops))) - >>= fun () -> - if state.monitor_node_operations then worker_loop () else Lwt.return_unit + Lwt.return_unit) ; + update_operations_pool state head ; + let rec loop () = + Lwt_stream.get operation_stream >>= function + | None -> + (* When the stream closes, it means a new head has been set, + we cancel the monitoring and flush current operations *) + Events.(emit end_of_stream ()) >>= fun () -> + op_stream_stopper () ; + state.operation_pool <- Operation_pool.empty ; + cancel_monitoring state ; + worker_loop () + | Some ops -> + Events.(emit received_new_operations ()) >>= fun () -> + state.operation_pool <- + Operation_pool.add_operations state.operation_pool ops ; + update_monitoring state ops >>= fun () -> loop () + in + loop ()) + else Lwt.return_unit in Lwt.dont_wait (fun () -> diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_worker.mli b/src/proto_012_PsiThaCa/lib_delegate/operation_worker.mli index b7fb0559b2..607a6f9dba 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_worker.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_worker.mli @@ -54,18 +54,16 @@ type event = fetch operations for the baker to process. - @param initial_mempool initial operations to put in the worker's queue - (default: [None]) + @param extra_operations extra operation source to put in the worker's + operations set (default: [None]) - @param monitor_node_operations monitor operations on the node (defaults: [true]). Set - [monitor_node] to [false] to only consider the [initial_mempool] operations. + @param monitor_node_operations monitor operations on the node (defaults: + [true]). Set [monitor_node_operations] to [false] to only consider the + [extra_operations] operations. *) val create : - ?initial_mempool:Baking_configuration.Mempool.t -> - ?monitor_node_operations:bool -> - #Protocol_client_context.full -> - t Lwt.t + ?monitor_node_operations:bool -> #Protocol_client_context.full -> t Lwt.t (** {2 Accessors}*) diff --git a/src/proto_012_PsiThaCa/lib_delegate/state_transitions.ml b/src/proto_012_PsiThaCa/lib_delegate/state_transitions.ml index 2e76497495..59d4d09ce3 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/state_transitions.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/state_transitions.ml @@ -466,7 +466,7 @@ let repropose_block_action state delegate round (proposal : proposal) = (* Add the proposal and pqc consensus operations to the mempool *) List.fold_left - (fun set op -> Operation_pool.OpSet.add op set) + (fun set op -> Operation_pool.Operation_set.add op set) mempool_consensus_operations (List.map Operation.pack proposal.block.quorum @ List.map Operation.pack prequorum.preendorsements) @@ -491,7 +491,7 @@ let repropose_block_action state delegate round (proposal : proposal) = ~endorsement_filter ~preendorsement_filter all_consensus_operations - |> OpSet.elements) + |> Operation_set.elements) in let payload_hash = proposal.block.payload_hash in let payload_round = proposal.block.payload_round in diff --git a/src/proto_alpha/lib_delegate/baking_actions.ml b/src/proto_alpha/lib_delegate/baking_actions.ml index 8bd264e8c2..e274afb331 100644 --- a/src/proto_alpha/lib_delegate/baking_actions.ml +++ b/src/proto_alpha/lib_delegate/baking_actions.ml @@ -28,6 +28,85 @@ open Alpha_context open Baking_state module Events = Baking_events.Actions +module Operations_source = struct + type error += + | Failed_mempool_fetch of { + path : string; + reason : string; + details : Data_encoding.json option; + } + + let operations_encoding = + Data_encoding.(list (dynamic_size Operation.encoding)) + + let retrieve mempool = + match mempool with + | None -> Lwt.return_none + | Some mempool -> ( + let fail reason details = + let path = + match mempool with + | Baking_configuration.Operations_source.Local {filename} -> + filename + | Baking_configuration.Operations_source.Remote {uri; _} -> + Uri.to_string uri + in + fail (Failed_mempool_fetch {path; reason; details}) + in + let decode_mempool json = + protect + ~on_error:(fun _ -> + fail "cannot decode the received JSON into mempool" (Some json)) + (fun () -> + return (Data_encoding.Json.destruct operations_encoding json)) + in + + match mempool with + | Baking_configuration.Operations_source.Local {filename} -> + if Sys.file_exists filename then + Tezos_stdlib_unix.Lwt_utils_unix.Json.read_file filename + >>= function + | Error _ -> + Events.(emit invalid_json_file filename) >>= fun () -> + Lwt.return_none + | Ok json -> ( + decode_mempool json >>= function + | Ok mempool -> Lwt.return_some mempool + | Error errs -> + Events.(emit cannot_fetch_mempool errs) >>= fun () -> + Lwt.return_none) + else + Events.(emit no_mempool_found_in_file filename) >>= fun () -> + Lwt.return_none + | Baking_configuration.Operations_source.Remote {uri; http_headers} -> ( + ( ((with_timeout + (Systime_os.sleep (Time.System.Span.of_seconds_exn 5.)) + (fun _ -> + Tezos_rpc_http_client_unix.RPC_client_unix + .generic_media_type_call + ~accept:[Media_type.json] + ?headers:http_headers + `GET + uri) + >>=? function + | `Json json -> return json + | _ -> fail "json not returned" None) + >>=? function + | `Ok json -> return json + | `Unauthorized json -> fail "unauthorized request" json + | `Gone json -> fail "gone" json + | `Error json -> fail "error" json + | `Not_found json -> fail "not found" json + | `Forbidden json -> fail "forbidden" json + | `Conflict json -> fail "conflict" json) + >>=? fun json -> decode_mempool json ) + >>= function + | Ok mempool -> Lwt.return_some mempool + | Error errs -> + Events.(emit cannot_fetch_mempool errs) >>= fun () -> + Lwt.return_none)) +end + type block_kind = | Fresh of Operation_pool.pool | Reproposal of { @@ -149,9 +228,18 @@ let inject_block ~state_recorder state block_to_bake ~updated_state = ~predecessor_round:predecessor.round ~round) >>?= fun timestamp -> + let external_operation_source = state.global_state.config.extra_operations in + Operations_source.retrieve external_operation_source >>= fun extern_ops -> let (simulation_kind, payload_round) = match kind with - | Fresh pool -> (Block_forge.Filter pool, round) + | Fresh pool -> + let pool = + match extern_ops with + | None -> Operation_pool.Prioritized.of_pool pool + | Some ops -> + Operation_pool.Prioritized.merge_external_operations pool ops + in + (Block_forge.Filter pool, round) | Reproposal {consensus_operations; payload_hash; payload_round; payload} -> ( Block_forge.Apply { diff --git a/src/proto_alpha/lib_delegate/baking_commands.ml b/src/proto_alpha/lib_delegate/baking_commands.ml index c452ac7dba..365511ebb3 100644 --- a/src/proto_alpha/lib_delegate/baking_commands.ml +++ b/src/proto_alpha/lib_delegate/baking_commands.ml @@ -43,8 +43,11 @@ let may_lock_pidfile pidfile_opt f = ~filename:pidfile f +let http_headers_env_variable = + "TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS" + let http_headers = - match Sys.getenv_opt "TEZOS_REMOTE_MEMPOOL_HTTP_HEADERS" with + match Sys.getenv_opt http_headers_env_variable with | None -> None | Some contents -> let lines = String.split_on_char '\n' contents in @@ -53,20 +56,20 @@ let http_headers = (fun acc line -> match String.index_opt line ':' with | None -> - Stdlib.failwith - "Http headers: invalid TEZOS_REMOTE_MEMPOOL_HTTP_HEADERS \ - environment variable, missing colon" + invalid_arg + (Printf.sprintf + "Http headers: invalid %s environment variable, missing \ + colon" + http_headers_env_variable) | Some pos -> let header = String.trim (String.sub line 0 pos) in let header = String.lowercase_ascii header in - if - header <> "host" - && (String.length header < 2 || String.sub header 0 2 <> "x-") - then - Stdlib.failwith - "Http headers: invalid TEZOS_REMOTE_MEMPOOL_HTTP_HEADERS \ - environment variable, only 'host' or 'x-' headers are \ - supported" ; + if header <> "host" then + invalid_arg + (Printf.sprintf + "Http headers: invalid %s environment variable, only \ + 'host' headers are supported" + http_headers_env_variable) ; let value = String.trim (String.sub line (pos + 1) (String.length line - pos - 1)) @@ -75,37 +78,30 @@ let http_headers = [] lines) -let check_endpoint_validity uri = - match Uri.scheme uri with - | Some "http" | Some "https" -> () - | None -> - Stdlib.failwith "no scheme detected, http and https scheme are required" - | Some x -> - Printf.ksprintf - Stdlib.failwith - "invalid scheme '%s' only http and https endpoints are supported" - x - -let mempool_arg = +let operations_arg = Clic.arg - ~long:"mempool" - ~placeholder:"file" + ~long:"operation-pool" + ~placeholder:"file|uri" ~doc: - "When specified, the baker will try to fetch a mempool from this file \ - (or uri) and will try to include the retrieved operations in the block. \ - The expected format of the content is of the form of the \ - '/chains//mempool/pending_operations' RPC. Environment \ - variable 'TEZOS_REMOTE_MEMPOOL_HTTP_HEADERS' may also be specified to \ - add headers to the requests (only 'host' and custom 'x-...' headers are \ - supported)." + (Printf.sprintf + "When specified, the baker will try to fetch operations from this \ + file (or uri) and to include retrieved operations in the block. The \ + expected format of the contents is a list of operations [ \ + alpha.operation ]. Environment variable '%s' may also be specified \ + to add headers to the requests (only 'host' headers are supported). \ + If the resource cannot be retrieved, e.g., if the file is absent, \ + unreadable, or the web service returns a 404 error, the resource is \ + simply ignored." + http_headers_env_variable) (Clic.map_parameter ~f:(fun uri -> let open Baking_configuration in - let path = Uri.to_string uri in - if Sys.file_exists path then Mempool.(Local {filename = path}) - else ( - check_endpoint_validity uri ; - Mempool.(Remote {uri; http_headers}))) + match Uri.scheme uri with + | Some "http" | Some "https" -> + Operations_source.(Remote {uri; http_headers}) + | None | Some _ -> + (* acts as if it were file even though it might no be *) + Operations_source.(Local {filename = Uri.to_string uri})) uri_parameter) let context_path_arg = @@ -132,8 +128,8 @@ let do_not_monitor_node_mempool_arg = ~long:"ignore-node-mempool" ~doc: "Ignore mempool operations from the node and do not subsequently monitor \ - them. Use in conjunction with --mempool option to restrict the observed \ - operations to those of the mempool file." + them. Use in conjunction with --operations option to restrict the \ + observed operations to those of the mempool file." () let keep_alive_arg = @@ -179,7 +175,7 @@ let get_delegates (cctxt : Protocol_client_context.full) delegates) >>=? fun () -> let delegates_no_duplicates = List.sort_uniq compare delegates in - (if Compare.List_lengths.(delegates <> delegates_no_duplicates) then + (if List.compare_lengths delegates delegates_no_duplicates <> 0 then cctxt#warning "Warning: the list of public key hash aliases contains duplicate hashes, \ which are ignored" @@ -207,7 +203,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte_arg minimal_timestamp_switch force_switch - mempool_arg + operations_arg context_path_arg do_not_monitor_node_mempool_arg) (prefixes ["bake"; "for"] @@ sources_param) @@ -216,7 +212,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte, minimal_timestamp, force, - mempool, + extra_operations, context_path, do_not_monitor_node_mempool ) pkhs @@ -230,7 +226,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = ~minimal_fees ~force ~monitor_node_mempool:(not do_not_monitor_node_mempool) - ?mempool + ?extra_operations ?context_path delegates); command @@ -258,7 +254,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte_arg minimal_timestamp_switch force_switch - mempool_arg + operations_arg context_path_arg) (prefixes ["propose"; "for"] @@ sources_param) (fun ( minimal_fees, @@ -266,7 +262,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte, minimal_timestamp, force, - mempool, + extra_operations, context_path ) sources cctxt -> @@ -278,7 +274,7 @@ let delegate_commands () : Protocol_client_context.full Clic.command list = ~minimal_nanotez_per_byte ~minimal_fees ~force - ?mempool + ?extra_operations ?context_path delegates); ] @@ -309,14 +305,15 @@ let baker_commands () : Protocol_client_context.full Clic.command list = command ~group ~desc:"Launch the baker daemon." - (args7 + (args8 pidfile_arg minimal_fees_arg minimal_nanotez_per_gas_unit_arg minimal_nanotez_per_byte_arg keep_alive_arg liquidity_baking_escape_vote_switch - per_block_vote_file_arg) + per_block_vote_file_arg + operations_arg) (prefixes ["run"; "with"; "local"; "node"] @@ param ~name:"node_data_path" @@ -329,7 +326,8 @@ let baker_commands () : Protocol_client_context.full Clic.command list = minimal_nanotez_per_byte, keep_alive, liquidity_baking_escape_vote, - per_block_vote_file ) + per_block_vote_file, + extra_operations ) node_data_path sources cctxt -> @@ -343,6 +341,7 @@ let baker_commands () : Protocol_client_context.full Clic.command list = ~minimal_nanotez_per_byte ~liquidity_baking_escape_vote ?per_block_vote_file + ?extra_operations ~chain:cctxt#chain ~context_path ~keep_alive diff --git a/src/proto_alpha/lib_delegate/baking_configuration.ml b/src/proto_alpha/lib_delegate/baking_configuration.ml index bec18c12dc..a32a6db1d3 100644 --- a/src/proto_alpha/lib_delegate/baking_configuration.ml +++ b/src/proto_alpha/lib_delegate/baking_configuration.ml @@ -23,11 +23,15 @@ (* *) (*****************************************************************************) -module Mempool = struct +module Operations_source = struct type t = | Local of {filename : string} | Remote of {uri : Uri.t; http_headers : (string * string) list option} + let pp ppf = function + | Local {filename} -> Format.pp_print_string ppf filename + | Remote {uri; _} -> Format.fprintf ppf "%a" Uri.pp uri + let encoding = let open Data_encoding in union @@ -82,7 +86,7 @@ type t = { per_block_vote_file : string option; force : bool; state_recorder : state_recorder_config; - initial_mempool : Mempool.t option; + extra_operations : Operations_source.t option; } let default_fees_config = @@ -109,7 +113,7 @@ let default_force = false let default_state_recorder_config = Filesystem -let default_initial_mempool = None +let default_extra_operations = None let default_per_block_vote_file = None @@ -123,7 +127,7 @@ let default_config = liquidity_baking_escape_vote = default_liquidity_baking_escape_vote; force = default_force; state_recorder = default_state_recorder_config; - initial_mempool = default_initial_mempool; + extra_operations = default_extra_operations; per_block_vote_file = default_per_block_vote_file; } @@ -136,7 +140,7 @@ let make ?(minimal_fees = default_fees_config.minimal_fees) ?(user_activated_upgrades = default_user_activated_upgrades) ?(liquidity_baking_escape_vote = default_liquidity_baking_escape_vote) ?per_block_vote_file ?(force = default_force) - ?(state_recorder = default_state_recorder_config) ?initial_mempool () = + ?(state_recorder = default_state_recorder_config) ?extra_operations () = let fees = {minimal_fees; minimal_nanotez_per_gas_unit; minimal_nanotez_per_byte} in @@ -155,7 +159,7 @@ let make ?(minimal_fees = default_fees_config.minimal_fees) per_block_vote_file; force; state_recorder; - initial_mempool; + extra_operations; } let fees_config_encoding : fees_config Data_encoding.t = @@ -257,7 +261,7 @@ let encoding : t Data_encoding.t = per_block_vote_file; force; state_recorder; - initial_mempool; + extra_operations; } -> ( fees, validation, @@ -268,7 +272,7 @@ let encoding : t Data_encoding.t = per_block_vote_file, force, state_recorder, - initial_mempool )) + extra_operations )) (fun ( fees, validation, nonce, @@ -278,7 +282,7 @@ let encoding : t Data_encoding.t = per_block_vote_file, force, state_recorder, - initial_mempool ) -> + extra_operations ) -> { fees; validation; @@ -289,7 +293,7 @@ let encoding : t Data_encoding.t = per_block_vote_file; force; state_recorder; - initial_mempool; + extra_operations; }) (obj10 (req "fees" fees_config_encoding) @@ -303,7 +307,7 @@ let encoding : t Data_encoding.t = (opt "per_block_vote_file" Data_encoding.string) (req "force" force_config_encoding) (req "state_recorder" state_recorder_config_encoding) - (opt "initial_mempool" Mempool.encoding)) + (opt "extra_operations" Operations_source.encoding)) let pp fmt t = let json = Data_encoding.Json.construct encoding t in diff --git a/src/proto_alpha/lib_delegate/baking_configuration.mli b/src/proto_alpha/lib_delegate/baking_configuration.mli index 3b8e982353..fb959405a1 100644 --- a/src/proto_alpha/lib_delegate/baking_configuration.mli +++ b/src/proto_alpha/lib_delegate/baking_configuration.mli @@ -22,8 +22,8 @@ (* DEALINGS IN THE SOFTWARE. *) (* *) (*****************************************************************************) -(** {1 Mempool abstraction} *) -module Mempool : sig +(** {1 Operations_source abstraction} *) +module Operations_source : sig type t = | Local of {filename : string} (** local mempool resource located in [filename] *) @@ -32,6 +32,8 @@ module Mempool : sig parameters *) val encoding : t Data_encoding.t + + val pp : Format.formatter -> t -> unit end type fees_config = { @@ -59,7 +61,7 @@ type t = { per_block_vote_file : string option; force : bool; state_recorder : state_recorder_config; - initial_mempool : Mempool.t option; + extra_operations : Operations_source.t option; } val default_fees_config : fees_config @@ -78,7 +80,7 @@ val default_force : bool val default_state_recorder_config : state_recorder_config -val default_initial_mempool : Mempool.t option +val default_extra_operations : Operations_source.t option val default_per_block_vote_file : string option @@ -96,7 +98,7 @@ val make : ?per_block_vote_file:string -> ?force:bool -> ?state_recorder:state_recorder_config -> - ?initial_mempool:Mempool.t -> + ?extra_operations:Operations_source.t -> unit -> t diff --git a/src/proto_alpha/lib_delegate/baking_events.ml b/src/proto_alpha/lib_delegate/baking_events.ml index 78774533f2..2122752f4b 100644 --- a/src/proto_alpha/lib_delegate/baking_events.ml +++ b/src/proto_alpha/lib_delegate/baking_events.ml @@ -631,6 +631,30 @@ module Actions = struct ~msg:"signing endorsement for {delegate}" ~pp1:Baking_state.pp_delegate ("delegate", Baking_state.delegate_encoding) + + let invalid_json_file = + declare_1 + ~section + ~name:"invalid_json_file" + ~level:Warning + ~msg:"{filename} is not a valid JSON file" + ("filename", Data_encoding.string) + + let no_mempool_found_in_file = + declare_1 + ~section + ~name:"no_mempool_found_in_file" + ~level:Warning + ~msg:"no mempool found in file {filename}" + ("filename", Data_encoding.string) + + let cannot_fetch_mempool = + declare_1 + ~section + ~name:"cannot_fetch_mempool" + ~level:Error + ~msg:"cannot fetch mempool: {errs}" + ("errs", Error_monad.(TzTrace.encoding error_encoding)) end module Nonces = struct diff --git a/src/proto_alpha/lib_delegate/baking_lib.ml b/src/proto_alpha/lib_delegate/baking_lib.ml index 7528e873e6..700bc38db5 100644 --- a/src/proto_alpha/lib_delegate/baking_lib.ml +++ b/src/proto_alpha/lib_delegate/baking_lib.ml @@ -31,8 +31,7 @@ let create_state cctxt ?synchronize ?monitor_node_mempool ~config ~current_proposal delegates = let chain = cctxt#chain in let monitor_node_operations = monitor_node_mempool in - let initial_mempool = config.Baking_configuration.initial_mempool in - Operation_worker.create ?initial_mempool ?monitor_node_operations cctxt + Operation_worker.create ?monitor_node_operations cctxt >>= fun operation_worker -> Baking_scheduling.create_initial_state cctxt @@ -167,7 +166,7 @@ let generic_endorsing_power (filter : packed_operation list -> 'a list) let block_round = latest_proposal.block.round in let shell_level = latest_proposal.block.shell.level in let endorsements = - filter (Operation_pool.OpSet.elements current_mempool.consensus) + filter (Operation_pool.Operation_set.elements current_mempool.consensus) in let endorsements_in_mempool = List.filter_map @@ -266,17 +265,16 @@ let endorsement_quorum state = - No :: repropose fresh block for current round *) let propose (cctxt : Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?force - ?(minimal_timestamp = false) ?mempool ?context_path delegates = + ?(minimal_timestamp = false) ?extra_operations ?context_path delegates = get_current_proposal cctxt >>=? fun (_block_stream, current_proposal) -> let config = - let initial_mempool = mempool in Baking_configuration.make ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?context_path ?force - ?initial_mempool + ?extra_operations () in create_state cctxt ~config ~current_proposal delegates >>=? fun state -> @@ -389,7 +387,7 @@ let baking_minimal_timestamp state = in let endorsements_in_mempool = Operation_pool.( - filter_endorsements (OpSet.elements current_mempool.consensus)) + filter_endorsements (Operation_set.elements current_mempool.consensus)) |> List.filter_map (fun ({ @@ -438,7 +436,7 @@ let baking_minimal_timestamp state = let pool = Operation_pool.add_operations current_mempool - (List.map snd signed_endorsements) + (List.map (fun (_, endorsement) -> endorsement) signed_endorsements) in let kind = Baking_actions.Fresh pool in let block_to_bake : Baking_actions.block_to_bake = @@ -461,17 +459,16 @@ let baking_minimal_timestamp state = let bake (cctxt : Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?force - ?(minimal_timestamp = false) ?mempool ?monitor_node_mempool ?context_path - delegates = + ?(minimal_timestamp = false) ?extra_operations ?monitor_node_mempool + ?context_path delegates = let config = - let initial_mempool = mempool in Baking_configuration.make ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte ?context_path ?force - ?initial_mempool + ?extra_operations () in get_current_proposal cctxt >>=? fun (block_stream, current_proposal) -> diff --git a/src/proto_alpha/lib_delegate/baking_lib.mli b/src/proto_alpha/lib_delegate/baking_lib.mli index d027ec1910..547822f25d 100644 --- a/src/proto_alpha/lib_delegate/baking_lib.mli +++ b/src/proto_alpha/lib_delegate/baking_lib.mli @@ -34,7 +34,7 @@ val bake : ?minimal_nanotez_per_byte:Q.t -> ?force:bool -> ?minimal_timestamp:bool -> - ?mempool:Baking_configuration.Mempool.t -> + ?extra_operations:Baking_configuration.Operations_source.t -> ?monitor_node_mempool:bool -> ?context_path:string -> Baking_state.delegate list -> @@ -59,7 +59,7 @@ val propose : ?minimal_nanotez_per_byte:Q.t -> ?force:bool -> ?minimal_timestamp:bool -> - ?mempool:Baking_configuration.Mempool.t -> + ?extra_operations:Baking_configuration.Operations_source.t -> ?context_path:string -> Baking_state.delegate list -> unit tzresult Lwt.t diff --git a/src/proto_alpha/lib_delegate/block_forge.ml b/src/proto_alpha/lib_delegate/block_forge.ml index 35776a82ce..f3b92a1bd6 100644 --- a/src/proto_alpha/lib_delegate/block_forge.ml +++ b/src/proto_alpha/lib_delegate/block_forge.ml @@ -32,7 +32,7 @@ type unsigned_block = { } type simulation_kind = - | Filter of Operation_pool.pool + | Filter of Operation_pool.Prioritized.t | Apply of { ordered_pool : Operation_pool.ordered_pool; payload_hash : Block_payload_hash.t; @@ -110,7 +110,7 @@ let finalize_block_header shell_header timestamp validation_result return header let retain_live_operations_only ~live_blocks operation_pool = - Operation_pool.filter_pool + Operation_pool.Prioritized.filter (fun ({shell; _} : packed_operation) -> Block_hash.Set.mem shell.branch live_blocks) operation_pool @@ -221,9 +221,9 @@ let forge (cctxt : #Protocol_client_context.full) ~chain_id ~pred_info operations_hash; _; } -> - let _op_pool' = - Operation_pool.(add_operations empty (List.concat operations)) - in + (* let _op_pool' = + * Operation_pool.(add_operations empty (List.concat operations)) + * in *) protect ~on_error:(fun _ -> return_none) (fun () -> diff --git a/src/proto_alpha/lib_delegate/block_forge.mli b/src/proto_alpha/lib_delegate/block_forge.mli index 5549a3f198..9807e20788 100644 --- a/src/proto_alpha/lib_delegate/block_forge.mli +++ b/src/proto_alpha/lib_delegate/block_forge.mli @@ -32,7 +32,7 @@ type unsigned_block = { } type simulation_kind = - | Filter of Operation_pool.pool + | Filter of Operation_pool.Prioritized.t | Apply of { ordered_pool : Operation_pool.ordered_pool; payload_hash : Block_payload_hash.t; diff --git a/src/proto_alpha/lib_delegate/client_daemon.ml b/src/proto_alpha/lib_delegate/client_daemon.ml index a21ec55610..abc91504eb 100644 --- a/src/proto_alpha/lib_delegate/client_daemon.ml +++ b/src/proto_alpha/lib_delegate/client_daemon.ml @@ -69,8 +69,8 @@ let rec retry_on_disconnection (cctxt : #Protocol_client_context.full) f = module Baker = struct let run (cctxt : Protocol_client_context.full) ?minimal_fees ?minimal_nanotez_per_gas_unit ?minimal_nanotez_per_byte - ?liquidity_baking_escape_vote ?per_block_vote_file ~chain ~context_path - ~keep_alive delegates = + ?liquidity_baking_escape_vote ?per_block_vote_file ?extra_operations + ~chain ~context_path ~keep_alive delegates = let process () = Config_services.user_activated_upgrades cctxt >>=? fun user_activated_upgrades -> @@ -81,6 +81,7 @@ module Baker = struct ?minimal_nanotez_per_byte ?liquidity_baking_escape_vote ?per_block_vote_file + ?extra_operations ~context_path ~user_activated_upgrades () diff --git a/src/proto_alpha/lib_delegate/client_daemon.mli b/src/proto_alpha/lib_delegate/client_daemon.mli index d7e1c5a01e..7cd8c4866f 100644 --- a/src/proto_alpha/lib_delegate/client_daemon.mli +++ b/src/proto_alpha/lib_delegate/client_daemon.mli @@ -34,6 +34,7 @@ module Baker : sig ?minimal_nanotez_per_byte:Q.t -> ?liquidity_baking_escape_vote:bool -> ?per_block_vote_file:string -> + ?extra_operations:Baking_configuration.Operations_source.t -> chain:Shell_services.chain -> context_path:string -> keep_alive:bool -> diff --git a/src/proto_alpha/lib_delegate/operation_pool.ml b/src/proto_alpha/lib_delegate/operation_pool.ml index e680d7328a..3d05268d27 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.ml +++ b/src/proto_alpha/lib_delegate/operation_pool.ml @@ -28,18 +28,49 @@ open Alpha_context (* Should we use a better ordering ? *) -module OpSet = Set.Make (struct +module Prioritized_operation = struct + (* Higher priority operations will be included first *) + type t = High of packed_operation | Low of packed_operation + + let extern op = High op + + let node op = Low op + + let packed = function High op | Low op -> op + + let compare_priority t1 t2 = + match (t1, t2) with + | (High _, Low _) -> 1 + | (Low _, High _) -> -1 + | (Low _, Low _) | (High _, High _) -> 0 + + let compare a b = + let c = compare_priority a b in + if c <> 0 then c else compare (packed a) (packed b) +end + +module Operation_set = Set.Make (struct type t = packed_operation - let compare = compare + let compare = Stdlib.compare end) +module Prioritized_operation_set = struct + include Set.Make (struct + type t = Prioritized_operation.t + + let compare = Prioritized_operation.compare + end) + + let operations set = elements set |> List.map Prioritized_operation.packed +end + (* TODO refine this: unpack operations *) type pool = { - consensus : OpSet.t; - votes : OpSet.t; - anonymous : OpSet.t; - managers : OpSet.t; + consensus : Operation_set.t; + votes : Operation_set.t; + anonymous : Operation_set.t; + managers : Operation_set.t; } (* TODO refine this: unpack operations *) @@ -94,10 +125,10 @@ let pp_payload fmt {votes_payload; anonymous_payload; managers_payload} = let empty = { - consensus = OpSet.empty; - votes = OpSet.empty; - anonymous = OpSet.empty; - managers = OpSet.empty; + consensus = Operation_set.empty; + votes = Operation_set.empty; + anonymous = Operation_set.empty; + managers = Operation_set.empty; } let empty_ordered = @@ -112,10 +143,10 @@ let pp_pool fmt {consensus; votes; anonymous; managers} = Format.fprintf fmt "[consensus: %d, votes: %d, anonymous: %d, managers: %d]" - (OpSet.cardinal consensus) - (OpSet.cardinal votes) - (OpSet.cardinal anonymous) - (OpSet.cardinal managers) + (Operation_set.cardinal consensus) + (Operation_set.cardinal votes) + (Operation_set.cardinal anonymous) + (Operation_set.cardinal managers) let pp_ordered_pool fmt {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} = @@ -148,23 +179,23 @@ let classify op = else `Bad | _ -> `Bad -let add_operation pool op = - match classify op with +let add_operation pool operation = + match classify operation with | `Consensus -> - let consensus = OpSet.add op pool.consensus in + let consensus = Operation_set.add operation pool.consensus in {pool with consensus} | `Votes -> - let votes = OpSet.add op pool.votes in + let votes = Operation_set.add operation pool.votes in {pool with votes} | `Anonymous -> - let anonymous = OpSet.add op pool.anonymous in + let anonymous = Operation_set.add operation pool.anonymous in {pool with anonymous} | `Managers -> - let managers = OpSet.add op pool.managers in + let managers = Operation_set.add operation pool.managers in {pool with managers} | `Bad -> pool -let add_operations pool new_ops = List.fold_left add_operation pool new_ops +let add_operations pool ops = List.fold_left add_operation pool ops type consensus_filter = { level : int32; @@ -178,7 +209,7 @@ type consensus_filter = { as well as preendorsements. *) let filter_with_relevant_consensus_ops ~(endorsement_filter : consensus_filter) ~(preendorsement_filter : consensus_filter option) operation_set = - OpSet.filter + Operation_set.filter (fun {protocol_data; _} -> match (protocol_data, preendorsement_filter) with (* 1a. Remove preendorsements. *) @@ -258,12 +289,6 @@ let filter_endorsements ops = | _ -> None) ops -let pool_to_list_list {consensus; votes; anonymous; managers} = - List.map OpSet.elements [consensus; votes; anonymous; managers] - -let pool_of_list_list (ll : packed_operation list list) = - List.fold_left add_operations empty ll - let ordered_to_list_list {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} = [ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers] @@ -320,8 +345,74 @@ let extract_operations_of_list_list = function let filter_pool p {consensus; votes; anonymous; managers} = { - consensus = OpSet.filter p consensus; - votes = OpSet.filter p votes; - anonymous = OpSet.filter p anonymous; - managers = OpSet.filter p managers; + consensus = Operation_set.filter p consensus; + votes = Operation_set.filter p votes; + anonymous = Operation_set.filter p anonymous; + managers = Operation_set.filter p managers; } + +module Prioritized = struct + type t = { + consensus : Prioritized_operation_set.t; + votes : Prioritized_operation_set.t; + anonymous : Prioritized_operation_set.t; + managers : Prioritized_operation_set.t; + } + + let of_operation_set (operation_set : Operation_set.t) = + Operation_set.fold + (fun elt set -> + Prioritized_operation_set.add (Prioritized_operation.node elt) set) + operation_set + Prioritized_operation_set.empty + + let of_pool (pool : pool) : t = + { + consensus = of_operation_set pool.consensus; + votes = of_operation_set pool.votes; + anonymous = of_operation_set pool.anonymous; + managers = of_operation_set pool.managers; + } + + let add_operation pool operation = + match classify (Prioritized_operation.packed operation) with + | `Consensus -> + let consensus = + Prioritized_operation_set.add operation pool.consensus + in + {pool with consensus} + | `Votes -> + let votes = Prioritized_operation_set.add operation pool.votes in + {pool with votes} + | `Anonymous -> + let anonymous = + Prioritized_operation_set.add operation pool.anonymous + in + {pool with anonymous} + | `Managers -> + let managers = Prioritized_operation_set.add operation pool.managers in + {pool with managers} + | `Bad -> pool + + let add_external_operation pool operation = + add_operation pool (Prioritized_operation.extern operation) + + let add_operations prioritized_pool operations = + List.fold_left add_operation prioritized_pool operations + + let merge_external_operations (pool : pool) + (external_operations : packed_operation list) = + List.fold_left add_external_operation (of_pool pool) external_operations + + let filter p {consensus; votes; anonymous; managers} = + let filter = + Prioritized_operation_set.filter (fun pop -> + p (Prioritized_operation.packed pop)) + in + { + consensus = filter consensus; + votes = filter votes; + anonymous = filter anonymous; + managers = filter managers; + } +end diff --git a/src/proto_alpha/lib_delegate/operation_pool.mli b/src/proto_alpha/lib_delegate/operation_pool.mli index 54d8501cd6..044d13cf18 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.mli +++ b/src/proto_alpha/lib_delegate/operation_pool.mli @@ -34,23 +34,22 @@ val anonymous_index : int val managers_index : int -module OpSet : Set.S with type elt = packed_operation +module Operation_set : Set.S with type elt = packed_operation +(** A pool of operations for a single origin, or undifferenciated origin, + typically used for operations coming from the node *) type pool = { - consensus : OpSet.t; - votes : OpSet.t; - anonymous : OpSet.t; - managers : OpSet.t; + consensus : Operation_set.t; + votes : Operation_set.t; + anonymous : Operation_set.t; + managers : Operation_set.t; } +(** on pool *) val empty : pool val pp_pool : Format.formatter -> pool -> unit -val pool_to_list_list : pool -> packed_operation list list - -val pool_of_list_list : packed_operation list list -> pool - val filter_pool : (packed_operation -> bool) -> pool -> pool type ordered_pool = { @@ -96,8 +95,8 @@ type consensus_filter = { val filter_with_relevant_consensus_ops : endorsement_filter:consensus_filter -> preendorsement_filter:consensus_filter option -> - OpSet.t -> - OpSet.t + Operation_set.t -> + Operation_set.t val unpack_preendorsement : packed_operation -> Kind.preendorsement operation option @@ -121,3 +120,54 @@ val extract_operations_of_list_list : * Kind.endorsement operation list * payload) option + +module Prioritized_operation : sig + type t + + (** prioritize operations coming from an external source (file, uri, ...)*) + val extern : packed_operation -> t + + (** prioritize operations coming from a node *) + val node : packed_operation -> t + + (** [packed t] retrieves the [packed_operation] wrapped inside [t] *) + val packed : t -> packed_operation + + (** [compare_priority o1 o2] compares whether [o1] has higher priority than [o2] *) + val compare_priority : t -> t -> int + + (** [compare] is [compare_priority] when non-zero. This is suitable to + construct sets of prioritized operations **) + val compare : t -> t -> int +end + +module Prioritized_operation_set : sig + include Set.S with type elt = Prioritized_operation.t + + (** [operations set] is [elements set |> List.map Prioritized_operation.packed]*) + val operations : t -> packed_operation list +end + +(** Pool of prioritized operations *) +module Prioritized : sig + (** Same record fields as [type pool], but with a different set base *) + type t = { + consensus : Prioritized_operation_set.t; + votes : Prioritized_operation_set.t; + anonymous : Prioritized_operation_set.t; + managers : Prioritized_operation_set.t; + } + + (** [of_pool pool] transforms [pool] into a prioritized pool of operations of + low priority. *) + val of_pool : pool -> t + + (** [merge_external_operations pool extern_ops] creates a prioritized pool + from a [pool], assumed to contained operations taken from a node and + [extern_ops] coming from an external source, which we prioritize. *) + val merge_external_operations : pool -> packed_operation list -> t + + val filter : (packed_operation -> bool) -> t -> t + + val add_operations : t -> Prioritized_operation.t list -> t +end diff --git a/src/proto_alpha/lib_delegate/operation_selection.ml b/src/proto_alpha/lib_delegate/operation_selection.ml index ea8012e375..3f3f23d627 100644 --- a/src/proto_alpha/lib_delegate/operation_selection.ml +++ b/src/proto_alpha/lib_delegate/operation_selection.ml @@ -37,8 +37,8 @@ let anonymous_quota = Stdlib.List.nth quota Operation_pool.anonymous_index let managers_quota = Stdlib.List.nth quota Operation_pool.managers_index -type weighted_manager = { - op : packed_operation; +type prioritized_manager = { + op : Prioritized_operation.t; size : int; fee : Tez.t; gas : Fixed_point_repr.integral_tag Gas.Arith.t; @@ -47,32 +47,39 @@ type weighted_manager = { counter : counter; } -module WeightedManagerSet = Set.Make (struct - type t = weighted_manager +module PrioritizedManagerSet = Set.Make (struct + type t = prioritized_manager (* We order the operations by their weights except if they belong to the same manager, if they do, we order them by their counter. *) - let compare {source; counter; weight; _} - {source = source'; counter = counter'; weight = weight'; _} = + let compare {source; counter; weight; op; _} + {source = source'; counter = counter'; weight = weight'; op = op'; _} = (* Be careful with the [compare] *) let cmp_src = Signature.Public_key_hash.compare source source' in if cmp_src = 0 then (* we want the smallest counter first *) let c = Z.compare counter counter' in - if c <> 0 then c else Q.compare weight' weight + if c <> 0 then c + else + let c = Prioritized_operation.compare_priority op op' in + if c <> 0 then c else Q.compare weight' weight (* if same counter, biggest weight first *) else - (* We want the biggest weight first *) - let c = Q.compare weight' weight in - if c <> 0 then c else cmp_src + let c = Prioritized_operation.compare_priority op op' in + if c <> 0 then c + else + (* We want the biggest weight first *) + let c = Q.compare weight' weight in + if c <> 0 then c else cmp_src end) (* Note: This weight is also used by the plugin and the prevalidator to sort operations in the pending mempool. @see {!Tezos_protocol_plugin_alpha.Plugin.Mempool.weight_manager_operation}. *) -let weight_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees - ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte op = +let prioritized_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees + ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte operation = + let op = Operation_pool.Prioritized_operation.packed operation in let {protocol_data = Operation_data {contents; _}; _} = op in let open Operation in let l = to_list (Contents_list contents) in @@ -127,16 +134,16 @@ let weight_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees Q.compare minimal_fees_in_nanotez fees_in_nanotez <= 0 in if enough_fees_for_size && enough_fees_for_gas then - Some {op; size; weight; fee; gas; source; counter} + Some {op = operation; size; weight; fee; gas; source; counter} else None | _ -> None let weight_managers ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte managers = - OpSet.fold + Prioritized_operation_set.fold (fun op acc -> match - weight_manager + prioritized_manager ~max_size:managers_quota.max_size ~hard_gas_limit_per_block ~minimal_fees @@ -145,9 +152,9 @@ let weight_managers ~hard_gas_limit_per_block ~minimal_fees op with | None -> acc - | Some w_op -> WeightedManagerSet.add w_op acc) + | Some w_op -> PrioritizedManagerSet.add w_op acc) managers - WeightedManagerSet.empty + PrioritizedManagerSet.empty (** Simulation *) @@ -212,7 +219,8 @@ let filter_valid_operations_up_to_quota inc (ops, quota) = with Full (inc, l) -> Lwt.return (inc, List.rev l) let filter_operations_with_simulation initial_inc fees_config - ~hard_gas_limit_per_block {consensus; votes; anonymous; managers} = + ~hard_gas_limit_per_block + Operation_pool.Prioritized.{consensus; votes; anonymous; managers} = let { Baking_configuration.minimal_fees; minimal_nanotez_per_gas_unit; @@ -222,13 +230,15 @@ let filter_operations_with_simulation initial_inc fees_config in filter_valid_operations_up_to_quota initial_inc - (OpSet.elements consensus, consensus_quota) + (Prioritized_operation_set.operations consensus, consensus_quota) >>= fun (inc, consensus) -> - filter_valid_operations_up_to_quota inc (OpSet.elements votes, votes_quota) + filter_valid_operations_up_to_quota + inc + (Prioritized_operation_set.operations votes, votes_quota) >>= fun (inc, votes) -> filter_valid_operations_up_to_quota inc - (OpSet.elements anonymous, anonymous_quota) + (Prioritized_operation_set.operations anonymous, anonymous_quota) >>= fun (inc, anonymous) -> (* Sort the managers *) let weighted_managers = @@ -241,8 +251,8 @@ let filter_operations_with_simulation initial_inc fees_config in filter_valid_operations_up_to_quota inc - ( WeightedManagerSet.elements weighted_managers - |> List.map (fun {op; _} -> op), + ( PrioritizedManagerSet.elements weighted_managers + |> List.map (fun {op; _} -> Prioritized_operation.packed op), managers_quota ) >>= fun (inc, managers) -> let operations = [consensus; votes; anonymous; managers] in @@ -280,18 +290,18 @@ let filter_valid_operations_up_to_quota_without_simulation (ops, quota) = with Full l -> List.rev l let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block - {consensus; votes; anonymous; managers} = + Operation_pool.Prioritized.{consensus; votes; anonymous; managers} = let consensus = filter_valid_operations_up_to_quota_without_simulation - (OpSet.elements consensus, consensus_quota) + (Prioritized_operation_set.operations consensus, consensus_quota) in let votes = filter_valid_operations_up_to_quota_without_simulation - (OpSet.elements votes, votes_quota) + (Prioritized_operation_set.operations votes, votes_quota) in let anonymous = filter_valid_operations_up_to_quota_without_simulation - (OpSet.elements anonymous, anonymous_quota) + (Prioritized_operation_set.operations anonymous, anonymous_quota) in let { Baking_configuration.minimal_fees; @@ -311,8 +321,8 @@ let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block in let managers = filter_valid_operations_up_to_quota_without_simulation - ( WeightedManagerSet.elements weighted_managers - |> List.map (fun {op; _} -> op), + ( PrioritizedManagerSet.elements weighted_managers + |> List.map (fun {op; _} -> Prioritized_operation.packed op), managers_quota ) in let operations = [consensus; votes; anonymous; managers] in diff --git a/src/proto_alpha/lib_delegate/operation_selection.mli b/src/proto_alpha/lib_delegate/operation_selection.mli index 1159a6cba7..1f9ab96920 100644 --- a/src/proto_alpha/lib_delegate/operation_selection.mli +++ b/src/proto_alpha/lib_delegate/operation_selection.mli @@ -38,11 +38,11 @@ val filter_operations_with_simulation : Baking_simulator.incremental -> Baking_configuration.fees_config -> hard_gas_limit_per_block:Gas.Arith.integral -> - Operation_pool.pool -> + Operation_pool.Prioritized.t -> simulation_result tzresult Lwt.t val filter_operations_without_simulation : Baking_configuration.fees_config -> hard_gas_limit_per_block:Gas.Arith.integral -> - Operation_pool.pool -> + Operation_pool.Prioritized.t -> packed_operation list list diff --git a/src/proto_alpha/lib_delegate/operation_worker.ml b/src/proto_alpha/lib_delegate/operation_worker.ml index 8c9ad6b68a..86910b184b 100644 --- a/src/proto_alpha/lib_delegate/operation_worker.ml +++ b/src/proto_alpha/lib_delegate/operation_worker.ml @@ -150,125 +150,6 @@ module Events = struct ~level:Info ~msg:"shutting down operation worker" () - - let mempool_initial_additions = - declare_1 - ~section - ~name:"mempool_initial_additions" - ~level:Info - ~msg:"added {count} initial operations in baker mempool" - ("count", Data_encoding.int31) - - let invalid_json_file = - declare_1 - ~section - ~name:"invalid_json_file" - ~level:Warning - ~msg:"{filename} is not a valid JSON file" - ("filename", Data_encoding.string) - - let no_mempool_found_in_file = - declare_1 - ~section - ~name:"no_mempool_found_in_file" - ~level:Warning - ~msg:"no mempool found in file {filename}" - ("filename", Data_encoding.string) - - let cannot_fetch_mempool = - declare_1 - ~section - ~name:"cannot_fetch_mempool" - ~level:Error - ~msg:"cannot fetch mempool: {errs}" - ("errs", Error_monad.(TzTrace.encoding error_encoding)) -end - -module Mempool = struct - type error += - | Failed_mempool_fetch of { - path : string; - reason : string; - details : Data_encoding.json option; - } - - let ops_of_mempool - (ops : Protocol_client_context.Alpha_block_services.Mempool.t) = - (* We only retain the applied, unprocessed and delayed operations *) - List.rev - (Operation_hash.Map.fold (fun _ op acc -> op :: acc) ops.unprocessed - @@ Operation_hash.Map.fold - (fun _ (op, _) acc -> op :: acc) - ops.branch_delayed - @@ List.rev_map (fun (_, op) -> op) ops.applied) - - let retrieve mempool = - match mempool with - | None -> Lwt.return_none - | Some mempool -> ( - let fail reason details = - let path = - match mempool with - | Baking_configuration.Mempool.Local {filename} -> filename - | Baking_configuration.Mempool.Remote {uri; _} -> Uri.to_string uri - in - fail (Failed_mempool_fetch {path; reason; details}) - in - let decode_mempool json = - protect - ~on_error:(fun _ -> - fail "cannot decode the received JSON into mempool" (Some json)) - (fun () -> - let mempool = - Data_encoding.Json.destruct - Protocol_client_context.Alpha_block_services.S.Mempool - .encoding - json - in - return (ops_of_mempool mempool)) - in - match mempool with - | Baking_configuration.Mempool.Local {filename} -> - if Sys.file_exists filename then - Tezos_stdlib_unix.Lwt_utils_unix.Json.read_file filename - >>= function - | Error _ -> - Events.(emit invalid_json_file filename) >>= fun () -> - Lwt.return_none - | Ok json -> ( - decode_mempool json >>= function - | Ok mempool -> Lwt.return_some mempool - | Error errs -> - Events.(emit cannot_fetch_mempool errs) >>= fun () -> - Lwt.return_none) - else - Events.(emit no_mempool_found_in_file filename) >>= fun () -> - Lwt.return_none - | Baking_configuration.Mempool.Remote {uri; http_headers} -> ( - ( (with_timeout - (Systime_os.sleep (Time.System.Span.of_seconds_exn 5.)) - (fun _ -> - Tezos_rpc_http_client_unix.RPC_client_unix - .generic_media_type_call - ?headers:http_headers - ~accept:[Media_type.json] - `GET - uri) - >>=? function - | `Json (`Ok json) -> return json - | `Json (`Unauthorized json) -> fail "unauthorized request" json - | `Json (`Gone json) -> fail "gone" json - | `Json (`Error json) -> fail "error" json - | `Json (`Not_found json) -> fail "not found" json - | `Json (`Forbidden json) -> fail "forbidden" json - | `Json (`Conflict json) -> fail "conflict" json - | _ -> fail "unexpected media type" None) - >>=? fun json -> decode_mempool json ) - >>= function - | Ok mempool -> Lwt.return_some mempool - | Error errs -> - Events.(emit cannot_fetch_mempool errs) >>= fun () -> - Lwt.return_none)) end type candidate = { @@ -358,27 +239,23 @@ let monitor_operations (cctxt : #Protocol_client_context.full) = in return ((shell_header.level, round), operation_stream, stream_stopper) -let make_initial_state ?initial_mempool ?(monitor_node_operations = true) () = +let make_initial_state ?(monitor_node_operations = true) () = let qc_event_stream = let (stream, push) = Lwt_stream.create () in {stream; push} in let canceler = Lwt_canceler.create () in - let operation_pool = - Option.fold - ~none:Operation_pool.empty - ~some:(Operation_pool.add_operations Operation_pool.empty) - initial_mempool - in + let operation_pool = Operation_pool.empty in let lock = Lwt_mutex.create () in - { - operation_pool; - canceler; - proposal_watched = None; - qc_event_stream; - lock; - monitor_node_operations; - } + Lwt.return + { + operation_pool; + canceler; + proposal_watched = None; + qc_event_stream; + lock; + monitor_node_operations; + } let is_valid_consensus_content (candidate : candidate) consensus_content = let {hash = _; round_watched; payload_hash_watched} = candidate in @@ -522,7 +399,7 @@ let monitor_quorum state new_proposal_watched = if state.proposal_watched <> None then cancel_monitoring state ; state.proposal_watched <- new_proposal_watched ; let current_consensus_operations = - Operation_pool.OpSet.elements state.operation_pool.consensus + Operation_pool.Operation_set.elements state.operation_pool.consensus in (* initialize with the currently present consensus operations *) update_monitoring ~should_lock:false state current_consensus_operations @@ -580,11 +457,11 @@ let shutdown_worker state = to add them. But these endorsements become 'Outdated' in the mempool once (L+1, 0) is received. Hence the cache for previous level. *) -let may_update_operations_pool state (head_level, head_round) = +let update_operations_pool state (head_level, head_round) = let endorsements = let head_round_i32 = Round.to_int32 head_round in let head_level_i32 = head_level in - Operation_pool.OpSet.filter + Operation_pool.Operation_set.filter (function | { protocol_data = @@ -602,50 +479,43 @@ let may_update_operations_pool state (head_level, head_round) = | _ -> false) state.operation_pool.consensus in - let operation_pool = - {Operation_pool.empty with Operation_pool.consensus = endorsements} - in + let operation_pool = {Operation_pool.empty with consensus = endorsements} in state.operation_pool <- operation_pool -let create ?initial_mempool ?(monitor_node_operations = true) +let create ?(monitor_node_operations = true) (cctxt : #Protocol_client_context.full) = - Mempool.retrieve initial_mempool >>= fun initial_mempool -> - let state = make_initial_state ?initial_mempool ~monitor_node_operations () in + make_initial_state ~monitor_node_operations () >>= fun state -> (* TODO should we continue forever ? *) let rec worker_loop () = - monitor_operations cctxt >>= function - | Error err -> Events.(emit loop_failed err) - | Ok (head, operation_stream, op_stream_stopper) -> - Events.(emit starting_new_monitoring ()) >>= fun () -> - state.canceler <- Lwt_canceler.create () ; - Lwt_canceler.on_cancel state.canceler (fun () -> - op_stream_stopper () ; - cancel_monitoring state ; - Lwt.return_unit) ; - may_update_operations_pool state head ; - let rec loop () = - Lwt_stream.get operation_stream >>= function - | None -> - (* When the stream closes, it means a new head has been set, - we cancel the monitoring and flush current operations *) - Events.(emit end_of_stream ()) >>= fun () -> + if state.monitor_node_operations then ( + monitor_operations cctxt >>= function + | Error err -> Events.(emit loop_failed err) + | Ok (head, operation_stream, op_stream_stopper) -> + Events.(emit starting_new_monitoring ()) >>= fun () -> + state.canceler <- Lwt_canceler.create () ; + Lwt_canceler.on_cancel state.canceler (fun () -> op_stream_stopper () ; cancel_monitoring state ; - worker_loop () - | Some ops -> - Events.(emit received_new_operations ()) >>= fun () -> - state.operation_pool <- - Operation_pool.add_operations state.operation_pool ops ; - update_monitoring state ops >>= fun () -> loop () - in - loop () - in - let worker_loop () = - (match initial_mempool with - | None -> Lwt.return_unit - | Some ops -> Events.(emit mempool_initial_additions (List.length ops))) - >>= fun () -> - if state.monitor_node_operations then worker_loop () else Lwt.return_unit + Lwt.return_unit) ; + update_operations_pool state head ; + let rec loop () = + Lwt_stream.get operation_stream >>= function + | None -> + (* When the stream closes, it means a new head has been set, + we cancel the monitoring and flush current operations *) + Events.(emit end_of_stream ()) >>= fun () -> + op_stream_stopper () ; + state.operation_pool <- Operation_pool.empty ; + cancel_monitoring state ; + worker_loop () + | Some ops -> + Events.(emit received_new_operations ()) >>= fun () -> + state.operation_pool <- + Operation_pool.add_operations state.operation_pool ops ; + update_monitoring state ops >>= fun () -> loop () + in + loop ()) + else Lwt.return_unit in Lwt.dont_wait (fun () -> diff --git a/src/proto_alpha/lib_delegate/operation_worker.mli b/src/proto_alpha/lib_delegate/operation_worker.mli index b7fb0559b2..607a6f9dba 100644 --- a/src/proto_alpha/lib_delegate/operation_worker.mli +++ b/src/proto_alpha/lib_delegate/operation_worker.mli @@ -54,18 +54,16 @@ type event = fetch operations for the baker to process. - @param initial_mempool initial operations to put in the worker's queue - (default: [None]) + @param extra_operations extra operation source to put in the worker's + operations set (default: [None]) - @param monitor_node_operations monitor operations on the node (defaults: [true]). Set - [monitor_node] to [false] to only consider the [initial_mempool] operations. + @param monitor_node_operations monitor operations on the node (defaults: + [true]). Set [monitor_node_operations] to [false] to only consider the + [extra_operations] operations. *) val create : - ?initial_mempool:Baking_configuration.Mempool.t -> - ?monitor_node_operations:bool -> - #Protocol_client_context.full -> - t Lwt.t + ?monitor_node_operations:bool -> #Protocol_client_context.full -> t Lwt.t (** {2 Accessors}*) diff --git a/src/proto_alpha/lib_delegate/state_transitions.ml b/src/proto_alpha/lib_delegate/state_transitions.ml index 53c84090c2..4f39306068 100644 --- a/src/proto_alpha/lib_delegate/state_transitions.ml +++ b/src/proto_alpha/lib_delegate/state_transitions.ml @@ -466,7 +466,7 @@ let repropose_block_action state delegate round (proposal : proposal) = (* Add the proposal and pqc consensus operations to the mempool *) List.fold_left - (fun set op -> Operation_pool.OpSet.add op set) + (fun set op -> Operation_pool.Operation_set.add op set) mempool_consensus_operations (List.map Operation.pack proposal.block.quorum @ List.map Operation.pack prequorum.preendorsements) @@ -491,7 +491,7 @@ let repropose_block_action state delegate round (proposal : proposal) = ~endorsement_filter ~preendorsement_filter all_consensus_operations - |> OpSet.elements) + |> Operation_set.elements) in let payload_hash = proposal.block.payload_hash in let payload_round = proposal.block.payload_round in diff --git a/tests_python/tests_011/operations_files/empty_operations.json b/tests_python/tests_011/operations_files/empty_operations.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/tests_python/tests_011/operations_files/empty_operations.json @@ -0,0 +1 @@ +[] diff --git a/tests_python/tests_011/test_baker_operations_cli_options.py b/tests_python/tests_011/test_baker_operations_cli_options.py new file mode 100644 index 0000000000..5ebc70f14b --- /dev/null +++ b/tests_python/tests_011/test_baker_operations_cli_options.py @@ -0,0 +1,343 @@ +"""Simple tests to check support for the following operations-related options +for baking +- --ignore-node-mempool +- --operation-pool [file|uri] +""" + +import os +import os.path +import json +import time + +from http.server import HTTPServer, SimpleHTTPRequestHandler +from multiprocessing import Process +from typing import List, Any + +import pytest + +from client.client import Client +from tools import constants, utils +from launchers.sandbox import Sandbox +from . import protocol + +PORT = 12121 +OPERATIONS_FILES_DIRECTORY = "operations_files" +EMPTY_OPERATIONS = "empty_operations" +ABSENT_OPERATIONS = "this_file_should_not_exist" +SINGLETON_OPERATIONS = "singleton_operations" +TEST_DIR = "tests_011" + + +class MyHttpServer: + """Simple HTTP server launching in a separate process""" + + def __init__(self): + server_address = ('localhost', PORT) + httpd = HTTPServer(server_address, SimpleHTTPRequestHandler) + process = Process(target=httpd.serve_forever, args=()) + self.process = process + self.server = httpd + + def run(self): + self.process.start() + + def close(self): + self.server.server_close() + self.process.terminate() + + +@pytest.fixture +def http_server(): + server = MyHttpServer() + server.run() + yield server + server.close() + + +def get_filename(basename: str) -> str: + return os.path.join( + TEST_DIR, OPERATIONS_FILES_DIRECTORY, f"{basename}.json" + ) + + +class TestIgnoreNodeMempool: + def test_ignore(self, client: Client): + """Check that a transfer injected into the node is dutifully ignored + when baking with --ignore-node-mempool + """ + sender = "bootstrap4" + balance0 = client.get_balance(sender) + client.transfer(2, sender, 'bootstrap5') + utils.bake( + client, bake_args=['--minimal-timestamp', "--ignore-node-mempool"] + ) + balance1 = client.get_balance(sender) + # Make sure the operations has not been included, indirectly through + # balance checks + assert balance1 == balance0 + assert client.get_level() == 2 + + def test_no_ignore(self, client: Client): + """Check that a transfer injected, then ignored, can be injected at the + next block""" + sender = "bootstrap4" + balance0 = client.get_balance(sender) + utils.bake(client, bake_args=['--minimal-timestamp']) + balance1 = client.get_balance(sender) + assert balance1 != balance0 + assert client.get_level() == 3 + + +def all_empty(lls: List[List[Any]]) -> bool: + return all(map(lambda l: len(l) == 0, lls)) + + +def mempool_to_operations(mempool): + def to_op(applied_op): + operation = {} + operation['branch'] = applied_op['branch'] + + operation['contents'] = applied_op['contents'] + operation['signature'] = applied_op['signature'] + + return operation + + return [to_op(applied_op) for applied_op in mempool['applied']] + + +def get_operations(client: Client) -> List[dict]: + return mempool_to_operations(client.get_mempool()) + + +class TestExternalOperations: + def test_bake_empty_operations_file(self, client: Client): + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + get_filename(EMPTY_OPERATIONS), + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert all_empty(head['operations']) + + # http_server is a fixture that auto- runs and closes said HTTP server + # pylint: disable=W0613 + def test_bake_empty_operations_http(self, client: Client, http_server): + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"http://localhost:{PORT}/{get_filename(EMPTY_OPERATIONS)}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert all_empty(head['operations']) + + def test_bake_absent_operations_file(self, client: Client): + """The absent resource should simply be ignored.""" + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"{ABSENT_OPERATIONS}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert all_empty(head['operations']) + + # pylint: disable=W0613 + def test_bake_absent_operations_http(self, client: Client, http_server): + """The absent resource should simply be ignored.""" + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"http://{ABSENT_OPERATIONS}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert all_empty(head['operations']) + + def test_bake_singleton_operations_file_pre( + self, client: Client, session: dict + ): + """Construct a transaction over the current state, and bake it. + Store it into the context to serves as a dynamic oracle for the next + steps. + """ + sender = 'bootstrap2' + balance0 = client.get_mutez_balance(sender) + session['amount'] = 2 + client.transfer(session['amount'], sender, 'bootstrap3') + + # Baking + utils.bake(client, bake_args=['--minimal-timestamp']) + balance1 = client.get_mutez_balance(sender) + session['difference'] = balance0 - balance1 + utils.bake(client) + + def test_bake_singleton_operations_file( + self, client: Client, session: dict + ): + """Construct a transaction over the current state, put it into a file, + and bake it into the chain through --operation-pool option. + + This additionally compares the balance to a normal transfer (through the + node's mempool) to check that there is no observable difference in + behaviors between passing through a node's mempool or a hand-rolled + operations file. + """ + sender = 'bootstrap4' + balance0 = client.get_mutez_balance(sender) + client.transfer(session['amount'], sender, 'bootstrap3') + + pending_ops = get_operations(client) + assert len(pending_ops) == 1 + assert len(pending_ops[0]['contents']) == 1 + + # Write the transaction to a file + file = get_filename(SINGLETON_OPERATIONS) + with open(file, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + # Baking + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + file, + '--ignore-node-mempool', + ], + ) + balance1 = client.get_mutez_balance(sender) + assert balance0 - balance1 == session['difference'] + + # cleanup the operation file + os.remove(file) + + # pylint: disable=W0613 + def test_bake_singleton_operations_http( + self, client: Client, sandbox: Sandbox, session: dict, http_server + ): + # Restart + sandbox.node(0).terminate() + sandbox.node(0).run() + client.check_node_listening() + + sender = 'bootstrap2' + balance0 = client.get_mutez_balance(sender) + client.transfer(session['amount'], sender, 'bootstrap3') + + pending_ops = get_operations(client) + assert len(pending_ops) == 1 + assert len(pending_ops[0]['contents']) == 1 + + # Write the transaction to a file + file = get_filename(SINGLETON_OPERATIONS) + with open(file, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"http://localhost:{PORT}/{file}", + '--ignore-node-mempool', + ], + ) + + balance1 = client.get_mutez_balance(sender) + assert balance0 - balance1 == session['difference'] + + # cleanup the operation file + os.remove(file) + + +@pytest.mark.incremental +class TestBakerExternalOperations: + """Test adding an external operations to a baker daemon""" + + def test_init(self, sandbox: Sandbox): + sandbox.add_node(0, params=constants.NODE_PARAMS) + parameters = dict(protocol.PARAMETERS) + utils.activate_protocol( + sandbox.client(0), + protocol.HASH, + parameters=parameters, + activate_in_the_past=True, + ) + + def test_gen_operations(self, sandbox: Sandbox, session: dict): + """Generate a transfer operation and save it to a file""" + sandbox.client(0).transfer(3, 'bootstrap1', 'bootstrap3') + utils.bake(sandbox.client(0)) + # We are now at level 2, next block at level 3 + + session['transfer_value'] = 2 + sandbox.client(0).transfer( + session['transfer_value'], 'bootstrap1', 'bootstrap3' + ) + + pending_ops = get_operations(sandbox.client(0)) + + # Write the transaction to a file + filename = get_filename(SINGLETON_OPERATIONS) + session['operations_file'] = filename + with open(filename, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + def test_terminate_sandbox(self, sandbox: Sandbox): + """Cleanup the node's mempool. Forget about the last transfer""" + sandbox.node(0).terminate() + time.sleep(1) + + def test_baker(self, sandbox: Sandbox, session: dict): + """Restart the node and add a baker""" + sandbox.node(0).run() + assert sandbox.client(0).check_node_listening() + sandbox.add_baker( + 0, + ['bootstrap1'], + proto=protocol.DAEMON, + run_params=['--operation-pool', session['operations_file']], + ) + + @pytest.mark.timeout(3) + def test_wait_until_level5(self, sandbox: Sandbox): + """Wait until we have seen enough blocks. + This should not take much time.""" + while sandbox.client(0).get_level() < 5: + time.sleep(1) + + def test_check_block3(self, sandbox: Sandbox, session: dict): + """Check that block 3 exactly contains the operations that we put into + our operations file""" + block_3 = sandbox.client(0).rpc('get', '/chains/main/blocks/3') + manager_ops = block_3['operations'][3] + assert len(manager_ops) == 1 + assert int( + manager_ops[0]['contents'][0]['amount'] + ) == utils.mutez_of_tez(session['transfer_value']) + + def test_check_block4(self, sandbox: Sandbox, session: dict): + """Check that block 4 is empty of operations""" + block_4 = sandbox.client(0).rpc('get', '/chains/main/blocks/4') + assert all_empty(block_4['operations']) + + # cleanup the operation file + os.remove(session['operations_file']) diff --git a/tests_python/tests_012/operations_files/empty_operations.json b/tests_python/tests_012/operations_files/empty_operations.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/tests_python/tests_012/operations_files/empty_operations.json @@ -0,0 +1 @@ +[] diff --git a/tests_python/tests_012/test_baker_operations_cli_options.py b/tests_python/tests_012/test_baker_operations_cli_options.py new file mode 100644 index 0000000000..d186ce5a80 --- /dev/null +++ b/tests_python/tests_012/test_baker_operations_cli_options.py @@ -0,0 +1,370 @@ +"""Simple tests to check support for the following operations-related options +for baking + - --ignore-node-mempool + - --operation-pool [file|uri] +""" + + +import os +import os.path +import json +import time + +from http.server import HTTPServer, SimpleHTTPRequestHandler +from multiprocessing import Process + +from typing import List, Any + +import pytest + +from client.client import Client +from tools import constants, utils +from launchers.sandbox import Sandbox +from . import protocol + +PORT = 12121 +OPERATIONS_FILES_DIRECTORY = "operations_files" +EMPTY_OPERATIONS = "empty_operations" +ABSENT_OPERATIONS = "this_file_should_not_exist" +SINGLETON_OPERATIONS = "singleton_operations" +TEST_DIR = "tests_012" + + +class MyHttpServer: + """Simple HTTP server launching in a separate process""" + + def __init__(self): + server_address = ('localhost', PORT) + httpd = HTTPServer(server_address, SimpleHTTPRequestHandler) + process = Process(target=httpd.serve_forever, args=()) + self.process = process + self.server = httpd + + def run(self): + self.process.start() + + def close(self): + self.server.server_close() + self.process.terminate() + + +@pytest.fixture +def http_server(): + server = MyHttpServer() + server.run() + yield server + server.close() + + +def get_filename(basename: str) -> str: + return os.path.join( + TEST_DIR, OPERATIONS_FILES_DIRECTORY, f"{basename}.json" + ) + + +class TestIgnoreNodeMempool: + def test_ignore(self, client: Client): + """Check that a transfer injected into the node is dutifully ignored + when baking with --ignore-node-mempool + """ + sender = "bootstrap4" + balance0 = client.get_balance(sender) + client.transfer(2, sender, 'bootstrap5') + utils.bake( + client, bake_args=['--minimal-timestamp', "--ignore-node-mempool"] + ) + balance1 = client.get_balance(sender) + # Make sure the operations has not been included, indirectly through + # balance checks + assert balance1 == balance0 + assert client.get_level() == 2 + + def test_no_ignore(self, client: Client): + """Check that a transfer injected, then ignored, can be injected at the + next block""" + sender = "bootstrap4" + balance0 = client.get_balance(sender) + utils.bake(client, bake_args=['--minimal-timestamp']) + balance1 = client.get_balance(sender) + assert balance1 != balance0 + assert client.get_level() == 3 + + +def all_empty(lls: List[List[Any]]) -> bool: + return all(map(lambda l: len(l) == 0, lls)) + + +def only_has_endorsements(lls: List[List[Any]]) -> bool: + return all(map(lambda x: x[0] == 0 or len(x[1]) == 0, enumerate(lls))) + + +def mempool_to_operations(mempool): + def to_op(applied_op): + operation = {} + operation['branch'] = applied_op['branch'] + operation['contents'] = applied_op['contents'] + operation['signature'] = applied_op['signature'] + return operation + + return [to_op(applied_op) for applied_op in mempool['applied']] + + +def get_operations(client: Client) -> List[dict]: + return mempool_to_operations(client.get_mempool()) + + +class TestExternalOperations: + def test_bake_empty_operations_file(self, client: Client): + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + get_filename(EMPTY_OPERATIONS), + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert all_empty(head['operations']) + + # http_server is a fixture that auto- runs and closes said HTTP server + # pylint: disable=W0613 + def test_bake_empty_operations_http(self, client: Client, http_server): + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"http://localhost:{PORT}/{get_filename(EMPTY_OPERATIONS)}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert only_has_endorsements(head['operations']) + + def test_bake_absent_operations_file(self, client: Client): + """The absent resource should simply be ignored.""" + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"{ABSENT_OPERATIONS}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert only_has_endorsements(head['operations']) + + # pylint: disable=W0613 + def test_bake_absent_operations_http(self, client: Client, http_server): + """The absent resource should simply be ignored.""" + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + # any fake URL would do here + f"http://localhost:{PORT}/{ABSENT_OPERATIONS}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert only_has_endorsements(head['operations']) + + def test_bake_singleton_operations_file_pre( + self, client: Client, session: dict + ): + """Construct a transaction over the current state, and bake it. + Store it into the context to serves as a dynamic oracle for the next + steps. + """ + sender = 'bootstrap2' + balance0 = client.get_mutez_balance(sender) + session['amount'] = 2 + client.transfer(session['amount'], sender, 'bootstrap3') + + # Baking + utils.bake(client, bake_args=['--minimal-timestamp']) + balance1 = client.get_mutez_balance(sender) + session['difference'] = balance0 - balance1 + assert session['difference'] >= session['amount'] + utils.bake(client) + + def test_bake_singleton_operations_file( + self, client: Client, session: dict + ): + """Construct a transaction over the current state, put it into a file, + and bake it into the chain through --operation-pool option. + + This additionally compares the balance to a normal transfer (through the + node's mempool) to check that there is no observable difference in + behaviors between passing through a node's mempool or a hand-rolled + operations file. + """ + sender = 'bootstrap4' + balance0 = client.get_mutez_balance(sender) + client.transfer(session['amount'], sender, 'bootstrap3') + + pending_ops = get_operations(client) + assert len(pending_ops) == 1 + assert len(pending_ops[0]['contents']) == 1 + + # Write the transaction to a file + file = get_filename(SINGLETON_OPERATIONS) + with open(file, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + # Baking + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + file, + '--ignore-node-mempool', + ], + ) + balance1 = client.get_mutez_balance(sender) + assert balance0 - balance1 == session['difference'] + # cleanup the generated file + os.remove(file) + + # pylint: disable=W0613 + def test_bake_singleton_operations_http( + self, client: Client, sandbox: Sandbox, session: dict, http_server + ): + # Restart + sandbox.node(0).terminate() + sandbox.node(0).run() + client.check_node_listening() + + sender = 'bootstrap2' + balance0 = client.get_mutez_balance(sender) + client.transfer(session['amount'], sender, 'bootstrap3') + + pending_ops = get_operations(client) + assert len(pending_ops) == 1 + assert len(pending_ops[0]['contents']) == 1 + + # Write the transaction to a file + file = get_filename(SINGLETON_OPERATIONS) + with open(file, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"http://localhost:{PORT}/{file}", + '--ignore-node-mempool', + ], + ) + + sandbox.client(0).rpc('get', '/chains/main/blocks/head') + balance1 = client.get_mutez_balance(sender) + assert balance0 - balance1 == session['difference'] + # cleanup the generated file + os.remove(file) + + +# The 5 bootstrap accounts +ALL_BOOTSTRAP_ACCOUNTS = [f'bootstrap{i + 1}' for i in range(5)] + + +@pytest.mark.incremental +class TestBakerExternalOperations: + """Test adding an external operations source (file) {}to a baker daemon""" + + def test_init(self, sandbox: Sandbox): + sandbox.add_node(0, params=constants.NODE_PARAMS) + parameters = protocol.get_parameters() + parameters['minimal_block_delay'] = "1" + parameters["delay_increment_per_round"] = "1" + protocol.activate( + sandbox.client(0), + parameters=parameters, + activate_in_the_past=False, + ) + + def test_gen_operations(self, sandbox: Sandbox, session: dict): + """Generate a transfer operation and save it to a file""" + client = sandbox.client(0) + client.multibake(args=['--minimal-timestamp']) + client.transfer(3, 'bootstrap1', 'bootstrap3') + client.multibake(args=['--minimal-timestamp']) + + client.multibake(args=['--minimal-timestamp']) + + # We are now at level 2, next block at level 4 + level = client.get_level() + session['level'] = level + assert level == 4 + assert len(get_operations(client)) == 0 + time.sleep(3) + session['transfer_value'] = 2 + client.transfer(session['transfer_value'], 'bootstrap1', 'bootstrap3') + + pending_ops = get_operations(client) + + # Write the transaction to a file + filename = get_filename(SINGLETON_OPERATIONS) + session['operations_file'] = filename + with open(filename, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + def test_terminate_sandbox(self, sandbox: Sandbox): + """Cleanup the node's mempool. Forget about the last transfer""" + sandbox.node(0).terminate() + # let the node end gracefully before restarting + time.sleep(1) + + def test_baker(self, sandbox: Sandbox, session: dict): + """Restart the node and add a baker daemon""" + sandbox.node(0).run() + assert sandbox.client(0).check_node_listening() + assert os.path.isfile(session['operations_file']) + + sandbox.add_baker( + 0, + ALL_BOOTSTRAP_ACCOUNTS, + proto=protocol.DAEMON, + log_levels=constants.TENDERBAKE_BAKER_LOG_LEVELS, + run_params=['--operation-pool', session['operations_file']], + ) + + @pytest.mark.timeout(30) + def test_wait_until_high_enough_level( + self, sandbox: Sandbox, session: dict + ): + """Wait until we have seen enough blocks. + This should not take much time.""" + while sandbox.client(0).get_level() < 2 * session['level']: + time.sleep(1) + + def test_check_block_baked(self, sandbox: Sandbox, session: dict): + """Check that block exactly contains the operations that we put into + our operations file""" + expected_level = session['level'] + block = sandbox.client(0).rpc( + 'get', f'/chains/main/blocks/{expected_level}' + ) + manager_ops = block['operations'][3] + assert len(manager_ops) == 1 + assert int( + manager_ops[0]['contents'][0]['amount'] + ) == utils.mutez_of_tez(session['transfer_value']) + + def test_check_block_after_baked(self, sandbox: Sandbox, session: dict): + """Check that block is empty of operations""" + level = session['level'] + 1 + block = sandbox.client(0).rpc('get', f'/chains/main/blocks/{level}') + assert only_has_endorsements(block['operations']) + + # cleanup the operation file + os.remove(session['operations_file']) diff --git a/tests_python/tests_alpha/operations_files/empty_operations.json b/tests_python/tests_alpha/operations_files/empty_operations.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/tests_python/tests_alpha/operations_files/empty_operations.json @@ -0,0 +1 @@ +[] diff --git a/tests_python/tests_alpha/test_baker_operations_cli_options.py b/tests_python/tests_alpha/test_baker_operations_cli_options.py new file mode 100644 index 0000000000..378e7f7269 --- /dev/null +++ b/tests_python/tests_alpha/test_baker_operations_cli_options.py @@ -0,0 +1,370 @@ +"""Simple tests to check support for the following operations-related options +for baking + - --ignore-node-mempool + - --operation-pool [file|uri] +""" + + +import os +import os.path +import json +import time + +from http.server import HTTPServer, SimpleHTTPRequestHandler +from multiprocessing import Process + +from typing import List, Any + +import pytest + +from client.client import Client +from tools import constants, utils +from launchers.sandbox import Sandbox +from . import protocol + +PORT = 12121 +OPERATIONS_FILES_DIRECTORY = "operations_files" +EMPTY_OPERATIONS = "empty_operations" +ABSENT_OPERATIONS = "this_file_should_not_exist" +SINGLETON_OPERATIONS = "singleton_operations" +TEST_DIR = "tests_alpha" + + +class MyHttpServer: + """Simple HTTP server launching in a separate process""" + + def __init__(self): + server_address = ('localhost', PORT) + httpd = HTTPServer(server_address, SimpleHTTPRequestHandler) + process = Process(target=httpd.serve_forever, args=()) + self.process = process + self.server = httpd + + def run(self): + self.process.start() + + def close(self): + self.server.server_close() + self.process.terminate() + + +@pytest.fixture +def http_server(): + server = MyHttpServer() + server.run() + yield server + server.close() + + +def get_filename(basename: str) -> str: + return os.path.join( + TEST_DIR, OPERATIONS_FILES_DIRECTORY, f"{basename}.json" + ) + + +class TestIgnoreNodeMempool: + def test_ignore(self, client: Client): + """Check that a transfer injected into the node is dutifully ignored + when baking with --ignore-node-mempool + """ + sender = "bootstrap4" + balance0 = client.get_balance(sender) + client.transfer(2, sender, 'bootstrap5') + utils.bake( + client, bake_args=['--minimal-timestamp', "--ignore-node-mempool"] + ) + balance1 = client.get_balance(sender) + # Make sure the operations has not been included, indirectly through + # balance checks + assert balance1 == balance0 + assert client.get_level() == 2 + + def test_no_ignore(self, client: Client): + """Check that a transfer injected, then ignored, can be injected at the + next block""" + sender = "bootstrap4" + balance0 = client.get_balance(sender) + utils.bake(client, bake_args=['--minimal-timestamp']) + balance1 = client.get_balance(sender) + assert balance1 != balance0 + assert client.get_level() == 3 + + +def all_empty(lls: List[List[Any]]) -> bool: + return all(map(lambda l: len(l) == 0, lls)) + + +def only_has_endorsements(lls: List[List[Any]]) -> bool: + return all(map(lambda x: x[0] == 0 or len(x[1]) == 0, enumerate(lls))) + + +def mempool_to_operations(mempool): + def to_op(applied_op): + operation = {} + operation['branch'] = applied_op['branch'] + operation['contents'] = applied_op['contents'] + operation['signature'] = applied_op['signature'] + return operation + + return [to_op(applied_op) for applied_op in mempool['applied']] + + +def get_operations(client: Client) -> List[dict]: + return mempool_to_operations(client.get_mempool()) + + +class TestExternalOperations: + def test_bake_empty_operations_file(self, client: Client): + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + get_filename(EMPTY_OPERATIONS), + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert all_empty(head['operations']) + + # http_server is a fixture that auto- runs and closes said HTTP server + # pylint: disable=W0613 + def test_bake_empty_operations_http(self, client: Client, http_server): + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"http://localhost:{PORT}/{get_filename(EMPTY_OPERATIONS)}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert only_has_endorsements(head['operations']) + + def test_bake_absent_operations_file(self, client: Client): + """The absent resource should simply be ignored.""" + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"{ABSENT_OPERATIONS}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert only_has_endorsements(head['operations']) + + # pylint: disable=W0613 + def test_bake_absent_operations_http(self, client: Client, http_server): + """The absent resource should simply be ignored.""" + level = client.get_level() + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + # any fake URL would do here + f"http://localhost:{PORT}/{ABSENT_OPERATIONS}", + ], + ) + assert client.get_level() == level + 1 + head = client.get_head() + assert only_has_endorsements(head['operations']) + + def test_bake_singleton_operations_file_pre( + self, client: Client, session: dict + ): + """Construct a transaction over the current state, and bake it. + Store it into the context to serves as a dynamic oracle for the next + steps. + """ + sender = 'bootstrap2' + balance0 = client.get_mutez_balance(sender) + session['amount'] = 2 + client.transfer(session['amount'], sender, 'bootstrap3') + + # Baking + utils.bake(client, bake_args=['--minimal-timestamp']) + balance1 = client.get_mutez_balance(sender) + session['difference'] = balance0 - balance1 + assert session['difference'] >= session['amount'] + utils.bake(client) + + def test_bake_singleton_operations_file( + self, client: Client, session: dict + ): + """Construct a transaction over the current state, put it into a file, + and bake it into the chain through --operation-pool option. + + This additionally compares the balance to a normal transfer (through the + node's mempool) to check that there is no observable difference in + behaviors between passing through a node's mempool or a hand-rolled + operations file. + """ + sender = 'bootstrap4' + balance0 = client.get_mutez_balance(sender) + client.transfer(session['amount'], sender, 'bootstrap3') + + pending_ops = get_operations(client) + assert len(pending_ops) == 1 + assert len(pending_ops[0]['contents']) == 1 + + # Write the transaction to a file + file = get_filename(SINGLETON_OPERATIONS) + with open(file, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + # Baking + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + file, + '--ignore-node-mempool', + ], + ) + balance1 = client.get_mutez_balance(sender) + assert balance0 - balance1 == session['difference'] + # cleanup the generated file + os.remove(file) + + # pylint: disable=W0613 + def test_bake_singleton_operations_http( + self, client: Client, sandbox: Sandbox, session: dict, http_server + ): + # Restart + sandbox.node(0).terminate() + sandbox.node(0).run() + client.check_node_listening() + + sender = 'bootstrap2' + balance0 = client.get_mutez_balance(sender) + client.transfer(session['amount'], sender, 'bootstrap3') + + pending_ops = get_operations(client) + assert len(pending_ops) == 1 + assert len(pending_ops[0]['contents']) == 1 + + # Write the transaction to a file + file = get_filename(SINGLETON_OPERATIONS) + with open(file, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + utils.bake( + client, + bake_args=[ + '--minimal-timestamp', + "--operation-pool", + f"http://localhost:{PORT}/{file}", + '--ignore-node-mempool', + ], + ) + + sandbox.client(0).rpc('get', '/chains/main/blocks/head') + balance1 = client.get_mutez_balance(sender) + assert balance0 - balance1 == session['difference'] + # cleanup the generated file + os.remove(file) + + +# The 5 bootstrap accounts +ALL_BOOTSTRAP_ACCOUNTS = [f'bootstrap{i + 1}' for i in range(5)] + + +@pytest.mark.incremental +class TestBakerExternalOperations: + """Test adding an external operations source (file) {}to a baker daemon""" + + def test_init(self, sandbox: Sandbox): + sandbox.add_node(0, params=constants.NODE_PARAMS) + parameters = protocol.get_parameters() + parameters['minimal_block_delay'] = "1" + parameters["delay_increment_per_round"] = "1" + protocol.activate( + sandbox.client(0), + parameters=parameters, + activate_in_the_past=False, + ) + + def test_gen_operations(self, sandbox: Sandbox, session: dict): + """Generate a transfer operation and save it to a file""" + client = sandbox.client(0) + client.multibake(args=['--minimal-timestamp']) + client.transfer(3, 'bootstrap1', 'bootstrap3') + client.multibake(args=['--minimal-timestamp']) + + client.multibake(args=['--minimal-timestamp']) + + # We are now at level 2, next block at level 4 + level = client.get_level() + session['level'] = level + assert level == 4 + assert len(get_operations(client)) == 0 + time.sleep(3) + session['transfer_value'] = 2 + client.transfer(session['transfer_value'], 'bootstrap1', 'bootstrap3') + + pending_ops = get_operations(client) + + # Write the transaction to a file + filename = get_filename(SINGLETON_OPERATIONS) + session['operations_file'] = filename + with open(filename, 'w') as fdesc: + fdesc.write(json.dumps(pending_ops)) + + def test_terminate_sandbox(self, sandbox: Sandbox): + """Cleanup the node's mempool. Forget about the last transfer""" + sandbox.node(0).terminate() + # let the node end gracefully before restarting + time.sleep(1) + + def test_baker(self, sandbox: Sandbox, session: dict): + """Restart the node and add a baker daemon""" + sandbox.node(0).run() + assert sandbox.client(0).check_node_listening() + assert os.path.isfile(session['operations_file']) + + sandbox.add_baker( + 0, + ALL_BOOTSTRAP_ACCOUNTS, + proto=protocol.DAEMON, + log_levels=constants.TENDERBAKE_BAKER_LOG_LEVELS, + run_params=['--operation-pool', session['operations_file']], + ) + + @pytest.mark.timeout(30) + def test_wait_until_high_enough_level( + self, sandbox: Sandbox, session: dict + ): + """Wait until we have seen enough blocks. + This should not take much time.""" + while sandbox.client(0).get_level() < 2 * session['level']: + time.sleep(1) + + def test_check_block_baked(self, sandbox: Sandbox, session: dict): + """Check that block exactly contains the operations that we put into + our operations file""" + expected_level = session['level'] + block = sandbox.client(0).rpc( + 'get', f'/chains/main/blocks/{expected_level}' + ) + manager_ops = block['operations'][3] + assert len(manager_ops) == 1 + assert int( + manager_ops[0]['contents'][0]['amount'] + ) == utils.mutez_of_tez(session['transfer_value']) + + def test_check_block_after_baked(self, sandbox: Sandbox, session: dict): + """Check that block is empty of operations""" + level = session['level'] + 1 + block = sandbox.client(0).rpc('get', f'/chains/main/blocks/{level}') + assert only_has_endorsements(block['operations']) + + # cleanup the operation file + os.remove(session['operations_file']) diff --git a/tezt/_regressions/rpc/alpha.client.mempool.out b/tezt/_regressions/rpc/alpha.client.mempool.out index ac756eef9f..90b82711fd 100644 --- a/tezt/_regressions/rpc/alpha.client.mempool.out +++ b/tezt/_regressions/rpc/alpha.client.mempool.out @@ -1,7 +1,7 @@ tezt/_regressions/rpc/alpha.client.mempool.out curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=true&outdated=true&branch_delayed=true&refused=true&branch_refused=true' -[{"hash":"[OPERATION_HASH]","protocol":"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK","branch":"[BRANCH_HASH]","contents":[{"kind":"endorsement","slot":10,"level":2,"round":10,"block_payload_hash":"[BLOCK_PAYLOAD_HASH]"}],"signature":"[SIGNATURE]"}] +[] [{"hash":"[OPERATION_HASH]","protocol":"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"branch","id":"proto.alpha.contract.counter_in_the_past","contract":"[PUBLIC_KEY_HASH]","expected":"2","found":"1"}]}] [{"hash":"[OPERATION_HASH]","protocol":"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"5","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.alpha.contract.counter_in_the_future","contract":"[PUBLIC_KEY_HASH]","expected":"1","found":"5"}]}] [{"hash":"[OPERATION_HASH]","protocol":"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"0","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"}] @@ -34,20 +34,7 @@ curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=t "error": [ { "kind": "permanent", "id": "proto.alpha.prefilter.fees_too_low" } ] } ] ], - "outdated": - [ [ "[OPERATION_HASH]", - { "protocol": "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK", - "branch": "[BRANCH_HASH]", - "contents": - [ { "kind": "endorsement", "slot": 10, "level": 2, "round": 10, - "block_payload_hash": - "[BLOCK_PAYLOAD_HASH]" } ], - "signature": - "[SIGNATURE]", - "error": - [ { "kind": "outdated", - "id": "proto.alpha.consensus_operation_for_old_level", - "expected": 4, "provided": 2 } ] } ] ], + "outdated": [], "branch_refused": [ [ "[OPERATION_HASH]", { "protocol": "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK", diff --git a/tezt/_regressions/rpc/alpha.proxy.mempool.out b/tezt/_regressions/rpc/alpha.proxy.mempool.out index 0a15c549af..8addbd726d 100644 --- a/tezt/_regressions/rpc/alpha.proxy.mempool.out +++ b/tezt/_regressions/rpc/alpha.proxy.mempool.out @@ -1,7 +1,7 @@ tezt/_regressions/rpc/alpha.proxy.mempool.out curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=true&outdated=true&branch_delayed=true&refused=true&branch_refused=true' -[{"hash":"[OPERATION_HASH]","protocol":"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK","branch":"[BRANCH_HASH]","contents":[{"kind":"endorsement","slot":10,"level":2,"round":10,"block_payload_hash":"[BLOCK_PAYLOAD_HASH]"}],"signature":"[SIGNATURE]"}] +[] [{"hash":"[OPERATION_HASH]","protocol":"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"branch","id":"proto.alpha.contract.counter_in_the_past","contract":"[PUBLIC_KEY_HASH]","expected":"2","found":"1"}]}] [{"hash":"[OPERATION_HASH]","protocol":"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"5","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.alpha.contract.counter_in_the_future","contract":"[PUBLIC_KEY_HASH]","expected":"1","found":"5"}]}] [{"hash":"[OPERATION_HASH]","protocol":"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"0","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"}] @@ -35,20 +35,7 @@ protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaAL "error": [ { "kind": "permanent", "id": "proto.alpha.prefilter.fees_too_low" } ] } ] ], - "outdated": - [ [ "[OPERATION_HASH]", - { "protocol": "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK", - "branch": "[BRANCH_HASH]", - "contents": - [ { "kind": "endorsement", "slot": 10, "level": 2, "round": 10, - "block_payload_hash": - "[BLOCK_PAYLOAD_HASH]" } ], - "signature": - "[SIGNATURE]", - "error": - [ { "kind": "outdated", - "id": "proto.alpha.consensus_operation_for_old_level", - "expected": 4, "provided": 2 } ] } ] ], + "outdated": [], "branch_refused": [ [ "[OPERATION_HASH]", { "protocol": "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK", diff --git a/tezt/_regressions/rpc/granada.client.mempool.out b/tezt/_regressions/rpc/granada.client.mempool.out new file mode 100644 index 0000000000..0b9c07405d --- /dev/null +++ b/tezt/_regressions/rpc/granada.client.mempool.out @@ -0,0 +1,5678 @@ +tezt/_regressions/rpc/granada.client.mempool.out + +curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=true&outdated=true&branch_delayed=true&refused=true&branch_refused=true' +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"endorsement_with_slot","endorsement":{"branch":"[BRANCH_HASH]","operations":{"kind":"endorsement","level":3},"signature":"[SIGNATURE]"},"slot":3}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.010-PtGRANAD.prefilter.outdated_endorsement"}]}] +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"branch","id":"proto.010-PtGRANAD.contract.counter_in_the_past","contract":"[PUBLIC_KEY_HASH]","expected":"2","found":"1"}]}] +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"5","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.010-PtGRANAD.contract.counter_in_the_future","contract":"[PUBLIC_KEY_HASH]","expected":"1","found":"5"}]}] +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"0","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"}] +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"}] + +./tezos-client rpc get /chains/main/mempool/pending_operations +{ "applied": + [ { "hash": "[OPERATION_HASH]", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "transaction", + "source": "[PUBLIC_KEY_HASH]", + "fee": "1000", "counter": "1", "gas_limit": "1040", + "storage_limit": "257", "amount": "1000000", + "destination": "[PUBLIC_KEY_HASH]" } ], + "signature": + "[SIGNATURE]" } ], + "refused": + [ [ "[OPERATION_HASH]", + { "protocol": "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "transaction", + "source": "[PUBLIC_KEY_HASH]", "fee": "0", + "counter": "1", "gas_limit": "1040", "storage_limit": "257", + "amount": "1000000", + "destination": "[PUBLIC_KEY_HASH]" } ], + "signature": + "[SIGNATURE]", + "error": + [ { "kind": "permanent", + "id": "proto.010-PtGRANAD.prefilter.fees_too_low" } ] } ] ], + "outdated": + [ [ "[OPERATION_HASH]", + { "protocol": "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "endorsement_with_slot", + "endorsement": + { "branch": + "[BRANCH_HASH]", + "operations": { "kind": "endorsement", "level": 3 }, + "signature": + "[SIGNATURE]" }, + "slot": 3 } ], + "signature": + "[SIGNATURE]", + "error": + [ { "kind": "temporary", + "id": "proto.010-PtGRANAD.prefilter.outdated_endorsement" } ] } ] ], + "branch_refused": + [ [ "[OPERATION_HASH]", + { "protocol": "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "transaction", + "source": "[PUBLIC_KEY_HASH]", + "fee": "1000", "counter": "1", "gas_limit": "1040", + "storage_limit": "257", "amount": "1000000", + "destination": "[PUBLIC_KEY_HASH]" } ], + "signature": + "[SIGNATURE]", + "error": + [ { "kind": "branch", + "id": "proto.010-PtGRANAD.contract.counter_in_the_past", + "contract": "[PUBLIC_KEY_HASH]", + "expected": "2", "found": "1" } ] } ] ], + "branch_delayed": + [ [ "[OPERATION_HASH]", + { "protocol": "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "transaction", + "source": "[PUBLIC_KEY_HASH]", + "fee": "1000", "counter": "5", "gas_limit": "1040", + "storage_limit": "257", "amount": "1000000", + "destination": "[PUBLIC_KEY_HASH]" } ], + "signature": + "[SIGNATURE]", + "error": + [ { "kind": "temporary", + "id": "proto.010-PtGRANAD.contract.counter_in_the_future", + "contract": "[PUBLIC_KEY_HASH]", + "expected": "1", "found": "5" } ] } ] ], "unprocessed": [] } + +curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=true&outdated=true&branch_delayed=true&refused=true&branch_refused=true' +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"},{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"0","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"permanent","id":"proto.010-PtGRANAD.prefilter.fees_too_low"}]},{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"branch","id":"proto.010-PtGRANAD.contract.counter_in_the_past","contract":"[PUBLIC_KEY_HASH]","expected":"2","found":"1"}]},{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"5","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.010-PtGRANAD.contract.counter_in_the_future","contract":"[PUBLIC_KEY_HASH]","expected":"1","found":"5"}]}] + +./tezos-client rpc get /chains/main/mempool/filter +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client rpc get '/chains/main/mempool/filter?include_default=true' +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client rpc get '/chains/main/mempool/filter?include_default=false' +{} + +./tezos-client rpc post /chains/main/mempool/filter with '{ + "minimal_fees": "50", + "minimal_nanotez_per_gas_unit": [ + "201", + "5" + ], + "minimal_nanotez_per_byte": [ + "56", + "3" + ], + "allow_script_failure": false +}' +{ "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], + "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false } + +./tezos-client rpc get /chains/main/mempool/filter +{ "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], + "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false } + +./tezos-client rpc get '/chains/main/mempool/filter?include_default=true' +{ "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], + "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false } + +./tezos-client rpc get '/chains/main/mempool/filter?include_default=false' +{ "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], + "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false } + +./tezos-client rpc post /chains/main/mempool/filter with '{ + "minimal_fees": "200", + "allow_script_failure": true +}' +{ "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client rpc get /chains/main/mempool/filter +{ "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client rpc get '/chains/main/mempool/filter?include_default=true' +{ "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client rpc get '/chains/main/mempool/filter?include_default=false' +{ "minimal_fees": "200" } + +./tezos-client rpc post /chains/main/mempool/filter with '{}' +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client rpc get /chains/main/mempool/filter +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client rpc get '/chains/main/mempool/filter?include_default=true' +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client rpc get '/chains/main/mempool/filter?include_default=false' +{} + +curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' +{ + "static": { + "subdirs": { + "suffixes": [ + { + "name": "ban_operation", + "tree": { + "static": { + "post_service": { + "meth": "POST", + "path": [ + "ban_operation" + ], + "description": "Remove an operation from the mempool if present, reverting its effect if it was applied. Add it to the set of banned operations to prevent it from being fetched/processed/injected in the future. Note: If the baker has already received the operation, then it's necessary to restart it to flush the operation from it.", + "query": [], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/Operation_hash", + "definitions": { + "Operation_hash": { + "title": "A Tezos operation ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "unistring": { + "title": "Universal string representation", + "description": "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "invalid_utf8_string": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } + }, + "required": [ + "invalid_utf8_string" + ], + "additionalProperties": false + } + ] + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "name": "Operation_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "filter", + "tree": { + "static": { + "get_service": { + "meth": "GET", + "path": [ + "filter" + ], + "description": "Get the configuration of the mempool filter. The minimal_fees are in mutez. Each field minimal_nanotez_per_xxx is a rational number given as a numerator and a denominator, e.g. \"minimal_nanotez_per_gas_unit\": [ \"100\", \"1\" ].", + "query": [ + { + "name": "include_default", + "description": "Show fields equal to their default value (set by default)", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + } + ], + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + }, + "post_service": { + "meth": "POST", + "path": [ + "filter" + ], + "description": "Set the configuration of the mempool filter. **If any of the fields is absent from the input JSON, then it is set to the default value for this field (i.e. its value in the default configuration), even if it previously had a different value.** If the input JSON does not describe a valid configuration, then the configuration is left unchanged. Also return the new configuration (which may differ from the input if it had omitted fields or was invalid). You may call [./tezos-client rpc get '/chains/main/mempool/filter?include_default=true'] to see an example of JSON describing a valid configuration.", + "query": [], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "monitor_operations", + "tree": { + "static": { + "get_service": { + "meth": "GET", + "path": [ + "monitor_operations" + ], + "description": "Monitor the mempool operations.", + "query": [ + { + "name": "applied", + "description": "Include applied operations (set by default)", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + }, + { + "name": "refused", + "description": "Include refused operations", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + }, + { + "name": "outdated", + "description": "Include outdated operations", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + }, + { + "name": "branch_refused", + "description": "Include branch refused operations", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + }, + { + "name": "branch_delayed", + "description": "Include branch delayed operations (set by default)", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + } + ], + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error_opt" + } + }, + "required": [ + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + }, + "definitions": { + "010-PtGRANAD.block_header.alpha.full_header": { + "title": "Shell header", + "description": "Block header's shell-related content. It contains information such as the block level, its predecessor and timestamp.", + "type": "object", + "properties": { + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proto": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "predecessor": { + "$ref": "#/definitions/block_hash" + }, + "timestamp": { + "$ref": "#/definitions/timestamp.protocol" + }, + "validation_pass": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "operations_hash": { + "$ref": "#/definitions/Operation_list_list_hash" + }, + "fitness": { + "$ref": "#/definitions/fitness" + }, + "context": { + "$ref": "#/definitions/Context_hash" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "proof_of_work_nonce": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + }, + "seed_nonce_hash": { + "$ref": "#/definitions/cycle_nonce" + }, + "liquidity_baking_escape_vote": { + "type": "boolean" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "liquidity_baking_escape_vote", + "proof_of_work_nonce", + "priority", + "context", + "fitness", + "operations_hash", + "validation_pass", + "timestamp", + "predecessor", + "proto", + "level" + ], + "additionalProperties": false + }, + "010-PtGRANAD.contract_id": { + "title": "A contract handle", + "description": "A contract notation as given to an RPC or inside scripts. Can be a base58 implicit contract hash or a base58 originated contract hash.", + "$ref": "#/definitions/unistring" + }, + "010-PtGRANAD.entrypoint": { + "title": "entrypoint", + "description": "Named entrypoint to a Michelson smart contract", + "oneOf": [ + { + "title": "default", + "type": "string", + "enum": [ + "default" + ] + }, + { + "title": "root", + "type": "string", + "enum": [ + "root" + ] + }, + { + "title": "do", + "type": "string", + "enum": [ + "do" + ] + }, + { + "title": "set_delegate", + "type": "string", + "enum": [ + "set_delegate" + ] + }, + { + "title": "remove_delegate", + "type": "string", + "enum": [ + "remove_delegate" + ] + }, + { + "title": "named", + "type": "string" + } + ] + }, + "010-PtGRANAD.inlined.endorsement": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "branch": { + "$ref": "#/definitions/block_hash" + }, + "operations": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement.contents" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "operations", + "branch" + ], + "additionalProperties": false + }, + "010-PtGRANAD.inlined.endorsement.contents": { + "oneOf": [ + { + "title": "Endorsement", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + } + }, + "required": [ + "level", + "kind" + ], + "additionalProperties": false + } + ] + }, + "010-PtGRANAD.michelson.v1.primitives": { + "type": "string", + "enum": [ + "ADD", + "IF_LEFT", + "SELF_ADDRESS", + "KECCAK", + "Elt", + "TOTAL_VOTING_POWER", + "VOTING_POWER", + "SHA256", + "option", + "Right", + "LE", + "set", + "ticket", + "storage", + "SOURCE", + "False", + "SHA512", + "BALANCE", + "EMPTY_BIG_MAP", + "operation", + "NOT", + "or", + "TRANSFER_TOKENS", + "DUG", + "COMPARE", + "SHA3", + "chain_id", + "MUL", + "signature", + "AMOUNT", + "DIP", + "ABS", + "list", + "LT", + "bls12_381_g1", + "CONCAT", + "UNIT", + "SWAP", + "DUP", + "bytes", + "CAR", + "CONS", + "NEQ", + "GET", + "Left", + "nat", + "UNPAIR", + "DROP", + "NEG", + "CONTRACT", + "big_map", + "ADDRESS", + "True", + "parameter", + "never", + "EQ", + "Pair", + "UPDATE", + "string", + "AND", + "timestamp", + "READ_TICKET", + "unit", + "CHECK_SIGNATURE", + "IF_CONS", + "INT", + "CREATE_CONTRACT", + "MEM", + "PAIRING_CHECK", + "BLAKE2B", + "bool", + "STEPS_TO_QUOTA", + "sapling_transaction", + "XOR", + "SELF", + "LEVEL", + "IMPLICIT_ACCOUNT", + "PACK", + "NEVER", + "NOW", + "RENAME", + "GET_AND_UPDATE", + "SENDER", + "map", + "mutez", + "SLICE", + "CDR", + "OR", + "sapling_state", + "CHAIN_ID", + "ISNAT", + "SPLIT_TICKET", + "SOME", + "LOOP", + "SAPLING_VERIFY_UPDATE", + "Unit", + "Some", + "UNPACK", + "IF_NONE", + "TICKET", + "ITER", + "EXEC", + "NONE", + "LEFT", + "address", + "JOIN_TICKETS", + "LSR", + "None", + "lambda", + "EMPTY_SET", + "MAP", + "int", + "bls12_381_g2", + "LSL", + "RIGHT", + "contract", + "SIZE", + "pair", + "IF", + "bls12_381_fr", + "PAIR", + "LAMBDA", + "HASH_KEY", + "PUSH", + "LOOP_LEFT", + "SAPLING_EMPTY_STATE", + "key", + "DIG", + "EMPTY_MAP", + "APPLY", + "CAST", + "key_hash", + "FAILWITH", + "GT", + "NIL", + "SUB", + "EDIV", + "CREATE_ACCOUNT", + "GE", + "SET_DELEGATE", + "code" + ] + }, + "010-PtGRANAD.mutez": { + "$ref": "#/definitions/positive_bignum" + }, + "010-PtGRANAD.operation.alpha.contents": { + "oneOf": [ + { + "title": "Endorsement", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + } + }, + "required": [ + "level", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Seed_nonce_revelation", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "seed_nonce_revelation" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "nonce": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "nonce", + "level", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Endorsement_with_slot", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement_with_slot" + ] + }, + "endorsement": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "slot": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "required": [ + "slot", + "endorsement", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Double_endorsement_evidence", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "double_endorsement_evidence" + ] + }, + "op1": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "op2": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "slot": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "required": [ + "slot", + "op2", + "op1", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Double_baking_evidence", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "double_baking_evidence" + ] + }, + "bh1": { + "$ref": "#/definitions/010-PtGRANAD.block_header.alpha.full_header" + }, + "bh2": { + "$ref": "#/definitions/010-PtGRANAD.block_header.alpha.full_header" + } + }, + "required": [ + "bh2", + "bh1", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Activate_account", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "activate_account" + ] + }, + "pkh": { + "$ref": "#/definitions/Ed25519.Public_key_hash" + }, + "secret": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "secret", + "pkh", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Proposals", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "proposals" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "period": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proposals": { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol_hash" + } + } + }, + "required": [ + "proposals", + "period", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Ballot", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "ballot" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "period": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proposal": { + "$ref": "#/definitions/Protocol_hash" + }, + "ballot": { + "type": "string", + "enum": [ + "nay", + "yay", + "pass" + ] + } + }, + "required": [ + "ballot", + "proposal", + "period", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Reveal", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "reveal" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "public_key": { + "$ref": "#/definitions/Signature.Public_key" + } + }, + "required": [ + "public_key", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Transaction", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "transaction" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "amount": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "destination": { + "$ref": "#/definitions/010-PtGRANAD.contract_id" + }, + "parameters": { + "type": "object", + "properties": { + "entrypoint": { + "$ref": "#/definitions/010-PtGRANAD.entrypoint" + }, + "value": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "value", + "entrypoint" + ], + "additionalProperties": false + } + }, + "required": [ + "destination", + "amount", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Origination", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "origination" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "balance": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "delegate": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "script": { + "$ref": "#/definitions/010-PtGRANAD.scripted.contracts" + } + }, + "required": [ + "script", + "balance", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Delegation", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "delegation" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "delegate": { + "$ref": "#/definitions/Signature.Public_key_hash" + } + }, + "required": [ + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Failing_noop", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "failing_noop" + ] + }, + "arbitrary": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "arbitrary", + "kind" + ], + "additionalProperties": false + } + ] + }, + "010-PtGRANAD.scripted.contracts": { + "type": "object", + "properties": { + "code": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + }, + "storage": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "storage", + "code" + ], + "additionalProperties": false + }, + "Context_hash": { + "title": "A hash of context (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Ed25519.Public_key_hash": { + "title": "An Ed25519 public key hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Operation_hash": { + "title": "A Tezos operation ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Operation_list_list_hash": { + "title": "A list of list of operations (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Protocol_hash": { + "title": "A Tezos protocol ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature": { + "title": "A Ed25519, Secp256k1 or P256 signature (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature.Public_key": { + "title": "A Ed25519, Secp256k1, or P256 public key (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature.Public_key_hash": { + "title": "A Ed25519, Secp256k1, or P256 public key hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "bignum": { + "title": "Big number", + "description": "Decimal representation of a big number", + "type": "string" + }, + "block_hash": { + "title": "A block identifier (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "cycle_nonce": { + "title": "A nonce hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "error_opt": { + "description": "An optional error-trace (None indicates no error). The full list of errors is available with the global RPC `GET errors`" + }, + "fitness": { + "title": "Block fitness", + "description": "The fitness, or score, of a block, that allow the Tezos to decide which chain is the best. A fitness value is a list of byte sequences. They are compared as follows: shortest lists are smaller; lists of the same length are compared according to the lexicographical order.", + "type": "array", + "items": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "micheline.010-PtGRANAD.michelson_v1.expression": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + }, + "positive_bignum": { + "title": "Positive big number", + "description": "Decimal representation of a positive big number", + "type": "string" + }, + "timestamp.protocol": { + "description": "A timestamp as seen by the protocol: second-level precision, epoch based.", + "$ref": "#/definitions/unistring" + }, + "unistring": { + "title": "Universal string representation", + "description": "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "invalid_utf8_string": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } + }, + "required": [ + "invalid_utf8_string" + ], + "additionalProperties": false + } + ] + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "layout": { + "name": "X_0", + "kind": "Ref" + }, + "kind": "Seq" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [ + { + "description": { + "title": "010-PtGRANAD.scripted.contracts" + }, + "encoding": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "code", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "storage", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.contract_id" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "size": 22, + "kind": "Float" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Signature.Public_key_hash", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Implicit" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Contract_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "padding", + "layout": { + "kind": "Padding" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Originated" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.entrypoint" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "kind": "Dynamic" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "default" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "root" + }, + { + "tag": 2, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "do" + }, + { + "tag": 3, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "set_delegate" + }, + { + "tag": 4, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "remove_delegate" + }, + { + "tag": 255, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint8" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ], + "name": "named" + } + ] + } + }, + { + "description": { + "title": "X_1" + }, + "encoding": { + "fields": [ + { + "name": "entrypoint", + "layout": { + "name": "010-PtGRANAD.entrypoint", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "value", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "N.t", + "description": "A variable-length sequence of bytes encoding a Zarith natural number. Each byte has a running unary size bit: the most significant bit of each byte indicates whether this is the last byte in the sequence (0) or whether the sequence continues (1). Size bits ignored, the data is the binary representation of the number in little-endian order." + }, + "encoding": { + "fields": [ + { + "name": "N.t", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "public_key" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "kind": "Dynamic" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Ed25519.Public_key", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Ed25519" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Secp256k1.Public_key", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 33, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Secp256k1" + }, + { + "tag": 2, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "P256.Public_key", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 33, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "P256" + } + ] + } + }, + { + "description": { + "title": "public_key_hash" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "size": 21, + "kind": "Float" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Ed25519.Public_key_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Ed25519" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Secp256k1.Public_key_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Secp256k1" + }, + { + "tag": 2, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "P256.Public_key_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "P256" + } + ] + } + }, + { + "description": { + "title": "fitness.elem" + }, + "encoding": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "Bytes" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.block_header.alpha.full_header" + }, + "encoding": { + "fields": [ + { + "name": "level", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "proto", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "predecessor", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "timestamp", + "layout": { + "size": "Int64", + "kind": "Int" + }, + "data_kind": { + "size": 8, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "validation_pass", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "operations_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "name": "fitness", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "fitness", + "layout": { + "layout": { + "name": "fitness.elem", + "kind": "Ref" + }, + "kind": "Seq" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "name": "context", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "priority", + "layout": { + "size": "Uint16", + "kind": "Int" + }, + "data_kind": { + "size": 2, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "proof_of_work_nonce", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 8, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "option_indicator", + "name": "seed_nonce_hash" + }, + { + "name": "seed_nonce_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "liquidity_baking_escape_vote", + "layout": { + "kind": "Bool" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "signature", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 64, + "kind": "Float" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.inlined.endorsement.contents" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "size": 5, + "kind": "Float" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "level", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Endorsement" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.inlined.endorsement" + }, + "encoding": { + "fields": [ + { + "name": "branch", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "operations", + "layout": { + "name": "010-PtGRANAD.inlined.endorsement.contents", + "kind": "Ref" + }, + "data_kind": { + "size": 5, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "signature", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.operation.alpha.contents" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "kind": "Dynamic" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "level", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Endorsement" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "level", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "nonce", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Seed_nonce_revelation" + }, + { + "tag": 2, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "op1", + "layout": { + "name": "010-PtGRANAD.inlined.endorsement", + "kind": "Ref" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "op2", + "layout": { + "name": "010-PtGRANAD.inlined.endorsement", + "kind": "Ref" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "name": "slot", + "layout": { + "size": "Uint16", + "kind": "Int" + }, + "data_kind": { + "size": 2, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Double_endorsement_evidence" + }, + { + "tag": 3, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "bh1", + "layout": { + "name": "010-PtGRANAD.block_header.alpha.full_header", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "bh2", + "layout": { + "name": "010-PtGRANAD.block_header.alpha.full_header", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ], + "name": "Double_baking_evidence" + }, + { + "tag": 4, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "pkh", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "secret", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Activate_account" + }, + { + "tag": 5, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "period", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "proposals", + "layout": { + "layout": { + "kind": "Bytes" + }, + "kind": "Seq" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ], + "name": "Proposals" + }, + { + "tag": 6, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "period", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "proposal", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "ballot", + "layout": { + "size": "Int8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Ballot" + }, + { + "tag": 10, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "endorsement", + "layout": { + "name": "010-PtGRANAD.inlined.endorsement", + "kind": "Ref" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "name": "slot", + "layout": { + "size": "Uint16", + "kind": "Int" + }, + "data_kind": { + "size": 2, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Endorsement_with_slot" + }, + { + "tag": 17, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "arbitrary", + "layout": { + "kind": "String" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ], + "name": "Failing_noop" + }, + { + "tag": 107, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "public_key", + "layout": { + "name": "public_key", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ], + "name": "Reveal" + }, + { + "tag": 108, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "amount", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "destination", + "layout": { + "name": "010-PtGRANAD.contract_id", + "kind": "Ref" + }, + "data_kind": { + "size": 22, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "option_indicator", + "name": "parameters" + }, + { + "name": "parameters", + "layout": { + "name": "X_1", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ], + "name": "Transaction" + }, + { + "tag": 109, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "balance", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "option_indicator", + "name": "delegate" + }, + { + "name": "delegate", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "script", + "layout": { + "name": "010-PtGRANAD.scripted.contracts", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ], + "name": "Origination" + }, + { + "tag": 110, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "option_indicator", + "name": "delegate" + }, + { + "name": "delegate", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Delegation" + } + ] + } + }, + { + "description": { + "title": "X_0" + }, + "encoding": { + "fields": [ + { + "name": "hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "branch", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 2, + "size": "Uint30" + }, + { + "name": "contents", + "layout": { + "layout": { + "name": "010-PtGRANAD.operation.alpha.contents", + "kind": "Ref" + }, + "kind": "Seq" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "name": "signature", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 64, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "name": "error_opt", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "error", + "layout": { + "kind": "String" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ] + } + } + ] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "pending_operations", + "tree": { + "static": { + "get_service": { + "meth": "GET", + "path": [ + "pending_operations" + ], + "description": "List the prevalidated operations.", + "query": [ + { + "name": "version", + "kind": { + "single": { + "id": "single", + "name": "int" + } + } + } + ], + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "oneOf": [ + { + "title": "new_encoding_pending_operations", + "type": "object", + "properties": { + "applied": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "contents", + "branch", + "hash" + ], + "additionalProperties": false + } + }, + "refused": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + }, + "outdated": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + }, + "branch_refused": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + }, + "branch_delayed": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + }, + "unprocessed": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + } + }, + "required": [ + "unprocessed", + "branch_delayed", + "branch_refused", + "outdated", + "refused", + "applied" + ], + "additionalProperties": false + }, + { + "title": "old_encoding_pending_operations", + "type": "object", + "properties": { + "applied": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "contents", + "branch", + "hash" + ], + "additionalProperties": false + } + }, + "refused": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + } + ], + "additionalItems": false + } + }, + "outdated": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + } + ], + "additionalItems": false + } + }, + "branch_refused": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + } + ], + "additionalItems": false + } + }, + "branch_delayed": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + } + ], + "additionalItems": false + } + }, + "unprocessed": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "$ref": "#/definitions/next_operation" + } + ], + "additionalItems": false + } + } + }, + "required": [ + "unprocessed", + "branch_delayed", + "branch_refused", + "outdated", + "refused", + "applied" + ], + "additionalProperties": false + } + ], + "definitions": { + "010-PtGRANAD.block_header.alpha.full_header": { + "title": "Shell header", + "description": "Block header's shell-related content. It contains information such as the block level, its predecessor and timestamp.", + "type": "object", + "properties": { + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proto": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "predecessor": { + "$ref": "#/definitions/block_hash" + }, + "timestamp": { + "$ref": "#/definitions/timestamp.protocol" + }, + "validation_pass": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "operations_hash": { + "$ref": "#/definitions/Operation_list_list_hash" + }, + "fitness": { + "$ref": "#/definitions/fitness" + }, + "context": { + "$ref": "#/definitions/Context_hash" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "proof_of_work_nonce": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + }, + "seed_nonce_hash": { + "$ref": "#/definitions/cycle_nonce" + }, + "liquidity_baking_escape_vote": { + "type": "boolean" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "liquidity_baking_escape_vote", + "proof_of_work_nonce", + "priority", + "context", + "fitness", + "operations_hash", + "validation_pass", + "timestamp", + "predecessor", + "proto", + "level" + ], + "additionalProperties": false + }, + "010-PtGRANAD.contract_id": { + "title": "A contract handle", + "description": "A contract notation as given to an RPC or inside scripts. Can be a base58 implicit contract hash or a base58 originated contract hash.", + "$ref": "#/definitions/unistring" + }, + "010-PtGRANAD.entrypoint": { + "title": "entrypoint", + "description": "Named entrypoint to a Michelson smart contract", + "oneOf": [ + { + "title": "default", + "type": "string", + "enum": [ + "default" + ] + }, + { + "title": "root", + "type": "string", + "enum": [ + "root" + ] + }, + { + "title": "do", + "type": "string", + "enum": [ + "do" + ] + }, + { + "title": "set_delegate", + "type": "string", + "enum": [ + "set_delegate" + ] + }, + { + "title": "remove_delegate", + "type": "string", + "enum": [ + "remove_delegate" + ] + }, + { + "title": "named", + "type": "string" + } + ] + }, + "010-PtGRANAD.inlined.endorsement": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "branch": { + "$ref": "#/definitions/block_hash" + }, + "operations": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement.contents" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "operations", + "branch" + ], + "additionalProperties": false + }, + "010-PtGRANAD.inlined.endorsement.contents": { + "oneOf": [ + { + "title": "Endorsement", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + } + }, + "required": [ + "level", + "kind" + ], + "additionalProperties": false + } + ] + }, + "010-PtGRANAD.michelson.v1.primitives": { + "type": "string", + "enum": [ + "ADD", + "IF_LEFT", + "SELF_ADDRESS", + "KECCAK", + "Elt", + "TOTAL_VOTING_POWER", + "VOTING_POWER", + "SHA256", + "option", + "Right", + "LE", + "set", + "ticket", + "storage", + "SOURCE", + "False", + "SHA512", + "BALANCE", + "EMPTY_BIG_MAP", + "operation", + "NOT", + "or", + "TRANSFER_TOKENS", + "DUG", + "COMPARE", + "SHA3", + "chain_id", + "MUL", + "signature", + "AMOUNT", + "DIP", + "ABS", + "list", + "LT", + "bls12_381_g1", + "CONCAT", + "UNIT", + "SWAP", + "DUP", + "bytes", + "CAR", + "CONS", + "NEQ", + "GET", + "Left", + "nat", + "UNPAIR", + "DROP", + "NEG", + "CONTRACT", + "big_map", + "ADDRESS", + "True", + "parameter", + "never", + "EQ", + "Pair", + "UPDATE", + "string", + "AND", + "timestamp", + "READ_TICKET", + "unit", + "CHECK_SIGNATURE", + "IF_CONS", + "INT", + "CREATE_CONTRACT", + "MEM", + "PAIRING_CHECK", + "BLAKE2B", + "bool", + "STEPS_TO_QUOTA", + "sapling_transaction", + "XOR", + "SELF", + "LEVEL", + "IMPLICIT_ACCOUNT", + "PACK", + "NEVER", + "NOW", + "RENAME", + "GET_AND_UPDATE", + "SENDER", + "map", + "mutez", + "SLICE", + "CDR", + "OR", + "sapling_state", + "CHAIN_ID", + "ISNAT", + "SPLIT_TICKET", + "SOME", + "LOOP", + "SAPLING_VERIFY_UPDATE", + "Unit", + "Some", + "UNPACK", + "IF_NONE", + "TICKET", + "ITER", + "EXEC", + "NONE", + "LEFT", + "address", + "JOIN_TICKETS", + "LSR", + "None", + "lambda", + "EMPTY_SET", + "MAP", + "int", + "bls12_381_g2", + "LSL", + "RIGHT", + "contract", + "SIZE", + "pair", + "IF", + "bls12_381_fr", + "PAIR", + "LAMBDA", + "HASH_KEY", + "PUSH", + "LOOP_LEFT", + "SAPLING_EMPTY_STATE", + "key", + "DIG", + "EMPTY_MAP", + "APPLY", + "CAST", + "key_hash", + "FAILWITH", + "GT", + "NIL", + "SUB", + "EDIV", + "CREATE_ACCOUNT", + "GE", + "SET_DELEGATE", + "code" + ] + }, + "010-PtGRANAD.mutez": { + "$ref": "#/definitions/positive_bignum" + }, + "010-PtGRANAD.operation.alpha.contents": { + "oneOf": [ + { + "title": "Endorsement", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + } + }, + "required": [ + "level", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Seed_nonce_revelation", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "seed_nonce_revelation" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "nonce": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "nonce", + "level", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Endorsement_with_slot", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement_with_slot" + ] + }, + "endorsement": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "slot": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "required": [ + "slot", + "endorsement", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Double_endorsement_evidence", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "double_endorsement_evidence" + ] + }, + "op1": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "op2": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "slot": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "required": [ + "slot", + "op2", + "op1", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Double_baking_evidence", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "double_baking_evidence" + ] + }, + "bh1": { + "$ref": "#/definitions/010-PtGRANAD.block_header.alpha.full_header" + }, + "bh2": { + "$ref": "#/definitions/010-PtGRANAD.block_header.alpha.full_header" + } + }, + "required": [ + "bh2", + "bh1", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Activate_account", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "activate_account" + ] + }, + "pkh": { + "$ref": "#/definitions/Ed25519.Public_key_hash" + }, + "secret": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "secret", + "pkh", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Proposals", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "proposals" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "period": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proposals": { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol_hash" + } + } + }, + "required": [ + "proposals", + "period", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Ballot", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "ballot" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "period": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proposal": { + "$ref": "#/definitions/Protocol_hash" + }, + "ballot": { + "type": "string", + "enum": [ + "nay", + "yay", + "pass" + ] + } + }, + "required": [ + "ballot", + "proposal", + "period", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Reveal", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "reveal" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "public_key": { + "$ref": "#/definitions/Signature.Public_key" + } + }, + "required": [ + "public_key", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Transaction", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "transaction" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "amount": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "destination": { + "$ref": "#/definitions/010-PtGRANAD.contract_id" + }, + "parameters": { + "type": "object", + "properties": { + "entrypoint": { + "$ref": "#/definitions/010-PtGRANAD.entrypoint" + }, + "value": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "value", + "entrypoint" + ], + "additionalProperties": false + } + }, + "required": [ + "destination", + "amount", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Origination", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "origination" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "balance": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "delegate": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "script": { + "$ref": "#/definitions/010-PtGRANAD.scripted.contracts" + } + }, + "required": [ + "script", + "balance", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Delegation", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "delegation" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "delegate": { + "$ref": "#/definitions/Signature.Public_key_hash" + } + }, + "required": [ + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Failing_noop", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "failing_noop" + ] + }, + "arbitrary": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "arbitrary", + "kind" + ], + "additionalProperties": false + } + ] + }, + "010-PtGRANAD.scripted.contracts": { + "type": "object", + "properties": { + "code": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + }, + "storage": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "storage", + "code" + ], + "additionalProperties": false + }, + "Context_hash": { + "title": "A hash of context (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Ed25519.Public_key_hash": { + "title": "An Ed25519 public key hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Operation_hash": { + "title": "A Tezos operation ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Operation_list_list_hash": { + "title": "A list of list of operations (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Protocol_hash": { + "title": "A Tezos protocol ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature": { + "title": "A Ed25519, Secp256k1 or P256 signature (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature.Public_key": { + "title": "A Ed25519, Secp256k1, or P256 public key (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature.Public_key_hash": { + "title": "A Ed25519, Secp256k1, or P256 public key hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "bignum": { + "title": "Big number", + "description": "Decimal representation of a big number", + "type": "string" + }, + "block_hash": { + "title": "A block identifier (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "cycle_nonce": { + "title": "A nonce hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + }, + "fitness": { + "title": "Block fitness", + "description": "The fitness, or score, of a block, that allow the Tezos to decide which chain is the best. A fitness value is a list of byte sequences. They are compared as follows: shortest lists are smaller; lists of the same length are compared according to the lexicographical order.", + "type": "array", + "items": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "micheline.010-PtGRANAD.michelson_v1.expression": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + }, + "next_operation": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + }, + "positive_bignum": { + "title": "Positive big number", + "description": "Decimal representation of a positive big number", + "type": "string" + }, + "timestamp.protocol": { + "description": "A timestamp as seen by the protocol: second-level precision, epoch based.", + "$ref": "#/definitions/unistring" + }, + "unistring": { + "title": "Universal string representation", + "description": "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "invalid_utf8_string": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } + }, + "required": [ + "invalid_utf8_string" + ], + "additionalProperties": false + } + ] + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "name": "X_0", + "kind": "Ref" + }, + "kind": "anon", + "data_kind": { + "kind": "Dynamic" + } + } + ] + }, + "fields": [ + { + "description": { + "title": "X_0" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "kind": "Dynamic" + }, + "cases": [] + } + } + ] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "request_operations", + "tree": { + "static": { + "post_service": { + "meth": "POST", + "path": [ + "request_operations" + ], + "description": "Request the operations of our peers or a specific peer if specified via a query parameter.", + "query": [ + { + "name": "peer_id", + "kind": { + "optional": { + "id": "single", + "name": "peer_id", + "descr": "A cryptographic node identity (Base58Check-encoded)" + } + } + } + ], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "unban_all_operations", + "tree": { + "static": { + "post_service": { + "meth": "POST", + "path": [ + "unban_all_operations" + ], + "description": "Clear the set of banned operations.", + "query": [], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "unban_operation", + "tree": { + "static": { + "post_service": { + "meth": "POST", + "path": [ + "unban_operation" + ], + "description": "Remove an operation from the set of banned operations (nothing happens if it was not banned).", + "query": [], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/Operation_hash", + "definitions": { + "Operation_hash": { + "title": "A Tezos operation ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "unistring": { + "title": "Universal string representation", + "description": "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "invalid_utf8_string": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } + }, + "required": [ + "invalid_utf8_string" + ], + "additionalProperties": false + } + ] + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "name": "Operation_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + } + ] + } + } +} diff --git a/tezt/_regressions/rpc/granada.proxy.mempool.out b/tezt/_regressions/rpc/granada.proxy.mempool.out new file mode 100644 index 0000000000..3b79ab63de --- /dev/null +++ b/tezt/_regressions/rpc/granada.proxy.mempool.out @@ -0,0 +1,5694 @@ +tezt/_regressions/rpc/granada.proxy.mempool.out + +curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=true&outdated=true&branch_delayed=true&refused=true&branch_refused=true' +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"endorsement_with_slot","endorsement":{"branch":"[BRANCH_HASH]","operations":{"kind":"endorsement","level":3},"signature":"[SIGNATURE]"},"slot":3}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.010-PtGRANAD.prefilter.outdated_endorsement"}]}] +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"branch","id":"proto.010-PtGRANAD.contract.counter_in_the_past","contract":"[PUBLIC_KEY_HASH]","expected":"2","found":"1"}]}] +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"5","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.010-PtGRANAD.contract.counter_in_the_future","contract":"[PUBLIC_KEY_HASH]","expected":"1","found":"5"}]}] +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"0","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"}] +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"}] + +./tezos-client --mode proxy rpc get /chains/main/mempool/pending_operations +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "applied": + [ { "hash": "[OPERATION_HASH]", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "transaction", + "source": "[PUBLIC_KEY_HASH]", + "fee": "1000", "counter": "1", "gas_limit": "1040", + "storage_limit": "257", "amount": "1000000", + "destination": "[PUBLIC_KEY_HASH]" } ], + "signature": + "[SIGNATURE]" } ], + "refused": + [ [ "[OPERATION_HASH]", + { "protocol": "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "transaction", + "source": "[PUBLIC_KEY_HASH]", "fee": "0", + "counter": "1", "gas_limit": "1040", "storage_limit": "257", + "amount": "1000000", + "destination": "[PUBLIC_KEY_HASH]" } ], + "signature": + "[SIGNATURE]", + "error": + [ { "kind": "permanent", + "id": "proto.010-PtGRANAD.prefilter.fees_too_low" } ] } ] ], + "outdated": + [ [ "[OPERATION_HASH]", + { "protocol": "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "endorsement_with_slot", + "endorsement": + { "branch": + "[BRANCH_HASH]", + "operations": { "kind": "endorsement", "level": 3 }, + "signature": + "[SIGNATURE]" }, + "slot": 3 } ], + "signature": + "[SIGNATURE]", + "error": + [ { "kind": "temporary", + "id": "proto.010-PtGRANAD.prefilter.outdated_endorsement" } ] } ] ], + "branch_refused": + [ [ "[OPERATION_HASH]", + { "protocol": "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "transaction", + "source": "[PUBLIC_KEY_HASH]", + "fee": "1000", "counter": "1", "gas_limit": "1040", + "storage_limit": "257", "amount": "1000000", + "destination": "[PUBLIC_KEY_HASH]" } ], + "signature": + "[SIGNATURE]", + "error": + [ { "kind": "branch", + "id": "proto.010-PtGRANAD.contract.counter_in_the_past", + "contract": "[PUBLIC_KEY_HASH]", + "expected": "2", "found": "1" } ] } ] ], + "branch_delayed": + [ [ "[OPERATION_HASH]", + { "protocol": "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV", + "branch": "[BRANCH_HASH]", + "contents": + [ { "kind": "transaction", + "source": "[PUBLIC_KEY_HASH]", + "fee": "1000", "counter": "5", "gas_limit": "1040", + "storage_limit": "257", "amount": "1000000", + "destination": "[PUBLIC_KEY_HASH]" } ], + "signature": + "[SIGNATURE]", + "error": + [ { "kind": "temporary", + "id": "proto.010-PtGRANAD.contract.counter_in_the_future", + "contract": "[PUBLIC_KEY_HASH]", + "expected": "1", "found": "5" } ] } ] ], "unprocessed": [] } + +curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=true&outdated=true&branch_delayed=true&refused=true&branch_refused=true' +[{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"},{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"0","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"permanent","id":"proto.010-PtGRANAD.prefilter.fees_too_low"}]},{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"branch","id":"proto.010-PtGRANAD.contract.counter_in_the_past","contract":"[PUBLIC_KEY_HASH]","expected":"2","found":"1"}]},{"hash":"[OPERATION_HASH]","protocol":"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"5","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.010-PtGRANAD.contract.counter_in_the_future","contract":"[PUBLIC_KEY_HASH]","expected":"1","found":"5"}]}] + +./tezos-client --mode proxy rpc get /chains/main/mempool/filter +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=true' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=false' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{} + +./tezos-client --mode proxy rpc post /chains/main/mempool/filter with '{ + "minimal_fees": "50", + "minimal_nanotez_per_gas_unit": [ + "201", + "5" + ], + "minimal_nanotez_per_byte": [ + "56", + "3" + ], + "allow_script_failure": false +}' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], + "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false } + +./tezos-client --mode proxy rpc get /chains/main/mempool/filter +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], + "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false } + +./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=true' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], + "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false } + +./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=false' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], + "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false } + +./tezos-client --mode proxy rpc post /chains/main/mempool/filter with '{ + "minimal_fees": "200", + "allow_script_failure": true +}' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client --mode proxy rpc get /chains/main/mempool/filter +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=true' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=false' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "200" } + +./tezos-client --mode proxy rpc post /chains/main/mempool/filter with '{}' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client --mode proxy rpc get /chains/main/mempool/filter +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=true' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{ "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], + "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true } + +./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=false' +protocol of proxy unspecified, using the node's protocol: PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV +{} + +curl -s 'http://localhost:16385/describe/chains/main/mempool?recurse=yes' +{ + "static": { + "subdirs": { + "suffixes": [ + { + "name": "ban_operation", + "tree": { + "static": { + "post_service": { + "meth": "POST", + "path": [ + "ban_operation" + ], + "description": "Remove an operation from the mempool if present, reverting its effect if it was applied. Add it to the set of banned operations to prevent it from being fetched/processed/injected in the future. Note: If the baker has already received the operation, then it's necessary to restart it to flush the operation from it.", + "query": [], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/Operation_hash", + "definitions": { + "Operation_hash": { + "title": "A Tezos operation ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "unistring": { + "title": "Universal string representation", + "description": "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "invalid_utf8_string": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } + }, + "required": [ + "invalid_utf8_string" + ], + "additionalProperties": false + } + ] + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "name": "Operation_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "filter", + "tree": { + "static": { + "get_service": { + "meth": "GET", + "path": [ + "filter" + ], + "description": "Get the configuration of the mempool filter. The minimal_fees are in mutez. Each field minimal_nanotez_per_xxx is a rational number given as a numerator and a denominator, e.g. \"minimal_nanotez_per_gas_unit\": [ \"100\", \"1\" ].", + "query": [ + { + "name": "include_default", + "description": "Show fields equal to their default value (set by default)", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + } + ], + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + }, + "post_service": { + "meth": "POST", + "path": [ + "filter" + ], + "description": "Set the configuration of the mempool filter. **If any of the fields is absent from the input JSON, then it is set to the default value for this field (i.e. its value in the default configuration), even if it previously had a different value.** If the input JSON does not describe a valid configuration, then the configuration is left unchanged. Also return the new configuration (which may differ from the input if it had omitted fields or was invalid). You may call [./tezos-client rpc get '/chains/main/mempool/filter?include_default=true'] to see an example of JSON describing a valid configuration.", + "query": [], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "monitor_operations", + "tree": { + "static": { + "get_service": { + "meth": "GET", + "path": [ + "monitor_operations" + ], + "description": "Monitor the mempool operations.", + "query": [ + { + "name": "applied", + "description": "Include applied operations (set by default)", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + }, + { + "name": "refused", + "description": "Include refused operations", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + }, + { + "name": "outdated", + "description": "Include outdated operations", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + }, + { + "name": "branch_refused", + "description": "Include branch refused operations", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + }, + { + "name": "branch_delayed", + "description": "Include branch delayed operations (set by default)", + "kind": { + "single": { + "id": "single", + "name": "bool" + } + } + } + ], + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error_opt" + } + }, + "required": [ + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + }, + "definitions": { + "010-PtGRANAD.block_header.alpha.full_header": { + "title": "Shell header", + "description": "Block header's shell-related content. It contains information such as the block level, its predecessor and timestamp.", + "type": "object", + "properties": { + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proto": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "predecessor": { + "$ref": "#/definitions/block_hash" + }, + "timestamp": { + "$ref": "#/definitions/timestamp.protocol" + }, + "validation_pass": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "operations_hash": { + "$ref": "#/definitions/Operation_list_list_hash" + }, + "fitness": { + "$ref": "#/definitions/fitness" + }, + "context": { + "$ref": "#/definitions/Context_hash" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "proof_of_work_nonce": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + }, + "seed_nonce_hash": { + "$ref": "#/definitions/cycle_nonce" + }, + "liquidity_baking_escape_vote": { + "type": "boolean" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "liquidity_baking_escape_vote", + "proof_of_work_nonce", + "priority", + "context", + "fitness", + "operations_hash", + "validation_pass", + "timestamp", + "predecessor", + "proto", + "level" + ], + "additionalProperties": false + }, + "010-PtGRANAD.contract_id": { + "title": "A contract handle", + "description": "A contract notation as given to an RPC or inside scripts. Can be a base58 implicit contract hash or a base58 originated contract hash.", + "$ref": "#/definitions/unistring" + }, + "010-PtGRANAD.entrypoint": { + "title": "entrypoint", + "description": "Named entrypoint to a Michelson smart contract", + "oneOf": [ + { + "title": "default", + "type": "string", + "enum": [ + "default" + ] + }, + { + "title": "root", + "type": "string", + "enum": [ + "root" + ] + }, + { + "title": "do", + "type": "string", + "enum": [ + "do" + ] + }, + { + "title": "set_delegate", + "type": "string", + "enum": [ + "set_delegate" + ] + }, + { + "title": "remove_delegate", + "type": "string", + "enum": [ + "remove_delegate" + ] + }, + { + "title": "named", + "type": "string" + } + ] + }, + "010-PtGRANAD.inlined.endorsement": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "branch": { + "$ref": "#/definitions/block_hash" + }, + "operations": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement.contents" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "operations", + "branch" + ], + "additionalProperties": false + }, + "010-PtGRANAD.inlined.endorsement.contents": { + "oneOf": [ + { + "title": "Endorsement", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + } + }, + "required": [ + "level", + "kind" + ], + "additionalProperties": false + } + ] + }, + "010-PtGRANAD.michelson.v1.primitives": { + "type": "string", + "enum": [ + "ADD", + "IF_LEFT", + "SELF_ADDRESS", + "KECCAK", + "Elt", + "TOTAL_VOTING_POWER", + "VOTING_POWER", + "SHA256", + "option", + "Right", + "LE", + "set", + "ticket", + "storage", + "SOURCE", + "False", + "SHA512", + "BALANCE", + "EMPTY_BIG_MAP", + "operation", + "NOT", + "or", + "TRANSFER_TOKENS", + "DUG", + "COMPARE", + "SHA3", + "chain_id", + "MUL", + "signature", + "AMOUNT", + "DIP", + "ABS", + "list", + "LT", + "bls12_381_g1", + "CONCAT", + "UNIT", + "SWAP", + "DUP", + "bytes", + "CAR", + "CONS", + "NEQ", + "GET", + "Left", + "nat", + "UNPAIR", + "DROP", + "NEG", + "CONTRACT", + "big_map", + "ADDRESS", + "True", + "parameter", + "never", + "EQ", + "Pair", + "UPDATE", + "string", + "AND", + "timestamp", + "READ_TICKET", + "unit", + "CHECK_SIGNATURE", + "IF_CONS", + "INT", + "CREATE_CONTRACT", + "MEM", + "PAIRING_CHECK", + "BLAKE2B", + "bool", + "STEPS_TO_QUOTA", + "sapling_transaction", + "XOR", + "SELF", + "LEVEL", + "IMPLICIT_ACCOUNT", + "PACK", + "NEVER", + "NOW", + "RENAME", + "GET_AND_UPDATE", + "SENDER", + "map", + "mutez", + "SLICE", + "CDR", + "OR", + "sapling_state", + "CHAIN_ID", + "ISNAT", + "SPLIT_TICKET", + "SOME", + "LOOP", + "SAPLING_VERIFY_UPDATE", + "Unit", + "Some", + "UNPACK", + "IF_NONE", + "TICKET", + "ITER", + "EXEC", + "NONE", + "LEFT", + "address", + "JOIN_TICKETS", + "LSR", + "None", + "lambda", + "EMPTY_SET", + "MAP", + "int", + "bls12_381_g2", + "LSL", + "RIGHT", + "contract", + "SIZE", + "pair", + "IF", + "bls12_381_fr", + "PAIR", + "LAMBDA", + "HASH_KEY", + "PUSH", + "LOOP_LEFT", + "SAPLING_EMPTY_STATE", + "key", + "DIG", + "EMPTY_MAP", + "APPLY", + "CAST", + "key_hash", + "FAILWITH", + "GT", + "NIL", + "SUB", + "EDIV", + "CREATE_ACCOUNT", + "GE", + "SET_DELEGATE", + "code" + ] + }, + "010-PtGRANAD.mutez": { + "$ref": "#/definitions/positive_bignum" + }, + "010-PtGRANAD.operation.alpha.contents": { + "oneOf": [ + { + "title": "Endorsement", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + } + }, + "required": [ + "level", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Seed_nonce_revelation", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "seed_nonce_revelation" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "nonce": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "nonce", + "level", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Endorsement_with_slot", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement_with_slot" + ] + }, + "endorsement": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "slot": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "required": [ + "slot", + "endorsement", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Double_endorsement_evidence", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "double_endorsement_evidence" + ] + }, + "op1": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "op2": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "slot": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "required": [ + "slot", + "op2", + "op1", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Double_baking_evidence", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "double_baking_evidence" + ] + }, + "bh1": { + "$ref": "#/definitions/010-PtGRANAD.block_header.alpha.full_header" + }, + "bh2": { + "$ref": "#/definitions/010-PtGRANAD.block_header.alpha.full_header" + } + }, + "required": [ + "bh2", + "bh1", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Activate_account", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "activate_account" + ] + }, + "pkh": { + "$ref": "#/definitions/Ed25519.Public_key_hash" + }, + "secret": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "secret", + "pkh", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Proposals", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "proposals" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "period": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proposals": { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol_hash" + } + } + }, + "required": [ + "proposals", + "period", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Ballot", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "ballot" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "period": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proposal": { + "$ref": "#/definitions/Protocol_hash" + }, + "ballot": { + "type": "string", + "enum": [ + "nay", + "yay", + "pass" + ] + } + }, + "required": [ + "ballot", + "proposal", + "period", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Reveal", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "reveal" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "public_key": { + "$ref": "#/definitions/Signature.Public_key" + } + }, + "required": [ + "public_key", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Transaction", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "transaction" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "amount": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "destination": { + "$ref": "#/definitions/010-PtGRANAD.contract_id" + }, + "parameters": { + "type": "object", + "properties": { + "entrypoint": { + "$ref": "#/definitions/010-PtGRANAD.entrypoint" + }, + "value": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "value", + "entrypoint" + ], + "additionalProperties": false + } + }, + "required": [ + "destination", + "amount", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Origination", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "origination" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "balance": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "delegate": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "script": { + "$ref": "#/definitions/010-PtGRANAD.scripted.contracts" + } + }, + "required": [ + "script", + "balance", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Delegation", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "delegation" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "delegate": { + "$ref": "#/definitions/Signature.Public_key_hash" + } + }, + "required": [ + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Failing_noop", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "failing_noop" + ] + }, + "arbitrary": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "arbitrary", + "kind" + ], + "additionalProperties": false + } + ] + }, + "010-PtGRANAD.scripted.contracts": { + "type": "object", + "properties": { + "code": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + }, + "storage": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "storage", + "code" + ], + "additionalProperties": false + }, + "Context_hash": { + "title": "A hash of context (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Ed25519.Public_key_hash": { + "title": "An Ed25519 public key hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Operation_hash": { + "title": "A Tezos operation ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Operation_list_list_hash": { + "title": "A list of list of operations (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Protocol_hash": { + "title": "A Tezos protocol ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature": { + "title": "A Ed25519, Secp256k1 or P256 signature (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature.Public_key": { + "title": "A Ed25519, Secp256k1, or P256 public key (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature.Public_key_hash": { + "title": "A Ed25519, Secp256k1, or P256 public key hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "bignum": { + "title": "Big number", + "description": "Decimal representation of a big number", + "type": "string" + }, + "block_hash": { + "title": "A block identifier (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "cycle_nonce": { + "title": "A nonce hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "error_opt": { + "description": "An optional error-trace (None indicates no error). The full list of errors is available with the global RPC `GET errors`" + }, + "fitness": { + "title": "Block fitness", + "description": "The fitness, or score, of a block, that allow the Tezos to decide which chain is the best. A fitness value is a list of byte sequences. They are compared as follows: shortest lists are smaller; lists of the same length are compared according to the lexicographical order.", + "type": "array", + "items": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "micheline.010-PtGRANAD.michelson_v1.expression": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + }, + "positive_bignum": { + "title": "Positive big number", + "description": "Decimal representation of a positive big number", + "type": "string" + }, + "timestamp.protocol": { + "description": "A timestamp as seen by the protocol: second-level precision, epoch based.", + "$ref": "#/definitions/unistring" + }, + "unistring": { + "title": "Universal string representation", + "description": "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "invalid_utf8_string": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } + }, + "required": [ + "invalid_utf8_string" + ], + "additionalProperties": false + } + ] + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "layout": { + "name": "X_0", + "kind": "Ref" + }, + "kind": "Seq" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [ + { + "description": { + "title": "010-PtGRANAD.scripted.contracts" + }, + "encoding": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "code", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "storage", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.contract_id" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "size": 22, + "kind": "Float" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Signature.Public_key_hash", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Implicit" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Contract_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "padding", + "layout": { + "kind": "Padding" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Originated" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.entrypoint" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "kind": "Dynamic" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "default" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "root" + }, + { + "tag": 2, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "do" + }, + { + "tag": 3, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "set_delegate" + }, + { + "tag": 4, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ], + "name": "remove_delegate" + }, + { + "tag": 255, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint8" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ], + "name": "named" + } + ] + } + }, + { + "description": { + "title": "X_1" + }, + "encoding": { + "fields": [ + { + "name": "entrypoint", + "layout": { + "name": "010-PtGRANAD.entrypoint", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "value", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "N.t", + "description": "A variable-length sequence of bytes encoding a Zarith natural number. Each byte has a running unary size bit: the most significant bit of each byte indicates whether this is the last byte in the sequence (0) or whether the sequence continues (1). Size bits ignored, the data is the binary representation of the number in little-endian order." + }, + "encoding": { + "fields": [ + { + "name": "N.t", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "public_key" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "kind": "Dynamic" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Ed25519.Public_key", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Ed25519" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Secp256k1.Public_key", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 33, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Secp256k1" + }, + { + "tag": 2, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "P256.Public_key", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 33, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "P256" + } + ] + } + }, + { + "description": { + "title": "public_key_hash" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "size": 21, + "kind": "Float" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Ed25519.Public_key_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Ed25519" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "Secp256k1.Public_key_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Secp256k1" + }, + { + "tag": 2, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "P256.Public_key_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "P256" + } + ] + } + }, + { + "description": { + "title": "fitness.elem" + }, + "encoding": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "Bytes" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.block_header.alpha.full_header" + }, + "encoding": { + "fields": [ + { + "name": "level", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "proto", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "predecessor", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "timestamp", + "layout": { + "size": "Int64", + "kind": "Int" + }, + "data_kind": { + "size": 8, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "validation_pass", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "operations_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "name": "fitness", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "fitness", + "layout": { + "layout": { + "name": "fitness.elem", + "kind": "Ref" + }, + "kind": "Seq" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "name": "context", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "priority", + "layout": { + "size": "Uint16", + "kind": "Int" + }, + "data_kind": { + "size": 2, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "proof_of_work_nonce", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 8, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "option_indicator", + "name": "seed_nonce_hash" + }, + { + "name": "seed_nonce_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "liquidity_baking_escape_vote", + "layout": { + "kind": "Bool" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "signature", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 64, + "kind": "Float" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.inlined.endorsement.contents" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "size": 5, + "kind": "Float" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "level", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Endorsement" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.inlined.endorsement" + }, + "encoding": { + "fields": [ + { + "name": "branch", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "operations", + "layout": { + "name": "010-PtGRANAD.inlined.endorsement.contents", + "kind": "Ref" + }, + "data_kind": { + "size": 5, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "signature", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ] + } + }, + { + "description": { + "title": "010-PtGRANAD.operation.alpha.contents" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "kind": "Dynamic" + }, + "cases": [ + { + "tag": 0, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "level", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Endorsement" + }, + { + "tag": 1, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "level", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "nonce", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Seed_nonce_revelation" + }, + { + "tag": 2, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "op1", + "layout": { + "name": "010-PtGRANAD.inlined.endorsement", + "kind": "Ref" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "op2", + "layout": { + "name": "010-PtGRANAD.inlined.endorsement", + "kind": "Ref" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "name": "slot", + "layout": { + "size": "Uint16", + "kind": "Int" + }, + "data_kind": { + "size": 2, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Double_endorsement_evidence" + }, + { + "tag": 3, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "bh1", + "layout": { + "name": "010-PtGRANAD.block_header.alpha.full_header", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "bh2", + "layout": { + "name": "010-PtGRANAD.block_header.alpha.full_header", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ], + "name": "Double_baking_evidence" + }, + { + "tag": 4, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "pkh", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "secret", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 20, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Activate_account" + }, + { + "tag": 5, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "period", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "proposals", + "layout": { + "layout": { + "kind": "Bytes" + }, + "kind": "Seq" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ], + "name": "Proposals" + }, + { + "tag": 6, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "period", + "layout": { + "size": "Int32", + "kind": "Int" + }, + "data_kind": { + "size": 4, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "proposal", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "ballot", + "layout": { + "size": "Int8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Ballot" + }, + { + "tag": 10, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "endorsement", + "layout": { + "name": "010-PtGRANAD.inlined.endorsement", + "kind": "Ref" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "name": "slot", + "layout": { + "size": "Uint16", + "kind": "Int" + }, + "data_kind": { + "size": 2, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Endorsement_with_slot" + }, + { + "tag": 17, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "arbitrary", + "layout": { + "kind": "String" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ], + "name": "Failing_noop" + }, + { + "tag": 107, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "public_key", + "layout": { + "name": "public_key", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ], + "name": "Reveal" + }, + { + "tag": 108, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "amount", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "destination", + "layout": { + "name": "010-PtGRANAD.contract_id", + "kind": "Ref" + }, + "data_kind": { + "size": 22, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "option_indicator", + "name": "parameters" + }, + { + "name": "parameters", + "layout": { + "name": "X_1", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ], + "name": "Transaction" + }, + { + "tag": 109, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "balance", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "option_indicator", + "name": "delegate" + }, + { + "name": "delegate", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "script", + "layout": { + "name": "010-PtGRANAD.scripted.contracts", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + } + ], + "name": "Origination" + }, + { + "tag": 110, + "fields": [ + { + "name": "Tag", + "layout": { + "size": "Uint8", + "kind": "Int" + }, + "data_kind": { + "size": 1, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "source", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + }, + { + "name": "fee", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "counter", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "gas_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "name": "storage_limit", + "layout": { + "name": "N.t", + "kind": "Ref" + }, + "data_kind": { + "kind": "Dynamic" + }, + "kind": "named" + }, + { + "kind": "option_indicator", + "name": "delegate" + }, + { + "name": "delegate", + "layout": { + "name": "public_key_hash", + "kind": "Ref" + }, + "data_kind": { + "size": 21, + "kind": "Float" + }, + "kind": "named" + } + ], + "name": "Delegation" + } + ] + } + }, + { + "description": { + "title": "X_0" + }, + "encoding": { + "fields": [ + { + "name": "hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "branch", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "num_fields": 2, + "size": "Uint30" + }, + { + "name": "contents", + "layout": { + "layout": { + "name": "010-PtGRANAD.operation.alpha.contents", + "kind": "Ref" + }, + "kind": "Seq" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + }, + { + "name": "signature", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 64, + "kind": "Float" + }, + "kind": "named" + }, + { + "kind": "dyn", + "name": "error_opt", + "num_fields": 1, + "size": "Uint30" + }, + { + "name": "error", + "layout": { + "kind": "String" + }, + "data_kind": { + "kind": "Variable" + }, + "kind": "named" + } + ] + } + } + ] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "pending_operations", + "tree": { + "static": { + "get_service": { + "meth": "GET", + "path": [ + "pending_operations" + ], + "description": "List the prevalidated operations.", + "query": [ + { + "name": "version", + "kind": { + "single": { + "id": "single", + "name": "int" + } + } + } + ], + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "oneOf": [ + { + "title": "new_encoding_pending_operations", + "type": "object", + "properties": { + "applied": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "contents", + "branch", + "hash" + ], + "additionalProperties": false + } + }, + "refused": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + }, + "outdated": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + }, + "branch_refused": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + }, + "branch_delayed": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + }, + "unprocessed": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "contents", + "branch", + "protocol", + "hash" + ], + "additionalProperties": false + } + } + }, + "required": [ + "unprocessed", + "branch_delayed", + "branch_refused", + "outdated", + "refused", + "applied" + ], + "additionalProperties": false + }, + { + "title": "old_encoding_pending_operations", + "type": "object", + "properties": { + "applied": { + "type": "array", + "items": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "hash": { + "$ref": "#/definitions/Operation_hash" + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "contents", + "branch", + "hash" + ], + "additionalProperties": false + } + }, + "refused": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + } + ], + "additionalItems": false + } + }, + "outdated": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + } + ], + "additionalItems": false + } + }, + "branch_refused": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + } + ], + "additionalItems": false + } + }, + "branch_delayed": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + }, + "error": { + "$ref": "#/definitions/error" + } + }, + "required": [ + "error", + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + } + ], + "additionalItems": false + } + }, + "unprocessed": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Operation_hash" + }, + { + "$ref": "#/definitions/next_operation" + } + ], + "additionalItems": false + } + } + }, + "required": [ + "unprocessed", + "branch_delayed", + "branch_refused", + "outdated", + "refused", + "applied" + ], + "additionalProperties": false + } + ], + "definitions": { + "010-PtGRANAD.block_header.alpha.full_header": { + "title": "Shell header", + "description": "Block header's shell-related content. It contains information such as the block level, its predecessor and timestamp.", + "type": "object", + "properties": { + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proto": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "predecessor": { + "$ref": "#/definitions/block_hash" + }, + "timestamp": { + "$ref": "#/definitions/timestamp.protocol" + }, + "validation_pass": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "operations_hash": { + "$ref": "#/definitions/Operation_list_list_hash" + }, + "fitness": { + "$ref": "#/definitions/fitness" + }, + "context": { + "$ref": "#/definitions/Context_hash" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "proof_of_work_nonce": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + }, + "seed_nonce_hash": { + "$ref": "#/definitions/cycle_nonce" + }, + "liquidity_baking_escape_vote": { + "type": "boolean" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "liquidity_baking_escape_vote", + "proof_of_work_nonce", + "priority", + "context", + "fitness", + "operations_hash", + "validation_pass", + "timestamp", + "predecessor", + "proto", + "level" + ], + "additionalProperties": false + }, + "010-PtGRANAD.contract_id": { + "title": "A contract handle", + "description": "A contract notation as given to an RPC or inside scripts. Can be a base58 implicit contract hash or a base58 originated contract hash.", + "$ref": "#/definitions/unistring" + }, + "010-PtGRANAD.entrypoint": { + "title": "entrypoint", + "description": "Named entrypoint to a Michelson smart contract", + "oneOf": [ + { + "title": "default", + "type": "string", + "enum": [ + "default" + ] + }, + { + "title": "root", + "type": "string", + "enum": [ + "root" + ] + }, + { + "title": "do", + "type": "string", + "enum": [ + "do" + ] + }, + { + "title": "set_delegate", + "type": "string", + "enum": [ + "set_delegate" + ] + }, + { + "title": "remove_delegate", + "type": "string", + "enum": [ + "remove_delegate" + ] + }, + { + "title": "named", + "type": "string" + } + ] + }, + "010-PtGRANAD.inlined.endorsement": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "branch": { + "$ref": "#/definitions/block_hash" + }, + "operations": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement.contents" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "operations", + "branch" + ], + "additionalProperties": false + }, + "010-PtGRANAD.inlined.endorsement.contents": { + "oneOf": [ + { + "title": "Endorsement", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + } + }, + "required": [ + "level", + "kind" + ], + "additionalProperties": false + } + ] + }, + "010-PtGRANAD.michelson.v1.primitives": { + "type": "string", + "enum": [ + "ADD", + "IF_LEFT", + "SELF_ADDRESS", + "KECCAK", + "Elt", + "TOTAL_VOTING_POWER", + "VOTING_POWER", + "SHA256", + "option", + "Right", + "LE", + "set", + "ticket", + "storage", + "SOURCE", + "False", + "SHA512", + "BALANCE", + "EMPTY_BIG_MAP", + "operation", + "NOT", + "or", + "TRANSFER_TOKENS", + "DUG", + "COMPARE", + "SHA3", + "chain_id", + "MUL", + "signature", + "AMOUNT", + "DIP", + "ABS", + "list", + "LT", + "bls12_381_g1", + "CONCAT", + "UNIT", + "SWAP", + "DUP", + "bytes", + "CAR", + "CONS", + "NEQ", + "GET", + "Left", + "nat", + "UNPAIR", + "DROP", + "NEG", + "CONTRACT", + "big_map", + "ADDRESS", + "True", + "parameter", + "never", + "EQ", + "Pair", + "UPDATE", + "string", + "AND", + "timestamp", + "READ_TICKET", + "unit", + "CHECK_SIGNATURE", + "IF_CONS", + "INT", + "CREATE_CONTRACT", + "MEM", + "PAIRING_CHECK", + "BLAKE2B", + "bool", + "STEPS_TO_QUOTA", + "sapling_transaction", + "XOR", + "SELF", + "LEVEL", + "IMPLICIT_ACCOUNT", + "PACK", + "NEVER", + "NOW", + "RENAME", + "GET_AND_UPDATE", + "SENDER", + "map", + "mutez", + "SLICE", + "CDR", + "OR", + "sapling_state", + "CHAIN_ID", + "ISNAT", + "SPLIT_TICKET", + "SOME", + "LOOP", + "SAPLING_VERIFY_UPDATE", + "Unit", + "Some", + "UNPACK", + "IF_NONE", + "TICKET", + "ITER", + "EXEC", + "NONE", + "LEFT", + "address", + "JOIN_TICKETS", + "LSR", + "None", + "lambda", + "EMPTY_SET", + "MAP", + "int", + "bls12_381_g2", + "LSL", + "RIGHT", + "contract", + "SIZE", + "pair", + "IF", + "bls12_381_fr", + "PAIR", + "LAMBDA", + "HASH_KEY", + "PUSH", + "LOOP_LEFT", + "SAPLING_EMPTY_STATE", + "key", + "DIG", + "EMPTY_MAP", + "APPLY", + "CAST", + "key_hash", + "FAILWITH", + "GT", + "NIL", + "SUB", + "EDIV", + "CREATE_ACCOUNT", + "GE", + "SET_DELEGATE", + "code" + ] + }, + "010-PtGRANAD.mutez": { + "$ref": "#/definitions/positive_bignum" + }, + "010-PtGRANAD.operation.alpha.contents": { + "oneOf": [ + { + "title": "Endorsement", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + } + }, + "required": [ + "level", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Seed_nonce_revelation", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "seed_nonce_revelation" + ] + }, + "level": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "nonce": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "nonce", + "level", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Endorsement_with_slot", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "endorsement_with_slot" + ] + }, + "endorsement": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "slot": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "required": [ + "slot", + "endorsement", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Double_endorsement_evidence", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "double_endorsement_evidence" + ] + }, + "op1": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "op2": { + "$ref": "#/definitions/010-PtGRANAD.inlined.endorsement" + }, + "slot": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "required": [ + "slot", + "op2", + "op1", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Double_baking_evidence", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "double_baking_evidence" + ] + }, + "bh1": { + "$ref": "#/definitions/010-PtGRANAD.block_header.alpha.full_header" + }, + "bh2": { + "$ref": "#/definitions/010-PtGRANAD.block_header.alpha.full_header" + } + }, + "required": [ + "bh2", + "bh1", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Activate_account", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "activate_account" + ] + }, + "pkh": { + "$ref": "#/definitions/Ed25519.Public_key_hash" + }, + "secret": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "secret", + "pkh", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Proposals", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "proposals" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "period": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proposals": { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol_hash" + } + } + }, + "required": [ + "proposals", + "period", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Ballot", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "ballot" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "period": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "proposal": { + "$ref": "#/definitions/Protocol_hash" + }, + "ballot": { + "type": "string", + "enum": [ + "nay", + "yay", + "pass" + ] + } + }, + "required": [ + "ballot", + "proposal", + "period", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Reveal", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "reveal" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "public_key": { + "$ref": "#/definitions/Signature.Public_key" + } + }, + "required": [ + "public_key", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Transaction", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "transaction" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "amount": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "destination": { + "$ref": "#/definitions/010-PtGRANAD.contract_id" + }, + "parameters": { + "type": "object", + "properties": { + "entrypoint": { + "$ref": "#/definitions/010-PtGRANAD.entrypoint" + }, + "value": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "value", + "entrypoint" + ], + "additionalProperties": false + } + }, + "required": [ + "destination", + "amount", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Origination", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "origination" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "balance": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "delegate": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "script": { + "$ref": "#/definitions/010-PtGRANAD.scripted.contracts" + } + }, + "required": [ + "script", + "balance", + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Delegation", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "delegation" + ] + }, + "source": { + "$ref": "#/definitions/Signature.Public_key_hash" + }, + "fee": { + "$ref": "#/definitions/010-PtGRANAD.mutez" + }, + "counter": { + "$ref": "#/definitions/positive_bignum" + }, + "gas_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "storage_limit": { + "$ref": "#/definitions/positive_bignum" + }, + "delegate": { + "$ref": "#/definitions/Signature.Public_key_hash" + } + }, + "required": [ + "storage_limit", + "gas_limit", + "counter", + "fee", + "source", + "kind" + ], + "additionalProperties": false + }, + { + "title": "Failing_noop", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "failing_noop" + ] + }, + "arbitrary": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "arbitrary", + "kind" + ], + "additionalProperties": false + } + ] + }, + "010-PtGRANAD.scripted.contracts": { + "type": "object", + "properties": { + "code": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + }, + "storage": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "storage", + "code" + ], + "additionalProperties": false + }, + "Context_hash": { + "title": "A hash of context (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Ed25519.Public_key_hash": { + "title": "An Ed25519 public key hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Operation_hash": { + "title": "A Tezos operation ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Operation_list_list_hash": { + "title": "A list of list of operations (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Protocol_hash": { + "title": "A Tezos protocol ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature": { + "title": "A Ed25519, Secp256k1 or P256 signature (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature.Public_key": { + "title": "A Ed25519, Secp256k1, or P256 public key (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "Signature.Public_key_hash": { + "title": "A Ed25519, Secp256k1, or P256 public key hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "bignum": { + "title": "Big number", + "description": "Decimal representation of a big number", + "type": "string" + }, + "block_hash": { + "title": "A block identifier (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "cycle_nonce": { + "title": "A nonce hash (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + }, + "fitness": { + "title": "Block fitness", + "description": "The fitness, or score, of a block, that allow the Tezos to decide which chain is the best. A fitness value is a list of byte sequences. They are compared as follows: shortest lists are smaller; lists of the same length are compared according to the lexicographical order.", + "type": "array", + "items": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "micheline.010-PtGRANAD.michelson_v1.expression": { + "oneOf": [ + { + "title": "Int", + "type": "object", + "properties": { + "int": { + "$ref": "#/definitions/bignum" + } + }, + "required": [ + "int" + ], + "additionalProperties": false + }, + { + "title": "String", + "type": "object", + "properties": { + "string": { + "$ref": "#/definitions/unistring" + } + }, + "required": [ + "string" + ], + "additionalProperties": false + }, + { + "title": "Bytes", + "type": "object", + "properties": { + "bytes": { + "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" + } + }, + "required": [ + "bytes" + ], + "additionalProperties": false + }, + { + "title": "Sequence", + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + { + "title": "Prim__generic", + "description": "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": { + "prim": { + "$ref": "#/definitions/010-PtGRANAD.michelson.v1.primitives" + }, + "args": { + "type": "array", + "items": { + "$ref": "#/definitions/micheline.010-PtGRANAD.michelson_v1.expression" + } + }, + "annots": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "prim" + ], + "additionalProperties": false + } + ] + }, + "next_operation": { + "description": "An operation's shell header.", + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV" + ] + }, + "branch": { + "$ref": "#/definitions/block_hash" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/definitions/010-PtGRANAD.operation.alpha.contents" + } + }, + "signature": { + "$ref": "#/definitions/Signature" + } + }, + "required": [ + "signature", + "contents", + "branch", + "protocol" + ], + "additionalProperties": false + }, + "positive_bignum": { + "title": "Positive big number", + "description": "Decimal representation of a positive big number", + "type": "string" + }, + "timestamp.protocol": { + "description": "A timestamp as seen by the protocol: second-level precision, epoch based.", + "$ref": "#/definitions/unistring" + }, + "unistring": { + "title": "Universal string representation", + "description": "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "invalid_utf8_string": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } + }, + "required": [ + "invalid_utf8_string" + ], + "additionalProperties": false + } + ] + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "name": "X_0", + "kind": "Ref" + }, + "kind": "anon", + "data_kind": { + "kind": "Dynamic" + } + } + ] + }, + "fields": [ + { + "description": { + "title": "X_0" + }, + "encoding": { + "tag_size": "Uint8", + "kind": { + "kind": "Dynamic" + }, + "cases": [] + } + } + ] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "request_operations", + "tree": { + "static": { + "post_service": { + "meth": "POST", + "path": [ + "request_operations" + ], + "description": "Request the operations of our peers or a specific peer if specified via a query parameter.", + "query": [ + { + "name": "peer_id", + "kind": { + "optional": { + "id": "single", + "name": "peer_id", + "descr": "A cryptographic node identity (Base58Check-encoded)" + } + } + } + ], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "unban_all_operations", + "tree": { + "static": { + "post_service": { + "meth": "POST", + "path": [ + "unban_all_operations" + ], + "description": "Clear the set of banned operations.", + "query": [], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + }, + { + "name": "unban_operation", + "tree": { + "static": { + "post_service": { + "meth": "POST", + "path": [ + "unban_operation" + ], + "description": "Remove an operation from the set of banned operations (nothing happens if it was not banned).", + "query": [], + "input": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/Operation_hash", + "definitions": { + "Operation_hash": { + "title": "A Tezos operation ID (Base58Check-encoded)", + "$ref": "#/definitions/unistring" + }, + "unistring": { + "title": "Universal string representation", + "description": "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "invalid_utf8_string": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } + }, + "required": [ + "invalid_utf8_string" + ], + "additionalProperties": false + } + ] + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "name": "Operation_hash", + "layout": { + "kind": "Bytes" + }, + "data_kind": { + "size": 32, + "kind": "Float" + }, + "kind": "named" + } + ] + }, + "fields": [] + } + }, + "output": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "layout": { + "kind": "Zero_width" + }, + "kind": "anon", + "data_kind": { + "size": 0, + "kind": "Float" + } + } + ] + }, + "fields": [] + } + }, + "error": { + "json_schema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "$ref": "#/definitions/error", + "definitions": { + "error": { + "description": "The full list of errors is available with the global RPC `GET errors`" + } + } + }, + "binary_schema": { + "toplevel": { + "fields": [ + { + "kind": "dyn", + "num_fields": 1, + "size": "Uint30" + }, + { + "layout": { + "kind": "String" + }, + "kind": "anon", + "data_kind": { + "kind": "Variable" + } + } + ] + }, + "fields": [] + } + } + } + } + } + } + ] + } + } +} diff --git a/tezt/_regressions/rpc/hangzhou.client.mempool.out b/tezt/_regressions/rpc/hangzhou.client.mempool.out index e9b0765a00..9e5b7dde97 100644 --- a/tezt/_regressions/rpc/hangzhou.client.mempool.out +++ b/tezt/_regressions/rpc/hangzhou.client.mempool.out @@ -1,7 +1,7 @@ tezt/_regressions/rpc/hangzhou.client.mempool.out curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=true&outdated=true&branch_delayed=true&refused=true&branch_refused=true' -[{"hash":"[OPERATION_HASH]","protocol":"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx","branch":"[BRANCH_HASH]","contents":[{"kind":"endorsement_with_slot","endorsement":{"branch":"[BRANCH_HASH]","operations":{"kind":"endorsement","level":2},"signature":"[SIGNATURE]"},"slot":1}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.011-PtHangz2.prefilter.outdated_endorsement"}]}] +[] [{"hash":"[OPERATION_HASH]","protocol":"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"branch","id":"proto.011-PtHangz2.contract.counter_in_the_past","contract":"[PUBLIC_KEY_HASH]","expected":"2","found":"1"}]}] [{"hash":"[OPERATION_HASH]","protocol":"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"5","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.011-PtHangz2.contract.counter_in_the_future","contract":"[PUBLIC_KEY_HASH]","expected":"1","found":"5"}]}] [{"hash":"[OPERATION_HASH]","protocol":"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"0","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"}] @@ -34,24 +34,7 @@ curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=t "error": [ { "kind": "permanent", "id": "proto.011-PtHangz2.prefilter.fees_too_low" } ] } ] ], - "outdated": - [ [ "[OPERATION_HASH]", - { "protocol": "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx", - "branch": "[BRANCH_HASH]", - "contents": - [ { "kind": "endorsement_with_slot", - "endorsement": - { "branch": - "[BRANCH_HASH]", - "operations": { "kind": "endorsement", "level": 2 }, - "signature": - "[SIGNATURE]" }, - "slot": 1 } ], - "signature": - "[SIGNATURE]", - "error": - [ { "kind": "temporary", - "id": "proto.011-PtHangz2.prefilter.outdated_endorsement" } ] } ] ], + "outdated": [], "branch_refused": [ [ "[OPERATION_HASH]", { "protocol": "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx", diff --git a/tezt/_regressions/rpc/hangzhou.proxy.mempool.out b/tezt/_regressions/rpc/hangzhou.proxy.mempool.out index b847d10b21..9661321d16 100644 --- a/tezt/_regressions/rpc/hangzhou.proxy.mempool.out +++ b/tezt/_regressions/rpc/hangzhou.proxy.mempool.out @@ -1,7 +1,7 @@ tezt/_regressions/rpc/hangzhou.proxy.mempool.out curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=true&outdated=true&branch_delayed=true&refused=true&branch_refused=true' -[{"hash":"[OPERATION_HASH]","protocol":"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx","branch":"[BRANCH_HASH]","contents":[{"kind":"endorsement_with_slot","endorsement":{"branch":"[BRANCH_HASH]","operations":{"kind":"endorsement","level":2},"signature":"[SIGNATURE]"},"slot":1}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.011-PtHangz2.prefilter.outdated_endorsement"}]}] +[] [{"hash":"[OPERATION_HASH]","protocol":"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"branch","id":"proto.011-PtHangz2.contract.counter_in_the_past","contract":"[PUBLIC_KEY_HASH]","expected":"2","found":"1"}]}] [{"hash":"[OPERATION_HASH]","protocol":"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"1000","counter":"5","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]","error":[{"kind":"temporary","id":"proto.011-PtHangz2.contract.counter_in_the_future","contract":"[PUBLIC_KEY_HASH]","expected":"1","found":"5"}]}] [{"hash":"[OPERATION_HASH]","protocol":"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx","branch":"[BRANCH_HASH]","contents":[{"kind":"transaction","source":"[PUBLIC_KEY_HASH]","fee":"0","counter":"1","gas_limit":"1040","storage_limit":"257","amount":"1000000","destination":"[PUBLIC_KEY_HASH]"}],"signature":"[SIGNATURE]"}] @@ -35,24 +35,7 @@ protocol of proxy unspecified, using the node's protocol: PtHangz2aRngywmSRGGvrc "error": [ { "kind": "permanent", "id": "proto.011-PtHangz2.prefilter.fees_too_low" } ] } ] ], - "outdated": - [ [ "[OPERATION_HASH]", - { "protocol": "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx", - "branch": "[BRANCH_HASH]", - "contents": - [ { "kind": "endorsement_with_slot", - "endorsement": - { "branch": - "[BRANCH_HASH]", - "operations": { "kind": "endorsement", "level": 2 }, - "signature": - "[SIGNATURE]" }, - "slot": 1 } ], - "signature": - "[SIGNATURE]", - "error": - [ { "kind": "temporary", - "id": "proto.011-PtHangz2.prefilter.outdated_endorsement" } ] } ] ], + "outdated": [], "branch_refused": [ [ "[OPERATION_HASH]", { "protocol": "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx", diff --git a/tezt/lib_tezos/client.ml b/tezt/lib_tezos/client.ml index b90b0a930e..d25b006ec0 100644 --- a/tezt/lib_tezos/client.ml +++ b/tezt/lib_tezos/client.ml @@ -373,9 +373,7 @@ let activate_protocol ?endpoint ~protocol ?fitness ?key ?timestamp |> Process.check let empty_mempool_file ?(filename = "mempool.json") () = - let mempool_str = - {|{"applied":[],"refused":[],"outdated":[],"branch_refused":[],"branch_delayed":[],"unprocessed":[]}|} - in + let mempool_str = "[]" in (* TODO: https://gitlab.com/tezos/tezos/-/issues/1928 a write_file function should be added to the tezt base module *) let mempool = Temp.file filename in @@ -411,16 +409,16 @@ let spawn_bake_for ?endpoint ?protocol ?(keys = [Constant.bootstrap1.alias]) ~some:(fun nanotez -> ["--minimal-nanotez-per-byte"; string_of_int nanotez]) minimal_nanotez_per_byte - @ (if minimal_timestamp then ["--minimal-timestamp"] else []) @ Option.fold ~none:[] - ~some:(fun mempool_json -> ["--mempool"; mempool_json]) + ~some:(fun operations_json -> ["--operation-pool"; operations_json]) mempool @ (match protocol with | Some (Ithaca | Alpha) -> (* Only Alpha/Tenderbake supports this switch *) if ignore_node_mempool then ["--ignore-node-mempool"] else [] | None | Some Hangzhou -> []) + @ (if minimal_timestamp then ["--minimal-timestamp"] else []) @ (match force with None | Some false -> [] | Some true -> ["--force"]) @ Option.fold ~none:[] ~some:(fun path -> ["--context"; path]) context_path ) diff --git a/tezt/lib_tezos/client.mli b/tezt/lib_tezos/client.mli index a96e74c045..a2ac462dc5 100644 --- a/tezt/lib_tezos/client.mli +++ b/tezt/lib_tezos/client.mli @@ -966,3 +966,19 @@ val init_light : ?nodes_args:Node.argument list -> unit -> (t * Node.t * Node.t) Lwt.t + +(** Spawn a low-level client command. + + Prefer using higher-level functions defined in this module, or adding a new + one, to deferring to [spawn_command]. + + It can be used, for example, for low-level one-shot customization of client + commands. *) +val spawn_command : + ?env:string String_map.t -> + ?endpoint:endpoint -> + ?hooks:Process.hooks -> + ?admin:bool -> + t -> + string list -> + Process.t diff --git a/tezt/tests/RPC_test.ml b/tezt/tests/RPC_test.ml index 0488a60eed..e232fb6941 100644 --- a/tezt/tests/RPC_test.ml +++ b/tezt/tests/RPC_test.ml @@ -27,7 +27,7 @@ (* Testing ------- Component: RPC regression tests - Invocation: dune exec tezt/tests/main.exe rpc regression + Invocation: dune exec tezt/tests/main.exe -- -f RPC_test.ml Note that to reset the regression outputs, one can use the [--reset-regressions] option. When doing so, it is @@ -682,6 +682,20 @@ let mempool_node_flags = mempool tests *) ] +let bake_empty_block ?endpoint client = + let* mempool = Client.empty_mempool_file () in + (* We defer to using a low-level command here since we enforce using protocol + in order to distinguish which form of the option we actually need, since + the name has changed. *) + Client.spawn_command + ?endpoint + client + (["bake"; "for"; Constant.bootstrap1.alias; "--minimal-timestamp"] + @ + let option_name = "--operation-pool" in + [option_name; mempool]) + |> Process.check + (* Test the mempool RPCs: /chains//mempool/... Tested RPCs: @@ -709,7 +723,10 @@ let mempool_node_flags = - POST request_operations - POST ban_operation - POST unban_operation - - POST unban_all_operations *) + - POST unban_all_operations +*) +(* [mode] is only useful insofar as it helps adapting the test to specific + * `Proxy mode constraint*) let test_mempool protocol ?endpoint client = let* node = Node.init mempool_node_flags in let* () = Client.Admin.trust_address ?endpoint client ~peer:node in @@ -729,10 +746,12 @@ let test_mempool protocol ?endpoint client = in let* _ = Client.bake_for ?endpoint client in - (* Outdated operation: consensus_operation_for_old_level (classified as - outdated after the second empty baking). *) + let* _ = bake_empty_block ?endpoint client in + + (* Outdated operation after the second empty baking. *) let* () = Client.endorse_for ~protocol ~force:true client in - let* _ = Mempool.bake_empty_mempool ~protocol client in + let* _ = bake_empty_block ?endpoint client in + let monitor_path = (* To test the monitor_operations rpc we use curl since the client does not support streaming RPCs yet. *) @@ -792,7 +811,9 @@ let test_mempool protocol ?endpoint client = in let* () = Client.Admin.connect_address ?endpoint ~peer:node client in let flush_waiter = Node_event_level.wait_for_flush node in - let* _ = Mempool.bake_empty_mempool ~endpoint:(Client.Node node) client in + let* _ = + Mempool.bake_empty_block ~protocol ~endpoint:(Client.Node node) client + in let* _ = flush_waiter in let* _output_monitor = Process.check_and_read_stdout proc_monitor in let* _ = @@ -803,7 +824,9 @@ let test_mempool protocol ?endpoint client = let proc_monitor = Process.spawn ~hooks:mempool_hooks "curl" ["-s"; monitor_path] in - let* _ = Mempool.bake_empty_mempool ~endpoint:(Client.Node node) client in + let* _ = + Mempool.bake_empty_block ~protocol ~endpoint:(Client.Node node) client + in let* _output_monitor = Process.check_and_read_stdout proc_monitor in (* Test RPCs [GET|POST /chains/main/mempool/filter] *) let get_filter_variations () = diff --git a/tezt/tests/baking.ml b/tezt/tests/baking.ml index 1e9715cb6e..c3a2fee9ca 100644 --- a/tezt/tests/baking.ml +++ b/tezt/tests/baking.ml @@ -331,7 +331,7 @@ let sample_next_transfer_for state ~fee ~branch ~account = in return operation -let bake_with_mempool state mempool = +let bake_with_mempool ?protocol state mempool = let mempool_json = Data_encoding.Json.construct mempool_encoding mempool in let mempool_str = Ezjsonm.value_to_string mempool_json in let mempool = Temp.file "mempool.json" in @@ -342,6 +342,7 @@ let bake_with_mempool state mempool = (* Use --context's client argument to prevent the node from sorting the operations. *) Client.bake_for + ?protocol ~mempool ~force:true ~context_path:(Node.data_dir state.sandbox_node // "context") @@ -456,8 +457,8 @@ let distinct_bakers_increasing_fees state : mempool Lwt.t = (* ------------------------------------------------------------------------- *) (* Test entrypoints *) -let bake_and_check state ~mempool = - let* () = bake_with_mempool state mempool in +let bake_and_check state ~protocol ~mempool = + let* () = bake_with_mempool ~protocol state mempool in let* block = Client.(rpc GET ["chains"; "main"; "blocks"; "head"] state.sandbox_client) in @@ -488,10 +489,10 @@ let test_ordering = let* mempool = single_baker_increasing_fees state ~account:Constant.bootstrap1 in - let* () = bake_and_check state ~mempool in + let* () = bake_and_check state ~protocol ~mempool in Log.info "Testing ordering by fees" ; let* mempool = distinct_bakers_increasing_fees state in - bake_and_check state ~mempool + bake_and_check state ~protocol ~mempool let check_op_not_in_baked_block client op = let* ops = RPC.get_operations client in diff --git a/tezt/tests/mempool.ml b/tezt/tests/mempool.ml index 1da5e4cf76..33df4e9024 100644 --- a/tezt/tests/mempool.ml +++ b/tezt/tests/mempool.ml @@ -1819,17 +1819,17 @@ let forge_and_inject_n_operations ~branch ~fee ~gas_limit ~source ~destination loop ([], counter + 1) n (** Bakes with an empty mempool to force synchronisation between nodes. *) -let bake_empty_mempool ?endpoint client = +let bake_empty_block ?endpoint ~protocol client = let* mempool = Client.empty_mempool_file () in - Client.bake_for ?endpoint ~mempool client + Client.bake_for ~protocol ?endpoint ~mempool client (** [bake_empty_mempool_and_wait_for_flush client node] bakes for [client] with an empty mempool, then waits for a [flush] event on [node] (which will usually be the node corresponding to [client], but could be any node with a connection path to it). *) -let _bake_empty_mempool_and_wait_for_flush ?(log = false) client node = +let _bake_empty_block_and_wait_for_flush ?(log = false) ~protocol client node = let waiter = wait_for_flush node in - let* () = bake_empty_mempool client in + let* () = bake_empty_block ~protocol client in if log then Log.info "Baked for %s with an empty mempool." (Client.name client) ; waiter @@ -2464,17 +2464,17 @@ let check_op_removed client op = unit (** Bakes with an empty mempool to force synchronisation between nodes. *) -let bake_empty_mempool ?protocol ?endpoint client = +let bake_empty_block ?endpoint ?protocol client = let* mempool = Client.empty_mempool_file () in Client.bake_for ?protocol ?endpoint ~mempool ~ignore_node_mempool:true client -(** [bake_empty_mempool_and_wait_for_flush client node] bakes for [client] +(** [bake_empty_block_and_wait_for_flush client node] bakes for [client] with an empty mempool, then waits for a [flush] event on [node] (which will usually be the node corresponding to [client], but could be any node with a connection path to it). *) -let bake_empty_mempool_and_wait_for_flush ~protocol ?(log = false) client node = +let bake_empty_block_and_wait_for_flush ~protocol ?(log = false) client node = let waiter = wait_for_flush node in - let* () = bake_empty_mempool ~protocol client in + let* () = bake_empty_block ~protocol client in if log then Log.info "Baked for %s with an empty mempool." (Client.name client) ; waiter @@ -2875,7 +2875,7 @@ let test_do_not_reclassify = refused operation. Indeed, [node1] has the default filter config with \ [minimal_fees] at 100 mutez." ; let* () = - bake_empty_mempool_and_wait_for_flush ~protocol ~log:true client1 node1 + bake_empty_block_and_wait_for_flush ~protocol ~log:true client1 node1 in let* () = waiter_arrival_node1 in let* () = check_mempool_ops ~log:true client1 ~applied:1 ~refused:1 in @@ -2891,7 +2891,7 @@ let test_do_not_reclassify = let* () = inject_transfer Constant.bootstrap3 ~fee:5 in let waiter_notify_3_valid_ops = wait_for_notify_n_valid_ops node1 3 in let* () = - bake_empty_mempool_and_wait_for_flush ~protocol ~log:true client1 node1 + bake_empty_block_and_wait_for_flush ~protocol ~log:true client1 node1 in (* Wait for [node1] to receive a mempool containing 3 operations (the number of [applied] operations in [node2]), among which will figure @@ -2970,7 +2970,7 @@ let test_pending_operation_version = (* Step 3 *) (* Bake empty block to force operation to be classify as refused *) let dummy_baking = wait_for_flush node_1 in - let* () = bake_empty_mempool client_1 in + let* () = bake_empty_block ~protocol client_1 in let* () = dummy_baking in (* Step 4 *) (* Get pending operations using different version of the RPC and check *) @@ -3688,7 +3688,7 @@ let test_mempool_filter_operation_arrival = let* () = check_mempool_ops_fees ~applied:appliedA2 ~refused:[] client2 in log_step 4 step4 ; let* () = - bake_empty_mempool_and_wait_for_flush ~protocol ~log:true client1 node1 + bake_empty_block_and_wait_for_flush ~protocol ~log:true client1 node1 in let* () = waiter_arrival_node1 in let* () = @@ -3704,7 +3704,7 @@ let test_mempool_filter_operation_arrival = let waiterB = wait_for_arrival node1 in let* () = inject_transfers Constant.[bootstrap3; bootstrap4] feesB in let* () = - bake_empty_mempool_and_wait_for_flush ~protocol ~log:true client1 node1 + bake_empty_block_and_wait_for_flush ~protocol ~log:true client1 node1 in let* () = waiterB in let* () = @@ -3730,7 +3730,7 @@ let test_mempool_filter_operation_arrival = in let* () = check_mempool_ops_fees ~applied:appliedC2 ~refused:[] client2 in let* () = - bake_empty_mempool_and_wait_for_flush ~protocol ~log:true client1 node1 + bake_empty_block_and_wait_for_flush ~protocol ~log:true client1 node1 in let* () = waiterC in check_mempool_ops_fees ~applied:appliedC1 ~refused:refusedC1 client1 From b68fe545aed21833fd6460bafceb941201cb7355 Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 11:16:15 +0100 Subject: [PATCH 0144/1220] Proto: rename --operation-pool to --operations-pool --- CHANGES.rst | 8 +- docs/introduction/howtouse.rst | 4 +- .../lib_delegate/delegate_commands.ml | 4 +- .../lib_delegate/baking_commands.ml | 4 +- .../lib_delegate/block_forge.ml | 3 - .../lib_delegate/operation_selection.ml | 26 ++++--- .../lib_delegate/operation_worker.ml | 74 +++++++++---------- .../lib_delegate/operation_worker.mli | 12 +-- .../lib_delegate/baking_actions.ml | 1 - .../lib_delegate/baking_commands.ml | 4 +- src/proto_alpha/lib_delegate/block_forge.ml | 3 - .../lib_delegate/operation_selection.ml | 22 +++--- .../lib_delegate/operation_worker.ml | 74 +++++++++---------- .../lib_delegate/operation_worker.mli | 12 +-- .../test_baker_operations_cli_options.py | 18 ++--- .../test_baker_operations_cli_options.py | 18 ++--- .../test_baker_operations_cli_options.py | 18 ++--- tezt/lib_tezos/client.ml | 2 +- tezt/tests/RPC_test.ml | 2 +- 19 files changed, 144 insertions(+), 165 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 07f7dc3651..4c4fa304b3 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -180,13 +180,13 @@ Client The media accept header indicates to the node which format of data serialisation is supported. The value can be ``json``, ``binary`` or ``any``. -- Renamed the ``--mempool`` option into ``--operation-pool``. +- Renamed the ``--mempool`` option into ``--operations-pool``. The format of the file passed as parameter has changed from the one of RPC ``pending_operations`` (that is, a key-value dictionary whose values are list of operations) to a single list of operations to be considered for inclusion. -- ``--operation-pool`` option supports URL parameters to fetch remote mempools - through HTTP. Environment variable `TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS` +- ``--operations-pool`` option supports URL parameters to fetch remote mempools + through HTTP. Environment variable `TEZOS_CLIENT_REMOTE_OPERATIONS_POOL_HTTP_HEADERS` may be set to specify custom HTTP headers. Only the Host header is supported as of now (see description in `rfc2616, section 14.23 `_) @@ -221,7 +221,7 @@ Baker / Endorser / Accuser The media accept header indicates to the node which format of data serialisation is supported. The value can be ``json``, ``binary`` or ``any``. -- Ported the ``--operation-pool`` option of the ``bake for`` command of the client +- Ported the ``--operations-pool`` option of the ``bake for`` command of the client to the baker daemon. - Removed baker, endorser and accuser for Granada. diff --git a/docs/introduction/howtouse.rst b/docs/introduction/howtouse.rst index 04523107bf..243589aae3 100644 --- a/docs/introduction/howtouse.rst +++ b/docs/introduction/howtouse.rst @@ -667,8 +667,8 @@ The behavior of the client can be configured using the following environment var If this variable is not set, or otherwise cannot be parsed as a positive integer, a default value of ``10`` seconds is used for each call. The two RPC calls this variable affects are queries that the client makes to the node in order to determine: (1) the protocol version of the node it connects to, and (2) the commands supported in that version. -- `TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS`: This variable specifies - custom HTTP headers to use with the ``-operation-pool`` option. Only the Host +- `TEZOS_CLIENT_REMOTE_OPERATIONS_POOL_HTTP_HEADERS`: This variable specifies + custom HTTP headers to use with the ``--operations-pool`` option. Only the Host header is supported as of now (see description in `rfc2616, section 14.23 `_ diff --git a/src/proto_011_PtHangz2/lib_delegate/delegate_commands.ml b/src/proto_011_PtHangz2/lib_delegate/delegate_commands.ml index 658ed65175..d3185d8cea 100644 --- a/src/proto_011_PtHangz2/lib_delegate/delegate_commands.ml +++ b/src/proto_011_PtHangz2/lib_delegate/delegate_commands.ml @@ -36,7 +36,7 @@ let directory_parameter = else return p) let http_headers_env_variable = - "TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS" + "TEZOS_CLIENT_REMOTE_OPERATIONS_POOL_HTTP_HEADERS" let http_headers = match Sys.getenv_opt http_headers_env_variable with @@ -72,7 +72,7 @@ let http_headers = let operations_arg = Clic.arg - ~long:"operation-pool" + ~long:"operations-pool" ~placeholder:"file|uri" ~doc: (Printf.sprintf diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_commands.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_commands.ml index 63cb5977c4..c6658ec724 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_commands.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_commands.ml @@ -44,7 +44,7 @@ let may_lock_pidfile pidfile_opt f = f let http_headers_env_variable = - "TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS" + "TEZOS_CLIENT_REMOTE_OPERATIONS_POOL_HTTP_HEADERS" let http_headers = match Sys.getenv_opt http_headers_env_variable with @@ -80,7 +80,7 @@ let http_headers = let operations_arg = Clic.arg - ~long:"operation-pool" + ~long:"operations-pool" ~placeholder:"file|uri" ~doc: (Printf.sprintf diff --git a/src/proto_012_PsiThaCa/lib_delegate/block_forge.ml b/src/proto_012_PsiThaCa/lib_delegate/block_forge.ml index f3b92a1bd6..9e7ec66bc4 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/block_forge.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/block_forge.ml @@ -221,9 +221,6 @@ let forge (cctxt : #Protocol_client_context.full) ~chain_id ~pred_info operations_hash; _; } -> - (* let _op_pool' = - * Operation_pool.(add_operations empty (List.concat operations)) - * in *) protect ~on_error:(fun _ -> return_none) (fun () -> diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml index 3f3f23d627..f909bb5723 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml @@ -62,11 +62,13 @@ module PrioritizedManagerSet = Set.Make (struct let c = Z.compare counter counter' in if c <> 0 then c else - let c = Prioritized_operation.compare_priority op op' in + (* Higher priority first *) + let c = Prioritized_operation.compare_priority op' op in if c <> 0 then c else Q.compare weight' weight - (* if same counter, biggest weight first *) + (* if same counter and same priority, biggest weight first *) else - let c = Prioritized_operation.compare_priority op op' in + (* Higher priority first *) + let c = Prioritized_operation.compare_priority op' op in if c <> 0 then c else (* We want the biggest weight first *) @@ -77,7 +79,7 @@ end) (* Note: This weight is also used by the plugin and the prevalidator to sort operations in the pending mempool. @see {!Tezos_protocol_plugin_alpha.Plugin.Mempool.weight_manager_operation}. *) -let prioritized_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees +let prioritize_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte operation = let op = Operation_pool.Prioritized_operation.packed operation in let {protocol_data = Operation_data {contents; _}; _} = op in @@ -138,12 +140,12 @@ let prioritized_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees else None | _ -> None -let weight_managers ~hard_gas_limit_per_block ~minimal_fees +let prioritize_managers ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte managers = Prioritized_operation_set.fold (fun op acc -> match - prioritized_manager + prioritize_manager ~max_size:managers_quota.max_size ~hard_gas_limit_per_block ~minimal_fees @@ -241,8 +243,8 @@ let filter_operations_with_simulation initial_inc fees_config (Prioritized_operation_set.operations anonymous, anonymous_quota) >>= fun (inc, anonymous) -> (* Sort the managers *) - let weighted_managers = - weight_managers + let prioritized_managers = + prioritize_managers ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit @@ -251,7 +253,7 @@ let filter_operations_with_simulation initial_inc fees_config in filter_valid_operations_up_to_quota inc - ( PrioritizedManagerSet.elements weighted_managers + ( PrioritizedManagerSet.elements prioritized_managers |> List.map (fun {op; _} -> Prioritized_operation.packed op), managers_quota ) >>= fun (inc, managers) -> @@ -311,8 +313,8 @@ let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block fees_config in (* Sort the managers *) - let weighted_managers = - weight_managers + let prioritized_managers = + prioritize_managers ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit @@ -321,7 +323,7 @@ let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block in let managers = filter_valid_operations_up_to_quota_without_simulation - ( PrioritizedManagerSet.elements weighted_managers + ( PrioritizedManagerSet.elements prioritized_managers |> List.map (fun {op; _} -> Prioritized_operation.packed op), managers_quota ) in diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_worker.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_worker.ml index 86910b184b..ec6219d86b 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_worker.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_worker.ml @@ -247,15 +247,14 @@ let make_initial_state ?(monitor_node_operations = true) () = let canceler = Lwt_canceler.create () in let operation_pool = Operation_pool.empty in let lock = Lwt_mutex.create () in - Lwt.return - { - operation_pool; - canceler; - proposal_watched = None; - qc_event_stream; - lock; - monitor_node_operations; - } + { + operation_pool; + canceler; + proposal_watched = None; + qc_event_stream; + lock; + monitor_node_operations; + } let is_valid_consensus_content (candidate : candidate) consensus_content = let {hash = _; round_watched; payload_hash_watched} = candidate in @@ -484,43 +483,42 @@ let update_operations_pool state (head_level, head_round) = let create ?(monitor_node_operations = true) (cctxt : #Protocol_client_context.full) = - make_initial_state ~monitor_node_operations () >>= fun state -> + let state = make_initial_state ~monitor_node_operations () in (* TODO should we continue forever ? *) let rec worker_loop () = - if state.monitor_node_operations then ( - monitor_operations cctxt >>= function - | Error err -> Events.(emit loop_failed err) - | Ok (head, operation_stream, op_stream_stopper) -> - Events.(emit starting_new_monitoring ()) >>= fun () -> - state.canceler <- Lwt_canceler.create () ; - Lwt_canceler.on_cancel state.canceler (fun () -> + monitor_operations cctxt >>= function + | Error err -> Events.(emit loop_failed err) + | Ok (head, operation_stream, op_stream_stopper) -> + Events.(emit starting_new_monitoring ()) >>= fun () -> + state.canceler <- Lwt_canceler.create () ; + Lwt_canceler.on_cancel state.canceler (fun () -> + op_stream_stopper () ; + cancel_monitoring state ; + Lwt.return_unit) ; + update_operations_pool state head ; + let rec loop () = + Lwt_stream.get operation_stream >>= function + | None -> + (* When the stream closes, it means a new head has been set, + we cancel the monitoring and flush current operations *) + Events.(emit end_of_stream ()) >>= fun () -> op_stream_stopper () ; cancel_monitoring state ; - Lwt.return_unit) ; - update_operations_pool state head ; - let rec loop () = - Lwt_stream.get operation_stream >>= function - | None -> - (* When the stream closes, it means a new head has been set, - we cancel the monitoring and flush current operations *) - Events.(emit end_of_stream ()) >>= fun () -> - op_stream_stopper () ; - state.operation_pool <- Operation_pool.empty ; - cancel_monitoring state ; - worker_loop () - | Some ops -> - Events.(emit received_new_operations ()) >>= fun () -> - state.operation_pool <- - Operation_pool.add_operations state.operation_pool ops ; - update_monitoring state ops >>= fun () -> loop () - in - loop ()) - else Lwt.return_unit + worker_loop () + | Some ops -> + Events.(emit received_new_operations ()) >>= fun () -> + state.operation_pool <- + Operation_pool.add_operations state.operation_pool ops ; + update_monitoring state ops >>= fun () -> loop () + in + loop () in Lwt.dont_wait (fun () -> Lwt.finalize - (fun () -> worker_loop ()) + (fun () -> + if state.monitor_node_operations then worker_loop () + else Lwt.return_unit) (fun () -> shutdown_worker state >>= fun _ -> Lwt.return_unit)) (fun exn -> Events.(emit__dont_wait__use_with_care ended (Printexc.to_string exn))) ; diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_worker.mli b/src/proto_012_PsiThaCa/lib_delegate/operation_worker.mli index 607a6f9dba..49502d22e8 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_worker.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_worker.mli @@ -50,18 +50,12 @@ type event = (** {1 Constructors}*) -(** [create ?initial_mempool ?monitor_node cctxt] create a monitoring process to +(** [create ?monitor_node_operations cctxt] creates a monitoring process to fetch operations for the baker to process. - - @param extra_operations extra operation source to put in the worker's - operations set (default: [None]) - @param monitor_node_operations monitor operations on the node (defaults: - [true]). Set [monitor_node_operations] to [false] to only consider the - [extra_operations] operations. - -*) + [true]). Set [monitor_node_operations] to [false] to only consider + externally provided (non-node) operations. *) val create : ?monitor_node_operations:bool -> #Protocol_client_context.full -> t Lwt.t diff --git a/src/proto_alpha/lib_delegate/baking_actions.ml b/src/proto_alpha/lib_delegate/baking_actions.ml index e274afb331..31a49680f5 100644 --- a/src/proto_alpha/lib_delegate/baking_actions.ml +++ b/src/proto_alpha/lib_delegate/baking_actions.ml @@ -60,7 +60,6 @@ module Operations_source = struct (fun () -> return (Data_encoding.Json.destruct operations_encoding json)) in - match mempool with | Baking_configuration.Operations_source.Local {filename} -> if Sys.file_exists filename then diff --git a/src/proto_alpha/lib_delegate/baking_commands.ml b/src/proto_alpha/lib_delegate/baking_commands.ml index 365511ebb3..6ac7a88151 100644 --- a/src/proto_alpha/lib_delegate/baking_commands.ml +++ b/src/proto_alpha/lib_delegate/baking_commands.ml @@ -44,7 +44,7 @@ let may_lock_pidfile pidfile_opt f = f let http_headers_env_variable = - "TEZOS_CLIENT_REMOTE_OPERATION_POOL_HTTP_HEADERS" + "TEZOS_CLIENT_REMOTE_OPERATIONS_POOL_HTTP_HEADERS" let http_headers = match Sys.getenv_opt http_headers_env_variable with @@ -80,7 +80,7 @@ let http_headers = let operations_arg = Clic.arg - ~long:"operation-pool" + ~long:"operations-pool" ~placeholder:"file|uri" ~doc: (Printf.sprintf diff --git a/src/proto_alpha/lib_delegate/block_forge.ml b/src/proto_alpha/lib_delegate/block_forge.ml index f3b92a1bd6..9e7ec66bc4 100644 --- a/src/proto_alpha/lib_delegate/block_forge.ml +++ b/src/proto_alpha/lib_delegate/block_forge.ml @@ -221,9 +221,6 @@ let forge (cctxt : #Protocol_client_context.full) ~chain_id ~pred_info operations_hash; _; } -> - (* let _op_pool' = - * Operation_pool.(add_operations empty (List.concat operations)) - * in *) protect ~on_error:(fun _ -> return_none) (fun () -> diff --git a/src/proto_alpha/lib_delegate/operation_selection.ml b/src/proto_alpha/lib_delegate/operation_selection.ml index 3f3f23d627..9a3557f9c7 100644 --- a/src/proto_alpha/lib_delegate/operation_selection.ml +++ b/src/proto_alpha/lib_delegate/operation_selection.ml @@ -62,11 +62,11 @@ module PrioritizedManagerSet = Set.Make (struct let c = Z.compare counter counter' in if c <> 0 then c else - let c = Prioritized_operation.compare_priority op op' in + let c = Prioritized_operation.compare_priority op' op in if c <> 0 then c else Q.compare weight' weight (* if same counter, biggest weight first *) else - let c = Prioritized_operation.compare_priority op op' in + let c = Prioritized_operation.compare_priority op' op in if c <> 0 then c else (* We want the biggest weight first *) @@ -77,7 +77,7 @@ end) (* Note: This weight is also used by the plugin and the prevalidator to sort operations in the pending mempool. @see {!Tezos_protocol_plugin_alpha.Plugin.Mempool.weight_manager_operation}. *) -let prioritized_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees +let prioritize_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte operation = let op = Operation_pool.Prioritized_operation.packed operation in let {protocol_data = Operation_data {contents; _}; _} = op in @@ -138,12 +138,12 @@ let prioritized_manager ~max_size ~hard_gas_limit_per_block ~minimal_fees else None | _ -> None -let weight_managers ~hard_gas_limit_per_block ~minimal_fees +let prioritize_managers ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit ~minimal_nanotez_per_byte managers = Prioritized_operation_set.fold (fun op acc -> match - prioritized_manager + prioritize_manager ~max_size:managers_quota.max_size ~hard_gas_limit_per_block ~minimal_fees @@ -241,8 +241,8 @@ let filter_operations_with_simulation initial_inc fees_config (Prioritized_operation_set.operations anonymous, anonymous_quota) >>= fun (inc, anonymous) -> (* Sort the managers *) - let weighted_managers = - weight_managers + let prioritized_managers = + prioritize_managers ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit @@ -251,7 +251,7 @@ let filter_operations_with_simulation initial_inc fees_config in filter_valid_operations_up_to_quota inc - ( PrioritizedManagerSet.elements weighted_managers + ( PrioritizedManagerSet.elements prioritized_managers |> List.map (fun {op; _} -> Prioritized_operation.packed op), managers_quota ) >>= fun (inc, managers) -> @@ -311,8 +311,8 @@ let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block fees_config in (* Sort the managers *) - let weighted_managers = - weight_managers + let prioritized_managers = + prioritize_managers ~hard_gas_limit_per_block ~minimal_fees ~minimal_nanotez_per_gas_unit @@ -321,7 +321,7 @@ let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block in let managers = filter_valid_operations_up_to_quota_without_simulation - ( PrioritizedManagerSet.elements weighted_managers + ( PrioritizedManagerSet.elements prioritized_managers |> List.map (fun {op; _} -> Prioritized_operation.packed op), managers_quota ) in diff --git a/src/proto_alpha/lib_delegate/operation_worker.ml b/src/proto_alpha/lib_delegate/operation_worker.ml index 86910b184b..ec6219d86b 100644 --- a/src/proto_alpha/lib_delegate/operation_worker.ml +++ b/src/proto_alpha/lib_delegate/operation_worker.ml @@ -247,15 +247,14 @@ let make_initial_state ?(monitor_node_operations = true) () = let canceler = Lwt_canceler.create () in let operation_pool = Operation_pool.empty in let lock = Lwt_mutex.create () in - Lwt.return - { - operation_pool; - canceler; - proposal_watched = None; - qc_event_stream; - lock; - monitor_node_operations; - } + { + operation_pool; + canceler; + proposal_watched = None; + qc_event_stream; + lock; + monitor_node_operations; + } let is_valid_consensus_content (candidate : candidate) consensus_content = let {hash = _; round_watched; payload_hash_watched} = candidate in @@ -484,43 +483,42 @@ let update_operations_pool state (head_level, head_round) = let create ?(monitor_node_operations = true) (cctxt : #Protocol_client_context.full) = - make_initial_state ~monitor_node_operations () >>= fun state -> + let state = make_initial_state ~monitor_node_operations () in (* TODO should we continue forever ? *) let rec worker_loop () = - if state.monitor_node_operations then ( - monitor_operations cctxt >>= function - | Error err -> Events.(emit loop_failed err) - | Ok (head, operation_stream, op_stream_stopper) -> - Events.(emit starting_new_monitoring ()) >>= fun () -> - state.canceler <- Lwt_canceler.create () ; - Lwt_canceler.on_cancel state.canceler (fun () -> + monitor_operations cctxt >>= function + | Error err -> Events.(emit loop_failed err) + | Ok (head, operation_stream, op_stream_stopper) -> + Events.(emit starting_new_monitoring ()) >>= fun () -> + state.canceler <- Lwt_canceler.create () ; + Lwt_canceler.on_cancel state.canceler (fun () -> + op_stream_stopper () ; + cancel_monitoring state ; + Lwt.return_unit) ; + update_operations_pool state head ; + let rec loop () = + Lwt_stream.get operation_stream >>= function + | None -> + (* When the stream closes, it means a new head has been set, + we cancel the monitoring and flush current operations *) + Events.(emit end_of_stream ()) >>= fun () -> op_stream_stopper () ; cancel_monitoring state ; - Lwt.return_unit) ; - update_operations_pool state head ; - let rec loop () = - Lwt_stream.get operation_stream >>= function - | None -> - (* When the stream closes, it means a new head has been set, - we cancel the monitoring and flush current operations *) - Events.(emit end_of_stream ()) >>= fun () -> - op_stream_stopper () ; - state.operation_pool <- Operation_pool.empty ; - cancel_monitoring state ; - worker_loop () - | Some ops -> - Events.(emit received_new_operations ()) >>= fun () -> - state.operation_pool <- - Operation_pool.add_operations state.operation_pool ops ; - update_monitoring state ops >>= fun () -> loop () - in - loop ()) - else Lwt.return_unit + worker_loop () + | Some ops -> + Events.(emit received_new_operations ()) >>= fun () -> + state.operation_pool <- + Operation_pool.add_operations state.operation_pool ops ; + update_monitoring state ops >>= fun () -> loop () + in + loop () in Lwt.dont_wait (fun () -> Lwt.finalize - (fun () -> worker_loop ()) + (fun () -> + if state.monitor_node_operations then worker_loop () + else Lwt.return_unit) (fun () -> shutdown_worker state >>= fun _ -> Lwt.return_unit)) (fun exn -> Events.(emit__dont_wait__use_with_care ended (Printexc.to_string exn))) ; diff --git a/src/proto_alpha/lib_delegate/operation_worker.mli b/src/proto_alpha/lib_delegate/operation_worker.mli index 607a6f9dba..49502d22e8 100644 --- a/src/proto_alpha/lib_delegate/operation_worker.mli +++ b/src/proto_alpha/lib_delegate/operation_worker.mli @@ -50,18 +50,12 @@ type event = (** {1 Constructors}*) -(** [create ?initial_mempool ?monitor_node cctxt] create a monitoring process to +(** [create ?monitor_node_operations cctxt] creates a monitoring process to fetch operations for the baker to process. - - @param extra_operations extra operation source to put in the worker's - operations set (default: [None]) - @param monitor_node_operations monitor operations on the node (defaults: - [true]). Set [monitor_node_operations] to [false] to only consider the - [extra_operations] operations. - -*) + [true]). Set [monitor_node_operations] to [false] to only consider + externally provided (non-node) operations. *) val create : ?monitor_node_operations:bool -> #Protocol_client_context.full -> t Lwt.t diff --git a/tests_python/tests_011/test_baker_operations_cli_options.py b/tests_python/tests_011/test_baker_operations_cli_options.py index 5ebc70f14b..9b0e23697f 100644 --- a/tests_python/tests_011/test_baker_operations_cli_options.py +++ b/tests_python/tests_011/test_baker_operations_cli_options.py @@ -1,7 +1,7 @@ """Simple tests to check support for the following operations-related options for baking - --ignore-node-mempool -- --operation-pool [file|uri] +- --operations-pool [file|uri] """ import os @@ -116,7 +116,7 @@ def test_bake_empty_operations_file(self, client: Client): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", get_filename(EMPTY_OPERATIONS), ], ) @@ -132,7 +132,7 @@ def test_bake_empty_operations_http(self, client: Client, http_server): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"http://localhost:{PORT}/{get_filename(EMPTY_OPERATIONS)}", ], ) @@ -147,7 +147,7 @@ def test_bake_absent_operations_file(self, client: Client): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"{ABSENT_OPERATIONS}", ], ) @@ -163,7 +163,7 @@ def test_bake_absent_operations_http(self, client: Client, http_server): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"http://{ABSENT_OPERATIONS}", ], ) @@ -193,7 +193,7 @@ def test_bake_singleton_operations_file( self, client: Client, session: dict ): """Construct a transaction over the current state, put it into a file, - and bake it into the chain through --operation-pool option. + and bake it into the chain through --operations-pool option. This additionally compares the balance to a normal transfer (through the node's mempool) to check that there is no observable difference in @@ -218,7 +218,7 @@ def test_bake_singleton_operations_file( client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", file, '--ignore-node-mempool', ], @@ -255,7 +255,7 @@ def test_bake_singleton_operations_http( client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"http://localhost:{PORT}/{file}", '--ignore-node-mempool', ], @@ -314,7 +314,7 @@ def test_baker(self, sandbox: Sandbox, session: dict): 0, ['bootstrap1'], proto=protocol.DAEMON, - run_params=['--operation-pool', session['operations_file']], + run_params=['--operations-pool', session['operations_file']], ) @pytest.mark.timeout(3) diff --git a/tests_python/tests_012/test_baker_operations_cli_options.py b/tests_python/tests_012/test_baker_operations_cli_options.py index d186ce5a80..a0076f2e35 100644 --- a/tests_python/tests_012/test_baker_operations_cli_options.py +++ b/tests_python/tests_012/test_baker_operations_cli_options.py @@ -1,7 +1,7 @@ """Simple tests to check support for the following operations-related options for baking - --ignore-node-mempool - - --operation-pool [file|uri] + - --operations-pool [file|uri] """ @@ -120,7 +120,7 @@ def test_bake_empty_operations_file(self, client: Client): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", get_filename(EMPTY_OPERATIONS), ], ) @@ -136,7 +136,7 @@ def test_bake_empty_operations_http(self, client: Client, http_server): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"http://localhost:{PORT}/{get_filename(EMPTY_OPERATIONS)}", ], ) @@ -151,7 +151,7 @@ def test_bake_absent_operations_file(self, client: Client): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"{ABSENT_OPERATIONS}", ], ) @@ -167,7 +167,7 @@ def test_bake_absent_operations_http(self, client: Client, http_server): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", # any fake URL would do here f"http://localhost:{PORT}/{ABSENT_OPERATIONS}", ], @@ -199,7 +199,7 @@ def test_bake_singleton_operations_file( self, client: Client, session: dict ): """Construct a transaction over the current state, put it into a file, - and bake it into the chain through --operation-pool option. + and bake it into the chain through --operations-pool option. This additionally compares the balance to a normal transfer (through the node's mempool) to check that there is no observable difference in @@ -224,7 +224,7 @@ def test_bake_singleton_operations_file( client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", file, '--ignore-node-mempool', ], @@ -260,7 +260,7 @@ def test_bake_singleton_operations_http( client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"http://localhost:{PORT}/{file}", '--ignore-node-mempool', ], @@ -335,7 +335,7 @@ def test_baker(self, sandbox: Sandbox, session: dict): ALL_BOOTSTRAP_ACCOUNTS, proto=protocol.DAEMON, log_levels=constants.TENDERBAKE_BAKER_LOG_LEVELS, - run_params=['--operation-pool', session['operations_file']], + run_params=['--operations-pool', session['operations_file']], ) @pytest.mark.timeout(30) diff --git a/tests_python/tests_alpha/test_baker_operations_cli_options.py b/tests_python/tests_alpha/test_baker_operations_cli_options.py index 378e7f7269..909d97bd5b 100644 --- a/tests_python/tests_alpha/test_baker_operations_cli_options.py +++ b/tests_python/tests_alpha/test_baker_operations_cli_options.py @@ -1,7 +1,7 @@ """Simple tests to check support for the following operations-related options for baking - --ignore-node-mempool - - --operation-pool [file|uri] + - --operations-pool [file|uri] """ @@ -120,7 +120,7 @@ def test_bake_empty_operations_file(self, client: Client): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", get_filename(EMPTY_OPERATIONS), ], ) @@ -136,7 +136,7 @@ def test_bake_empty_operations_http(self, client: Client, http_server): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"http://localhost:{PORT}/{get_filename(EMPTY_OPERATIONS)}", ], ) @@ -151,7 +151,7 @@ def test_bake_absent_operations_file(self, client: Client): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"{ABSENT_OPERATIONS}", ], ) @@ -167,7 +167,7 @@ def test_bake_absent_operations_http(self, client: Client, http_server): client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", # any fake URL would do here f"http://localhost:{PORT}/{ABSENT_OPERATIONS}", ], @@ -199,7 +199,7 @@ def test_bake_singleton_operations_file( self, client: Client, session: dict ): """Construct a transaction over the current state, put it into a file, - and bake it into the chain through --operation-pool option. + and bake it into the chain through --operations-pool option. This additionally compares the balance to a normal transfer (through the node's mempool) to check that there is no observable difference in @@ -224,7 +224,7 @@ def test_bake_singleton_operations_file( client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", file, '--ignore-node-mempool', ], @@ -260,7 +260,7 @@ def test_bake_singleton_operations_http( client, bake_args=[ '--minimal-timestamp', - "--operation-pool", + "--operations-pool", f"http://localhost:{PORT}/{file}", '--ignore-node-mempool', ], @@ -335,7 +335,7 @@ def test_baker(self, sandbox: Sandbox, session: dict): ALL_BOOTSTRAP_ACCOUNTS, proto=protocol.DAEMON, log_levels=constants.TENDERBAKE_BAKER_LOG_LEVELS, - run_params=['--operation-pool', session['operations_file']], + run_params=['--operations-pool', session['operations_file']], ) @pytest.mark.timeout(30) diff --git a/tezt/lib_tezos/client.ml b/tezt/lib_tezos/client.ml index d25b006ec0..ad7ca13760 100644 --- a/tezt/lib_tezos/client.ml +++ b/tezt/lib_tezos/client.ml @@ -411,7 +411,7 @@ let spawn_bake_for ?endpoint ?protocol ?(keys = [Constant.bootstrap1.alias]) minimal_nanotez_per_byte @ Option.fold ~none:[] - ~some:(fun operations_json -> ["--operation-pool"; operations_json]) + ~some:(fun operations_json -> ["--operations-pool"; operations_json]) mempool @ (match protocol with | Some (Ithaca | Alpha) -> diff --git a/tezt/tests/RPC_test.ml b/tezt/tests/RPC_test.ml index e232fb6941..45e5b9babb 100644 --- a/tezt/tests/RPC_test.ml +++ b/tezt/tests/RPC_test.ml @@ -692,7 +692,7 @@ let bake_empty_block ?endpoint client = client (["bake"; "for"; Constant.bootstrap1.alias; "--minimal-timestamp"] @ - let option_name = "--operation-pool" in + let option_name = "--operations-pool" in [option_name; mempool]) |> Process.check From a3bd083bdc8fc043ba8346e9e36836475c0a4548 Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 16:01:41 +0100 Subject: [PATCH 0145/1220] Ithaca/Delegate: polymorphic type for pool to avoid repetition --- .../lib_delegate/operation_pool.ml | 22 +++++++++---------- .../lib_delegate/operation_pool.mli | 22 +++++++++---------- .../lib_delegate/operation_selection.ml | 5 ++--- 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml index 3d05268d27..32e457c66b 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml @@ -26,6 +26,14 @@ open Protocol open Alpha_context +(** Generic base type for pools *) +type 'set t = { + consensus : 'set; + votes : 'set; + anonymous : 'set; + managers : 'set; +} + (* Should we use a better ordering ? *) module Prioritized_operation = struct @@ -66,12 +74,7 @@ module Prioritized_operation_set = struct end (* TODO refine this: unpack operations *) -type pool = { - consensus : Operation_set.t; - votes : Operation_set.t; - anonymous : Operation_set.t; - managers : Operation_set.t; -} +type pool = Operation_set.t t (* TODO refine this: unpack operations *) type ordered_pool = { @@ -352,12 +355,7 @@ let filter_pool p {consensus; votes; anonymous; managers} = } module Prioritized = struct - type t = { - consensus : Prioritized_operation_set.t; - votes : Prioritized_operation_set.t; - anonymous : Prioritized_operation_set.t; - managers : Prioritized_operation_set.t; - } + type nonrec t = Prioritized_operation_set.t t let of_operation_set (operation_set : Operation_set.t) = Operation_set.fold diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli index 044d13cf18..eb48e0a3c7 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli @@ -36,14 +36,17 @@ val managers_index : int module Operation_set : Set.S with type elt = packed_operation +(** Generic base type pools *) +type 'set t = { + consensus : 'set; + votes : 'set; + anonymous : 'set; + managers : 'set; +} + (** A pool of operations for a single origin, or undifferenciated origin, typically used for operations coming from the node *) -type pool = { - consensus : Operation_set.t; - votes : Operation_set.t; - anonymous : Operation_set.t; - managers : Operation_set.t; -} +type pool = Operation_set.t t (** on pool *) val empty : pool @@ -151,12 +154,7 @@ end (** Pool of prioritized operations *) module Prioritized : sig (** Same record fields as [type pool], but with a different set base *) - type t = { - consensus : Prioritized_operation_set.t; - votes : Prioritized_operation_set.t; - anonymous : Prioritized_operation_set.t; - managers : Prioritized_operation_set.t; - } + type nonrec t = Prioritized_operation_set.t t (** [of_pool pool] transforms [pool] into a prioritized pool of operations of low priority. *) diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml index f909bb5723..ee2f36d1e1 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_selection.ml @@ -221,8 +221,7 @@ let filter_valid_operations_up_to_quota inc (ops, quota) = with Full (inc, l) -> Lwt.return (inc, List.rev l) let filter_operations_with_simulation initial_inc fees_config - ~hard_gas_limit_per_block - Operation_pool.Prioritized.{consensus; votes; anonymous; managers} = + ~hard_gas_limit_per_block {consensus; votes; anonymous; managers} = let { Baking_configuration.minimal_fees; minimal_nanotez_per_gas_unit; @@ -292,7 +291,7 @@ let filter_valid_operations_up_to_quota_without_simulation (ops, quota) = with Full l -> List.rev l let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block - Operation_pool.Prioritized.{consensus; votes; anonymous; managers} = + {consensus; votes; anonymous; managers} = let consensus = filter_valid_operations_up_to_quota_without_simulation (Prioritized_operation_set.operations consensus, consensus_quota) From 85a99188e68495aba09527576a102a51f97b7e7d Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 16:06:38 +0100 Subject: [PATCH 0146/1220] Alpha/Delegate: polymorphic type for pool to avoid repetition --- .../lib_delegate/operation_pool.ml | 21 +++++++--------- .../lib_delegate/operation_pool.mli | 25 ++++++++++--------- .../lib_delegate/operation_selection.ml | 5 ++-- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/proto_alpha/lib_delegate/operation_pool.ml b/src/proto_alpha/lib_delegate/operation_pool.ml index 3d05268d27..00b14aa0a7 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.ml +++ b/src/proto_alpha/lib_delegate/operation_pool.ml @@ -28,6 +28,13 @@ open Alpha_context (* Should we use a better ordering ? *) +type 'set t = { + consensus : 'set; + votes : 'set; + anonymous : 'set; + managers : 'set; +} + module Prioritized_operation = struct (* Higher priority operations will be included first *) type t = High of packed_operation | Low of packed_operation @@ -66,12 +73,7 @@ module Prioritized_operation_set = struct end (* TODO refine this: unpack operations *) -type pool = { - consensus : Operation_set.t; - votes : Operation_set.t; - anonymous : Operation_set.t; - managers : Operation_set.t; -} +type pool = Operation_set.t t (* TODO refine this: unpack operations *) type ordered_pool = { @@ -352,12 +354,7 @@ let filter_pool p {consensus; votes; anonymous; managers} = } module Prioritized = struct - type t = { - consensus : Prioritized_operation_set.t; - votes : Prioritized_operation_set.t; - anonymous : Prioritized_operation_set.t; - managers : Prioritized_operation_set.t; - } + type nonrec t = Prioritized_operation_set.t t let of_operation_set (operation_set : Operation_set.t) = Operation_set.fold diff --git a/src/proto_alpha/lib_delegate/operation_pool.mli b/src/proto_alpha/lib_delegate/operation_pool.mli index 044d13cf18..6b26420606 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.mli +++ b/src/proto_alpha/lib_delegate/operation_pool.mli @@ -36,14 +36,20 @@ val managers_index : int module Operation_set : Set.S with type elt = packed_operation +(** Generic base type for pools *) +type 'set t = { + consensus : 'set; + votes : 'set; + anonymous : 'set; + managers : 'set; +} + +(** A pool of operations for a single origin, or undifferenciated origin, + typically used for operations coming from the node *) +type pool = Operation_set.t t + (** A pool of operations for a single origin, or undifferenciated origin, typically used for operations coming from the node *) -type pool = { - consensus : Operation_set.t; - votes : Operation_set.t; - anonymous : Operation_set.t; - managers : Operation_set.t; -} (** on pool *) val empty : pool @@ -151,12 +157,7 @@ end (** Pool of prioritized operations *) module Prioritized : sig (** Same record fields as [type pool], but with a different set base *) - type t = { - consensus : Prioritized_operation_set.t; - votes : Prioritized_operation_set.t; - anonymous : Prioritized_operation_set.t; - managers : Prioritized_operation_set.t; - } + type nonrec t = Prioritized_operation_set.t t (** [of_pool pool] transforms [pool] into a prioritized pool of operations of low priority. *) diff --git a/src/proto_alpha/lib_delegate/operation_selection.ml b/src/proto_alpha/lib_delegate/operation_selection.ml index 9a3557f9c7..4d3f10414c 100644 --- a/src/proto_alpha/lib_delegate/operation_selection.ml +++ b/src/proto_alpha/lib_delegate/operation_selection.ml @@ -219,8 +219,7 @@ let filter_valid_operations_up_to_quota inc (ops, quota) = with Full (inc, l) -> Lwt.return (inc, List.rev l) let filter_operations_with_simulation initial_inc fees_config - ~hard_gas_limit_per_block - Operation_pool.Prioritized.{consensus; votes; anonymous; managers} = + ~hard_gas_limit_per_block {consensus; votes; anonymous; managers} = let { Baking_configuration.minimal_fees; minimal_nanotez_per_gas_unit; @@ -290,7 +289,7 @@ let filter_valid_operations_up_to_quota_without_simulation (ops, quota) = with Full l -> List.rev l let filter_operations_without_simulation fees_config ~hard_gas_limit_per_block - Operation_pool.Prioritized.{consensus; votes; anonymous; managers} = + {consensus; votes; anonymous; managers} = let consensus = filter_valid_operations_up_to_quota_without_simulation (Prioritized_operation_set.operations consensus, consensus_quota) From 39177774c4e002b579f197ade9f851d5be4336ad Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 16:11:29 +0100 Subject: [PATCH 0147/1220] Ithaca/Delegate: nicer interface for Operation_pool.Prioritized --- src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml | 5 +++-- src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml | 4 ++-- src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml index 9cf783c500..3b52264d92 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml @@ -234,10 +234,11 @@ let inject_block ~state_recorder state block_to_bake ~updated_state = match kind with | Fresh pool -> let pool = + let node_pool = Operation_pool.Prioritized.of_pool pool in match extern_ops with - | None -> Operation_pool.Prioritized.of_pool pool + | None -> node_pool | Some ops -> - Operation_pool.Prioritized.merge_external_operations pool ops + Operation_pool.Prioritized.merge_external_operations node_pool ops in (Block_forge.Filter pool, round) | Reproposal {consensus_operations; payload_hash; payload_round; payload} -> diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml index 32e457c66b..a414333b8f 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml @@ -398,9 +398,9 @@ module Prioritized = struct let add_operations prioritized_pool operations = List.fold_left add_operation prioritized_pool operations - let merge_external_operations (pool : pool) + let merge_external_operations pool (external_operations : packed_operation list) = - List.fold_left add_external_operation (of_pool pool) external_operations + List.fold_left add_external_operation pool external_operations let filter p {consensus; votes; anonymous; managers} = let filter = diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli index eb48e0a3c7..ea722cd880 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli @@ -161,9 +161,9 @@ module Prioritized : sig val of_pool : pool -> t (** [merge_external_operations pool extern_ops] creates a prioritized pool - from a [pool], assumed to contained operations taken from a node and - [extern_ops] coming from an external source, which we prioritize. *) - val merge_external_operations : pool -> packed_operation list -> t + from a [pool] and [extern_ops] coming from an external source, which we + prioritize. *) + val merge_external_operations : t -> packed_operation list -> t val filter : (packed_operation -> bool) -> t -> t From 137e993c59288fe3d187be00033791270a9bd38a Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 16:13:50 +0100 Subject: [PATCH 0148/1220] Alpha/Delegate: nicer interface for Operation_pool.Prioritized --- src/proto_alpha/lib_delegate/baking_actions.ml | 5 +++-- src/proto_alpha/lib_delegate/operation_pool.ml | 4 ++-- src/proto_alpha/lib_delegate/operation_pool.mli | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_delegate/baking_actions.ml b/src/proto_alpha/lib_delegate/baking_actions.ml index 31a49680f5..5da3d71d56 100644 --- a/src/proto_alpha/lib_delegate/baking_actions.ml +++ b/src/proto_alpha/lib_delegate/baking_actions.ml @@ -233,10 +233,11 @@ let inject_block ~state_recorder state block_to_bake ~updated_state = match kind with | Fresh pool -> let pool = + let node_pool = Operation_pool.Prioritized.of_pool pool in match extern_ops with - | None -> Operation_pool.Prioritized.of_pool pool + | None -> node_pool | Some ops -> - Operation_pool.Prioritized.merge_external_operations pool ops + Operation_pool.Prioritized.merge_external_operations node_pool ops in (Block_forge.Filter pool, round) | Reproposal {consensus_operations; payload_hash; payload_round; payload} -> diff --git a/src/proto_alpha/lib_delegate/operation_pool.ml b/src/proto_alpha/lib_delegate/operation_pool.ml index 00b14aa0a7..41b50ffeba 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.ml +++ b/src/proto_alpha/lib_delegate/operation_pool.ml @@ -397,9 +397,9 @@ module Prioritized = struct let add_operations prioritized_pool operations = List.fold_left add_operation prioritized_pool operations - let merge_external_operations (pool : pool) + let merge_external_operations pool (external_operations : packed_operation list) = - List.fold_left add_external_operation (of_pool pool) external_operations + List.fold_left add_external_operation pool external_operations let filter p {consensus; votes; anonymous; managers} = let filter = diff --git a/src/proto_alpha/lib_delegate/operation_pool.mli b/src/proto_alpha/lib_delegate/operation_pool.mli index 6b26420606..05f3bdcf81 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.mli +++ b/src/proto_alpha/lib_delegate/operation_pool.mli @@ -164,9 +164,9 @@ module Prioritized : sig val of_pool : pool -> t (** [merge_external_operations pool extern_ops] creates a prioritized pool - from a [pool], assumed to contained operations taken from a node and - [extern_ops] coming from an external source, which we prioritize. *) - val merge_external_operations : pool -> packed_operation list -> t + from a [pool] and [extern_ops] coming from an external source, which we + prioritize. *) + val merge_external_operations : t -> packed_operation list -> t val filter : (packed_operation -> bool) -> t -> t From 2ab00c29448554b22ce73b6a050eb82ae8c8e35c Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 16:21:20 +0100 Subject: [PATCH 0149/1220] Delegate: Fix typos in ordered pool data encodings --- src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml | 4 ++-- src/proto_alpha/lib_delegate/operation_pool.ml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml index a414333b8f..d07d6004c5 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml @@ -94,8 +94,8 @@ let ordered_pool_encoding = (obj4 (req "ordered_consensus" (list (dynamic_size Operation.encoding))) (req "ordered_votes" (list (dynamic_size Operation.encoding))) - (req "ordered_payload" (list (dynamic_size Operation.encoding))) - (req "ordered_payload" (list (dynamic_size Operation.encoding)))) + (req "ordered_anonymous" (list (dynamic_size Operation.encoding))) + (req "ordered_managers" (list (dynamic_size Operation.encoding)))) type payload = { votes_payload : packed_operation list; diff --git a/src/proto_alpha/lib_delegate/operation_pool.ml b/src/proto_alpha/lib_delegate/operation_pool.ml index 41b50ffeba..f04b7d6008 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.ml +++ b/src/proto_alpha/lib_delegate/operation_pool.ml @@ -93,8 +93,8 @@ let ordered_pool_encoding = (obj4 (req "ordered_consensus" (list (dynamic_size Operation.encoding))) (req "ordered_votes" (list (dynamic_size Operation.encoding))) - (req "ordered_payload" (list (dynamic_size Operation.encoding))) - (req "ordered_payload" (list (dynamic_size Operation.encoding)))) + (req "ordered_anonymouns" (list (dynamic_size Operation.encoding))) + (req "ordered_managers" (list (dynamic_size Operation.encoding)))) type payload = { votes_payload : packed_operation list; From a83fa31e2b5b21100285e046689cef9fc199e2ec Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 16:22:53 +0100 Subject: [PATCH 0150/1220] Delegate: revert unneed changes --- src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml | 2 +- src/proto_alpha/lib_delegate/baking_lib.ml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml index 700bc38db5..275575488a 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_lib.ml @@ -436,7 +436,7 @@ let baking_minimal_timestamp state = let pool = Operation_pool.add_operations current_mempool - (List.map (fun (_, endorsement) -> endorsement) signed_endorsements) + (List.map snd signed_endorsements) in let kind = Baking_actions.Fresh pool in let block_to_bake : Baking_actions.block_to_bake = diff --git a/src/proto_alpha/lib_delegate/baking_lib.ml b/src/proto_alpha/lib_delegate/baking_lib.ml index 700bc38db5..275575488a 100644 --- a/src/proto_alpha/lib_delegate/baking_lib.ml +++ b/src/proto_alpha/lib_delegate/baking_lib.ml @@ -436,7 +436,7 @@ let baking_minimal_timestamp state = let pool = Operation_pool.add_operations current_mempool - (List.map (fun (_, endorsement) -> endorsement) signed_endorsements) + (List.map snd signed_endorsements) in let kind = Baking_actions.Fresh pool in let block_to_bake : Baking_actions.block_to_bake = From 41238dff8af83a1afe05d9886928ed5057db4e0b Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 16:20:25 +0100 Subject: [PATCH 0151/1220] Alpha/Delegate: homogeneous type declaration for all pools --- .../lib_delegate/operation_pool.ml | 61 +++++++------------ .../lib_delegate/operation_pool.mli | 7 +-- 2 files changed, 24 insertions(+), 44 deletions(-) diff --git a/src/proto_alpha/lib_delegate/operation_pool.ml b/src/proto_alpha/lib_delegate/operation_pool.ml index f04b7d6008..2e05628c7c 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.ml +++ b/src/proto_alpha/lib_delegate/operation_pool.ml @@ -76,20 +76,15 @@ end type pool = Operation_set.t t (* TODO refine this: unpack operations *) -type ordered_pool = { - ordered_consensus : packed_operation list; - ordered_votes : packed_operation list; - ordered_anonymous : packed_operation list; - ordered_managers : packed_operation list; -} +type ordered_pool = packed_operation list t let ordered_pool_encoding = let open Data_encoding in conv - (fun {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} -> - (ordered_consensus, ordered_votes, ordered_anonymous, ordered_managers)) - (fun (ordered_consensus, ordered_votes, ordered_anonymous, ordered_managers) -> - {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers}) + (fun {consensus; votes; anonymous; managers} -> + (consensus, votes, anonymous, managers)) + (fun (consensus, votes, anonymous, managers) -> + {consensus; votes; anonymous; managers}) (obj4 (req "ordered_consensus" (list (dynamic_size Operation.encoding))) (req "ordered_votes" (list (dynamic_size Operation.encoding))) @@ -133,13 +128,7 @@ let empty = managers = Operation_set.empty; } -let empty_ordered = - { - ordered_consensus = []; - ordered_votes = []; - ordered_anonymous = []; - ordered_managers = []; - } +let empty_ordered = {consensus = []; votes = []; anonymous = []; managers = []} let pp_pool fmt {consensus; votes; anonymous; managers} = Format.fprintf @@ -150,15 +139,14 @@ let pp_pool fmt {consensus; votes; anonymous; managers} = (Operation_set.cardinal anonymous) (Operation_set.cardinal managers) -let pp_ordered_pool fmt - {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} = +let pp_ordered_pool fmt {consensus; votes; anonymous; managers} = Format.fprintf fmt "[consensus: %d, votes: %d, anonymous: %d, managers: %d]" - (List.length ordered_consensus) - (List.length ordered_votes) - (List.length ordered_anonymous) - (List.length ordered_managers) + (List.length consensus) + (List.length votes) + (List.length anonymous) + (List.length managers) (* Hypothesis : we suppose [List.length Protocol.Main.validation_passes = 4] *) let consensus_index = 0 @@ -291,31 +279,28 @@ let filter_endorsements ops = | _ -> None) ops -let ordered_to_list_list - {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} = - [ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers] +let ordered_to_list_list {consensus; votes; anonymous; managers} = + [consensus; votes; anonymous; managers] let ordered_of_list_list = function - | [ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers] -> - Some - {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} + | [consensus; votes; anonymous; managers] -> + Some {consensus; votes; anonymous; managers} | _ -> None -let payload_of_ordered_pool - {ordered_votes; ordered_anonymous; ordered_managers; _} = +let payload_of_ordered_pool {votes; anonymous; managers; _} = { - votes_payload = ordered_votes; - anonymous_payload = ordered_anonymous; - managers_payload = ordered_managers; + votes_payload = votes; + anonymous_payload = anonymous; + managers_payload = managers; } let ordered_pool_of_payload ~consensus_operations {votes_payload; anonymous_payload; managers_payload} = { - ordered_consensus = consensus_operations; - ordered_votes = votes_payload; - ordered_anonymous = anonymous_payload; - ordered_managers = managers_payload; + consensus = consensus_operations; + votes = votes_payload; + anonymous = anonymous_payload; + managers = managers_payload; } let extract_operations_of_list_list = function diff --git a/src/proto_alpha/lib_delegate/operation_pool.mli b/src/proto_alpha/lib_delegate/operation_pool.mli index 05f3bdcf81..93dc9b1ae2 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.mli +++ b/src/proto_alpha/lib_delegate/operation_pool.mli @@ -58,12 +58,7 @@ val pp_pool : Format.formatter -> pool -> unit val filter_pool : (packed_operation -> bool) -> pool -> pool -type ordered_pool = { - ordered_consensus : packed_operation list; - ordered_votes : packed_operation list; - ordered_anonymous : packed_operation list; - ordered_managers : packed_operation list; -} +type ordered_pool = packed_operation list t val ordered_pool_encoding : ordered_pool Data_encoding.t From ef0cf1aef98965a4d13becd19f8772933bbb41ad Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Wed, 12 Jan 2022 16:31:36 +0100 Subject: [PATCH 0152/1220] Ithaca/Delegate: homogeneous type declaration for all pools --- .../lib_delegate/baking_actions.ml | 1 - .../lib_delegate/operation_pool.ml | 61 +++++++------------ .../lib_delegate/operation_pool.mli | 7 +-- 3 files changed, 24 insertions(+), 45 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml b/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml index 3b52264d92..ce16f13041 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/baking_actions.ml @@ -60,7 +60,6 @@ module Operations_source = struct (fun () -> return (Data_encoding.Json.destruct operations_encoding json)) in - match mempool with | Baking_configuration.Operations_source.Local {filename} -> if Sys.file_exists filename then diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml index d07d6004c5..886e60ba34 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml @@ -77,20 +77,15 @@ end type pool = Operation_set.t t (* TODO refine this: unpack operations *) -type ordered_pool = { - ordered_consensus : packed_operation list; - ordered_votes : packed_operation list; - ordered_anonymous : packed_operation list; - ordered_managers : packed_operation list; -} +type ordered_pool = packed_operation list t let ordered_pool_encoding = let open Data_encoding in conv - (fun {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} -> - (ordered_consensus, ordered_votes, ordered_anonymous, ordered_managers)) - (fun (ordered_consensus, ordered_votes, ordered_anonymous, ordered_managers) -> - {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers}) + (fun {consensus; votes; anonymous; managers} -> + (consensus, votes, anonymous, managers)) + (fun (consensus, votes, anonymous, managers) -> + {consensus; votes; anonymous; managers}) (obj4 (req "ordered_consensus" (list (dynamic_size Operation.encoding))) (req "ordered_votes" (list (dynamic_size Operation.encoding))) @@ -134,13 +129,7 @@ let empty = managers = Operation_set.empty; } -let empty_ordered = - { - ordered_consensus = []; - ordered_votes = []; - ordered_anonymous = []; - ordered_managers = []; - } +let empty_ordered = {consensus = []; votes = []; anonymous = []; managers = []} let pp_pool fmt {consensus; votes; anonymous; managers} = Format.fprintf @@ -151,15 +140,14 @@ let pp_pool fmt {consensus; votes; anonymous; managers} = (Operation_set.cardinal anonymous) (Operation_set.cardinal managers) -let pp_ordered_pool fmt - {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} = +let pp_ordered_pool fmt {consensus; votes; anonymous; managers} = Format.fprintf fmt "[consensus: %d, votes: %d, anonymous: %d, managers: %d]" - (List.length ordered_consensus) - (List.length ordered_votes) - (List.length ordered_anonymous) - (List.length ordered_managers) + (List.length consensus) + (List.length votes) + (List.length anonymous) + (List.length managers) (* Hypothesis : we suppose [List.length Protocol.Main.validation_passes = 4] *) let consensus_index = 0 @@ -292,31 +280,28 @@ let filter_endorsements ops = | _ -> None) ops -let ordered_to_list_list - {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} = - [ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers] +let ordered_to_list_list {consensus; votes; anonymous; managers} = + [consensus; votes; anonymous; managers] let ordered_of_list_list = function - | [ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers] -> - Some - {ordered_consensus; ordered_votes; ordered_anonymous; ordered_managers} + | [consensus; votes; anonymous; managers] -> + Some {consensus; votes; anonymous; managers} | _ -> None -let payload_of_ordered_pool - {ordered_votes; ordered_anonymous; ordered_managers; _} = +let payload_of_ordered_pool {votes; anonymous; managers; _} = { - votes_payload = ordered_votes; - anonymous_payload = ordered_anonymous; - managers_payload = ordered_managers; + votes_payload = votes; + anonymous_payload = anonymous; + managers_payload = managers; } let ordered_pool_of_payload ~consensus_operations {votes_payload; anonymous_payload; managers_payload} = { - ordered_consensus = consensus_operations; - ordered_votes = votes_payload; - ordered_anonymous = anonymous_payload; - ordered_managers = managers_payload; + consensus = consensus_operations; + votes = votes_payload; + anonymous = anonymous_payload; + managers = managers_payload; } let extract_operations_of_list_list = function diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli index ea722cd880..48d643e6a2 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli @@ -55,12 +55,7 @@ val pp_pool : Format.formatter -> pool -> unit val filter_pool : (packed_operation -> bool) -> pool -> pool -type ordered_pool = { - ordered_consensus : packed_operation list; - ordered_votes : packed_operation list; - ordered_anonymous : packed_operation list; - ordered_managers : packed_operation list; -} +type ordered_pool = packed_operation list t val ordered_pool_encoding : ordered_pool Data_encoding.t From 9aa43c48e6c10e26580dc8d11131750f664e7ebd Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Thu, 13 Jan 2022 10:39:52 +0100 Subject: [PATCH 0153/1220] Delegate: use 'collection type name instead of 'set --- src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml | 11 +++++------ .../lib_delegate/operation_pool.mli | 10 +++++----- src/proto_alpha/lib_delegate/operation_pool.ml | 10 +++++----- src/proto_alpha/lib_delegate/operation_pool.mli | 10 +++++----- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml index 886e60ba34..33c0de05e9 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.ml @@ -26,12 +26,11 @@ open Protocol open Alpha_context -(** Generic base type for pools *) -type 'set t = { - consensus : 'set; - votes : 'set; - anonymous : 'set; - managers : 'set; +type 'collection t = { + consensus : 'collection; + votes : 'collection; + anonymous : 'collection; + managers : 'collection; } (* Should we use a better ordering ? *) diff --git a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli index 48d643e6a2..ffc653e741 100644 --- a/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli +++ b/src/proto_012_PsiThaCa/lib_delegate/operation_pool.mli @@ -37,11 +37,11 @@ val managers_index : int module Operation_set : Set.S with type elt = packed_operation (** Generic base type pools *) -type 'set t = { - consensus : 'set; - votes : 'set; - anonymous : 'set; - managers : 'set; +type 'collection t = { + consensus : 'collection; + votes : 'collection; + anonymous : 'collection; + managers : 'collection; } (** A pool of operations for a single origin, or undifferenciated origin, diff --git a/src/proto_alpha/lib_delegate/operation_pool.ml b/src/proto_alpha/lib_delegate/operation_pool.ml index 2e05628c7c..1c7450e046 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.ml +++ b/src/proto_alpha/lib_delegate/operation_pool.ml @@ -28,11 +28,11 @@ open Alpha_context (* Should we use a better ordering ? *) -type 'set t = { - consensus : 'set; - votes : 'set; - anonymous : 'set; - managers : 'set; +type 'collection t = { + consensus : 'collection; + votes : 'collection; + anonymous : 'collection; + managers : 'collection; } module Prioritized_operation = struct diff --git a/src/proto_alpha/lib_delegate/operation_pool.mli b/src/proto_alpha/lib_delegate/operation_pool.mli index 93dc9b1ae2..8d59013d47 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.mli +++ b/src/proto_alpha/lib_delegate/operation_pool.mli @@ -37,11 +37,11 @@ val managers_index : int module Operation_set : Set.S with type elt = packed_operation (** Generic base type for pools *) -type 'set t = { - consensus : 'set; - votes : 'set; - anonymous : 'set; - managers : 'set; +type 'collection t = { + consensus : 'collection; + votes : 'collection; + anonymous : 'collection; + managers : 'collection; } (** A pool of operations for a single origin, or undifferenciated origin, From 76a1d9d9b770d0a94c76a877417d2d4bcd01957e Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Thu, 13 Jan 2022 10:46:01 +0100 Subject: [PATCH 0154/1220] Alpha/Delegate: factorize add_operation --- .../lib_delegate/operation_pool.ml | 34 ++++++------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/src/proto_alpha/lib_delegate/operation_pool.ml b/src/proto_alpha/lib_delegate/operation_pool.ml index 1c7450e046..692bb65615 100644 --- a/src/proto_alpha/lib_delegate/operation_pool.ml +++ b/src/proto_alpha/lib_delegate/operation_pool.ml @@ -169,22 +169,24 @@ let classify op = else `Bad | _ -> `Bad -let add_operation pool operation = +let add_operation_to_pool add classify pool operation = match classify operation with | `Consensus -> - let consensus = Operation_set.add operation pool.consensus in + let consensus = add operation pool.consensus in {pool with consensus} | `Votes -> - let votes = Operation_set.add operation pool.votes in + let votes = add operation pool.votes in {pool with votes} | `Anonymous -> - let anonymous = Operation_set.add operation pool.anonymous in + let anonymous = add operation pool.anonymous in {pool with anonymous} | `Managers -> - let managers = Operation_set.add operation pool.managers in + let managers = add operation pool.managers in {pool with managers} | `Bad -> pool +let add_operation = add_operation_to_pool Operation_set.add classify + let add_operations pool ops = List.fold_left add_operation pool ops type consensus_filter = { @@ -356,25 +358,9 @@ module Prioritized = struct managers = of_operation_set pool.managers; } - let add_operation pool operation = - match classify (Prioritized_operation.packed operation) with - | `Consensus -> - let consensus = - Prioritized_operation_set.add operation pool.consensus - in - {pool with consensus} - | `Votes -> - let votes = Prioritized_operation_set.add operation pool.votes in - {pool with votes} - | `Anonymous -> - let anonymous = - Prioritized_operation_set.add operation pool.anonymous - in - {pool with anonymous} - | `Managers -> - let managers = Prioritized_operation_set.add operation pool.managers in - {pool with managers} - | `Bad -> pool + let add_operation = + add_operation_to_pool Prioritized_operation_set.add (fun op -> + classify (Prioritized_operation.packed op)) let add_external_operation pool operation = add_operation pool (Prioritized_operation.extern operation) From 446ef46f873ebec95652dd40a30838240ea21862 Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Thu, 13 Jan 2022 10:56:39 +0100 Subject: [PATCH 0155/1220] Test/Delegate: more informative error messages --- .../lib_delegate/test/test_client_baking_forge.ml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml b/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml index 54282b5ea2..428289d3ab 100644 --- a/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml +++ b/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml @@ -42,7 +42,6 @@ let node_mempool_operations = [manager_operation ~counter:3 ()] let empty_operations = [] let read_json_op_from_string s = - Format.printf "Decoding %s@." s ; match Data_encoding.Json.from_string s with | Ok json -> Data_encoding.Json.destruct A.Operation.encoding json | Error _ -> assert false @@ -67,7 +66,9 @@ let test_empty () = empty_operations in if not @@ contains ~equal:( == ) empty_operations sorted_operations then - failwith "oops" + failwith + "sorting failure: expected empty list, got %d elements" + (List.length sorted_operations) else return_unit (* Check that any 2 consecutive elements in list l obey the following sorting @@ -111,9 +112,10 @@ let test_sorting () = in (* All elements in the results exist in the original*) if not @@ contains ~equal:( == ) prioritized_operations sorted_operations then - failwith "oops" + failwith + "some operations were seemingly added by sorting prioritized operations" else if check_2_by_2 sorted_operations then return_unit - else failwith "oops resorted" + else failwith "operations are not sorted" let tests = [ From 5c3a87f5013ce89c01bc75666216da099c9652f7 Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Thu, 13 Jan 2022 10:56:52 +0100 Subject: [PATCH 0156/1220] Tests/Delegate: do not re-use compare_priority --- .../test/test_client_baking_forge.ml | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml b/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml index 428289d3ab..9318e3b396 100644 --- a/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml +++ b/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml @@ -86,19 +86,19 @@ let rec check_2_by_2 l = match l with | [] | [_] -> true | x :: (y :: _ as l) -> ( - if Compare.Int.(compare_priority x y > 0) then check_2_by_2 l - else - Compare.Int.(compare_priority x y = 0) - && - match (I.get_manager_content x, I.get_manager_content y) with - | (Some (xsrc, xcounter), Some (ysrc, ycounter)) -> - if Signature.Public_key_hash.equal xsrc ysrc then - (* lower counter should come first *) - Z.compare xcounter ycounter < 0 && check_2_by_2 l - else check_2_by_2 l - (* As said in the opening comment, there is another weight criterion - used for ordering but we do not test it *) - | (None, _) | (_, None) -> false) + match (x, y) with + | (High _, Low _) -> check_2_by_2 l + | (Low _, High _) -> false + | (Low _, Low _) | (High _, High _) -> ( + match (I.get_manager_content x, I.get_manager_content y) with + | (Some (xsrc, xcounter), Some (ysrc, ycounter)) -> + if Signature.Public_key_hash.equal xsrc ysrc then + (* lower counter should come first *) + Z.compare xcounter ycounter < 0 && check_2_by_2 l + else check_2_by_2 l + (* As said in the opening comment, there is another weight criterion + used for ordering but we do not test it *) + | (None, _) | (_, None) -> false)) let test_sorting () = let sorted_operations = From 2df92eb7ddb89a69893973607b408fbbfa70581b Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Thu, 13 Jan 2022 10:59:24 +0100 Subject: [PATCH 0157/1220] Hangz2/Delegate: update documentation to actual signature --- .../lib_delegate/client_baking_forge.mli | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.mli b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.mli index 260d86c658..72336176fb 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.mli +++ b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.mli @@ -62,15 +62,11 @@ val inject_block : type error += Failed_to_preapply of Tezos_base.Operation.t * error list -(** [forge_block cctxt ?fee_threshold ?force ?operations ?best_effort ?sort - ?timestamp ?max_priority ?priority ?mempool ?ignore_node_mempool ~seed_nonce +(** [forge_block cctxt ?fee_threshold ?force ?extra_operations ?best_effort + ?sort ?timestamp ?max_priority ?priority ?ignore_node_mempool ~seed_nonce ~src_sk pk_hash parent_blk] injects a block in the node. In addition of inject_block, it will: - * Operations: If [?operations] is [None], it will get pending operations and - add them to the block. Otherwise, provided operations will be used. In both - cases, they will be validated. - * Baking priority: If [`Auto] is used, it will be computed from the public key hash of the specified contract, optionally capped to a maximum value, and optionally restricting for free baking slot. @@ -82,14 +78,13 @@ type error += Failed_to_preapply of Tezos_base.Operation.t * error list * Fee Threshold: If [?fee_threshold] is given, operations with fees lower than it are not added to the block. - * if [?mempool] is provided, bake a block including the operations recorded - in this (out-of-node) mempool resource. + * if [?extra_operations] is provided, bake a block including the operations + recorded in this (out-of-node) operations resource. * if [?ignore_node_mempool] is set to true, do not ask the nodes for - operations to be included in the block to be baked. Use in conjunction - with [~mempool] to restrict the operations to the ones containes in [mempool]. - Defaults to [false]. -*) + operations to be included in the block to be baked. Use in conjunction with + [~extra_operations] to restrict the operations to the ones contained in + [extra_operations]. Defaults to [false]. *) val forge_block : #Protocol_client_context.full -> ?force:bool -> From d124a27c8a0ec3622bbf1c3d709b129cb27efcc0 Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Thu, 13 Jan 2022 11:00:46 +0100 Subject: [PATCH 0158/1220] Hangz2/Delegate: fix comparison arguments to get the expected result --- src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml index 2080495830..3ce6de2b8b 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml +++ b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml @@ -478,7 +478,7 @@ let sort_manager_operations ~max_size ~hard_gas_limit_per_block ~minimal_fees Z.compare counter counter' else (* Prioritize according to tags first, then weight *) - match PrioritizedOperation.compare_priority op op' with + match PrioritizedOperation.compare_priority op' op with | 0 -> (* We want the biggest weight first *) Q.compare weight_ratio' weight_ratio From 32daadff9f9bb4526efed1237bd65b7a3b0260b2 Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Thu, 13 Jan 2022 11:28:21 +0100 Subject: [PATCH 0159/1220] Hangz2/Delegate: use cleare Alpha comparison for operation selection --- .../lib_delegate/client_baking_forge.ml | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml index 3ce6de2b8b..511507de08 100644 --- a/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml +++ b/src/proto_011_PtHangz2/lib_delegate/client_baking_forge.ml @@ -473,16 +473,23 @@ let sort_manager_operations ~max_size ~hard_gas_limit_per_block ~minimal_fees let compare (op, weight_ratio, source, counter) (op', weight_ratio', source', counter') = (* Be careful with the [compare]s *) - if Signature.Public_key_hash.equal source source' then + let cmp_src = Signature.Public_key_hash.compare source source' in + if cmp_src = 0 then (* we want the smallest counter first *) - Z.compare counter counter' + let c = Z.compare counter counter' in + if c <> 0 then c + else + (* Higher priority first *) + let c = PrioritizedOperation.compare_priority op' op in + if c <> 0 then c else Q.compare weight_ratio' weight_ratio else - (* Prioritize according to tags first, then weight *) - match PrioritizedOperation.compare_priority op' op with - | 0 -> - (* We want the biggest weight first *) - Q.compare weight_ratio' weight_ratio - | n -> n + (* Higher priority first *) + let c = PrioritizedOperation.compare_priority op' op in + if c <> 0 then c + else + (* We want the biggest weight first *) + let c = Q.compare weight_ratio' weight_ratio in + if c <> 0 then c else cmp_src in List.sort compare operations |> List.map (fun (op, _, _, _) -> op) From ca8a0478aa5808337c0efcfc57ee67dc2f4ba22e Mon Sep 17 00:00:00 2001 From: Richard Bonichon Date: Thu, 13 Jan 2022 11:31:54 +0100 Subject: [PATCH 0160/1220] Test/Delegate: add more data to update test coverage --- .../test/test_client_baking_forge.ml | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml b/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml index 9318e3b396..2850976189 100644 --- a/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml +++ b/src/proto_011_PtHangz2/lib_delegate/test/test_client_baking_forge.ml @@ -35,9 +35,15 @@ let manager_operation ?(source = "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN") (* default contents for operation sources *) let external_mempool_operations = - [manager_operation ~counter:2 (); manager_operation ~counter:3 ()] + [ + manager_operation ~counter:2 (); + manager_operation ~counter:3 (); + (* Test case High _, High _ with previous operation *) + manager_operation ~counter:3 (); + ] -let node_mempool_operations = [manager_operation ~counter:3 ()] +let node_mempool_operations = + [manager_operation ~counter:3 (); manager_operation ~counter:5 ()] let empty_operations = [] @@ -48,8 +54,16 @@ let read_json_op_from_string s = let prioritized_operations = List.map - (fun op -> I.PrioritizedOperation.extern (read_json_op_from_string op)) - external_mempool_operations + (fun op -> I.PrioritizedOperation.node (read_json_op_from_string op)) + [ + manager_operation ~counter:6 (); + (* Test case Low _, Low _ with previous operation*) + manager_operation ~counter:6 (); + manager_operation ~counter:3 (); + ] + @ List.map + (fun op -> I.PrioritizedOperation.extern (read_json_op_from_string op)) + external_mempool_operations @ List.map (fun op -> I.PrioritizedOperation.node (read_json_op_from_string op)) node_mempool_operations @@ -88,13 +102,22 @@ let rec check_2_by_2 l = | x :: (y :: _ as l) -> ( match (x, y) with | (High _, Low _) -> check_2_by_2 l - | (Low _, High _) -> false + | (Low _, High _) -> ( + match (I.get_manager_content x, I.get_manager_content y) with + | (Some (xsrc, xcounter), Some (ysrc, ycounter)) -> + (* the only way a low priority operation is before a high priority + one is that they have the same emitter, and the former has a + lower (or equal) counter than the latter*) + Signature.Public_key_hash.equal xsrc ysrc + && Z.compare xcounter ycounter <= 0 + && check_2_by_2 l + | (None, _) | (_, None) -> false (* should not happen *)) | (Low _, Low _) | (High _, High _) -> ( match (I.get_manager_content x, I.get_manager_content y) with | (Some (xsrc, xcounter), Some (ysrc, ycounter)) -> if Signature.Public_key_hash.equal xsrc ysrc then (* lower counter should come first *) - Z.compare xcounter ycounter < 0 && check_2_by_2 l + Z.compare xcounter ycounter <= 0 && check_2_by_2 l else check_2_by_2 l (* As said in the opening comment, there is another weight criterion used for ordering but we do not test it *) From b4aa7117b08f66ffcdcc60713021e31141b9f2fd Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 7 Jan 2022 18:10:11 +0100 Subject: [PATCH 0161/1220] Plugin: check minimal weight in pre-filter and replace in precheck - max_prechecked_manager_operations filter config option - weight computation follows the one of the baker - garbage collect minimal fee operation when mempool full (reclassified as branch_delayed) --- src/proto_alpha/lib_plugin/plugin.ml | 361 ++++++++++++++++++++++----- 1 file changed, 303 insertions(+), 58 deletions(-) diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 7cc34ca3d5..164572eab9 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -115,6 +115,10 @@ module Mempool = struct in the mempool. Note that other criteria, such as the gas ratio, are also taken into account to decide whether to accept the replacement or not. *) + max_prechecked_manager_operations : int; + (** Maximal number of prechecked operations to keep. The mempool only + keeps the [max_prechecked_manager_operations] operations with the + highest fee/gas and fee/size ratios. *) } let default_minimal_fees = @@ -146,6 +150,7 @@ module Mempool = struct replace_by_fee_factor = Q.make (Z.of_int 105) (Z.of_int 100) (* Default value of [replace_by_fee_factor] is set to 5% *); + max_prechecked_manager_operations = 5_000; } let config_encoding : config Data_encoding.t = @@ -158,19 +163,22 @@ module Mempool = struct allow_script_failure; clock_drift; replace_by_fee_factor; + max_prechecked_manager_operations; } -> ( minimal_fees, minimal_nanotez_per_gas_unit, minimal_nanotez_per_byte, allow_script_failure, clock_drift, - replace_by_fee_factor )) + replace_by_fee_factor, + max_prechecked_manager_operations )) (fun ( minimal_fees, minimal_nanotez_per_gas_unit, minimal_nanotez_per_byte, allow_script_failure, clock_drift, - replace_by_fee_factor ) -> + replace_by_fee_factor, + max_prechecked_manager_operations ) -> { minimal_fees; minimal_nanotez_per_gas_unit; @@ -178,8 +186,9 @@ module Mempool = struct allow_script_failure; clock_drift; replace_by_fee_factor; + max_prechecked_manager_operations; }) - (obj6 + (obj7 (dft "minimal_fees" Tez.encoding default_config.minimal_fees) (dft "minimal_nanotez_per_gas_unit" @@ -194,7 +203,11 @@ module Mempool = struct (dft "replace_by_fee_factor" manager_op_replacement_factor_enc - default_config.replace_by_fee_factor)) + default_config.replace_by_fee_factor) + (dft + "max_prechecked_manager_operations" + int31 + default_config.max_prechecked_manager_operations)) type manager_gas_witness @@ -210,8 +223,24 @@ module Mempool = struct operation_hash : Operation_hash.t; gas_limit : manager_gas_witness Gas.Arith.t; fee : Tez.t; + weight : Q.t; } + type manager_op_weight = {operation_hash : Operation_hash.t; weight : Q.t} + + let op_weight_of_info (info : manager_op_info) : manager_op_weight = + {operation_hash = info.operation_hash; weight = info.weight} + + module ManagerOpWeightSet = Set.Make (struct + type t = manager_op_weight + + (* Sort by weight *) + let compare op1 op2 = + let c = Q.compare op1.weight op2.weight in + if c <> 0 then c + else Operation_hash.compare op1.operation_hash op2.operation_hash + end) + type state = { grandparent_level_start : Alpha_context.Timestamp.t option; round_zero_duration : Period.t option; @@ -221,10 +250,23 @@ module Mempool = struct a record of type [manager_op_info] (See for record details above). Each manager in the map should be accessible with an operation hash in [operation_hash_to_manager]. *) - operation_hash_to_manager : Signature.Public_key_hash.t Operation_hash.Map.t; + operation_hash_to_manager : + Signature.Public_key_hash.t Operation_hash.Map.t; (** Map of operation hash to manager used to remove a manager from [op_prechecked_managers] with an operation hash. Each manager in the map should also be in [op_prechecked_managers]. *) + prechecked_operations_count : int; + (** Number of prechecked manager operations. + Invariants: + - [Operation_hash.Map.cardinal operation_hash_to_manager = + prechecked_operations_count] + - [prechecked_operations_count <= max_prechecked_manager_operations] *) + ops_prechecked : ManagerOpWeightSet.t; + min_prechecked_op_weight : manager_op_weight option; + (** The prechecked operation in [op_prechecked_managers], if any, with + the minimal weight. + Invariant: + - [min_prechecked_op_weight = min { x | x \in ops_prechecked }] *) } let empty : state = @@ -233,6 +275,9 @@ module Mempool = struct round_zero_duration = None; op_prechecked_managers = Signature.Public_key_hash.Map.empty; operation_hash_to_manager = Operation_hash.Map.empty; + prechecked_operations_count = 0; + ops_prechecked = ManagerOpWeightSet.empty; + min_prechecked_op_weight = None; } let init config ?(validation_state : validation_state option) ~predecessor () @@ -286,19 +331,60 @@ module Mempool = struct init config ?validation_state ~predecessor () let remove ~(filter_state : state) oph = - match - Operation_hash.Map.find oph filter_state.operation_hash_to_manager - with - | None -> filter_state + let removed_oph_source = ref None in + let operation_hash_to_manager = + Operation_hash.Map.update + oph + (function + | None -> None + | Some source -> + removed_oph_source := Some source ; + None) + filter_state.operation_hash_to_manager + in + match !removed_oph_source with + | None -> + (* Not present anywhere in the filter state, because of invariants. + @see {!state} *) + filter_state | Some source -> + let prechecked_operations_count = + filter_state.prechecked_operations_count - 1 + in + let removed_op = ref None in + let op_prechecked_managers = + Signature.Public_key_hash.Map.update + source + (function + | None -> None + | Some op -> + removed_op := Some op ; + None) + filter_state.op_prechecked_managers + in + let ops_prechecked = + match !removed_op with + | None -> filter_state.ops_prechecked + | Some op -> + ManagerOpWeightSet.remove + (op_weight_of_info op) + filter_state.ops_prechecked + in + let min_prechecked_op_weight = + match filter_state.min_prechecked_op_weight with + | None -> None + | Some op -> + if Operation_hash.equal op.operation_hash oph then + ManagerOpWeightSet.min_elt ops_prechecked + else Some op + in { filter_state with - op_prechecked_managers = - Signature.Public_key_hash.Map.remove - source - filter_state.op_prechecked_managers; - operation_hash_to_manager = - Operation_hash.Map.remove oph filter_state.operation_hash_to_manager; + op_prechecked_managers; + operation_hash_to_manager; + ops_prechecked; + prechecked_operations_count; + min_prechecked_op_weight; } let get_manager_operation_gas_and_fee contents = @@ -387,6 +473,51 @@ module Mempool = struct (fun (old_hash, new_hash) -> Manager_operation_replaced {old_hash; new_hash}) + type Environment.Error_monad.error += Fees_too_low_for_mempool of Tez.t + + let () = + Environment.Error_monad.register_error_kind + `Temporary + ~id:"prefilter.fees_too_low_for_mempool" + ~title:"Operation fees are too low to be considered in full mempool" + ~description:"Operation fees are too low to be considered in full mempool" + ~pp:(fun ppf required_fees -> + Format.fprintf + ppf + "The mempool is full, the number of prechecked manager operations \ + has reached the limit max_prechecked_manager_operations set by the \ + filter. Increase operation fees to at least %atz for the operation \ + to be considered and propagated by THIS node. Note that the \ + operations with the minimum fees in the mempool risk being removed \ + if better ones are received." + Tez.pp + required_fees) + Data_encoding.(obj1 (req "required_fees" Tez.encoding)) + (function + | Fees_too_low_for_mempool required_fees -> Some required_fees + | _ -> None) + (fun required_fees -> Fees_too_low_for_mempool required_fees) + + type Environment.Error_monad.error += Removed_fees_too_low_for_mempool + + let () = + Environment.Error_monad.register_error_kind + `Temporary + ~id:"plugin.removed_fees_too_low_for_mempool" + ~title:"Operation removed because fees are too low for full mempool" + ~description:"Operation removed because fees are too low for full mempool" + ~pp:(fun ppf () -> + Format.fprintf + ppf + "The mempool is full, the number of prechecked manager operations \ + has reached the limit max_prechecked_manager_operations set by the \ + filter. Operation was removed because another operation with a \ + better fees/gas-size ratio was received and accepted by the \ + mempool.") + Data_encoding.unit + (function Removed_fees_too_low_for_mempool -> Some () | _ -> None) + (fun () -> Removed_fees_too_low_for_mempool) + (* TODO: https://gitlab.com/tezos/tezos/-/issues/2238 Write unit tests for the feature 'replace-by-fee' and for other changes introduced by other MRs in the plugin. *) @@ -414,7 +545,13 @@ module Mempool = struct filter_state.op_prechecked_managers with | None -> `Fresh - | Some {operation_hash = old_hash; gas_limit = old_gas; fee = old_fee} -> + | Some + { + operation_hash = old_hash; + gas_limit = old_gas; + fee = old_fee; + weight = _; + } -> (* Manager already seen: one manager per block limitation triggered. Can replace old operation if new operation's fees are better *) if better_fees_and_ratio config old_gas old_fee gas_limit fee then @@ -433,32 +570,92 @@ module Mempool = struct Tezos_base.Operation.shell_header_encoding) + Data_encoding.Binary.length Operation.protocol_data_encoding op - (** Returns the weight of an operation. The weight corresponds to the one - implemented by the baker, to decide which operations to put in a block - first (the code is largely duplicated). + (** Returns the weight and resources consumption of an operation. The weight + corresponds to the one implemented by the baker, to decide which operations + to put in a block first (the code is largely duplicated). @see {!Tezos_baking_alpha.Operation_selection.weight_manager} *) - let weight_manager_operation ?validation_state ?size ~fee ~gas op = + let weight_and_resources_manager_operation ~validation_state ?size ~fee ~gas + op = + let hard_gas_limit_per_block = + Constants.hard_gas_limit_per_block validation_state.ctxt + in + let max_size = managers_quota.max_size in + let size = match size with None -> size_of_operation op | Some s -> s in + let size_f = Q.of_int size in + let gas_f = Q.of_bigint (Gas.Arith.integral_to_z gas) in + let fee_f = Q.of_int64 (Tez.to_mutez fee) in + let size_ratio = Q.(size_f / Q.of_int max_size) in + let gas_ratio = + Q.(gas_f / Q.of_bigint (Gas.Arith.integral_to_z hard_gas_limit_per_block)) + in + let resources = Q.max size_ratio gas_ratio in + (Q.(fee_f / resources), resources) + + (** Returns the weight of an operation, i.e. the fees w.r.t the gas and size + consumption in the block. *) + let weight_manager_operation ~validation_state ?size ~fee ~gas op = + let (weight, _resources) = + weight_and_resources_manager_operation + ~validation_state + ?size + ~fee + ~gas + op + in + weight + + (** Return fee for an operation that consumes [op_resources] for its weight to + be strictly greater than [min_weight]. *) + let required_fee_manager_operation_weight ~op_resources ~min_weight = + let req_mutez_q = Q.((min_weight * op_resources) + Q.one) in + Tez.of_mutez_exn @@ Q.to_int64 req_mutez_q + + (** Check if an operation as a weight (fees w.r.t gas and size) large enough to + be prechecked and return said weight. In the case where the prechecked + mempool is full, return an error if the weight is too small, or return the + operation to be replaced otherwise. *) + let check_minimal_weight ?validation_state config filter_state ~fee ~gas_limit + op = match validation_state with - | None -> None - | Some {ctxt; _} -> - let hard_gas_limit_per_block = - Constants.hard_gas_limit_per_block ctxt - in - let max_size = managers_quota.max_size in - let size = - match size with None -> size_of_operation op | Some s -> s - in - let size_f = Q.of_int size in - let gas_f = Q.of_bigint (Gas.Arith.integral_to_z gas) in - let fee_f = Q.of_int64 (Tez.to_mutez fee) in - let size_ratio = Q.(size_f / Q.of_int max_size) in - let gas_ratio = - Q.( - gas_f - / Q.of_bigint (Gas.Arith.integral_to_z hard_gas_limit_per_block)) + | None -> `Weight_ok (`No_replace, []) + | Some validation_state -> ( + let (weight, op_resources) = + weight_and_resources_manager_operation + ~validation_state + ~fee + ~gas:gas_limit + op in - let resources = Q.max size_ratio gas_ratio in - Some Q.(fee_f / resources) + if + filter_state.prechecked_operations_count + < config.max_prechecked_manager_operations + then + (* The precheck mempool is not full yet *) + `Weight_ok (`No_replace, [weight]) + else + match filter_state.min_prechecked_op_weight with + | None -> + (* The precheck mempool is empty *) + `Weight_ok (`No_replace, [weight]) + | Some {weight = min_weight; operation_hash = min_oph} -> + if Q.(weight > min_weight) then + (* The operation has a weight greater than the minimal + prechecked operation, replace the latest with the new one *) + `Weight_ok (`Replace min_oph, [weight]) + else + (* Otherwise fail and give indication as to what to fee should + be for the operation to be prechecked *) + let required_fee = + required_fee_manager_operation_weight + ~op_resources + ~min_weight + in + `Fail + (`Branch_delayed + [ + Environment.wrap_tzerror + (Fees_too_low_for_mempool required_fee); + ])) let pre_filter_manager : type t. @@ -499,7 +696,7 @@ module Mempool = struct minimal_fees_for_gas_in_nanotez minimal_fees_for_size_in_nanotez)) >= 0 - then `Ok + then `Fees_ok else `Refused [Environment.wrap_tzerror Fees_too_low] in match get_manager_operation_gas_and_fee op with @@ -512,20 +709,18 @@ module Mempool = struct | `Fresh | `Replace _ -> ( match check_gas_and_fee fee gas_limit with | `Refused _ as err -> err - | `Ok -> - let weight = - match - weight_manager_operation - ?validation_state:validation_state_before - ~fee - ~gas:gas_limit - ~size - packed_op - with - | None -> [] - | Some weight -> [weight] - in - `Passed_prefilter weight)) + | `Fees_ok -> ( + match + check_minimal_weight + ?validation_state:validation_state_before + config + filter_state + ~fee + ~gas_limit + packed_op + with + | `Fail errs -> errs + | `Weight_ok (_, weight) -> `Passed_prefilter weight))) type Environment.Error_monad.error += Outdated_endorsement @@ -859,9 +1054,6 @@ module Mempool = struct check_manager_restriction config filter_state source ~fee ~gas_limit with | `Fail err -> Lwt.return err - | `Fresh -> - precheck_manager_and_check_signature - ~on_success:(`Prechecked_manager `No_replace) | `Replace old_oph -> let err = Environment.wrap_tzerror @@ -870,8 +1062,50 @@ module Mempool = struct precheck_manager_and_check_signature ~on_success: (`Prechecked_manager (`Replace (old_oph, `Outdated [err]))) + | `Fresh -> ( + match + check_minimal_weight + ~validation_state + config + filter_state + ~fee + ~gas_limit + (Operation_data protocol_data) + with + | `Fail err -> Lwt.return err + | `Weight_ok (replacement, _weight) -> + let on_success = + match replacement with + | `No_replace -> `Prechecked_manager `No_replace + | `Replace oph -> + (* The operation with the lowest fees ratio, is reclassified as + branch_delayed. *) + (* TODO: https://gitlab.com/tezos/tezos/-/issues/2347 The + branch_delayed ring is bounded to 1000, so we may loose + operations. We can probably do better. *) + `Prechecked_manager + (`Replace + ( oph, + `Branch_delayed + [ + Environment.wrap_tzerror + Removed_fees_too_low_for_mempool; + ] )) + in + precheck_manager_and_check_signature ~on_success) let add_manager_restriction filter_state oph info source = + let prechecked_operations_count = + if Operation_hash.Map.mem oph filter_state.operation_hash_to_manager then + filter_state.prechecked_operations_count + else filter_state.prechecked_operations_count + 1 + in + let op_weight = op_weight_of_info info in + let min_prechecked_op_weight = + match filter_state.min_prechecked_op_weight with + | Some mini when Q.(mini.weight < info.weight) -> Some mini + | Some _ | None -> Some op_weight + in { filter_state with op_prechecked_managers = @@ -883,6 +1117,10 @@ module Mempool = struct operation_hash_to_manager = Operation_hash.Map.add oph source filter_state.operation_hash_to_manager (* Record which manager is used for the operation hash. *); + ops_prechecked = + ManagerOpWeightSet.add op_weight filter_state.ops_prechecked; + prechecked_operations_count; + min_prechecked_op_weight; } let precheck : @@ -906,7 +1144,14 @@ module Mempool = struct match get_manager_operation_gas_and_fee op with | Error err -> Lwt.return (`Refused (Environment.wrap_tztrace err)) | Ok (fee, gas_limit) -> ( - let info = {operation_hash = oph; gas_limit; fee} in + let weight = + weight_manager_operation + ~validation_state + ~fee + ~gas:gas_limit + (Operation_data protocol_data) + in + let info = {operation_hash = oph; gas_limit; fee; weight} in precheck_manager config filter_state From efc58738154c9d35b26f73e730e0f5cbea62df0e Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 7 Jan 2022 18:10:26 +0100 Subject: [PATCH 0162/1220] Tests/tezt: test prechecked limits/GC --- tezt/tests/mempool.ml | 255 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 239 insertions(+), 16 deletions(-) diff --git a/tezt/tests/mempool.ml b/tezt/tests/mempool.ml index 33df4e9024..dd0ca15adc 100644 --- a/tezt/tests/mempool.ml +++ b/tezt/tests/mempool.ml @@ -74,6 +74,16 @@ module Revamped = struct let* () = flush_waiter in Node.wait_for_level node (level + 1) + (** Calls RPC [POST /chains/main/mempool/filter] from [client], with [data] + formatted from string [config_str]. If [log] is [true], also logs this + string. *) + let set_filter ?(log = false) config_str client = + let* res = + RPC.post_mempool_filter ~data:(Ezjsonm.from_string config_str) client + in + if log then Log.info "Updated filter config with: %s." config_str ; + return res + (* Wait for the [operation_to_reclassify] event from the prevalidator and return the number of operations that were set to be reclassified. *) let wait_for_operations_not_flushed_event node = @@ -1620,6 +1630,228 @@ module Revamped = struct Log.info "Step 5: Check that node 1 contains the right applied operations." ; let* () = check_mempool ~applied:[oph4; oph3; oph2; oph1] client1 in check_mempool ~applied:[oph4; oph3; oph2; oph1] client2 + + let test_prefiltered_limit = + Protocol.register_test + ~__FILE__ + ~title:"Test prefiltered limits of mempool" + ~tags:["mempool"; "gc"; "limit"] + @@ fun protocol -> + log_step 0 "Connect and initialise two nodes." ; + (* We configure the filter with a limit of 4, in order to easily be able to + inject more with our 5 bootstrap accounts *) + let max_prechecked_manager_operations = 4 in + (* Control fees and gas limits to easily influence weight (i.e. ratio) *) + let fee = 1000 in + let gas_limit = 1500 in + let* node1 = + Node.init + ~event_sections_levels:[("prevalidator", `Debug)] + [Synchronisation_threshold 0; Private_mode] + and* node2 = Node.init [Synchronisation_threshold 0; Private_mode] in + let* client1 = Client.init ~endpoint:(Node node1) () + and* client2 = Client.init ~endpoint:(Node node2) () in + let* () = Client.Admin.trust_address client1 ~peer:node2 + and* () = Client.Admin.trust_address client2 ~peer:node1 in + let* () = Client.Admin.connect_address client1 ~peer:node2 in + let* () = Client.activate_protocol ~protocol client1 in + let* _ = Node.wait_for_level node1 1 and* _ = Node.wait_for_level node2 1 in + + log_step + 1 + "Update the nodes filter to allow only %d prechecked manager operations." + max_prechecked_manager_operations ; + let* _ = + set_filter + ~log:true + (sf + {|{ "max_prechecked_manager_operations" : %d }|} + max_prechecked_manager_operations) + client1 + and* _ = + set_filter + ~log:true + (sf + {|{ "max_prechecked_manager_operations" : %d }|} + max_prechecked_manager_operations) + client2 + in + + log_step + 2 + "Inject max_prechecked_manager_operations %d operations." + max_prechecked_manager_operations ; + let* ops = + Lwt.all + @@ List.mapi + (fun i source -> + let* (`OpHash oph) = + Operation.inject_transfer + ~source + ~dest:Constant.bootstrap2 + ~wait_for_injection:node1 + ~amount:1 + ~fee:(fee + i) + ~gas_limit + client1 + in + return oph) + Constant.[bootstrap1; bootstrap2; bootstrap3; bootstrap4] + in + + log_step 3 "Check these operations are applied in mempool." ; + let* mempool = RPC.get_mempool client1 in + let expected_mempool0 = {Mempool.empty with applied = ops} in + Check.( + (expected_mempool0 = mempool) + Mempool.classified_typ + ~error_msg:"mempool expected to be %L, got %R") ; + + log_step + 4 + "The client should report when the mempool is full and not enough fees \ + are provided." ; + let transfer_should_fail = + Client.spawn_transfer + ~giver:Constant.bootstrap5.alias + ~receiver:Constant.bootstrap2.alias + ~amount:(Tez.of_int 55) + ~fee:(Tez.of_mutez_int fee) + ~gas_limit + client1 + in + let* std_err = + Process.check_and_read_stderr ~expect_failure:true transfer_should_fail + in + (match std_err =~* rex "Increase operation fees to at least (.*)tz" with + | None -> + Test.fail + ~__LOC__ + "The client should fail when the mempool is full and not enough fees \ + are provided." + | Some required -> + Check.( + (required = "0.001001") + string + ~error_msg:"The required fees are %L but expected %R")) ; + + log_step 5 "Inject an extra operation with same fees (but mempool is full)." ; + let* (`OpHash oph5) = + Operation.inject_transfer + ~force:true + ~source:Constant.bootstrap5 + ~dest:Constant.bootstrap2 + ~wait_for_injection:node1 + ~amount:1 + ~fee + ~gas_limit + client1 + in + + log_step 6 "Check that this extra operation is branch_delayed." ; + let* mempool = RPC.get_mempool client1 in + let expected_mempool1 = {expected_mempool0 with branch_delayed = [oph5]} in + Check.( + (expected_mempool1 = mempool) + Mempool.classified_typ + ~error_msg:"mempool expected to be %L, got %R") ; + + log_step + 7 + "Check that the new operation is not propagated as part of a mempool." ; + let* mempool = RPC.get_mempool client2 in + Check.( + (expected_mempool0 = mempool) + Mempool.classified_typ + ~error_msg:"mempool expected to be %L, got %R") ; + + log_step 8 "Inject an extra operation with more fees for same gas." ; + let* (`OpHash oph6) = + Operation.inject_transfer + ~source:Constant.bootstrap5 + ~dest:Constant.bootstrap2 + ~wait_for_injection:node1 + ~amount:1 + ~fee:(fee + 5) + ~gas_limit + client1 + in + + log_step + 9 + "Check that this extra operation is applied and replaces one with lower \ + fees." ; + let* mempool = RPC.get_mempool client1 in + let (removed_oph, kept_ops) = + match expected_mempool1.applied with + | [] -> assert false + | removed :: applied -> (removed, applied) + in + let expected_mempool2 = + { + expected_mempool1 with + applied = oph6 :: kept_ops; + branch_delayed = removed_oph :: expected_mempool1.branch_delayed; + } + in + Check.( + (expected_mempool2 = mempool) + Mempool.classified_typ + ~error_msg:"mempool expected to be %L, got %R") ; + + log_step 10 "Check that this new operation is propagated." ; + let* mempool = RPC.get_mempool client2 in + let expected_mempool3 = + { + expected_mempool2 with + branch_delayed = [removed_oph] (* The other one was never propagated *); + } + in + Check.( + (expected_mempool3 = mempool) + Mempool.classified_typ + ~error_msg:"mempool expected to be %L, got %R") ; + + log_step 11 "Check reclassification after flush." ; + let* _level = + bake_for + ~keys:[Constant.bootstrap1.public_key_hash] + ~empty:true + ~protocol + node1 + client1 + in + let* mempool = RPC.get_mempool client1 in + let expected_mempool4 = + { + expected_mempool2 with + (* oph6 is reconsidered before oph5 (more fees), which has same + manager/counter *) + applied = oph6 :: kept_ops; + branch_delayed = [removed_oph; oph5]; + } + in + Check.( + (expected_mempool4 = mempool) + Mempool.classified_typ + ~error_msg:"mempool expected to be %L, got %R") ; + let* _level = + bake_for + ~keys:[Constant.bootstrap1.public_key_hash] + ~empty:false + ~protocol + node1 + client1 + in + + log_step 12 "Check mempool after flush." ; + let* mempool = RPC.get_mempool client1 in + let expected_mempool5 = {Mempool.empty with branch_refused = [oph5]} in + Check.( + (expected_mempool5 = mempool) + Mempool.classified_typ + ~error_msg:"mempool expected to be %L, got %R") ; + unit end let check_operation_is_in_applied_mempool ops oph = @@ -2659,20 +2891,10 @@ let wait_for_arrival_of_ophash ophash node = in Node.wait_for node "request_completed_debug.v0" filter -(** Calls RPC [POST /chains/main/mempool/filter] from [client], with [data] - formatted from string [config_str]. If [log] is [true], also logs this - string. *) -let set_filter ?(log = false) config_str client = - let* res = - RPC.post_mempool_filter ~data:(Ezjsonm.from_string config_str) client - in - if log then Log.info "Updated filter config with: %s." config_str ; - return res - (** [set_filter_no_fee_requirement client] sets all fields [minimal_*] to 0 in the filter configuration of [client]'s mempool. *) let set_filter_no_fee_requirement = - set_filter + Revamped.set_filter {|{ "minimal_fees": "0", "minimal_nanotez_per_gas_unit": [ "0", "1" ], "minimal_nanotez_per_byte": [ "0", "1" ] }|} (** Checks that arguments [applied] and [refused] are the number of operations @@ -3429,7 +3651,7 @@ let test_get_post_mempool_filter = log_step 3 step3_msg ; let set_config_and_check msg config = Log.info "%s" msg ; - let* output = set_filter ~log:true (show config) client1 in + let* output = Revamped.set_filter ~log:true (show config) client1 in check_equal (fill_with_default config) (of_json output) ; check_RPC_GET_all_variations ~log:true config client1 in @@ -3477,7 +3699,7 @@ let test_get_post_mempool_filter = "invalid_mempool_filter_configuration.v0" (Fun.const (Some ())) in - let* output = set_filter invalid_config_str client1 in + let* output = Revamped.set_filter invalid_config_str client1 in check_equal config3_full (of_json output) ; let* () = waiter in let* output = RPC.get_mempool_filter client1 in @@ -3496,7 +3718,7 @@ let test_get_post_mempool_filter = ] in log_step 5 step5_msg ; - let* output = set_filter ~log:true "{}" client1 in + let* output = Revamped.set_filter ~log:true "{}" client1 in check_equal default (of_json output) ; check_RPC_GET_all_variations ~log:true default client1 @@ -3696,7 +3918,7 @@ let test_mempool_filter_operation_arrival = in log_step 5 step5 ; let* _ = - set_filter + Revamped.set_filter ~log:true {|{ "minimal_nanotez_per_gas_unit": [ "0", "1" ], "minimal_nanotez_per_byte": [ "0", "1" ] }|} client1 @@ -3717,7 +3939,7 @@ let test_mempool_filter_operation_arrival = in log_step 7 step7 ; let* _ = - set_filter + Revamped.set_filter {|{ "minimal_fees": "10", "minimal_nanotez_per_gas_unit": [ "0", "1" ], "minimal_nanotez_per_byte": [ "0", "1" ] }|} client1 in @@ -3811,6 +4033,7 @@ let register ~protocols = Revamped.ban_operation ~protocols ; Revamped.unban_operation_and_reinject ~protocols ; Revamped.unban_all_operations ~protocols ; + Revamped.test_prefiltered_limit ~protocols ; run_batched_operation ~protocols ; propagation_future_endorsement ~protocols ; forge_pre_filtered_operation ~protocols ; From b4d70fddf4367ee310590083f6f3f939236a2471 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Tue, 11 Jan 2022 18:06:25 +0100 Subject: [PATCH 0163/1220] Tezt/tests: fix regression with new field in filter --- .../_regressions/rpc/alpha.client.mempool.out | 33 ++++++++++++------- tezt/_regressions/rpc/alpha.proxy.mempool.out | 33 ++++++++++++------- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/tezt/_regressions/rpc/alpha.client.mempool.out b/tezt/_regressions/rpc/alpha.client.mempool.out index 90b82711fd..608a20f12b 100644 --- a/tezt/_regressions/rpc/alpha.client.mempool.out +++ b/tezt/_regressions/rpc/alpha.client.mempool.out @@ -76,12 +76,14 @@ curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=t ./tezos-client rpc get /chains/main/mempool/filter { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get '/chains/main/mempool/filter?include_default=true' { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get '/chains/main/mempool/filter?include_default=false' {} @@ -100,17 +102,20 @@ curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=t }' { "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get /chains/main/mempool/filter { "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get '/chains/main/mempool/filter?include_default=true' { "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get '/chains/main/mempool/filter?include_default=false' { "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], @@ -122,17 +127,20 @@ curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=t }' { "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get /chains/main/mempool/filter { "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get '/chains/main/mempool/filter?include_default=true' { "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get '/chains/main/mempool/filter?include_default=false' { "minimal_fees": "200" } @@ -140,17 +148,20 @@ curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=t ./tezos-client rpc post /chains/main/mempool/filter with '{}' { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get /chains/main/mempool/filter { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get '/chains/main/mempool/filter?include_default=true' { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client rpc get '/chains/main/mempool/filter?include_default=false' {} diff --git a/tezt/_regressions/rpc/alpha.proxy.mempool.out b/tezt/_regressions/rpc/alpha.proxy.mempool.out index 8addbd726d..2918e3f46f 100644 --- a/tezt/_regressions/rpc/alpha.proxy.mempool.out +++ b/tezt/_regressions/rpc/alpha.proxy.mempool.out @@ -78,13 +78,15 @@ curl -s 'http://localhost:16385/chains/main/mempool/monitor_operations?applied=t protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=true' protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=false' protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK @@ -105,19 +107,22 @@ protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaAL protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get /chains/main/mempool/filter protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=true' protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "50", "minimal_nanotez_per_gas_unit": [ "201", "5" ], "minimal_nanotez_per_byte": [ "56", "3" ], "allow_script_failure": false, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=false' protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK @@ -131,19 +136,22 @@ protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaAL protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get /chains/main/mempool/filter protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=true' protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "200", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=false' protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK @@ -153,19 +161,22 @@ protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaAL protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get /chains/main/mempool/filter protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=true' protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK { "minimal_fees": "100", "minimal_nanotez_per_gas_unit": [ "100", "1" ], "minimal_nanotez_per_byte": [ "1000", "1" ], "allow_script_failure": true, - "replace_by_fee_factor": [ "21", "20" ] } + "replace_by_fee_factor": [ "21", "20" ], + "max_prechecked_manager_operations": 5000 } ./tezos-client --mode proxy rpc get '/chains/main/mempool/filter?include_default=false' protocol of proxy unspecified, using the node's protocol: ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK From a3fd3c6b65a85b446cbaa7c920d8091a52e7a112 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 14 Jan 2022 10:32:12 +0100 Subject: [PATCH 0164/1220] Plugin/Proto_012: backport minimal weight check --- src/proto_012_PsiThaCa/lib_plugin/plugin.ml | 360 +++++++++++++++++--- 1 file changed, 304 insertions(+), 56 deletions(-) diff --git a/src/proto_012_PsiThaCa/lib_plugin/plugin.ml b/src/proto_012_PsiThaCa/lib_plugin/plugin.ml index 2ad1e0305e..7a823e48fd 100644 --- a/src/proto_012_PsiThaCa/lib_plugin/plugin.ml +++ b/src/proto_012_PsiThaCa/lib_plugin/plugin.ml @@ -115,6 +115,10 @@ module Mempool = struct in the mempool. Note that other criteria, such as the gas ratio, are also taken into account to decide whether to accept the replacement or not. *) + max_prechecked_manager_operations : int; + (** Maximal number of prechecked operations to keep. The mempool only + keeps the [max_prechecked_manager_operations] operations with the + highest fee/gas and fee/size ratios. *) } let default_minimal_fees = @@ -146,6 +150,7 @@ module Mempool = struct replace_by_fee_factor = Q.make (Z.of_int 105) (Z.of_int 100) (* Default value of [replace_by_fee_factor] is set to 5% *); + max_prechecked_manager_operations = 5_000; } let config_encoding : config Data_encoding.t = @@ -158,19 +163,22 @@ module Mempool = struct allow_script_failure; clock_drift; replace_by_fee_factor; + max_prechecked_manager_operations; } -> ( minimal_fees, minimal_nanotez_per_gas_unit, minimal_nanotez_per_byte, allow_script_failure, clock_drift, - replace_by_fee_factor )) + replace_by_fee_factor, + max_prechecked_manager_operations )) (fun ( minimal_fees, minimal_nanotez_per_gas_unit, minimal_nanotez_per_byte, allow_script_failure, clock_drift, - replace_by_fee_factor ) -> + replace_by_fee_factor, + max_prechecked_manager_operations ) -> { minimal_fees; minimal_nanotez_per_gas_unit; @@ -178,8 +186,9 @@ module Mempool = struct allow_script_failure; clock_drift; replace_by_fee_factor; + max_prechecked_manager_operations; }) - (obj6 + (obj7 (dft "minimal_fees" Tez.encoding default_config.minimal_fees) (dft "minimal_nanotez_per_gas_unit" @@ -194,7 +203,11 @@ module Mempool = struct (dft "replace_by_fee_factor" manager_op_replacement_factor_enc - default_config.replace_by_fee_factor)) + default_config.replace_by_fee_factor) + (dft + "max_prechecked_manager_operations" + int31 + default_config.max_prechecked_manager_operations)) type manager_gas_witness @@ -210,8 +223,24 @@ module Mempool = struct operation_hash : Operation_hash.t; gas_limit : manager_gas_witness Gas.Arith.t; fee : Tez.t; + weight : Q.t; } + type manager_op_weight = {operation_hash : Operation_hash.t; weight : Q.t} + + let op_weight_of_info (info : manager_op_info) : manager_op_weight = + {operation_hash = info.operation_hash; weight = info.weight} + + module ManagerOpWeightSet = Set.Make (struct + type t = manager_op_weight + + (* Sort by weight *) + let compare op1 op2 = + let c = Q.compare op1.weight op2.weight in + if c <> 0 then c + else Operation_hash.compare op1.operation_hash op2.operation_hash + end) + type state = { grandparent_level_start : Alpha_context.Timestamp.t option; round_zero_duration : Period.t option; @@ -221,10 +250,23 @@ module Mempool = struct a record of type [manager_op_info] (See for record details above). Each manager in the map should be accessible with an operation hash in [operation_hash_to_manager]. *) - operation_hash_to_manager : Signature.Public_key_hash.t Operation_hash.Map.t; + operation_hash_to_manager : + Signature.Public_key_hash.t Operation_hash.Map.t; (** Map of operation hash to manager used to remove a manager from [op_prechecked_managers] with an operation hash. Each manager in the map should also be in [op_prechecked_managers]. *) + prechecked_operations_count : int; + (** Number of prechecked manager operations. + Invariants: + - [Operation_hash.Map.cardinal operation_hash_to_manager = + prechecked_operations_count] + - [prechecked_operations_count <= max_prechecked_manager_operations] *) + ops_prechecked : ManagerOpWeightSet.t; + min_prechecked_op_weight : manager_op_weight option; + (** The prechecked operation in [op_prechecked_managers], if any, with + the minimal weight. + Invariant: + - [min_prechecked_op_weight = min { x | x \in ops_prechecked }] *) } let empty : state = @@ -233,6 +275,9 @@ module Mempool = struct round_zero_duration = None; op_prechecked_managers = Signature.Public_key_hash.Map.empty; operation_hash_to_manager = Operation_hash.Map.empty; + prechecked_operations_count = 0; + ops_prechecked = ManagerOpWeightSet.empty; + min_prechecked_op_weight = None; } let init config ?(validation_state : validation_state option) ~predecessor () @@ -286,19 +331,60 @@ module Mempool = struct init config ?validation_state ~predecessor () let remove ~(filter_state : state) oph = - match - Operation_hash.Map.find oph filter_state.operation_hash_to_manager - with - | None -> filter_state + let removed_oph_source = ref None in + let operation_hash_to_manager = + Operation_hash.Map.update + oph + (function + | None -> None + | Some source -> + removed_oph_source := Some source ; + None) + filter_state.operation_hash_to_manager + in + match !removed_oph_source with + | None -> + (* Not present anywhere in the filter state, because of invariants. + @see {!state} *) + filter_state | Some source -> + let prechecked_operations_count = + filter_state.prechecked_operations_count - 1 + in + let removed_op = ref None in + let op_prechecked_managers = + Signature.Public_key_hash.Map.update + source + (function + | None -> None + | Some op -> + removed_op := Some op ; + None) + filter_state.op_prechecked_managers + in + let ops_prechecked = + match !removed_op with + | None -> filter_state.ops_prechecked + | Some op -> + ManagerOpWeightSet.remove + (op_weight_of_info op) + filter_state.ops_prechecked + in + let min_prechecked_op_weight = + match filter_state.min_prechecked_op_weight with + | None -> None + | Some op -> + if Operation_hash.equal op.operation_hash oph then + ManagerOpWeightSet.min_elt ops_prechecked + else Some op + in { filter_state with - op_prechecked_managers = - Signature.Public_key_hash.Map.remove - source - filter_state.op_prechecked_managers; - operation_hash_to_manager = - Operation_hash.Map.remove oph filter_state.operation_hash_to_manager; + op_prechecked_managers; + operation_hash_to_manager; + ops_prechecked; + prechecked_operations_count; + min_prechecked_op_weight; } let get_manager_operation_gas_and_fee contents = @@ -387,6 +473,51 @@ module Mempool = struct (fun (old_hash, new_hash) -> Manager_operation_replaced {old_hash; new_hash}) + type Environment.Error_monad.error += Fees_too_low_for_mempool of Tez.t + + let () = + Environment.Error_monad.register_error_kind + `Temporary + ~id:"prefilter.fees_too_low_for_mempool" + ~title:"Operation fees are too low to be considered in full mempool" + ~description:"Operation fees are too low to be considered in full mempool" + ~pp:(fun ppf required_fees -> + Format.fprintf + ppf + "The mempool is full, the number of prechecked manager operations \ + has reached the limit max_prechecked_manager_operations set by the \ + filter. Increase operation fees to at least %atz for the operation \ + to be considered and propagated by THIS node. Note that the \ + operations with the minimum fees in the mempool risk being removed \ + if better ones are received." + Tez.pp + required_fees) + Data_encoding.(obj1 (req "required_fees" Tez.encoding)) + (function + | Fees_too_low_for_mempool required_fees -> Some required_fees + | _ -> None) + (fun required_fees -> Fees_too_low_for_mempool required_fees) + + type Environment.Error_monad.error += Removed_fees_too_low_for_mempool + + let () = + Environment.Error_monad.register_error_kind + `Temporary + ~id:"plugin.removed_fees_too_low_for_mempool" + ~title:"Operation removed because fees are too low for full mempool" + ~description:"Operation removed because fees are too low for full mempool" + ~pp:(fun ppf () -> + Format.fprintf + ppf + "The mempool is full, the number of prechecked manager operations \ + has reached the limit max_prechecked_manager_operations set by the \ + filter. Operation was removed because another operation with a \ + better fees/gas-size ratio was received and accepted by the \ + mempool.") + Data_encoding.unit + (function Removed_fees_too_low_for_mempool -> Some () | _ -> None) + (fun () -> Removed_fees_too_low_for_mempool) + (* TODO: https://gitlab.com/tezos/tezos/-/issues/2238 Write unit tests for the feature 'replace-by-fee' and for other changes introduced by other MRs in the plugin. *) @@ -414,7 +545,13 @@ module Mempool = struct filter_state.op_prechecked_managers with | None -> `Fresh - | Some {operation_hash = old_hash; gas_limit = old_gas; fee = old_fee} -> + | Some + { + operation_hash = old_hash; + gas_limit = old_gas; + fee = old_fee; + weight = _; + } -> (* Manager already seen: one manager per block limitation triggered. Can replace old operation if new operation's fees are better *) if better_fees_and_ratio config old_gas old_fee gas_limit fee then @@ -433,29 +570,92 @@ module Mempool = struct Tezos_base.Operation.shell_header_encoding) + Data_encoding.Binary.length Operation.protocol_data_encoding op - (** @see {!Operation_selection.weight_manager} *) - let weight_manager_operation ?validation_state ?size ~fee ~gas op = + (** Returns the weight and resources consumption of an operation. The weight + corresponds to the one implemented by the baker, to decide which operations + to put in a block first (the code is largely duplicated). + @see {!Tezos_baking_alpha.Operation_selection.weight_manager} *) + let weight_and_resources_manager_operation ~validation_state ?size ~fee ~gas + op = + let hard_gas_limit_per_block = + Constants.hard_gas_limit_per_block validation_state.ctxt + in + let max_size = managers_quota.max_size in + let size = match size with None -> size_of_operation op | Some s -> s in + let size_f = Q.of_int size in + let gas_f = Q.of_bigint (Gas.Arith.integral_to_z gas) in + let fee_f = Q.of_int64 (Tez.to_mutez fee) in + let size_ratio = Q.(size_f / Q.of_int max_size) in + let gas_ratio = + Q.(gas_f / Q.of_bigint (Gas.Arith.integral_to_z hard_gas_limit_per_block)) + in + let resources = Q.max size_ratio gas_ratio in + (Q.(fee_f / resources), resources) + + (** Returns the weight of an operation, i.e. the fees w.r.t the gas and size + consumption in the block. *) + let weight_manager_operation ~validation_state ?size ~fee ~gas op = + let (weight, _resources) = + weight_and_resources_manager_operation + ~validation_state + ?size + ~fee + ~gas + op + in + weight + + (** Return fee for an operation that consumes [op_resources] for its weight to + be strictly greater than [min_weight]. *) + let required_fee_manager_operation_weight ~op_resources ~min_weight = + let req_mutez_q = Q.((min_weight * op_resources) + Q.one) in + Tez.of_mutez_exn @@ Q.to_int64 req_mutez_q + + (** Check if an operation as a weight (fees w.r.t gas and size) large enough to + be prechecked and return said weight. In the case where the prechecked + mempool is full, return an error if the weight is too small, or return the + operation to be replaced otherwise. *) + let check_minimal_weight ?validation_state config filter_state ~fee ~gas_limit + op = match validation_state with - | None -> None - | Some {ctxt; _} -> - let hard_gas_limit_per_block = - Constants.hard_gas_limit_per_block ctxt - in - let max_size = managers_quota.max_size in - let size = - match size with None -> size_of_operation op | Some s -> s - in - let size_f = Q.of_int size in - let gas_f = Q.of_bigint (Gas.Arith.integral_to_z gas) in - let fee_f = Q.of_int64 (Tez.to_mutez fee) in - let size_ratio = Q.(size_f / Q.of_int max_size) in - let gas_ratio = - Q.( - gas_f - / Q.of_bigint (Gas.Arith.integral_to_z hard_gas_limit_per_block)) + | None -> `Weight_ok (`No_replace, []) + | Some validation_state -> ( + let (weight, op_resources) = + weight_and_resources_manager_operation + ~validation_state + ~fee + ~gas:gas_limit + op in - let resources = Q.max size_ratio gas_ratio in - Some Q.(fee_f / resources) + if + filter_state.prechecked_operations_count + < config.max_prechecked_manager_operations + then + (* The precheck mempool is not full yet *) + `Weight_ok (`No_replace, [weight]) + else + match filter_state.min_prechecked_op_weight with + | None -> + (* The precheck mempool is empty *) + `Weight_ok (`No_replace, [weight]) + | Some {weight = min_weight; operation_hash = min_oph} -> + if Q.(weight > min_weight) then + (* The operation has a weight greater than the minimal + prechecked operation, replace the latest with the new one *) + `Weight_ok (`Replace min_oph, [weight]) + else + (* Otherwise fail and give indication as to what to fee should + be for the operation to be prechecked *) + let required_fee = + required_fee_manager_operation_weight + ~op_resources + ~min_weight + in + `Fail + (`Branch_delayed + [ + Environment.wrap_tzerror + (Fees_too_low_for_mempool required_fee); + ])) let pre_filter_manager : type t. @@ -496,7 +696,7 @@ module Mempool = struct minimal_fees_for_gas_in_nanotez minimal_fees_for_size_in_nanotez)) >= 0 - then `Ok + then `Fees_ok else `Refused [Environment.wrap_tzerror Fees_too_low] in match get_manager_operation_gas_and_fee op with @@ -509,20 +709,18 @@ module Mempool = struct | `Fresh | `Replace _ -> ( match check_gas_and_fee fee gas_limit with | `Refused _ as err -> err - | `Ok -> - let weight = - match - weight_manager_operation - ?validation_state:validation_state_before - ~fee - ~gas:gas_limit - ~size - packed_op - with - | None -> [] - | Some weight -> [weight] - in - `Passed_prefilter weight)) + | `Fees_ok -> ( + match + check_minimal_weight + ?validation_state:validation_state_before + config + filter_state + ~fee + ~gas_limit + packed_op + with + | `Fail errs -> errs + | `Weight_ok (_, weight) -> `Passed_prefilter weight))) type Environment.Error_monad.error += Outdated_endorsement @@ -856,9 +1054,6 @@ module Mempool = struct check_manager_restriction config filter_state source ~fee ~gas_limit with | `Fail err -> Lwt.return err - | `Fresh -> - precheck_manager_and_check_signature - ~on_success:(`Prechecked_manager `No_replace) | `Replace old_oph -> let err = Environment.wrap_tzerror @@ -867,8 +1062,50 @@ module Mempool = struct precheck_manager_and_check_signature ~on_success: (`Prechecked_manager (`Replace (old_oph, `Outdated [err]))) + | `Fresh -> ( + match + check_minimal_weight + ~validation_state + config + filter_state + ~fee + ~gas_limit + (Operation_data protocol_data) + with + | `Fail err -> Lwt.return err + | `Weight_ok (replacement, _weight) -> + let on_success = + match replacement with + | `No_replace -> `Prechecked_manager `No_replace + | `Replace oph -> + (* The operation with the lowest fees ratio, is reclassified as + branch_delayed. *) + (* TODO: https://gitlab.com/tezos/tezos/-/issues/2347 The + branch_delayed ring is bounded to 1000, so we may loose + operations. We can probably do better. *) + `Prechecked_manager + (`Replace + ( oph, + `Branch_delayed + [ + Environment.wrap_tzerror + Removed_fees_too_low_for_mempool; + ] )) + in + precheck_manager_and_check_signature ~on_success) let add_manager_restriction filter_state oph info source = + let prechecked_operations_count = + if Operation_hash.Map.mem oph filter_state.operation_hash_to_manager then + filter_state.prechecked_operations_count + else filter_state.prechecked_operations_count + 1 + in + let op_weight = op_weight_of_info info in + let min_prechecked_op_weight = + match filter_state.min_prechecked_op_weight with + | Some mini when Q.(mini.weight < info.weight) -> Some mini + | Some _ | None -> Some op_weight + in { filter_state with op_prechecked_managers = @@ -880,6 +1117,10 @@ module Mempool = struct operation_hash_to_manager = Operation_hash.Map.add oph source filter_state.operation_hash_to_manager (* Record which manager is used for the operation hash. *); + ops_prechecked = + ManagerOpWeightSet.add op_weight filter_state.ops_prechecked; + prechecked_operations_count; + min_prechecked_op_weight; } let precheck : @@ -903,7 +1144,14 @@ module Mempool = struct match get_manager_operation_gas_and_fee op with | Error err -> Lwt.return (`Refused (Environment.wrap_tztrace err)) | Ok (fee, gas_limit) -> ( - let info = {operation_hash = oph; gas_limit; fee} in + let weight = + weight_manager_operation + ~validation_state + ~fee + ~gas:gas_limit + (Operation_data protocol_data) + in + let info = {operation_hash = oph; gas_limit; fee; weight} in precheck_manager config filter_state From a89ead72a280274f6bd44038dc5443cc9704ac3f Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 14 Jan 2022 16:18:01 +0100 Subject: [PATCH 0165/1220] Doc: mention new configuration of filter in CHANGES.rst --- CHANGES.rst | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 4c4fa304b3..b874566e6f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -70,7 +70,8 @@ Node 3. ``/workers/chain_validators/``, 4. ``/workers/chain_validator//peer_validators``, 5. ``/workers/chain_validator//peer_validators/``, - 6. ``/workers/prevalidators``. + 6. ``/workers/prevalidators``, + 7. ``/chains//mempool/filter``. The field ``backlog`` is removed. Those logs can be obtained via the node itself. Logging can be redirected to a file via the option @@ -92,7 +93,7 @@ Node If those fields are present in your configuration file, they can simply be removed. -- Added version ``1`` to RPC ``GET chains/main/mempool/pending_operations``. +- Added version ``1`` to RPC ``GET /chains/main/mempool/pending_operations``. It can be used by calling the RPC with the parameter ``?version=1`` (default version is still ``0``). @@ -171,6 +172,11 @@ Node - Added an option ``--listen-prometheus `` to ``tezos-node run`` to expose some metrics using the Prometheus format. +- Added two optional fields, ``replace_by_fee_factor`` and + ``max_prechecked_manager_operations`` to ``/chains//mempool/filter`` + in order to control when the mempool accepts a manager operation replacement, + and how many manager operations we keep in the prechecked classification. + Client ------ From d06ec9a28f0fab77cf1469180f356a5ba1a2c73d Mon Sep 17 00:00:00 2001 From: Roman Melnikov Date: Thu, 23 Dec 2021 17:40:38 +0300 Subject: [PATCH 0166/1220] doc: Fix misleading proposal period description Problem: Proposal period description mentions the `Ballot` operation, which cannot be used during the proposal phase. Solution: Remove mention of `Ballot` operation in the proposal period. The `Ballot` operation has a detailed explanation in the later part of the doc. --- docs/011/voting.rst | 7 +++---- docs/012/voting.rst | 7 +++---- docs/alpha/voting.rst | 7 +++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/docs/011/voting.rst b/docs/011/voting.rst index a303415078..accb0a3824 100644 --- a/docs/011/voting.rst +++ b/docs/011/voting.rst @@ -27,8 +27,7 @@ The five periods are as follows: - *Proposal period*: During this period, delegates can - submit *protocol amendment proposals* (or, simply, *proposals*) using the - ``Proposals`` operation (see below), - - support a proposal using the ``Ballot`` operation (see below). + ``Proposals`` operation (see below). Each delegate can submit a maximum of 20 proposals. Duplicates count towards this total. @@ -217,8 +216,8 @@ and the delegate submits another *proposals* operation for protocols B and C. The list of submissions that will be tallied is [A,B,C]. -A *ballot* operation can only be submitted during one of the voting -periods, and only once per period. +A *ballot* operation can only be submitted during periods where a vote happens +(e.g. exploration, promotion), and only once per period. :: diff --git a/docs/012/voting.rst b/docs/012/voting.rst index b75bf0bd58..d9a06e4509 100644 --- a/docs/012/voting.rst +++ b/docs/012/voting.rst @@ -25,8 +25,7 @@ The five periods are as follows: - *Proposal period*: During this period, delegates can - submit *protocol amendment proposals* (or, simply, *proposals*) using the - ``Proposals`` operation (see below), - - support a proposal using the ``Ballot`` operation (see below). + ``Proposals`` operation (see below). Each delegate can submit a maximum of 20 proposals. Duplicates count towards this total. @@ -215,8 +214,8 @@ and the delegate submits another *proposals* operation for protocols B and C. The list of submissions that will be tallied is [A,B,C]. -A *ballot* operation can only be submitted during one of the voting -periods, and only once per period. +A *ballot* operation can only be submitted during periods where a vote happens +(e.g. exploration, promotion), and only once per period. :: diff --git a/docs/alpha/voting.rst b/docs/alpha/voting.rst index dd44c3a3e7..f102bf27bc 100644 --- a/docs/alpha/voting.rst +++ b/docs/alpha/voting.rst @@ -25,8 +25,7 @@ The five periods are as follows: - *Proposal period*: During this period, delegates can - submit *protocol amendment proposals* (or, simply, *proposals*) using the - ``Proposals`` operation (see below), - - support a proposal using the ``Ballot`` operation (see below). + ``Proposals`` operation (see below). Each delegate can submit a maximum of 20 proposals. Duplicates count towards this total. @@ -215,8 +214,8 @@ and the delegate submits another *proposals* operation for protocols B and C. The list of submissions that will be tallied is [A,B,C]. -A *ballot* operation can only be submitted during one of the voting -periods, and only once per period. +A *ballot* operation can only be submitted during periods where a vote happens +(e.g. exploration, promotion), and only once per period. :: From 76b183ba91386c566097df577583b1c4459364ad Mon Sep 17 00:00:00 2001 From: Thomas Letan Date: Wed, 12 Jan 2022 09:12:57 +0100 Subject: [PATCH 0167/1220] Proto: Introduce [Ticket_hash_repr] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: François Thiré Reviewed-by: Joel Bjornson --- src/proto_alpha/lib_protocol/TEZOS_PROTOCOL | 1 + src/proto_alpha/lib_protocol/alpha_context.ml | 1 + .../lib_protocol/alpha_context.mli | 35 +++++---- src/proto_alpha/lib_protocol/dune.inc | 5 ++ .../michelson/test_ticket_balance_key.ml | 8 +- .../michelson/test_ticket_storage.ml | 11 +-- .../lib_protocol/ticket_balance_key.ml | 2 +- .../lib_protocol/ticket_balance_key.mli | 2 +- .../lib_protocol/ticket_hash_repr.ml | 74 +++++++++++++++++++ .../lib_protocol/ticket_hash_repr.mli | 56 ++++++++++++++ .../lib_protocol/ticket_storage.ml | 46 ++---------- .../lib_protocol/ticket_storage.mli | 33 ++------- 12 files changed, 180 insertions(+), 94 deletions(-) create mode 100644 src/proto_alpha/lib_protocol/ticket_hash_repr.ml create mode 100644 src/proto_alpha/lib_protocol/ticket_hash_repr.mli diff --git a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL index bd35f3a774..a4ca3fb9c2 100644 --- a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL +++ b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL @@ -56,6 +56,7 @@ "Raw_context_intf", "Raw_context", + "Ticket_hash_repr", "Storage_costs", "Storage_sigs", "Storage_functors", diff --git a/src/proto_alpha/lib_protocol/alpha_context.ml b/src/proto_alpha/lib_protocol/alpha_context.ml index cd38eb3b12..8e30480ba1 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.ml +++ b/src/proto_alpha/lib_protocol/alpha_context.ml @@ -448,6 +448,7 @@ let description = Raw_context.description module Parameters = Parameters_repr module Liquidity_baking = Liquidity_baking_repr +module Ticket_hash = Ticket_hash_repr module Ticket_balance = struct include Ticket_storage diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 0316d49538..5cd7ecf6ac 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -1949,6 +1949,24 @@ module Block_header : sig unit tzresult end +(** This module re-exports functions from {!Ticket_hash_repr}. See + documentation of the functions there. *) +module Ticket_hash : sig + type t + + val encoding : t Data_encoding.t + + val to_script_expr_hash : t -> Script_expr_hash.t + + val make : + context -> + ticketer:Script.node -> + typ:Script.node -> + contents:Script.node -> + owner:Script.node -> + (t * context) tzresult +end + module Kind : sig type preendorsement_consensus_kind = Preendorsement_consensus_kind @@ -2455,22 +2473,11 @@ end documentation of the functions there. *) module Ticket_balance : sig - type key_hash - - val script_expr_hash_of_key_hash : key_hash -> Script_expr_hash.t - - val make_key_hash : - context -> - ticketer:Script.node -> - typ:Script.node -> - contents:Script.node -> - owner:Script.node -> - (key_hash * context) tzresult - val adjust_balance : - context -> key_hash -> delta:Z.t -> (Z.t * context) tzresult Lwt.t + context -> Ticket_hash.t -> delta:Z.t -> (Z.t * context) tzresult Lwt.t - val get_balance : context -> key_hash -> (Z.t option * context) tzresult Lwt.t + val get_balance : + context -> Ticket_hash.t -> (Z.t option * context) tzresult Lwt.t end module First_level_of_tenderbake : sig diff --git a/src/proto_alpha/lib_protocol/dune.inc b/src/proto_alpha/lib_protocol/dune.inc index 583b2e9843..58f12aa7f9 100644 --- a/src/proto_alpha/lib_protocol/dune.inc +++ b/src/proto_alpha/lib_protocol/dune.inc @@ -80,6 +80,7 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end migration_repr.mli migration_repr.ml raw_context_intf.ml raw_context.mli raw_context.ml + ticket_hash_repr.mli ticket_hash_repr.ml storage_costs.mli storage_costs.ml storage_sigs.ml storage_functors.mli storage_functors.ml @@ -218,6 +219,7 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end migration_repr.mli migration_repr.ml raw_context_intf.ml raw_context.mli raw_context.ml + ticket_hash_repr.mli ticket_hash_repr.ml storage_costs.mli storage_costs.ml storage_sigs.ml storage_functors.mli storage_functors.ml @@ -356,6 +358,7 @@ module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end migration_repr.mli migration_repr.ml raw_context_intf.ml raw_context.mli raw_context.ml + ticket_hash_repr.mli ticket_hash_repr.ml storage_costs.mli storage_costs.ml storage_sigs.ml storage_functors.mli storage_functors.ml @@ -516,6 +519,7 @@ include Tezos_raw_protocol_alpha.Main Migration_repr Raw_context_intf Raw_context + Ticket_hash_repr Storage_costs Storage_sigs Storage_functors @@ -695,6 +699,7 @@ include Tezos_raw_protocol_alpha.Main migration_repr.mli migration_repr.ml raw_context_intf.ml raw_context.mli raw_context.ml + ticket_hash_repr.mli ticket_hash_repr.ml storage_costs.mli storage_costs.ml storage_sigs.ml storage_functors.mli storage_functors.ml diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml index 22f1b05f42..d77759e30d 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml @@ -72,8 +72,8 @@ let equal_script_hash ~loc msg key1 key2 = Script_expr_hash.equal msg Script_expr_hash.pp - (Ticket_balance.script_expr_hash_of_key_hash key1) - (Ticket_balance.script_expr_hash_of_key_hash key2) + (Ticket_hash.to_script_expr_hash key1) + (Ticket_hash.to_script_expr_hash key2) let not_equal_script_hash ~loc msg key1 key2 = Assert.not_equal @@ -81,8 +81,8 @@ let not_equal_script_hash ~loc msg key1 key2 = Script_expr_hash.equal msg Script_expr_hash.pp - (Ticket_balance.script_expr_hash_of_key_hash key1) - (Ticket_balance.script_expr_hash_of_key_hash key2) + (Ticket_hash.to_script_expr_hash key1) + (Ticket_hash.to_script_expr_hash key2) let assert_keys ~ticketer1 ~ticketer2 ~typ1 ~typ2 ~amount1 ~amount2 ~content1 ~content2 ~owner1 ~owner2 assert_condition = diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml index 557894b166..3b45b3a319 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml @@ -51,12 +51,7 @@ let hash_key ctxt ~ticketer ~typ ~contents ~owner = let owner = Micheline.root @@ Expr.from_string owner in wrap @@ Lwt.return - (Alpha_context.Ticket_balance.make_key_hash - ctxt - ~ticketer - ~typ - ~contents - ~owner) + (Alpha_context.Ticket_hash.make ctxt ~ticketer ~typ ~contents ~owner) let assert_balance ctxt ~loc key expected = let* (balance, _) = wrap @@ Ticket_balance.get_balance ctxt key in @@ -92,8 +87,8 @@ let assert_non_overlapping_keys ~loc ~ticketer1 ~ticketer2 ~contents1 ~contents2 ~contents:contents2 ~owner:owner2 in - let k1 = Ticket_balance.script_expr_hash_of_key_hash k1 in - let k2 = Ticket_balance.script_expr_hash_of_key_hash k2 in + let k1 = Ticket_hash.to_script_expr_hash k1 in + let k2 = Ticket_hash.to_script_expr_hash k2 in Assert.not_equal ~loc Script_expr_hash.equal diff --git a/src/proto_alpha/lib_protocol/ticket_balance_key.ml b/src/proto_alpha/lib_protocol/ticket_balance_key.ml index e38d1e0134..27361b8bd3 100644 --- a/src/proto_alpha/lib_protocol/ticket_balance_key.ml +++ b/src/proto_alpha/lib_protocol/ticket_balance_key.ml @@ -70,4 +70,4 @@ let ticket_balance_key ctxt ~owner address_t owner_address >>=? fun (owner, ctxt) -> - Lwt.return (Ticket_balance.make_key_hash ctxt ~ticketer ~typ ~contents ~owner) + Lwt.return (Ticket_hash.make ctxt ~ticketer ~typ ~contents ~owner) diff --git a/src/proto_alpha/lib_protocol/ticket_balance_key.mli b/src/proto_alpha/lib_protocol/ticket_balance_key.mli index ab6b34dfbf..1b0900673f 100644 --- a/src/proto_alpha/lib_protocol/ticket_balance_key.mli +++ b/src/proto_alpha/lib_protocol/ticket_balance_key.mli @@ -34,4 +34,4 @@ val ticket_balance_key : Alpha_context.context -> owner:Alpha_context.Contract.t -> Ticket_token.ex_token -> - (Alpha_context.Ticket_balance.key_hash * Alpha_context.context) tzresult Lwt.t + (Alpha_context.Ticket_hash.t * Alpha_context.context) tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/ticket_hash_repr.ml b/src/proto_alpha/lib_protocol/ticket_hash_repr.ml new file mode 100644 index 0000000000..0249b8f85c --- /dev/null +++ b/src/proto_alpha/lib_protocol/ticket_hash_repr.ml @@ -0,0 +1,74 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Trili Tech, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type error += Failed_to_hash_node + +let () = + register_error_kind + `Branch + ~id:"Failed_to_hash_node" + ~title:"Failed to hash node" + ~description:"Failed to hash node for a key in the ticket-balance table" + ~pp:(fun ppf () -> + Format.fprintf + ppf + "Failed to hash node for a key in the ticket-balance table") + Data_encoding.empty + (function Failed_to_hash_node -> Some () | _ -> None) + (fun () -> Failed_to_hash_node) + +type t = Script_expr_hash.t + +let encoding = Script_expr_hash.encoding + +let to_script_expr_hash key_hash = key_hash + +let hash_bytes_cost bytes = + let module S = Saturation_repr in + let ( + ) = S.add in + let v0 = S.safe_int @@ Bytes.length bytes in + let ( lsr ) = S.shift_right in + S.safe_int 200 + (v0 + (v0 lsr 2)) |> Gas_limit_repr.atomic_step_cost + +let hash_of_node ctxt node = + Raw_context.consume_gas ctxt (Script_repr.strip_locations_cost node) + >>? fun ctxt -> + let node = Micheline.strip_locations node in + match Data_encoding.Binary.to_bytes_opt Script_repr.expr_encoding node with + | Some bytes -> + Raw_context.consume_gas ctxt (hash_bytes_cost bytes) >|? fun ctxt -> + (Script_expr_hash.hash_bytes [bytes], ctxt) + | None -> error Failed_to_hash_node + +(** TODO: https://gitlab.com/tezos/tezos/-/issues/2345 + Remove [Raw_context.t] argument. + The fact that [make] takes a [Raw_context.t] value as its argument + is unconventional for a [*_repr] module. [ctxt] is only used to do + gas accounting, and this function could be refactored to use the + [Gas_monad] framework, but it requires to adapt it to be + compatible with [Raw_context]. *) +let make ctxt ~ticketer ~typ ~contents ~owner = + hash_of_node ctxt + @@ Micheline.Seq (Micheline.dummy_location, [ticketer; typ; contents; owner]) diff --git a/src/proto_alpha/lib_protocol/ticket_hash_repr.mli b/src/proto_alpha/lib_protocol/ticket_hash_repr.mli new file mode 100644 index 0000000000..d2cdedfa21 --- /dev/null +++ b/src/proto_alpha/lib_protocol/ticket_hash_repr.mli @@ -0,0 +1,56 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Trili Tech, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Ticket hashes are used to uniquely identify pairs made of + Michelson ticktes and their owner. They are used by the protocol + to keep record of a ticket ledger, that is how many tickets smart + contracts own. *) + +(** A ticket hash is computed by the function [make] and is a + combination of a [ticketer], a [content type], a [content], and an + [owner]. + + {b Note:} This invariant can be invalidated if the [key_hash] is + created from the [encoding]. *) +type t + +val encoding : t Data_encoding.t + +(** [to_script_expr_hash key_hash] returns a [Script_expr_hash.t] + value representation of the given [key_hash]. This is useful for + comparing and pretty-printing key-hash values. *) +val to_script_expr_hash : t -> Script_expr_hash.t + +(** [make ctxt ~ticketer ~typ ~contents ~owner] creates a hashed + representation of the given [ticketer], [typ], [contents] and + [owner]. +*) +val make : + Raw_context.t -> + ticketer:Script_repr.node -> + typ:Script_repr.node -> + contents:Script_repr.node -> + owner:Script_repr.node -> + (t * Raw_context.t) tzresult diff --git a/src/proto_alpha/lib_protocol/ticket_storage.ml b/src/proto_alpha/lib_protocol/ticket_storage.ml index 9e97567d17..af4f1bd483 100644 --- a/src/proto_alpha/lib_protocol/ticket_storage.ml +++ b/src/proto_alpha/lib_protocol/ticket_storage.ml @@ -23,34 +23,8 @@ (* *) (*****************************************************************************) -type key_hash = Script_expr_hash.t - type error += | Negative_ticket_balance of {key : Script_expr_hash.t; balance : Z.t} - | Failed_to_hash_node - -let script_expr_hash_of_key_hash key_hash = key_hash - -let hash_bytes_cost bytes = - let module S = Saturation_repr in - let ( + ) = S.add in - let v0 = S.safe_int @@ Bytes.length bytes in - let ( lsr ) = S.shift_right in - S.safe_int 200 + (v0 + (v0 lsr 2)) |> Gas_limit_repr.atomic_step_cost - -let hash_of_node ctxt node = - Raw_context.consume_gas ctxt (Script_repr.strip_locations_cost node) - >>? fun ctxt -> - let node = Micheline.strip_locations node in - match Data_encoding.Binary.to_bytes_opt Script_repr.expr_encoding node with - | Some bytes -> - Raw_context.consume_gas ctxt (hash_bytes_cost bytes) >|? fun ctxt -> - (Script_expr_hash.hash_bytes [bytes], ctxt) - | None -> error Failed_to_hash_node - -let make_key_hash ctxt ~ticketer ~typ ~contents ~owner = - hash_of_node ctxt - @@ Micheline.Seq (Micheline.dummy_location, [ticketer; typ; contents; owner]) let () = let open Data_encoding in @@ -71,24 +45,16 @@ let () = (function | Negative_ticket_balance {key; balance} -> Some (key, balance) | _ -> None) - (fun (key, balance) -> Negative_ticket_balance {key; balance}) ; - register_error_kind - `Branch - ~id:"Failed_to_hash_node" - ~title:"Failed to hash node" - ~description:"Failed to hash node for a key in the ticket-balance table" - ~pp:(fun ppf () -> - Format.fprintf - ppf - "Failed to hash node for a key in the ticket-balance table") - Data_encoding.empty - (function Failed_to_hash_node -> Some () | _ -> None) - (fun () -> Failed_to_hash_node) + (fun (key, balance) -> Negative_ticket_balance {key; balance}) let get_balance ctxt key = - Storage.Ticket_balance.Table.find ctxt key >|=? fun (ctxt, res) -> (res, ctxt) + Storage.Ticket_balance.Table.find + ctxt + (Ticket_hash_repr.to_script_expr_hash key) + >|=? fun (ctxt, res) -> (res, ctxt) let set_balance ctxt key balance = + let key = Ticket_hash_repr.to_script_expr_hash key in let cost_of_key = Z.of_int 65 in fail_when Compare.Z.(balance < Z.zero) diff --git a/src/proto_alpha/lib_protocol/ticket_storage.mli b/src/proto_alpha/lib_protocol/ticket_storage.mli index c116eb0521..1930ce29a2 100644 --- a/src/proto_alpha/lib_protocol/ticket_storage.mli +++ b/src/proto_alpha/lib_protocol/ticket_storage.mli @@ -23,37 +23,15 @@ (* *) (*****************************************************************************) -(** A value of type [key_hash] is a hashed combination of: - - Ticketer - - Content type - - Content - - Owner -*) -type key_hash - -(** [script_expr_hash_of_key_hash key_hash] returns a [Script_expr_hash.t] value - representation of the given [key_hash]. This is useful for comparing and - pretty-printing key-hash values. *) -val script_expr_hash_of_key_hash : key_hash -> Script_expr_hash.t - -(** [make_key_hash ctxt ~ticketer ~typ ~contents ~owner] creates a hashed - representation of the given [ticketer], [typ], [contents] and [owner]. -*) -val make_key_hash : - Raw_context.t -> - ticketer:Script_repr.node -> - typ:Script_repr.node -> - contents:Script_repr.node -> - owner:Script_repr.node -> - (key_hash * Raw_context.t) tzresult - (** [get_balance ctxt key] receives the ticket balance for the given [key] in the context [ctxt]. The [key] represents a ticket content and a ticket creator pair. In case there exists no value for the given [key], [None] is returned. *) val get_balance : - Raw_context.t -> key_hash -> (Z.t option * Raw_context.t) tzresult Lwt.t + Raw_context.t -> + Ticket_hash_repr.t -> + (Z.t option * Raw_context.t) tzresult Lwt.t (** [adjust_balance ctxt key ~delta] adjusts the balance of the given key (representing a ticket content, creator and owner pair) @@ -68,4 +46,7 @@ val get_balance : in case the resulting balance is negative. *) val adjust_balance : - Raw_context.t -> key_hash -> delta:Z.t -> (Z.t * Raw_context.t) tzresult Lwt.t + Raw_context.t -> + Ticket_hash_repr.t -> + delta:Z.t -> + (Z.t * Raw_context.t) tzresult Lwt.t From 1fd4aa0f2fc94cdef39476d53526c2a35d28a8fd Mon Sep 17 00:00:00 2001 From: Thomas Letan Date: Fri, 14 Jan 2022 17:19:33 +0100 Subject: [PATCH 0168/1220] Proto: Use [Ticket_hash_repr.t] as key for [Storage.Ticket_balance] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: François Thiré Reviewed-by: Joel Bjornson --- .../lib_protocol/alpha_context.mli | 6 +++++- src/proto_alpha/lib_protocol/storage.ml | 2 +- src/proto_alpha/lib_protocol/storage.mli | 2 +- .../michelson/test_ticket_balance_key.ml | 16 ++-------------- .../michelson/test_ticket_storage.ml | 6 ++---- .../lib_protocol/ticket_hash_repr.ml | 8 +++----- .../lib_protocol/ticket_hash_repr.mli | 19 ++++++++++++------- .../lib_protocol/ticket_storage.ml | 12 ++++-------- 8 files changed, 30 insertions(+), 41 deletions(-) diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 5cd7ecf6ac..ef48af0e05 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -1956,7 +1956,11 @@ module Ticket_hash : sig val encoding : t Data_encoding.t - val to_script_expr_hash : t -> Script_expr_hash.t + val pp : Format.formatter -> t -> unit + + val equal : t -> t -> bool + + val compare : t -> t -> int val make : context -> diff --git a/src/proto_alpha/lib_protocol/storage.ml b/src/proto_alpha/lib_protocol/storage.ml index 828f0046ec..6f3a16d1d6 100644 --- a/src/proto_alpha/lib_protocol/storage.ml +++ b/src/proto_alpha/lib_protocol/storage.ml @@ -1610,7 +1610,7 @@ module Ticket_balance = struct end module Sub_context = Make_subcontext (Registered) (Raw_context) (Name) - module Index = Make_index (Script_expr_hash) + module Index = Make_index (Ticket_hash_repr.Index) module Table = Make_indexed_carbonated_data_storage (Sub_context) (Index) (Encoding.Z) end diff --git a/src/proto_alpha/lib_protocol/storage.mli b/src/proto_alpha/lib_protocol/storage.mli index c982c34234..6d53e894cf 100644 --- a/src/proto_alpha/lib_protocol/storage.mli +++ b/src/proto_alpha/lib_protocol/storage.mli @@ -663,7 +663,7 @@ module Ticket_balance : sig module Table : Non_iterable_indexed_carbonated_data_storage with type t := Raw_context.t - and type key = Script_expr_hash.t + and type key = Ticket_hash_repr.t and type value = Z.t end diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml index d77759e30d..30311f84d3 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_balance_key.ml @@ -67,22 +67,10 @@ let make_key ctxt ~ticketer ~typ ~content ~owner = return (key, ctxt) let equal_script_hash ~loc msg key1 key2 = - Assert.equal - ~loc - Script_expr_hash.equal - msg - Script_expr_hash.pp - (Ticket_hash.to_script_expr_hash key1) - (Ticket_hash.to_script_expr_hash key2) + Assert.equal ~loc Ticket_hash.equal msg Ticket_hash.pp key1 key2 let not_equal_script_hash ~loc msg key1 key2 = - Assert.not_equal - ~loc - Script_expr_hash.equal - msg - Script_expr_hash.pp - (Ticket_hash.to_script_expr_hash key1) - (Ticket_hash.to_script_expr_hash key2) + Assert.not_equal ~loc Ticket_hash.equal msg Ticket_hash.pp key1 key2 let assert_keys ~ticketer1 ~ticketer2 ~typ1 ~typ2 ~amount1 ~amount2 ~content1 ~content2 ~owner1 ~owner2 assert_condition = diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml index 3b45b3a319..ace2d65853 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_storage.ml @@ -87,13 +87,11 @@ let assert_non_overlapping_keys ~loc ~ticketer1 ~ticketer2 ~contents1 ~contents2 ~contents:contents2 ~owner:owner2 in - let k1 = Ticket_hash.to_script_expr_hash k1 in - let k2 = Ticket_hash.to_script_expr_hash k2 in Assert.not_equal ~loc - Script_expr_hash.equal + Ticket_hash.equal "Keys should not overlap" - Script_expr_hash.pp + Ticket_hash.pp k1 k2 diff --git a/src/proto_alpha/lib_protocol/ticket_hash_repr.ml b/src/proto_alpha/lib_protocol/ticket_hash_repr.ml index 0249b8f85c..c0c40ec2be 100644 --- a/src/proto_alpha/lib_protocol/ticket_hash_repr.ml +++ b/src/proto_alpha/lib_protocol/ticket_hash_repr.ml @@ -39,11 +39,7 @@ let () = (function Failed_to_hash_node -> Some () | _ -> None) (fun () -> Failed_to_hash_node) -type t = Script_expr_hash.t - -let encoding = Script_expr_hash.encoding - -let to_script_expr_hash key_hash = key_hash +include Script_expr_hash let hash_bytes_cost bytes = let module S = Saturation_repr in @@ -72,3 +68,5 @@ let hash_of_node ctxt node = let make ctxt ~ticketer ~typ ~contents ~owner = hash_of_node ctxt @@ Micheline.Seq (Micheline.dummy_location, [ticketer; typ; contents; owner]) + +module Index = Script_expr_hash diff --git a/src/proto_alpha/lib_protocol/ticket_hash_repr.mli b/src/proto_alpha/lib_protocol/ticket_hash_repr.mli index d2cdedfa21..bf23b44d17 100644 --- a/src/proto_alpha/lib_protocol/ticket_hash_repr.mli +++ b/src/proto_alpha/lib_protocol/ticket_hash_repr.mli @@ -24,9 +24,11 @@ (*****************************************************************************) (** Ticket hashes are used to uniquely identify pairs made of - Michelson ticktes and their owner. They are used by the protocol - to keep record of a ticket ledger, that is how many tickets smart - contracts own. *) + Michelson ticktes and their owner. + + They are used by the protocol to keep record of a tickets ledger, + that is how many tickets smart contracts own. More precisely, they + are used as keys for the {!Storage.Ticket_balance} table. *) (** A ticket hash is computed by the function [make] and is a combination of a [ticketer], a [content type], a [content], and an @@ -38,10 +40,11 @@ type t val encoding : t Data_encoding.t -(** [to_script_expr_hash key_hash] returns a [Script_expr_hash.t] - value representation of the given [key_hash]. This is useful for - comparing and pretty-printing key-hash values. *) -val to_script_expr_hash : t -> Script_expr_hash.t +val pp : Format.formatter -> t -> unit + +val equal : t -> t -> bool + +val compare : t -> t -> int (** [make ctxt ~ticketer ~typ ~contents ~owner] creates a hashed representation of the given [ticketer], [typ], [contents] and @@ -54,3 +57,5 @@ val make : contents:Script_repr.node -> owner:Script_repr.node -> (t * Raw_context.t) tzresult + +module Index : Storage_description.INDEX with type t = t diff --git a/src/proto_alpha/lib_protocol/ticket_storage.ml b/src/proto_alpha/lib_protocol/ticket_storage.ml index af4f1bd483..7336acd93c 100644 --- a/src/proto_alpha/lib_protocol/ticket_storage.ml +++ b/src/proto_alpha/lib_protocol/ticket_storage.ml @@ -24,7 +24,7 @@ (*****************************************************************************) type error += - | Negative_ticket_balance of {key : Script_expr_hash.t; balance : Z.t} + | Negative_ticket_balance of {key : Ticket_hash_repr.t; balance : Z.t} let () = let open Data_encoding in @@ -39,22 +39,18 @@ let () = "Attempted to set negative ticket balance value '%a' for key %a." Z.pp_print balance - Script_expr_hash.pp + Ticket_hash_repr.pp key) - (obj2 (req "key" Script_expr_hash.encoding) (req "balance" Data_encoding.z)) + (obj2 (req "key" Ticket_hash_repr.encoding) (req "balance" Data_encoding.z)) (function | Negative_ticket_balance {key; balance} -> Some (key, balance) | _ -> None) (fun (key, balance) -> Negative_ticket_balance {key; balance}) let get_balance ctxt key = - Storage.Ticket_balance.Table.find - ctxt - (Ticket_hash_repr.to_script_expr_hash key) - >|=? fun (ctxt, res) -> (res, ctxt) + Storage.Ticket_balance.Table.find ctxt key >|=? fun (ctxt, res) -> (res, ctxt) let set_balance ctxt key balance = - let key = Ticket_hash_repr.to_script_expr_hash key in let cost_of_key = Z.of_int 65 in fail_when Compare.Z.(balance < Z.zero) From a3af71df6edde094da1470221c274403bf763ad1 Mon Sep 17 00:00:00 2001 From: Pierre Boutillier Date: Thu, 13 Jan 2022 16:14:06 +0100 Subject: [PATCH 0169/1220] Manifest: backport version constraints from released opam packages --- manifest/main.ml | 18 ++++++++++++------ src/bin_node/tezos-node.opam | 2 +- .../test_helpers/tezos-base-test-helpers.opam | 2 +- src/lib_base/tezos-base.opam | 4 ++-- src/lib_context/tezos-context.opam | 2 +- src/lib_crypto/tezos-crypto.opam | 2 +- src/lib_hacl_glue/js/tezos-hacl-glue-js.opam | 2 +- .../unix/tezos-hacl-glue-unix.opam | 2 +- src/lib_hacl_glue/virtual/tezos-hacl-glue.opam | 1 + .../tezos-lwt-result-stdlib.opam | 4 ++-- src/lib_mockup/tezos-mockup.opam | 2 +- src/lib_openapi/tezos-openapi.opam | 2 +- .../tezos-protocol-environment-packer.opam | 1 + .../tezos-protocol-environment-sigs.opam | 1 + .../tezos-protocol-environment.opam | 2 +- src/lib_proxy/tezos-proxy.opam | 2 +- .../tezos-proxy-server-config.opam | 2 +- src/lib_requester/tezos-requester.opam | 2 +- src/lib_rpc_http/tezos-rpc-http-server.opam | 2 +- src/lib_sapling/tezos-sapling.opam | 2 +- .../tezos-shell-services-test-helpers.opam | 2 +- .../tezos-signer-backends.opam | 2 +- src/lib_stdlib/tezos-stdlib.opam | 5 +++-- src/lib_stdlib_unix/dune | 1 + src/lib_stdlib_unix/tezos-stdlib-unix.opam | 1 + src/lib_test/tezos-test-helpers.opam | 5 +++-- tezt/lib/tezt.opam | 2 +- tezt/lib_tezos/tezt-tezos.opam | 2 +- 28 files changed, 45 insertions(+), 32 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index d2bfcae667..c8954e3d2a 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -69,7 +69,7 @@ let conf_rust = opam_only "conf-rust" [] let coq_of_ocaml = opam_only "coq-of-ocaml" [Exactly "2.5.0"] -let ctypes = external_lib "ctypes" [] +let ctypes = external_lib "ctypes" [At_least "0.18.0"] let ctypes_stubs = external_sublib ctypes "ctypes.stubs" @@ -82,9 +82,9 @@ let digestif_c = external_sublib digestif "digestif.c" let dynlink = external_lib "dynlink" [] ~opam:"" -let ezjsonm = external_lib "ezjsonm" [At_least "0.5.0"] +let ezjsonm = external_lib "ezjsonm" [At_least "1.1.0"] -let fmt = external_lib "fmt" [] +let fmt = external_lib "fmt" [At_least "0.8.7"] let fmt_cli = external_sublib fmt "fmt.cli" @@ -96,7 +96,7 @@ let hacl_star_raw = external_lib "hacl-star-raw" [] let hacl_x25519 = external_lib "hacl_x25519" [] -let hex = external_lib "hex" [] +let hex = external_lib "hex" [At_least "1.3.0"] let index = external_lib "index" [At_least "1.3.0"] @@ -173,7 +173,7 @@ let prometheus_app_unix = external_sublib prometheus_app "prometheus-app.unix" let pyml = external_lib "pyml" [] -let qcheck_alcotest = external_lib "qcheck-alcotest" [] +let qcheck_alcotest = external_lib "qcheck-alcotest" [At_least "0.15"] let qcheck_core = external_lib "qcheck-core" [] @@ -612,6 +612,7 @@ let tezos_test_helpers = ~synopsis:"Tezos-agnostic test helpers" ~deps:[uri; fmt; qcheck_alcotest; alcotest; lwt; pure_splitmix] ~js_of_ocaml:[] + ~ocaml:[At_least "4.08"] ~linkall:true ~dune: Dune. @@ -627,6 +628,7 @@ let tezos_stdlib = ~path:"src/lib_stdlib" ~synopsis:"Tezos: yet-another local-extension of the OCaml standard library" ~deps:[hex; zarith; zarith_stubs_js; lwt] + ~ocaml:[At_least "4.08"] ~js_of_ocaml:[] ~inline_tests:true ~preprocess:[PPS ppx_inline_test] @@ -746,7 +748,7 @@ let tezos_lwt_result_stdlib = "tezos-lwt-result-stdlib" ~path:"src/lib_lwt_result_stdlib" ~synopsis:"Tezos: error-aware stdlib replacement" - ~ocaml:[At_least "4.07"] + ~ocaml:[At_least "4.12"] ~js_of_ocaml:[] ~deps: [ @@ -814,6 +816,7 @@ let tezos_hacl_glue = "tezos-hacl-glue" ~path:"src/lib_hacl_glue/virtual" ~synopsis:"Tezos: thin layer of glue around hacl-star (virtual package)" + ~ocaml:[At_least "4.08"] ~virtual_modules:["hacl"] let tezos_hacl_glue_unix = @@ -1105,6 +1108,7 @@ let tezos_stdlib_unix = lwt_unix; ipaddr_unix; re; + ezjsonm; ptime; ptime_clock_os; mtime; @@ -1818,6 +1822,7 @@ let tezos_protocol_environment_packer = "tezos-protocol-environment-packer" ~path:"src/lib_protocol_environment/s_packer" ~opam:"src/lib_protocol_environment/tezos-protocol-environment-packer" + ~ocaml:[At_least "4.03"] ~synopsis:"Tezos: sigs/structs packer for economic protocol environment" ~modules:[] @@ -1826,6 +1831,7 @@ let tezos_protocol_environment_sigs = "tezos-protocol-environment-sigs" ~path:"src/lib_protocol_environment/sigs" ~opam:"src/lib_protocol_environment/tezos-protocol-environment-sigs" + ~ocaml:[At_least "4.12"] ~synopsis:"Tezos: restricted typing environment for the economic protocols" ~opam_only_deps: [ diff --git a/src/bin_node/tezos-node.opam b/src/bin_node/tezos-node.opam index fdfa4eea44..2381b9598e 100644 --- a/src/bin_node/tezos-node.opam +++ b/src/bin_node/tezos-node.opam @@ -23,7 +23,7 @@ depends: [ "tezos-shell-context" "tezos-protocol-updater" "cmdliner" - "fmt" + "fmt" { >= "0.8.7" } "tls" { >= "0.10" } "prometheus-app" "lwt-exit" diff --git a/src/lib_base/test_helpers/tezos-base-test-helpers.opam b/src/lib_base/test_helpers/tezos-base-test-helpers.opam index 5926f4ec55..880020baba 100644 --- a/src/lib_base/test_helpers/tezos-base-test-helpers.opam +++ b/src/lib_base/test_helpers/tezos-base-test-helpers.opam @@ -15,7 +15,7 @@ depends: [ "tezos-test-helpers" "alcotest" { >= "1.5.0" } "alcotest-lwt" { >= "1.5.0" } - "qcheck-alcotest" + "qcheck-alcotest" { >= "0.15" } ] build: [ ["dune" "build" "-p" name "-j" jobs] diff --git a/src/lib_base/tezos-base.opam b/src/lib_base/tezos-base.opam index fc5e10f397..0a485ae73b 100644 --- a/src/lib_base/tezos-base.opam +++ b/src/lib_base/tezos-base.opam @@ -18,13 +18,13 @@ depends: [ "tezos-clic" "tezos-micheline" "ptime" { >= "0.8.4" } - "ezjsonm" { >= "0.5.0" } + "ezjsonm" { >= "1.1.0" } "lwt" { >= "5.4.0" } "ipaddr" { >= "5.0.0" & < "6.0.0" } "bls12-381-unix" "tezos-hacl-glue-unix" "tezos-stdlib-unix" - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "tezos-test-helpers" {with-test} ] build: [ diff --git a/src/lib_context/tezos-context.opam b/src/lib_context/tezos-context.opam index 294cd98fb5..a9402844a0 100644 --- a/src/lib_context/tezos-context.opam +++ b/src/lib_context/tezos-context.opam @@ -14,7 +14,7 @@ depends: [ "irmin-pack" { >= "2.10.0" & < "2.11.0" } "bigstringaf" { >= "0.2.0" } "tezos-shell-services" - "fmt" + "fmt" { >= "0.8.7" } "logs" "digestif" { >= "0.7.3" } "tezos-stdlib-unix" diff --git a/src/lib_crypto/tezos-crypto.opam b/src/lib_crypto/tezos-crypto.opam index 91704ec6ce..73b401a3b1 100644 --- a/src/lib_crypto/tezos-crypto.opam +++ b/src/lib_crypto/tezos-crypto.opam @@ -23,7 +23,7 @@ depends: [ "tezos-hacl-glue-unix" {with-test} "alcotest" { with-test & >= "1.5.0" } "alcotest-lwt" { with-test & >= "1.5.0" } - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "tezos-test-helpers" {with-test} ] build: [ diff --git a/src/lib_hacl_glue/js/tezos-hacl-glue-js.opam b/src/lib_hacl_glue/js/tezos-hacl-glue-js.opam index 18aa7e0df6..c5907c3315 100644 --- a/src/lib_hacl_glue/js/tezos-hacl-glue-js.opam +++ b/src/lib_hacl_glue/js/tezos-hacl-glue-js.opam @@ -17,7 +17,7 @@ depends: [ "zarith" { with-test & >= "1.12" & < "1.13" } "zarith_stubs_js" {with-test} "data-encoding" { with-test & >= "0.4" & < "0.5" } - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "tezos-test-helpers" {with-test} ] build: [ diff --git a/src/lib_hacl_glue/unix/tezos-hacl-glue-unix.opam b/src/lib_hacl_glue/unix/tezos-hacl-glue-unix.opam index 226719336d..65a6abeaae 100644 --- a/src/lib_hacl_glue/unix/tezos-hacl-glue-unix.opam +++ b/src/lib_hacl_glue/unix/tezos-hacl-glue-unix.opam @@ -17,7 +17,7 @@ depends: [ "zarith" { with-test & >= "1.12" & < "1.13" } "zarith_stubs_js" {with-test} "data-encoding" { with-test & >= "0.4" & < "0.5" } - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "tezos-test-helpers" {with-test} ] conflicts: [ diff --git a/src/lib_hacl_glue/virtual/tezos-hacl-glue.opam b/src/lib_hacl_glue/virtual/tezos-hacl-glue.opam index 26405a194d..83181e169f 100644 --- a/src/lib_hacl_glue/virtual/tezos-hacl-glue.opam +++ b/src/lib_hacl_glue/virtual/tezos-hacl-glue.opam @@ -9,6 +9,7 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "MIT" depends: [ "dune" { >= "2.9" } + "ocaml" { >= "4.08" } ] build: [ ["dune" "build" "-p" name "-j" jobs] diff --git a/src/lib_lwt_result_stdlib/tezos-lwt-result-stdlib.opam b/src/lib_lwt_result_stdlib/tezos-lwt-result-stdlib.opam index baf1eed6e5..b3b94282b0 100644 --- a/src/lib_lwt_result_stdlib/tezos-lwt-result-stdlib.opam +++ b/src/lib_lwt_result_stdlib/tezos-lwt-result-stdlib.opam @@ -9,10 +9,10 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "MIT" depends: [ "dune" { >= "2.9" } - "ocaml" { >= "4.07" } + "ocaml" { >= "4.12" } "lwt" { >= "5.4.0" } "alcotest-lwt" { with-test & >= "1.5.0" } - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "tezos-test-helpers" {with-test} ] build: [ diff --git a/src/lib_mockup/tezos-mockup.opam b/src/lib_mockup/tezos-mockup.opam index c6bd243a86..5d4a43d61d 100644 --- a/src/lib_mockup/tezos-mockup.opam +++ b/src/lib_mockup/tezos-mockup.opam @@ -22,7 +22,7 @@ depends: [ "tezos-rpc-http-client" "tezos-mockup-registration" "tezos-base-test-helpers" {with-test} - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "alcotest-lwt" { with-test & >= "1.5.0" } ] build: [ diff --git a/src/lib_openapi/tezos-openapi.opam b/src/lib_openapi/tezos-openapi.opam index e7c5e5b6ef..78143e489f 100644 --- a/src/lib_openapi/tezos-openapi.opam +++ b/src/lib_openapi/tezos-openapi.opam @@ -9,7 +9,7 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "MIT" depends: [ "dune" { >= "2.9" } - "ezjsonm" { >= "0.5.0" } + "ezjsonm" { >= "1.1.0" } "json-data-encoding" "tezt" ] diff --git a/src/lib_protocol_environment/tezos-protocol-environment-packer.opam b/src/lib_protocol_environment/tezos-protocol-environment-packer.opam index 4747bd0241..2b8bba4865 100644 --- a/src/lib_protocol_environment/tezos-protocol-environment-packer.opam +++ b/src/lib_protocol_environment/tezos-protocol-environment-packer.opam @@ -9,6 +9,7 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "MIT" depends: [ "dune" { >= "2.9" } + "ocaml" { >= "4.03" } ] build: [ ["dune" "build" "-p" name "-j" jobs] diff --git a/src/lib_protocol_environment/tezos-protocol-environment-sigs.opam b/src/lib_protocol_environment/tezos-protocol-environment-sigs.opam index 1662d4aa04..1d38102786 100644 --- a/src/lib_protocol_environment/tezos-protocol-environment-sigs.opam +++ b/src/lib_protocol_environment/tezos-protocol-environment-sigs.opam @@ -9,6 +9,7 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "MIT" depends: [ "dune" { >= "2.9" } + "ocaml" { >= "4.12" } "tezos-protocol-environment-packer" ] build: [ diff --git a/src/lib_protocol_environment/tezos-protocol-environment.opam b/src/lib_protocol_environment/tezos-protocol-environment.opam index be3bb24f19..1009e353e7 100644 --- a/src/lib_protocol_environment/tezos-protocol-environment.opam +++ b/src/lib_protocol_environment/tezos-protocol-environment.opam @@ -22,7 +22,7 @@ depends: [ "bls12-381-unix" {with-test} "alcotest-lwt" { with-test & >= "1.5.0" } "tezos-test-helpers" {with-test} - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "lwt" { with-test & >= "5.4.0" } ] build: [ diff --git a/src/lib_proxy/tezos-proxy.opam b/src/lib_proxy/tezos-proxy.opam index 179fde1e76..62dc5c05c5 100644 --- a/src/lib_proxy/tezos-proxy.opam +++ b/src/lib_proxy/tezos-proxy.opam @@ -22,7 +22,7 @@ depends: [ "tezos-base-test-helpers" {with-test} "tezos-test-helpers" {with-test} "tezos-shell-services-test-helpers" {with-test} - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "alcotest-lwt" { with-test & >= "1.5.0" } ] build: [ diff --git a/src/lib_proxy_server_config/tezos-proxy-server-config.opam b/src/lib_proxy_server_config/tezos-proxy-server-config.opam index 61bc36b775..db5d00c019 100644 --- a/src/lib_proxy_server_config/tezos-proxy-server-config.opam +++ b/src/lib_proxy_server_config/tezos-proxy-server-config.opam @@ -12,7 +12,7 @@ depends: [ "tezos-base" "tezos-stdlib-unix" "tezos-test-helpers" {with-test} - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "alcotest-lwt" { with-test & >= "1.5.0" } ] build: [ diff --git a/src/lib_requester/tezos-requester.opam b/src/lib_requester/tezos-requester.opam index 16d3de92db..f6879ef067 100644 --- a/src/lib_requester/tezos-requester.opam +++ b/src/lib_requester/tezos-requester.opam @@ -15,7 +15,7 @@ depends: [ "tezos-test-helpers" {with-test} "tezos-base-test-helpers" {with-test} "alcotest-lwt" { with-test & >= "1.5.0" } - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } ] build: [ ["dune" "build" "-p" name "-j" jobs] diff --git a/src/lib_rpc_http/tezos-rpc-http-server.opam b/src/lib_rpc_http/tezos-rpc-http-server.opam index 3b0f4776a0..2902d639ee 100644 --- a/src/lib_rpc_http/tezos-rpc-http-server.opam +++ b/src/lib_rpc_http/tezos-rpc-http-server.opam @@ -16,7 +16,7 @@ depends: [ "tezos-rpc-http" "tezos-base-test-helpers" {with-test} "tezos-test-helpers" {with-test} - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "alcotest-lwt" { with-test & >= "1.5.0" } ] build: [ diff --git a/src/lib_sapling/tezos-sapling.opam b/src/lib_sapling/tezos-sapling.opam index 52004fa6d4..1e079e3150 100644 --- a/src/lib_sapling/tezos-sapling.opam +++ b/src/lib_sapling/tezos-sapling.opam @@ -11,7 +11,7 @@ depends: [ "dune" { >= "2.9" } "conf-rust" "integers" - "ctypes" + "ctypes" { >= "0.18.0" } "data-encoding" { >= "0.4" & < "0.5" } "tezos-crypto" "tezos-stdlib" diff --git a/src/lib_shell_services/test_helpers/tezos-shell-services-test-helpers.opam b/src/lib_shell_services/test_helpers/tezos-shell-services-test-helpers.opam index 07d51365da..66ad87ddb2 100644 --- a/src/lib_shell_services/test_helpers/tezos-shell-services-test-helpers.opam +++ b/src/lib_shell_services/test_helpers/tezos-shell-services-test-helpers.opam @@ -13,7 +13,7 @@ depends: [ "tezos-shell-services" "tezos-test-helpers" "qcheck-core" - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "alcotest-lwt" { with-test & >= "1.5.0" } ] build: [ diff --git a/src/lib_signer_backends/tezos-signer-backends.opam b/src/lib_signer_backends/tezos-signer-backends.opam index ae279a1b3b..2a717d7a4b 100644 --- a/src/lib_signer_backends/tezos-signer-backends.opam +++ b/src/lib_signer_backends/tezos-signer-backends.opam @@ -17,7 +17,7 @@ depends: [ "tezos-shell-services" "alcotest-lwt" { with-test & >= "1.5.0" } "ocplib-endian" - "fmt" + "fmt" { >= "0.8.7" } "tezos-stdlib-unix" "tezos-rpc-http-client-unix" ] diff --git a/src/lib_stdlib/tezos-stdlib.opam b/src/lib_stdlib/tezos-stdlib.opam index 8300d58b99..80b129a82d 100644 --- a/src/lib_stdlib/tezos-stdlib.opam +++ b/src/lib_stdlib/tezos-stdlib.opam @@ -9,15 +9,16 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "MIT" depends: [ "dune" { >= "2.9" } + "ocaml" { >= "4.08" } "ppx_inline_test" - "hex" + "hex" { >= "1.3.0" } "zarith" { >= "1.12" & < "1.13" } "zarith_stubs_js" "lwt" { >= "5.4.0" } "alcotest" { with-test & >= "1.5.0" } "bigstring" {with-test} "tezos-test-helpers" {with-test} - "qcheck-alcotest" {with-test} + "qcheck-alcotest" { with-test & >= "0.15" } "alcotest-lwt" { with-test & >= "1.5.0" } "lwt_log" {with-test} ] diff --git a/src/lib_stdlib_unix/dune b/src/lib_stdlib_unix/dune index b4edb8f277..34dc4d4d52 100644 --- a/src/lib_stdlib_unix/dune +++ b/src/lib_stdlib_unix/dune @@ -15,6 +15,7 @@ lwt.unix ipaddr.unix re + ezjsonm ptime ptime.clock.os mtime diff --git a/src/lib_stdlib_unix/tezos-stdlib-unix.opam b/src/lib_stdlib_unix/tezos-stdlib-unix.opam index 30dee0a24d..c7cc50139f 100644 --- a/src/lib_stdlib_unix/tezos-stdlib-unix.opam +++ b/src/lib_stdlib_unix/tezos-stdlib-unix.opam @@ -18,6 +18,7 @@ depends: [ "lwt" { >= "5.4.0" } "ipaddr" { >= "5.0.0" & < "6.0.0" } "re" { >= "1.7.2" } + "ezjsonm" { >= "1.1.0" } "ptime" { >= "0.8.4" } "mtime" { >= "1.0.0" } "lwt_log" diff --git a/src/lib_test/tezos-test-helpers.opam b/src/lib_test/tezos-test-helpers.opam index 19e04124dd..1c5a266769 100644 --- a/src/lib_test/tezos-test-helpers.opam +++ b/src/lib_test/tezos-test-helpers.opam @@ -9,9 +9,10 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "MIT" depends: [ "dune" { >= "2.9" } + "ocaml" { >= "4.08" } "uri" - "fmt" - "qcheck-alcotest" + "fmt" { >= "0.8.7" } + "qcheck-alcotest" { >= "0.15" } "alcotest" { >= "1.5.0" } "lwt" { >= "5.4.0" } "pure-splitmix" { = "0.2" } diff --git a/tezt/lib/tezt.opam b/tezt/lib/tezt.opam index 314149d543..c5fdc47923 100644 --- a/tezt/lib/tezt.opam +++ b/tezt/lib/tezt.opam @@ -12,7 +12,7 @@ depends: [ "ocaml" { >= "4.08" } "re" { >= "1.7.2" } "lwt" { >= "5.4.0" } - "ezjsonm" { >= "0.5.0" } + "ezjsonm" { >= "1.1.0" } ] build: [ ["dune" "build" "-p" name "-j" jobs] diff --git a/tezt/lib_tezos/tezt-tezos.opam b/tezt/lib_tezos/tezt-tezos.opam index a95cbc48b7..97b40de3e6 100644 --- a/tezt/lib_tezos/tezt-tezos.opam +++ b/tezt/lib_tezos/tezt-tezos.opam @@ -10,7 +10,7 @@ license: "MIT" depends: [ "dune" { >= "2.9" } "tezt" - "hex" + "hex" { >= "1.3.0" } "tezos-base" ] build: [ From cf33c35ac00e78105551d478271e6a4782988d61 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:48:48 +0100 Subject: [PATCH 0170/1220] Proto/Michelson: remove var_annot from Pair_t and from `pair_t` too --- .../lib_protocol/script_interpreter.ml | 4 +- .../lib_protocol/script_interpreter_defs.ml | 2 +- .../lib_protocol/script_ir_translator.ml | 166 +++++++----------- .../lib_protocol/script_typed_ir.ml | 36 ++-- .../lib_protocol/script_typed_ir.mli | 8 +- .../lib_protocol/script_typed_ir_size.ml | 2 +- .../lib_protocol/ticket_scanner.ml | 4 +- 7 files changed, 91 insertions(+), 131 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 46622fb6c5..a8a9e8d476 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -1075,8 +1075,8 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = _script_view ) -> ( pair_t kloc - (input_ty, None, None) - (storage_type, None, None) + (input_ty, None) + (storage_type, None) ~annot:None >>?= fun pair_ty -> let open Gas_monad in diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index 0e139df046..4963601dad 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -462,7 +462,7 @@ let apply ctxt gas capture_ty capture lam = let loc = Micheline.dummy_location in unparse_ty ~loc ctxt capture_ty >>?= fun (ty_expr, ctxt) -> match full_arg_ty with - | Pair_t ((capture_ty, _, _), (arg_ty, _, _), _) -> + | Pair_t ((capture_ty, _), (arg_ty, _), _) -> let arg_stack_ty = Item_t (arg_ty, Bot_t) in let full_descr = { diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index fdf22faecf..9970a14c42 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -173,10 +173,7 @@ let rec ty_of_comparable_ty : type a. a comparable_ty -> a ty = function | Address_key tname -> Address_t tname | Chain_id_key tname -> Chain_id_t tname | Pair_key ((l, al), (r, ar), tname) -> - Pair_t - ( (ty_of_comparable_ty l, al, None), - (ty_of_comparable_ty r, ar, None), - tname ) + Pair_t ((ty_of_comparable_ty l, al), (ty_of_comparable_ty r, ar), tname) | Union_key ((l, al), (r, ar), tname) -> Union_t ((ty_of_comparable_ty l, al), (ty_of_comparable_ty r, ar), tname) | Option_key (t, tname) -> Option_t (ty_of_comparable_ty t, tname) @@ -270,12 +267,12 @@ let rec unparse_ty_uncarbonated : | Contract_t (ut, meta) -> let t = unparse_ty_uncarbonated ~loc ut in prim (T_contract, [t], unparse_type_annot meta.annot) - | Pair_t ((utl, l_field, l_var), (utr, r_field, r_var), meta) -> + | Pair_t ((utl, l_field), (utr, r_field), meta) -> let annot = unparse_type_annot meta.annot in let utl = unparse_ty_uncarbonated ~loc utl in - let tl = add_field_annot l_field l_var utl in + let tl = add_field_annot l_field None utl in let utr = unparse_ty_uncarbonated ~loc utr in - let tr = add_field_annot r_field r_var utr in + let tr = add_field_annot r_field None utr in (* Fold [pair a1 (pair ... (pair an-1 an))] into [pair a1 ... an] *) (* Note that the folding does not happen if the pair on the right has an annotation because this annotation would be lost *) @@ -376,7 +373,7 @@ let[@coq_axiom_with_reason "gadt"] rec comparable_ty_of_ty : | Timestamp_t tname -> ok (Timestamp_key tname, ctxt) | Address_t tname -> ok (Address_key tname, ctxt) | Chain_id_t tname -> ok (Chain_id_key tname, ctxt) - | Pair_t ((l, al, _), (r, ar, _), pname) -> + | Pair_t ((l, al), (r, ar), pname) -> comparable_ty_of_ty ctxt loc l >>? fun (lty, ctxt) -> comparable_ty_of_ty ctxt loc r >|? fun (rty, ctxt) -> (Pair_key ((lty, al), (rty, ar), pname), ctxt) @@ -737,7 +734,7 @@ let rec check_dupable_ty : | Chest_t _ -> ok ctxt | Chest_key_t _ -> ok ctxt | Ticket_t _ -> error (Unexpected_ticket loc) - | Pair_t ((ty_a, _, _), (ty_b, _, _), _) -> + | Pair_t ((ty_a, _), (ty_b, _), _) -> check_dupable_ty ctxt loc ty_a >>? fun ctxt -> check_dupable_ty ctxt loc ty_b | Union_t ((ty_a, _), (ty_b, _), _) -> @@ -1026,18 +1023,17 @@ let merge_types : merge_type_metadata tn1 tn2 >>$ fun tname -> merge_comparable_types ~legacy ~error_details ea eb >|$ fun (Eq, e) -> ((Eq : (ta ty, tb ty) eq), Ticket_t (e, tname)) - | ( Pair_t ((tal, l_field1, l_var1), (tar, r_field1, r_var1), tn1), - Pair_t ((tbl, l_field2, l_var2), (tbr, r_field2, r_var2), tn2) ) -> + | ( Pair_t ((tal, l_field1), (tar, r_field1), tn1), + Pair_t ((tbl, l_field2), (tbr, r_field2), tn2) ) -> merge_type_metadata tn1 tn2 >>$ fun tname -> merge_field_annot ~legacy l_field1 l_field2 >>$ fun l_field -> merge_field_annot ~legacy r_field1 r_field2 >>$ fun r_field -> - let l_var = merge_var_annot l_var1 l_var2 in - let r_var = merge_var_annot r_var1 r_var2 in + let _l_var = merge_var_annot None None in + let _r_var = merge_var_annot None None in help tal tbl >>$ fun (Eq, left_ty) -> help tar tbr >|$ fun (Eq, right_ty) -> ( (Eq : (ta ty, tb ty) eq), - Pair_t ((left_ty, l_field, l_var), (right_ty, r_field, r_var), tname) - ) + Pair_t ((left_ty, l_field), (right_ty, r_field), tname) ) | ( Union_t ((tal, tal_annot), (tar, tar_annot), tn1), Union_t ((tbl, tbl_annot), (tbr, tbr_annot), tn2) ) -> merge_type_metadata tn1 tn2 >>$ fun tname -> @@ -1562,8 +1558,8 @@ and[@coq_axiom_with_reason "complex mutually recursive definition"] parse_ty : utr >>? fun (Ex_ty tr, ctxt) -> parse_type_annot loc annot >>? fun annot -> - pair_t loc (tl, left_field, None) (tr, right_field, None) ~annot - >|? fun ty -> (Ex_ty ty, ctxt) + pair_t loc (tl, left_field) (tr, right_field) ~annot >|? fun ty -> + (Ex_ty ty, ctxt) | Prim (loc, T_or, [utl; utr], annot) -> extract_field_annot utl >>? fun (utl, left_constr) -> extract_field_annot utr >>? fun (utr, right_constr) -> @@ -1797,8 +1793,8 @@ let parse_storage_ty : >>? fun (annot, map_field, storage_field) -> pair_t loc - (big_map_ty, map_field, None) - (remaining_storage, storage_field, None) + (big_map_ty, map_field) + (remaining_storage, storage_field) ~annot >|? fun ty -> (Ex_ty ty, ctxt)) | _ -> (parse_normal_storage_ty [@tailcall]) ctxt ~stack_depth ~legacy node @@ -1830,8 +1826,7 @@ let check_packable ~legacy loc root = | Bls12_381_g1_t _ -> Result.return_unit | Bls12_381_g2_t _ -> Result.return_unit | Bls12_381_fr_t _ -> Result.return_unit - | Pair_t ((l_ty, _, _), (r_ty, _, _), _) -> - check l_ty >>? fun () -> check r_ty + | Pair_t ((l_ty, _), (r_ty, _), _) -> check l_ty >>? fun () -> check r_ty | Union_t ((l_ty, _), (r_ty, _), _) -> check l_ty >>? fun () -> check r_ty | Option_t (v_ty, _) -> check v_ty | List_t (elt_ty, _) -> check elt_ty @@ -2610,7 +2605,7 @@ let[@coq_axiom_with_reason "gadt"] rec parse_data : ~entrypoint:address.entrypoint >|=? fun (ctxt, _) -> ({arg_ty; address}, ctxt) ) (* Pairs *) - | (Pair_t ((tl, _, _), (tr, _, _), _), expr) -> + | (Pair_t ((tl, _), (tr, _), _), expr) -> let r_witness = comb_witness1 tr in let parse_l ctxt v = non_terminal_recursion ?type_logger ctxt ~legacy tl v @@ -2865,11 +2860,7 @@ and parse_view_returning : (Some "return of view", strip_locations output_ty, output_ty_loc)) (parse_view_output_ty ctxt ~stack_depth:0 ~legacy output_ty) >>?= fun (Ex_ty output_ty', ctxt) -> - pair_t - input_ty_loc - (input_ty', None, None) - (storage_type, None, None) - ~annot:None + pair_t input_ty_loc (input_ty', None) (storage_type, None) ~annot:None >>?= fun pair_ty -> parse_instr ?type_logger @@ -3249,8 +3240,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : (* pairs *) | (Prim (loc, I_PAIR, [], annot), Item_t (a, Item_t (b, rest))) -> parse_constr_annot loc annot >>?= fun (ty_name, l_field, r_field) -> - pair_t loc (a, l_field, None) (b, r_field, None) ~annot:ty_name - >>?= fun ty -> + pair_t loc (a, l_field) (b, r_field) ~annot:ty_name >>?= fun ty -> let stack_ty = Item_t (ty, rest) in let cons_pair = {apply = (fun kinfo k -> ICons_pair (kinfo, k))} in typed ctxt loc cons_pair stack_ty @@ -3267,8 +3257,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : make_proof_argument (n - 1) tl_ty >>? fun (Comb_proof_argument (comb_witness, Item_t (b_ty, tl_ty'))) -> - pair_t loc (a_ty, None, None) (b_ty, None, None) ~annot:None - >|? fun pair_t -> + pair_t loc (a_ty, None) (b_ty, None) ~annot:None >|? fun pair_t -> Comb_proof_argument (Comb_succ comb_witness, Item_t (pair_t, tl_ty')) | _ -> let whole_stack = serialize_stack_for_error ctxt stack_ty in @@ -3291,7 +3280,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : match (n, stack_ty) with | (1, Item_t (a_ty, tl_ty)) -> ok @@ Uncomb_proof_argument (Uncomb_one, Item_t (a_ty, tl_ty)) - | (n, Item_t (Pair_t ((a_ty, _, _), (b_ty, _, _), _), tl_ty)) -> + | (n, Item_t (Pair_t ((a_ty, _), (b_ty, _), _), tl_ty)) -> make_proof_argument (n - 1) (Item_t (b_ty, tl_ty)) >|? fun (Uncomb_proof_argument (uncomb_witness, after_ty)) -> Uncomb_proof_argument @@ -3316,9 +3305,9 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : match (n, ty) with | (0, value_ty) -> ok @@ Comb_get_proof_argument (Comb_get_zero, value_ty) - | (1, Pair_t ((hd_ty, _at1, _at2), _, _annot)) -> + | (1, Pair_t ((hd_ty, _at1), _, _annot)) -> ok @@ Comb_get_proof_argument (Comb_get_one, hd_ty) - | (n, Pair_t (_, (tl_ty, _bt1, _bt2), _annot)) -> + | (n, Pair_t (_, (tl_ty, _bt1), _annot)) -> make_proof_argument (n - 2) tl_ty >|? fun (Comb_get_proof_argument (comb_get_left_witness, ty')) -> Comb_get_proof_argument @@ -3348,14 +3337,13 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : fun n value_ty ty -> match (n, ty) with | (0, _) -> ok @@ Comb_set_proof_argument (Comb_set_zero, value_ty) - | (1, Pair_t ((_hd_ty, at1, at2), (tl_ty, bt1, bt2), {annot; _})) -> - pair_t loc (value_ty, at1, at2) (tl_ty, bt1, bt2) ~annot - >|? fun after_ty -> Comb_set_proof_argument (Comb_set_one, after_ty) - | (n, Pair_t ((hd_ty, at1, at2), (tl_ty, bt1, bt2), {annot; _})) -> + | (1, Pair_t ((_hd_ty, at1), (tl_ty, bt1), {annot; _})) -> + pair_t loc (value_ty, at1) (tl_ty, bt1) ~annot >|? fun after_ty -> + Comb_set_proof_argument (Comb_set_one, after_ty) + | (n, Pair_t ((hd_ty, at1), (tl_ty, bt1), {annot; _})) -> make_proof_argument (n - 2) value_ty tl_ty >>? fun (Comb_set_proof_argument (comb_set_left_witness, tl_ty')) -> - pair_t loc (hd_ty, at1, at2) (tl_ty', bt1, bt2) ~annot - >|? fun after_ty -> + pair_t loc (hd_ty, at1) (tl_ty', bt1) ~annot >|? fun after_ty -> Comb_set_proof_argument (Comb_set_plus_two comb_set_left_witness, after_ty) | _ -> @@ -3373,10 +3361,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc comb_set after_stack_ty | ( Prim (loc, I_UNPAIR, [], annot), Item_t - ( Pair_t - ( (a, expected_field_annot_a, _a_annot), - (b, expected_field_annot_b, _b_annot), - _ ), + ( Pair_t ((a, expected_field_annot_a), (b, expected_field_annot_b), _), rest ) ) -> parse_unpair_annot loc annot >>?= fun (field_a, field_b) -> check_correct_field field_a expected_field_annot_a >>?= fun () -> @@ -3384,13 +3369,13 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let unpair = {apply = (fun kinfo k -> IUnpair (kinfo, k))} in typed ctxt loc unpair (Item_t (a, Item_t (b, rest))) | ( Prim (loc, I_CAR, [], annot), - Item_t (Pair_t ((a, expected_field_annot, _a_annot), _, _), rest) ) -> + Item_t (Pair_t ((a, expected_field_annot), _, _), rest) ) -> parse_destr_annot loc annot >>?= fun field_annot -> check_correct_field field_annot expected_field_annot >>?= fun () -> let car = {apply = (fun kinfo k -> ICar (kinfo, k))} in typed ctxt loc car (Item_t (a, rest)) | ( Prim (loc, I_CDR, [], annot), - Item_t (Pair_t (_, (b, expected_field_annot, _b_annot), _), rest) ) -> + Item_t (Pair_t (_, (b, expected_field_annot), _), rest) ) -> parse_destr_annot loc annot >>?= fun field_annot -> check_correct_field field_annot expected_field_annot >>?= fun () -> let cdr = {apply = (fun kinfo k -> ICdr (kinfo, k))} in @@ -3651,10 +3636,9 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_kind [Seq_kind] body >>?= fun () -> parse_var_type_annot loc annot >>?= fun ty_name -> - let k_name = field_to_var_annot default_key_annot in - let e_name = field_to_var_annot default_elt_annot in - pair_t loc (k, None, k_name) (elt, None, e_name) ~annot:None - >>?= fun ty -> + let _k_name = field_to_var_annot default_key_annot in + let _e_name = field_to_var_annot default_elt_annot in + pair_t loc (k, None) (elt, None) ~annot:None >>?= fun ty -> non_terminal_recursion ?type_logger tc_context @@ -3698,11 +3682,10 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (Map_t (comp_elt, element_ty, _), rest) ) -> ( check_kind [Seq_kind] body >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let k_name = field_to_var_annot default_key_annot in - let e_name = field_to_var_annot default_elt_annot in + let _k_name = field_to_var_annot default_key_annot in + let _e_name = field_to_var_annot default_elt_annot in let key = ty_of_comparable_ty comp_elt in - pair_t loc (key, None, k_name) (element_ty, None, e_name) ~annot:None - >>?= fun ty -> + pair_t loc (key, None) (element_ty, None) ~annot:None >>?= fun ty -> non_terminal_recursion ?type_logger tc_context @@ -3865,11 +3848,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let instr = {apply = (fun kinfo k -> ISapling_verify_update (kinfo, k))} in - pair_t - loc - (int_t ~annot:None, None, default_sapling_balance_annot) - (state_ty, None, None) - ~annot:None + pair_t loc (int_t ~annot:None, None) (state_ty, None) ~annot:None >>?= fun pair_ty -> option_t loc pair_ty ~annot:None >>?= fun ty -> let stack = Item_t (ty, rest) in @@ -4051,8 +4030,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ( capture, Item_t ( Lambda_t - ( Pair_t - ((capture_ty, _, _), (arg_ty, _, _), {annot = lam_annot; _}), + ( Pair_t ((capture_ty, _), (arg_ty, _), {annot = lam_annot; _}), ret, _ ), rest ) ) ) -> @@ -4675,27 +4653,19 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~legacy storage_type) >>?= fun (Ex_ty storage_type, ctxt) -> - let arg_annot = + let _arg_annot = default_annot (type_to_var_annot (name_of_ty arg_type)) ~default:default_param_annot in - let storage_annot = + let _storage_annot = default_annot (type_to_var_annot (name_of_ty storage_type)) ~default:default_storage_annot in - pair_t - loc - (arg_type, None, arg_annot) - (storage_type, None, storage_annot) - ~annot:None + pair_t loc (arg_type, None) (storage_type, None) ~annot:None >>?= fun arg_type_full -> - pair_t - loc - (list_operation_t, None, None) - (storage_type, None, None) - ~annot:None + pair_t loc (list_operation_t, None) (storage_type, None) ~annot:None >>?= fun ret_type_full -> trace (Ill_typed_contract (canonical_code, [])) @@ -4944,8 +4914,7 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_PAIRING_CHECK, [], annot), Item_t - ( List_t - (Pair_t ((Bls12_381_g1_t _, _, _), (Bls12_381_g2_t _, _, _), _), _), + ( List_t (Pair_t ((Bls12_381_g1_t _, _), (Bls12_381_g2_t _, _), _), _), rest ) ) -> check_var_annot loc annot >>?= fun () -> let instr = @@ -4973,11 +4942,10 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : | ( Prim (loc, I_SPLIT_TICKET, [], annot), Item_t ( (Ticket_t (t, _) as ticket_t), - Item_t (Pair_t ((Nat_t _, fa_a, a_a), (Nat_t _, fa_b, a_b), _), rest) - ) ) -> + Item_t (Pair_t ((Nat_t _, fa_a), (Nat_t _, fa_b), _), rest) ) ) -> check_var_annot loc annot >>?= fun () -> let () = check_dupable_comparable_ty t in - pair_t loc (ticket_t, fa_a, a_a) (ticket_t, fa_b, a_b) ~annot:None + pair_t loc (ticket_t, fa_a) (ticket_t, fa_b) ~annot:None >>?= fun pair_tickets_ty -> option_t loc pair_tickets_ty ~annot:None >>?= fun res_ty -> let instr = {apply = (fun kinfo k -> ISplit_ticket (kinfo, k))} in @@ -4985,8 +4953,8 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : typed ctxt loc instr stack | ( Prim (loc, I_JOIN_TICKETS, [], annot), Item_t - ( Pair_t (((Ticket_t _ as ty_a), _, _), ((Ticket_t _ as ty_b), _, _), _), - rest ) ) -> ( + (Pair_t (((Ticket_t _ as ty_a), _), ((Ticket_t _ as ty_b), _), _), rest) + ) -> ( check_var_annot loc annot >>?= fun () -> Gas_monad.run ctxt @@ merge_types ~legacy ~error_details:Informative loc ty_a ty_b @@ -5486,27 +5454,23 @@ let parse_code : (Ill_formed_type (Some "storage", code, storage_type_loc)) (parse_storage_ty ctxt ~stack_depth:0 ~legacy storage_type) >>?= fun (Ex_ty storage_type, ctxt) -> - let arg_annot = + let _arg_annot = default_annot (type_to_var_annot (name_of_ty arg_type)) ~default:default_param_annot in - let storage_annot = + let _storage_annot = default_annot (type_to_var_annot (name_of_ty storage_type)) ~default:default_storage_annot in - pair_t - storage_type_loc - (arg_type, None, arg_annot) - (storage_type, None, storage_annot) - ~annot:None + pair_t storage_type_loc (arg_type, None) (storage_type, None) ~annot:None >>?= fun arg_type_full -> pair_t storage_type_loc - (list_operation_t, None, None) - (storage_type, None, None) + (list_operation_t, None) + (storage_type, None) ~annot:None >>?= fun ret_type_full -> trace @@ -5616,26 +5580,22 @@ let typecheck_code : (Ill_formed_type (Some "storage", code, storage_type_loc)) (parse_storage_ty ctxt ~stack_depth:0 ~legacy storage_type) >>?= fun (Ex_ty storage_type, ctxt) -> - let arg_annot = + let _arg_annot = default_annot (type_to_var_annot (name_of_ty arg_type)) ~default:default_param_annot in - let storage_annot = + let _storage_annot = default_annot (type_to_var_annot (name_of_ty storage_type)) ~default:default_storage_annot in - pair_t - storage_type_loc - (arg_type, None, arg_annot) - (storage_type, None, storage_annot) - ~annot:None + pair_t storage_type_loc (arg_type, None) (storage_type, None) ~annot:None >>?= fun arg_type_full -> pair_t storage_type_loc - (list_operation_t, None, None) - (storage_type, None, None) + (list_operation_t, None) + (storage_type, None) ~annot:None >>?= fun ret_type_full -> let type_logger loc bef aft = type_map := (loc, (bef, aft)) :: !type_map in @@ -5735,7 +5695,7 @@ let list_entrypoints (type full) (full : full ty) ctxt ~root_name = let comb_witness2 : type t. t ty -> (t, unit -> unit -> unit) comb_witness = function - | Pair_t (_, (Pair_t _, _, _), _) -> Comb_Pair (Comb_Pair Comb_Any) + | Pair_t (_, (Pair_t _, _), _) -> Comb_Pair (Comb_Pair Comb_Any) | Pair_t _ -> Comb_Pair Comb_Any | _ -> Comb_Any @@ -5778,7 +5738,7 @@ let[@coq_axiom_with_reason "gadt"] rec unparse_data : | (Bls12_381_g1_t _, x) -> Lwt.return @@ unparse_bls12_381_g1 ~loc ctxt x | (Bls12_381_g2_t _, x) -> Lwt.return @@ unparse_bls12_381_g2 ~loc ctxt x | (Bls12_381_fr_t _, x) -> Lwt.return @@ unparse_bls12_381_fr ~loc ctxt x - | (Pair_t ((tl, _, _), (tr, _, _), _), pair) -> + | (Pair_t ((tl, _), (tr, _), _), pair) -> let r_witness = comb_witness2 tr in let unparse_l ctxt v = non_terminal_recursion ctxt mode tl v in let unparse_r ctxt v = non_terminal_recursion ctxt mode tr v in @@ -6258,7 +6218,7 @@ let rec has_lazy_storage : type t. t ty -> t has_lazy_storage = | Ticket_t _ -> False_f | Chest_key_t _ -> False_f | Chest_t _ -> False_f - | Pair_t ((l, _, _), (r, _, _), _) -> aux2 (fun l r -> Pair_f (l, r)) l r + | Pair_t ((l, _), (r, _), _) -> aux2 (fun l r -> Pair_f (l, r)) l r | Union_t ((l, _), (r, _), _) -> aux2 (fun l r -> Union_f (l, r)) l r | Option_t (t, _) -> aux1 (fun h -> Option_f h) t | List_t (t, _) -> aux1 (fun h -> List_f h) t @@ -6311,7 +6271,7 @@ let[@coq_axiom_with_reason "gadt"] extract_lazy_storage_updates ctxt mode let diff = Lazy_storage.make Sapling_state id diff in let ids_to_copy = Lazy_storage.IdSet.add Sapling_state id ids_to_copy in (ctxt, sapling_state, ids_to_copy, diff :: acc) - | (Pair_f (hl, hr), Pair_t ((tyl, _, _), (tyr, _, _), _), (xl, xr)) -> + | (Pair_f (hl, hr), Pair_t ((tyl, _), (tyr, _), _), (xl, xr)) -> aux ctxt mode ~temporary ids_to_copy acc tyl xl ~has_lazy_storage:hl >>=? fun (ctxt, xl, ids_to_copy, acc) -> aux ctxt mode ~temporary ids_to_copy acc tyr xr ~has_lazy_storage:hr @@ -6407,7 +6367,7 @@ let[@coq_axiom_with_reason "gadt"] rec fold_lazy_storage : ok (Fold_lazy_storage.Ok init, ctxt) | (Sapling_state_f, Sapling_state_t _, {id = None; _}) -> ok (Fold_lazy_storage.Ok init, ctxt) - | (Pair_f (hl, hr), Pair_t ((tyl, _, _), (tyr, _, _), _), (xl, xr)) -> ( + | (Pair_f (hl, hr), Pair_t ((tyl, _), (tyr, _), _), (xl, xr)) -> ( fold_lazy_storage ~f ~init ctxt tyl xl ~has_lazy_storage:hl >>? fun (init, ctxt) -> match init with diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 6cd41703eb..9c7893c63a 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -1294,8 +1294,8 @@ and 'ty ty = | Address_t : address ty_metadata -> address ty | Bool_t : bool ty_metadata -> bool ty | Pair_t : - ('a ty * field_annot option * var_annot option) - * ('b ty * field_annot option * var_annot option) + ('a ty * field_annot option) + * ('b ty * field_annot option) * ('a, 'b) pair ty_metadata -> ('a, 'b) pair ty | Union_t : @@ -1836,9 +1836,9 @@ let address_t ~annot = Address_t {annot; size = Type_size.one} let bool_t ~annot = Bool_t {annot; size = Type_size.one} -let pair_t loc (l, fannot_l, vannot_l) (r, fannot_r, vannot_r) ~annot = +let pair_t loc (l, fannot_l) (r, fannot_r) ~annot = Type_size.compound2 loc (ty_size l) (ty_size r) >|? fun size -> - Pair_t ((l, fannot_l, vannot_l), (r, fannot_r, vannot_r), {annot; size}) + Pair_t ((l, fannot_l), (r, fannot_r), {annot; size}) let union_t loc (l, fannot_l) (r, fannot_r) ~annot = Type_size.compound2 loc (ty_size l) (ty_size r) >|? fun size -> @@ -1875,8 +1875,8 @@ let option_nat_t = let option_pair_nat_nat_t = Option_t ( Pair_t - ( (nat_t ~annot:None, None, None), - (nat_t ~annot:None, None, None), + ( (nat_t ~annot:None, None), + (nat_t ~annot:None, None), {annot = None; size = Type_size.three} ), {annot = None; size = Type_size.four} ) @@ -1884,8 +1884,8 @@ let option_pair_nat'_nat'_t meta = let {annot; size = _} = meta in Option_t ( Pair_t - ( (nat_t ~annot, None, None), - (nat_t ~annot, None, None), + ( (nat_t ~annot, None), + (nat_t ~annot, None), {annot = None; size = Type_size.three} ), {annot = None; size = Type_size.four} ) @@ -1893,8 +1893,8 @@ let option_pair_nat_mutez'_t meta = let {annot; size = _} = meta in Option_t ( Pair_t - ( (nat_t ~annot:None, None, None), - (mutez_t ~annot, None, None), + ( (nat_t ~annot:None, None), + (mutez_t ~annot, None), {annot = None; size = Type_size.three} ), {annot = None; size = Type_size.four} ) @@ -1902,8 +1902,8 @@ let option_pair_mutez'_mutez'_t meta = let {annot; size = _} = meta in Option_t ( Pair_t - ( (mutez_t ~annot, None, None), - (mutez_t ~annot, None, None), + ( (mutez_t ~annot, None), + (mutez_t ~annot, None), {annot = None; size = Type_size.three} ), {annot = None; size = Type_size.four} ) @@ -1911,8 +1911,8 @@ let option_pair_int'_nat_t meta = let {annot; size = _} = meta in Option_t ( Pair_t - ( (int_t ~annot, None, None), - (nat_t ~annot:None, None, None), + ( (int_t ~annot, None), + (nat_t ~annot:None, None), {annot = None; size = Type_size.three} ), {annot = None; size = Type_size.four} ) @@ -1920,8 +1920,8 @@ let option_pair_int_nat'_t meta = let {annot; size = _} = meta in Option_t ( Pair_t - ( (int_t ~annot:None, None, None), - (nat_t ~annot, None, None), + ( (int_t ~annot:None, None), + (nat_t ~annot, None), {annot = None; size = Type_size.three} ), {annot = None; size = Type_size.four} ) @@ -2208,7 +2208,7 @@ let (ty_traverse, comparable_ty_traverse) = (continue [@ocaml.tailcall]) accu | Ticket_t (cty, _) -> aux f accu cty continue | Chest_key_t _ | Chest_t _ -> (continue [@ocaml.tailcall]) accu - | Pair_t ((ty1, _, _), (ty2, _, _), _) -> + | Pair_t ((ty1, _), (ty2, _), _) -> (next2' [@ocaml.tailcall]) f accu ty1 ty2 continue | Union_t ((ty1, _), (ty2, _), _) -> (next2' [@ocaml.tailcall]) f accu ty1 ty2 continue @@ -2290,7 +2290,7 @@ let value_traverse (type t) (ty : (t ty, t comparable_ty) union) (x : t) init f | Bls12_381_g2_t _ | Bls12_381_fr_t _ | Chest_key_t _ | Chest_t _ | Lambda_t (_, _, _) -> (return [@ocaml.tailcall]) () - | Pair_t ((ty1, _, _), (ty2, _, _), _) -> + | Pair_t ((ty1, _), (ty2, _), _) -> (next2 [@ocaml.tailcall]) ty1 ty2 (fst x) (snd x) | Union_t ((ty1, _), (ty2, _), _) -> ( match x with diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 2045c40502..0bd3069c0b 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -1377,8 +1377,8 @@ and 'ty ty = | Address_t : address ty_metadata -> address ty | Bool_t : bool ty_metadata -> bool ty | Pair_t : - ('a ty * field_annot option * var_annot option) - * ('b ty * field_annot option * var_annot option) + ('a ty * field_annot option) + * ('b ty * field_annot option) * ('a, 'b) pair ty_metadata -> ('a, 'b) pair ty | Union_t : @@ -1567,8 +1567,8 @@ val bool_t : annot:type_annot option -> bool ty val pair_t : Script.location -> - 'a ty * field_annot option * var_annot option -> - 'b ty * field_annot option * var_annot option -> + 'a ty * field_annot option -> + 'b ty * field_annot option -> annot:type_annot option -> ('a, 'b) pair ty tzresult diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index 3702057e3b..d01fb45e03 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -80,7 +80,7 @@ let (comparable_ty_size, ty_size) = | Bls12_381_fr_t a -> ret_succ_adding accu @@ base a | Chest_key_t a -> ret_succ_adding accu @@ base a | Chest_t a -> ret_succ_adding accu @@ base a - | Pair_t ((_ty1, _fa1, _va1), (_ty2, _fa2, _va2), a) -> + | Pair_t ((_ty1, _fa1), (_ty2, _fa2), a) -> ret_succ_adding accu @@ (base a +! hh8w) | Union_t ((_ty1, _fa1), (_ty2, _fa2), a) -> ret_succ_adding accu @@ (base a +! hh6w) diff --git a/src/proto_alpha/lib_protocol/ticket_scanner.ml b/src/proto_alpha/lib_protocol/ticket_scanner.ml index 1090c458e6..4a87b505fe 100644 --- a/src/proto_alpha/lib_protocol/ticket_scanner.ml +++ b/src/proto_alpha/lib_protocol/ticket_scanner.ml @@ -161,7 +161,7 @@ module Ticket_inspection = struct | Timestamp_t _ -> (k [@ocaml.tailcall]) False_ht | Address_t _ -> (k [@ocaml.tailcall]) False_ht | Bool_t _ -> (k [@ocaml.tailcall]) False_ht - | Pair_t ((ty1, _, _), (ty2, _, _), _) -> + | Pair_t ((ty1, _), (ty2, _), _) -> (has_tickets_of_pair [@ocaml.tailcall]) ty1 ty2 @@ -318,7 +318,7 @@ module Ticket_collection = struct consume_gas_steps ctxt ~num_steps:1 >>?= fun ctxt -> match (hty, ty) with | (False_ht, _) -> (k [@ocaml.tailcall]) ctxt acc - | (Pair_ht (hty1, hty2), Pair_t ((ty1, _, _), (ty2, _, _), _)) -> + | (Pair_ht (hty1, hty2), Pair_t ((ty1, _), (ty2, _), _)) -> let (l, r) = x in (tickets_of_value [@ocaml.tailcall]) ~include_lazy From 7e552541e6825684449302db70e9054e7794a146 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:48:48 +0100 Subject: [PATCH 0171/1220] Proto/Benchmarks: remove var_annot from Pair_t --- src/proto_alpha/lib_benchmark/michelson_samplers.ml | 6 ++---- src/proto_alpha/lib_benchmark/test/test_distribution.ml | 2 +- src/proto_alpha/lib_benchmarks_proto/michelson_types.ml | 2 +- .../lib_benchmarks_proto/translator_benchmarks.ml | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/michelson_samplers.ml b/src/proto_alpha/lib_benchmark/michelson_samplers.ml index caa555e6c1..fc28a39a99 100644 --- a/src/proto_alpha/lib_benchmark/michelson_samplers.ml +++ b/src/proto_alpha/lib_benchmark/michelson_samplers.ml @@ -369,9 +369,7 @@ end) let* (lsize, rsize) = pick_split (size - 1) in let* (Ex_ty left) = m_type ~size:lsize in let* (Ex_ty right) = m_type ~size:rsize in - match - pair_t (-1) (left, None, None) (right, None, None) ~annot:None - with + match pair_t (-1) (left, None) (right, None) ~annot:None with | Error _ -> assert false | Ok res_ty -> return @@ Ex_ty res_ty) | `TLambda -> ( @@ -535,7 +533,7 @@ end) | Timestamp_t _ -> Michelson_base.timestamp | Bool_t _ -> Base_samplers.uniform_bool | Address_t _ -> address - | Pair_t ((left_t, _, _), (right_t, _, _), _) -> + | Pair_t ((left_t, _), (right_t, _), _) -> M.( let* left_v = value left_t in let* right_v = value right_t in diff --git a/src/proto_alpha/lib_benchmark/test/test_distribution.ml b/src/proto_alpha/lib_benchmark/test/test_distribution.ml index 42bbfbc063..acc8084c6d 100644 --- a/src/proto_alpha/lib_benchmark/test/test_distribution.ml +++ b/src/proto_alpha/lib_benchmark/test/test_distribution.ml @@ -68,7 +68,7 @@ let rec tnames_of_type : | Script_typed_ir.Timestamp_t _ -> `TTimestamp :: acc | Script_typed_ir.Address_t _ -> `TAddress :: acc | Script_typed_ir.Bool_t _ -> `TBool :: acc - | Script_typed_ir.Pair_t ((lty, _, _), (rty, _, _), _) -> + | Script_typed_ir.Pair_t ((lty, _), (rty, _), _) -> tnames_of_type lty (tnames_of_type rty (`TPair :: acc)) | Script_typed_ir.Union_t ((lty, _), (rty, _), _) -> tnames_of_type lty (tnames_of_type rty (`TUnion :: acc)) diff --git a/src/proto_alpha/lib_benchmarks_proto/michelson_types.ml b/src/proto_alpha/lib_benchmarks_proto/michelson_types.ml index 0a2ce6030f..5569ca6340 100644 --- a/src/proto_alpha/lib_benchmarks_proto/michelson_types.ml +++ b/src/proto_alpha/lib_benchmarks_proto/michelson_types.ml @@ -100,7 +100,7 @@ let set k = (* pair type constructor*) let pair k1 k2 = - match pair_t (-1) (k1, None, None) (k2, None, None) ~annot:None with + match pair_t (-1) (k1, None) (k2, None) ~annot:None with | Error _ -> assert false | Ok t -> t diff --git a/src/proto_alpha/lib_benchmarks_proto/translator_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/translator_benchmarks.ml index bfcd603675..03c225cbce 100644 --- a/src/proto_alpha/lib_benchmarks_proto/translator_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/translator_benchmarks.ml @@ -625,7 +625,7 @@ let rec dummy_type_generator size = | Ex_ty r -> let l = unit_t ~annot:None in Ex_ty - (match pair_t (-1) (l, None, None) (r, None, None) ~annot:None with + (match pair_t (-1) (l, None) (r, None) ~annot:None with | Error _ -> assert false | Ok t -> t) From 91d110d442bb1c4f867d338a521174acc431124d Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 11:48:48 +0100 Subject: [PATCH 0172/1220] Proto/Plugin: remove var_annot from Pair_t --- src/proto_alpha/lib_plugin/plugin.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 164572eab9..408f96ea72 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -1996,12 +1996,12 @@ module RPC = struct | Contract_t (ut, meta) -> let t = unparse_ty ~loc ut in return (T_contract, [t], unparse_type_annot meta.annot) - | Pair_t ((utl, l_field, l_var), (utr, r_field, r_var), meta) -> + | Pair_t ((utl, l_field), (utr, r_field), meta) -> let annot = unparse_type_annot meta.annot in let utl = unparse_ty ~loc utl in - let tl = add_field_annot l_field l_var utl in + let tl = add_field_annot l_field None utl in let utr = unparse_ty ~loc utr in - let tr = add_field_annot r_field r_var utr in + let tr = add_field_annot r_field None utr in return (T_pair, [tl; tr], annot) | Union_t ((utl, l_field), (utr, r_field), meta) -> let annot = unparse_type_annot meta.annot in From 69b5f6e6cfa03b8fe0d755e722d4153f6463becf Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:08:10 +0100 Subject: [PATCH 0173/1220] Proto/Tests: remove var_annot from Pair_t --- .../integration/michelson/test_sapling.ml | 2 +- .../michelson/test_typechecking.ml | 101 +++++------------- 2 files changed, 30 insertions(+), 73 deletions(-) diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_sapling.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_sapling.ml index ac912cd0b9..4f0d28016c 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_sapling.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_sapling.ml @@ -1004,7 +1004,7 @@ module Interpreter_tests = struct (let memo_size = memo_size_of_int memo_size in let open Script_typed_ir in let state_ty = sapling_state_t ~memo_size ~annot:None in - pair_t (-1) (state_ty, None, None) (state_ty, None, None) ~annot:None) + pair_t (-1) (state_ty, None) (state_ty, None) ~annot:None) >>??= fun tytype -> Script_ir_translator.parse_storage ctx_without_gas diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml index e4e7081e7c..5037627a9d 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml @@ -194,9 +194,7 @@ let test_parse_comb_type () = let nat_prim_c = Prim (-1, T_nat, [], ["%c"]) in let nat_ty = nat_t ~annot:None in let pair_prim l = Prim (-1, T_pair, l, []) in - let pair_ty ty1 ty2 = - pair_t (-1) (ty1, None, None) (ty2, None, None) ~annot:None - in + let pair_ty ty1 ty2 = pair_t (-1) (ty1, None) (ty2, None) ~annot:None in let pair_prim2 a b = pair_prim [a; b] in let pair_nat_nat_prim = pair_prim2 nat_prim nat_prim in pair_ty nat_ty nat_ty >>??= fun pair_nat_nat_ty -> @@ -225,28 +223,20 @@ let test_parse_comb_type () = pair_nat_nat_nat_ty >>?= fun ctxt -> (* pair (nat %a) nat *) - pair_t - (-1) - (nat_ty, Some (field_annot "a"), None) - (nat_ty, None, None) - ~annot:None + pair_t (-1) (nat_ty, Some (field_annot "a")) (nat_ty, None) ~annot:None >>??= fun pair_nat_a_nat_ty -> test_parse_ty ctxt (pair_prim2 nat_prim_a nat_prim) pair_nat_a_nat_ty >>?= fun ctxt -> (* pair nat (nat %b) *) - pair_t - (-1) - (nat_ty, None, None) - (nat_ty, Some (field_annot "b"), None) - ~annot:None + pair_t (-1) (nat_ty, None) (nat_ty, Some (field_annot "b")) ~annot:None >>??= fun pair_nat_nat_b_ty -> test_parse_ty ctxt (pair_prim2 nat_prim nat_prim_b) pair_nat_nat_b_ty >>?= fun ctxt -> (* pair (nat %a) (nat %b) *) pair_t (-1) - (nat_ty, Some (field_annot "a"), None) - (nat_ty, Some (field_annot "b"), None) + (nat_ty, Some (field_annot "a")) + (nat_ty, Some (field_annot "b")) ~annot:None >>??= fun pair_nat_a_nat_b_ty -> test_parse_ty ctxt (pair_prim2 nat_prim_a nat_prim_b) pair_nat_a_nat_b_ty @@ -254,14 +244,14 @@ let test_parse_comb_type () = (* pair (nat %a) (nat %b) (nat %c) *) pair_t (-1) - (nat_ty, Some (field_annot "b"), None) - (nat_ty, Some (field_annot "c"), None) + (nat_ty, Some (field_annot "b")) + (nat_ty, Some (field_annot "c")) ~annot:None >>??= fun pair_nat_b_nat_c_ty -> pair_t (-1) - (nat_ty, Some (field_annot "a"), None) - (pair_nat_b_nat_c_ty, None, None) + (nat_ty, Some (field_annot "a")) + (pair_nat_b_nat_c_ty, None) ~annot:None >>??= fun pair_nat_a_nat_b_nat_c_ty -> test_parse_ty @@ -270,12 +260,12 @@ let test_parse_comb_type () = pair_nat_a_nat_b_nat_c_ty >>?= fun ctxt -> (* pair (nat %a) (pair %b nat nat) *) - pair_t (-1) (nat_ty, None, None) (nat_ty, None, None) ~annot:None + pair_t (-1) (nat_ty, None) (nat_ty, None) ~annot:None >>??= fun pair_b_nat_nat_ty -> pair_t (-1) - (nat_ty, Some (field_annot "a"), None) - (pair_b_nat_nat_ty, Some (field_annot "b"), None) + (nat_ty, Some (field_annot "a")) + (pair_b_nat_nat_ty, Some (field_annot "b")) ~annot:None >>??= fun pair_nat_a_pair_b_nat_nat_ty -> test_parse_ty @@ -299,9 +289,7 @@ let test_unparse_comb_type () = let nat_prim_c = Prim ((), T_nat, [], ["%c"]) in let nat_ty = nat_t ~annot:None in let pair_prim l = Prim ((), T_pair, l, []) in - let pair_ty ty1 ty2 = - pair_t (-1) (ty1, None, None) (ty2, None, None) ~annot:None - in + let pair_ty ty1 ty2 = pair_t (-1) (ty1, None) (ty2, None) ~annot:None in let pair_prim2 a b = pair_prim [a; b] in let pair_nat_nat_prim = pair_prim2 nat_prim nat_prim in pair_ty nat_ty nat_ty >>??= fun pair_nat_nat_ty -> @@ -326,11 +314,7 @@ let test_unparse_comb_type () = pair_nat_nat_nat_ty >>?= fun ctxt -> (* pair (nat %a) nat *) - pair_t - (-1) - (nat_ty, Some (field_annot "a"), None) - (nat_ty, None, None) - ~annot:None + pair_t (-1) (nat_ty, Some (field_annot "a")) (nat_ty, None) ~annot:None >>??= fun pair_nat_a_nat_ty -> test_unparse_ty __LOC__ @@ -339,11 +323,7 @@ let test_unparse_comb_type () = pair_nat_a_nat_ty >>?= fun ctxt -> (* pair nat (nat %b) *) - pair_t - (-1) - (nat_ty, None, None) - (nat_ty, Some (field_annot "b"), None) - ~annot:None + pair_t (-1) (nat_ty, None) (nat_ty, Some (field_annot "b")) ~annot:None >>??= fun pair_nat_nat_b_ty -> test_unparse_ty __LOC__ @@ -354,8 +334,8 @@ let test_unparse_comb_type () = (* pair (nat %a) (nat %b) *) pair_t (-1) - (nat_ty, Some (field_annot "a"), None) - (nat_ty, Some (field_annot "b"), None) + (nat_ty, Some (field_annot "a")) + (nat_ty, Some (field_annot "b")) ~annot:None >>??= fun pair_nat_a_nat_b_ty -> test_unparse_ty @@ -367,14 +347,14 @@ let test_unparse_comb_type () = (* pair (nat %a) (nat %b) (nat %c) *) pair_t (-1) - (nat_ty, Some (field_annot "b"), None) - (nat_ty, Some (field_annot "c"), None) + (nat_ty, Some (field_annot "b")) + (nat_ty, Some (field_annot "c")) ~annot:None >>??= fun pair_nat_b_nat_c_ty -> pair_t (-1) - (nat_ty, Some (field_annot "a"), None) - (pair_nat_b_nat_c_ty, None, None) + (nat_ty, Some (field_annot "a")) + (pair_nat_b_nat_c_ty, None) ~annot:None >>??= fun pair_nat_a_nat_b_nat_c_ty -> test_unparse_ty @@ -384,12 +364,12 @@ let test_unparse_comb_type () = pair_nat_a_nat_b_nat_c_ty >>?= fun ctxt -> (* pair (nat %a) (pair %b nat nat) *) - pair_t (-1) (nat_ty, None, None) (nat_ty, None, None) ~annot:None + pair_t (-1) (nat_ty, None) (nat_ty, None) ~annot:None >>??= fun pair_nat_nat_ty -> pair_t (-1) - (nat_ty, Some (field_annot "a"), None) - (pair_nat_nat_ty, Some (field_annot "b"), None) + (nat_ty, Some (field_annot "a")) + (pair_nat_nat_ty, Some (field_annot "b")) ~annot:None >>??= fun pair_nat_a_pair_b_nat_nat_ty -> test_unparse_ty @@ -398,27 +378,10 @@ let test_unparse_comb_type () = (pair_prim2 nat_prim_a (Prim ((), T_pair, [nat_prim; nat_prim], ["%b"]))) pair_nat_a_pair_b_nat_nat_ty >>?= fun ctxt -> - (* pair nat (pair @b nat nat) *) - pair_t - (-1) - (nat_ty, None, None) - (pair_nat_nat_ty, None, Some (var_annot "b")) - ~annot:None - >>??= fun pair_nat_pair_b_nat_nat_ty -> - test_unparse_ty - __LOC__ - ctxt - (pair_prim2 nat_prim (Prim ((), T_pair, [nat_prim; nat_prim], ["@b"]))) - pair_nat_pair_b_nat_nat_ty - >>?= fun ctxt -> (* pair nat (pair :b nat nat) *) - pair_t - (-1) - (nat_ty, None, None) - (nat_ty, None, None) - ~annot:(Some (type_annot "b")) + pair_t (-1) (nat_ty, None) (nat_ty, None) ~annot:(Some (type_annot "b")) >>??= fun pair_b_nat_nat_ty -> - pair_t (-1) (nat_ty, None, None) (pair_b_nat_nat_ty, None, None) ~annot:None + pair_t (-1) (nat_ty, None) (pair_b_nat_nat_ty, None) ~annot:None >>??= fun pair_nat_pair_b_nat_nat_ty -> test_unparse_ty __LOC__ @@ -588,9 +551,7 @@ let test_parse_comb_data () = let z_prim = Micheline.Int (-1, Z.zero) in let nat_ty = nat_t ~annot:None in let pair_prim l = Prim (-1, D_Pair, l, []) in - let pair_ty ty1 ty2 = - pair_t (-1) (ty1, None, None) (ty2, None, None) ~annot:None - in + let pair_ty ty1 ty2 = pair_t (-1) (ty1, None) (ty2, None) ~annot:None in pair_ty nat_ty nat_ty >>??= fun pair_nat_nat_ty -> let pair_prim2 a b = pair_prim [a; b] in let pair_z_z_prim = pair_prim2 z_prim z_prim in @@ -740,9 +701,7 @@ let test_unparse_comb_data () = let z_prim = Micheline.Int (-1, Z.zero) in let nat_ty = nat_t ~annot:None in let pair_prim l = Prim (-1, D_Pair, l, []) in - let pair_ty ty1 ty2 = - pair_t (-1) (ty1, None, None) (ty2, None, None) ~annot:None - in + let pair_ty ty1 ty2 = pair_t (-1) (ty1, None) (ty2, None) ~annot:None in pair_ty nat_ty nat_ty >>??= fun pair_nat_nat_ty -> let pair_prim2 a b = pair_prim [a; b] in let pair_z_z_prim = pair_prim2 z_prim z_prim in @@ -849,9 +808,7 @@ let test_optimal_comb () = @@ gen_combs leaf_mich arity >>=? fun () -> return ctxt ) in - let pair_ty ty1 ty2 = - pair_t (-1) (ty1, None, None) (ty2, None, None) ~annot:None - in + let pair_ty ty1 ty2 = pair_t (-1) (ty1, None) (ty2, None) ~annot:None in test_context () >>=? fun ctxt -> pair_ty leaf_ty leaf_ty >>??= fun comb2_ty -> let comb2_v = (leaf_v, leaf_v) in From 0fa7dfc20cad287893976c47776c1b6b9dbfb4c2 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:09:35 +0100 Subject: [PATCH 0174/1220] Proto/Michelson: remove unused field_to_var_annot --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 4 ---- src/proto_alpha/lib_protocol/script_ir_annot.mli | 2 -- src/proto_alpha/lib_protocol/script_ir_translator.ml | 4 ---- 3 files changed, 10 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index bd7801125e..91df1de1b8 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -73,10 +73,6 @@ let unparse_field_annot : field_annot option -> string list = function | None -> [] | Some (Field_annot a) -> ["%" ^ (a :> string)] -let field_to_var_annot : field_annot option -> var_annot option = function - | None -> None - | Some (Field_annot s) -> Some (Var_annot s) - let type_to_var_annot : type_annot option -> var_annot option = function | None -> None | Some (Type_annot s) -> Some (Var_annot s) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index b606426da0..441cfd10c5 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -61,8 +61,6 @@ val unparse_field_annot : field_annot option -> string list (** Conversion functions between different annotation kinds *) -val field_to_var_annot : field_annot option -> var_annot option - val type_to_var_annot : type_annot option -> var_annot option (** Converts a field annot option to an entrypoint. diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 9970a14c42..d5709a01fb 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -3636,8 +3636,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : let k = ty_of_comparable_ty ck in check_kind [Seq_kind] body >>?= fun () -> parse_var_type_annot loc annot >>?= fun ty_name -> - let _k_name = field_to_var_annot default_key_annot in - let _e_name = field_to_var_annot default_elt_annot in pair_t loc (k, None) (elt, None) ~annot:None >>?= fun ty -> non_terminal_recursion ?type_logger @@ -3682,8 +3680,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : Item_t (Map_t (comp_elt, element_ty, _), rest) ) -> ( check_kind [Seq_kind] body >>?= fun () -> error_unexpected_annot loc annot >>?= fun () -> - let _k_name = field_to_var_annot default_key_annot in - let _e_name = field_to_var_annot default_elt_annot in let key = ty_of_comparable_ty comp_elt in pair_t loc (key, None) (element_ty, None) ~annot:None >>?= fun ty -> non_terminal_recursion From b128be750d60c4e57de0e56f4e13108cf132e6d1 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:09:35 +0100 Subject: [PATCH 0175/1220] Proto/Michelson: remove unused default_annot and name_of_ty --- .../lib_protocol/script_ir_annot.ml | 2 - .../lib_protocol/script_ir_annot.mli | 3 - .../lib_protocol/script_ir_translator.ml | 65 ------------------- 3 files changed, 70 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 91df1de1b8..17c3c03d72 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -89,8 +89,6 @@ let field_annot_opt_eq_entrypoint_lax field_annot_opt entrypoint = | None -> false | Some a' -> Entrypoint.(a' = entrypoint)) -let default_annot ~default = function None -> default | annot -> annot - let merge_type_annot : type error_trace. legacy:bool -> diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 441cfd10c5..09e930cf53 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -75,9 +75,6 @@ val field_annot_opt_to_entrypoint_strict : val field_annot_opt_eq_entrypoint_lax : field_annot option -> Entrypoint.t -> bool -(** Replace an annotation by its default value if it is [None] *) -val default_annot : default:'a option -> 'a option -> 'a option - (** Merge type annotations. @return an error {!Inconsistent_type_annotations} if they are both present and different, unless [legacy] *) diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index d5709a01fb..2adab4bad3 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -404,40 +404,6 @@ let serialize_stack_for_error ctxt stack_ty = | Unaccounted -> unparse_stack_uncarbonated stack_ty | Limited _ -> [] -let name_of_ty : type a. a ty -> type_annot option = function - | Unit_t meta -> meta.annot - | Int_t meta -> meta.annot - | Nat_t meta -> meta.annot - | String_t meta -> meta.annot - | Bytes_t meta -> meta.annot - | Mutez_t meta -> meta.annot - | Bool_t meta -> meta.annot - | Key_hash_t meta -> meta.annot - | Key_t meta -> meta.annot - | Timestamp_t meta -> meta.annot - | Address_t meta -> meta.annot - | Signature_t meta -> meta.annot - | Operation_t meta -> meta.annot - | Chain_id_t meta -> meta.annot - | Never_t meta -> meta.annot - | Contract_t (_, meta) -> meta.annot - | Pair_t (_, _, meta) -> meta.annot - | Union_t (_, _, meta) -> meta.annot - | Lambda_t (_, _, meta) -> meta.annot - | Option_t (_, meta) -> meta.annot - | List_t (_, meta) -> meta.annot - | Ticket_t (_, meta) -> meta.annot - | Set_t (_, meta) -> meta.annot - | Map_t (_, _, meta) -> meta.annot - | Big_map_t (_, _, meta) -> meta.annot - | Bls12_381_g1_t meta -> meta.annot - | Bls12_381_g2_t meta -> meta.annot - | Bls12_381_fr_t meta -> meta.annot - | Sapling_state_t (_, meta) -> meta.annot - | Sapling_transaction_t (_, meta) -> meta.annot - | Chest_key_t meta -> meta.annot - | Chest_t meta -> meta.annot - let unparse_unit ~loc ctxt () = ok (Prim (loc, D_Unit, [], []), ctxt) let unparse_int ~loc ctxt v = ok (Int (loc, Script_int.to_zint v), ctxt) @@ -4649,16 +4615,6 @@ and[@coq_axiom_with_reason "gadt"] parse_instr : ~legacy storage_type) >>?= fun (Ex_ty storage_type, ctxt) -> - let _arg_annot = - default_annot - (type_to_var_annot (name_of_ty arg_type)) - ~default:default_param_annot - in - let _storage_annot = - default_annot - (type_to_var_annot (name_of_ty storage_type)) - ~default:default_storage_annot - in pair_t loc (arg_type, None) (storage_type, None) ~annot:None >>?= fun arg_type_full -> pair_t loc (list_operation_t, None) (storage_type, None) ~annot:None @@ -5450,17 +5406,6 @@ let parse_code : (Ill_formed_type (Some "storage", code, storage_type_loc)) (parse_storage_ty ctxt ~stack_depth:0 ~legacy storage_type) >>?= fun (Ex_ty storage_type, ctxt) -> - let _arg_annot = - default_annot - (type_to_var_annot (name_of_ty arg_type)) - ~default:default_param_annot - in - let _storage_annot = - default_annot - (type_to_var_annot (name_of_ty storage_type)) - ~default:default_storage_annot - in - pair_t storage_type_loc (arg_type, None) (storage_type, None) ~annot:None >>?= fun arg_type_full -> pair_t @@ -5576,16 +5521,6 @@ let typecheck_code : (Ill_formed_type (Some "storage", code, storage_type_loc)) (parse_storage_ty ctxt ~stack_depth:0 ~legacy storage_type) >>?= fun (Ex_ty storage_type, ctxt) -> - let _arg_annot = - default_annot - (type_to_var_annot (name_of_ty arg_type)) - ~default:default_param_annot - in - let _storage_annot = - default_annot - (type_to_var_annot (name_of_ty storage_type)) - ~default:default_storage_annot - in pair_t storage_type_loc (arg_type, None) (storage_type, None) ~annot:None >>?= fun arg_type_full -> pair_t From ae43db2bedc00cb628cba8149cda8c1468a670a4 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:12:55 +0100 Subject: [PATCH 0176/1220] Proto/Michelson: remove unused type_to_var_annot --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 4 ---- src/proto_alpha/lib_protocol/script_ir_annot.mli | 4 ---- 2 files changed, 8 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 17c3c03d72..99f8398d3d 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -73,10 +73,6 @@ let unparse_field_annot : field_annot option -> string list = function | None -> [] | Some (Field_annot a) -> ["%" ^ (a :> string)] -let type_to_var_annot : type_annot option -> var_annot option = function - | None -> None - | Some (Type_annot s) -> Some (Var_annot s) - let field_annot_opt_to_entrypoint_strict ~loc = function | None -> Ok Entrypoint.default | Some (Field_annot a) -> Entrypoint.of_annot_strict ~loc a diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 09e930cf53..bc306d7100 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -59,10 +59,6 @@ val unparse_var_annot : var_annot option -> string list val unparse_field_annot : field_annot option -> string list -(** Conversion functions between different annotation kinds *) - -val type_to_var_annot : type_annot option -> var_annot option - (** Converts a field annot option to an entrypoint. An error is returned if the field annot is too long or is "default". [None] is converted to [Some default]. From 993f800ec283e8a6a1b2a0a44b55e8e22b40e1fd Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:12:55 +0100 Subject: [PATCH 0177/1220] Proto/Michelson: remove unused merge_var_annot --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 7 ------- src/proto_alpha/lib_protocol/script_ir_annot.mli | 3 --- src/proto_alpha/lib_protocol/script_ir_translator.ml | 2 -- 3 files changed, 12 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 99f8398d3d..02a74b2c58 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -127,13 +127,6 @@ let merge_field_annot : @@ Inconsistent_annotations ("%" ^ (a1 :> string), "%" ^ (a2 :> string))) -let merge_var_annot : var_annot option -> var_annot option -> var_annot option = - fun annot1 annot2 -> - match (annot1, annot2) with - | (None, None) | (Some _, None) | (None, Some _) -> None - | (Some (Var_annot a1), Some (Var_annot a2)) -> - if Non_empty_string.(a1 = a2) then annot1 else None - let error_unexpected_annot loc annot = match annot with | [] -> Result.return_unit diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index bc306d7100..0764446717 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -91,9 +91,6 @@ val merge_field_annot : field_annot option -> (field_annot option, 'error_trace) result -(** Merge variable annotations, does not fail ([None] if different). *) -val merge_var_annot : var_annot option -> var_annot option -> var_annot option - (** @return an error {!Unexpected_annotation} in the monad the list is not empty. *) val error_unexpected_annot : Script.location -> 'a list -> unit tzresult diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index 2adab4bad3..fd144fc212 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -994,8 +994,6 @@ let merge_types : merge_type_metadata tn1 tn2 >>$ fun tname -> merge_field_annot ~legacy l_field1 l_field2 >>$ fun l_field -> merge_field_annot ~legacy r_field1 r_field2 >>$ fun r_field -> - let _l_var = merge_var_annot None None in - let _r_var = merge_var_annot None None in help tal tbl >>$ fun (Eq, left_ty) -> help tar tbr >|$ fun (Eq, right_ty) -> ( (Eq : (ta ty, tb ty) eq), From 6d1374f46988c1787ff8615312a0e6d89f648e50 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:25:02 +0100 Subject: [PATCH 0178/1220] Proto/Michelson: simplify add_field_annot Second parameter was always None and `unparse_var_annot None = []` --- src/proto_alpha/lib_plugin/plugin.ml | 16 +++++----- .../lib_protocol/script_interpreter_defs.ml | 2 +- .../lib_protocol/script_ir_translator.ml | 31 +++++++------------ .../lib_protocol/script_ir_translator.mli | 1 - 4 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/proto_alpha/lib_plugin/plugin.ml b/src/proto_alpha/lib_plugin/plugin.ml index 408f96ea72..f496a451dd 100644 --- a/src/proto_alpha/lib_plugin/plugin.ml +++ b/src/proto_alpha/lib_plugin/plugin.ml @@ -1944,12 +1944,12 @@ module RPC = struct | Chain_id_key meta -> Prim (loc, T_chain_id, [], unparse_type_annot meta.annot) | Pair_key ((l, al), (r, ar), meta) -> - let tl = add_field_annot al None (unparse_comparable_ty ~loc l) in - let tr = add_field_annot ar None (unparse_comparable_ty ~loc r) in + let tl = add_field_annot al (unparse_comparable_ty ~loc l) in + let tr = add_field_annot ar (unparse_comparable_ty ~loc r) in Prim (loc, T_pair, [tl; tr], unparse_type_annot meta.annot) | Union_key ((l, al), (r, ar), meta) -> - let tl = add_field_annot al None (unparse_comparable_ty ~loc l) in - let tr = add_field_annot ar None (unparse_comparable_ty ~loc r) in + let tl = add_field_annot al (unparse_comparable_ty ~loc l) in + let tr = add_field_annot ar (unparse_comparable_ty ~loc r) in Prim (loc, T_or, [tl; tr], unparse_type_annot meta.annot) | Option_key (t, meta) -> Prim @@ -1999,16 +1999,16 @@ module RPC = struct | Pair_t ((utl, l_field), (utr, r_field), meta) -> let annot = unparse_type_annot meta.annot in let utl = unparse_ty ~loc utl in - let tl = add_field_annot l_field None utl in + let tl = add_field_annot l_field utl in let utr = unparse_ty ~loc utr in - let tr = add_field_annot r_field None utr in + let tr = add_field_annot r_field utr in return (T_pair, [tl; tr], annot) | Union_t ((utl, l_field), (utr, r_field), meta) -> let annot = unparse_type_annot meta.annot in let utl = unparse_ty ~loc utl in - let tl = add_field_annot l_field None utl in + let tl = add_field_annot l_field utl in let utr = unparse_ty ~loc utr in - let tr = add_field_annot r_field None utr in + let tr = add_field_annot r_field utr in return (T_or, [tl; tr], annot) | Lambda_t (uta, utr, meta) -> let ta = unparse_ty ~loc uta in diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index 4963601dad..76455a1d77 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -543,7 +543,7 @@ let create_contract (ctxt, sc) gas storage_type param_type code views root_name let loc = Micheline.dummy_location in unparse_ty ~loc ctxt param_type >>?= fun (unparsed_param_type, ctxt) -> let unparsed_param_type = - Script_ir_translator.add_field_annot root_name None unparsed_param_type + Script_ir_translator.add_field_annot root_name unparsed_param_type in unparse_ty ~loc ctxt storage_type >>?= fun (unparsed_storage_type, ctxt) -> let open Micheline in diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.ml b/src/proto_alpha/lib_protocol/script_ir_translator.ml index fd144fc212..c0ba5ea23c 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.ml +++ b/src/proto_alpha/lib_protocol/script_ir_translator.ml @@ -178,10 +178,9 @@ let rec ty_of_comparable_ty : type a. a comparable_ty -> a ty = function Union_t ((ty_of_comparable_ty l, al), (ty_of_comparable_ty r, ar), tname) | Option_key (t, tname) -> Option_t (ty_of_comparable_ty t, tname) -let add_field_annot a var = function +let add_field_annot a = function | Prim (loc, prim, args, annots) -> - Prim - (loc, prim, args, annots @ unparse_field_annot a @ unparse_var_annot var) + Prim (loc, prim, args, annots @ unparse_field_annot a) | expr -> expr let rec unparse_comparable_ty_uncarbonated : @@ -206,12 +205,8 @@ let rec unparse_comparable_ty_uncarbonated : | Chain_id_key meta -> Prim (loc, T_chain_id, [], unparse_type_annot meta.annot) | Pair_key ((l, al), (r, ar), meta) -> ( - let tl = - add_field_annot al None (unparse_comparable_ty_uncarbonated ~loc l) - in - let tr = - add_field_annot ar None (unparse_comparable_ty_uncarbonated ~loc r) - in + let tl = add_field_annot al (unparse_comparable_ty_uncarbonated ~loc l) in + let tr = add_field_annot ar (unparse_comparable_ty_uncarbonated ~loc r) in (* Fold [pair a1 (pair ... (pair an-1 an))] into [pair a1 ... an] *) (* Note that the folding does not happen if the pair on the right has a field annotation because this annotation would be lost *) @@ -220,12 +215,8 @@ let rec unparse_comparable_ty_uncarbonated : Prim (loc, T_pair, tl :: ts, unparse_type_annot meta.annot) | _ -> Prim (loc, T_pair, [tl; tr], unparse_type_annot meta.annot)) | Union_key ((l, al), (r, ar), meta) -> - let tl = - add_field_annot al None (unparse_comparable_ty_uncarbonated ~loc l) - in - let tr = - add_field_annot ar None (unparse_comparable_ty_uncarbonated ~loc r) - in + let tl = add_field_annot al (unparse_comparable_ty_uncarbonated ~loc l) in + let tr = add_field_annot ar (unparse_comparable_ty_uncarbonated ~loc r) in Prim (loc, T_or, [tl; tr], unparse_type_annot meta.annot) | Option_key (t, meta) -> Prim @@ -270,9 +261,9 @@ let rec unparse_ty_uncarbonated : | Pair_t ((utl, l_field), (utr, r_field), meta) -> let annot = unparse_type_annot meta.annot in let utl = unparse_ty_uncarbonated ~loc utl in - let tl = add_field_annot l_field None utl in + let tl = add_field_annot l_field utl in let utr = unparse_ty_uncarbonated ~loc utr in - let tr = add_field_annot r_field None utr in + let tr = add_field_annot r_field utr in (* Fold [pair a1 (pair ... (pair an-1 an))] into [pair a1 ... an] *) (* Note that the folding does not happen if the pair on the right has an annotation because this annotation would be lost *) @@ -283,9 +274,9 @@ let rec unparse_ty_uncarbonated : | Union_t ((utl, l_field), (utr, r_field), meta) -> let annot = unparse_type_annot meta.annot in let utl = unparse_ty_uncarbonated ~loc utl in - let tl = add_field_annot l_field None utl in + let tl = add_field_annot l_field utl in let utr = unparse_ty_uncarbonated ~loc utr in - let tr = add_field_annot r_field None utr in + let tr = add_field_annot r_field utr in prim (T_or, [tl; tr], annot) | Lambda_t (uta, utr, meta) -> let ta = unparse_ty_uncarbonated ~loc uta in @@ -5884,7 +5875,7 @@ let unparse_script ctxt mode (let loc = Micheline.dummy_location in unparse_ty ~loc ctxt arg_type >>? fun (arg_type, ctxt) -> unparse_ty ~loc ctxt storage_type >>? fun (storage_type, ctxt) -> - let arg_type = add_field_annot root_name None arg_type in + let arg_type = add_field_annot root_name arg_type in let open Micheline in let view name {input_ty; output_ty; view_code} views = Prim diff --git a/src/proto_alpha/lib_protocol/script_ir_translator.mli b/src/proto_alpha/lib_protocol/script_ir_translator.mli index 0fef3a64fd..1d2a8d8821 100644 --- a/src/proto_alpha/lib_protocol/script_ir_translator.mli +++ b/src/proto_alpha/lib_protocol/script_ir_translator.mli @@ -338,7 +338,6 @@ val parse_toplevel : val add_field_annot : Script_ir_annot.field_annot option -> - Script_ir_annot.var_annot option -> ('loc, 'prim) Micheline.node -> ('loc, 'prim) Micheline.node From 47391bd6cedd1ff6160936d229391d63e60ce131 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:43:39 +0100 Subject: [PATCH 0179/1220] Proto/Michelson: remove unused unparse_var_annot --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 4 ---- src/proto_alpha/lib_protocol/script_ir_annot.mli | 2 -- 2 files changed, 6 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 02a74b2c58..49a31ff2b2 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -65,10 +65,6 @@ let unparse_type_annot : type_annot option -> string list = function | None -> [] | Some (Type_annot a) -> [":" ^ (a :> string)] -let unparse_var_annot : var_annot option -> string list = function - | None -> [] - | Some (Var_annot a) -> ["@" ^ (a :> string)] - let unparse_field_annot : field_annot option -> string list = function | None -> [] | Some (Field_annot a) -> ["%" ^ (a :> string)] diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 0764446717..6615c62439 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -55,8 +55,6 @@ val default_key_annot : field_annot option val unparse_type_annot : type_annot option -> string list -val unparse_var_annot : var_annot option -> string list - val unparse_field_annot : field_annot option -> string list (** Converts a field annot option to an entrypoint. From 175c8ec1d8fdea0109554bbe6396f703338d14ac Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 12:12:55 +0100 Subject: [PATCH 0180/1220] Proto/Michelson: remove unused default annot names --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 17 ----------------- .../lib_protocol/script_ir_annot.mli | 12 ------------ 2 files changed, 29 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 49a31ff2b2..5da87b253b 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -44,23 +44,6 @@ module FOR_TESTS = struct Field_annot (Non_empty_string.of_string_exn s) end -let some_var_annot_of_string_exn s = - Some (Var_annot (Non_empty_string.of_string_exn s)) - -let some_field_annot_of_string_exn s = - Some (Field_annot (Non_empty_string.of_string_exn s)) - -let default_param_annot = some_var_annot_of_string_exn "parameter" - -let default_storage_annot = some_var_annot_of_string_exn "storage" - -let default_elt_annot = some_field_annot_of_string_exn "elt" - -let default_key_annot = some_field_annot_of_string_exn "key" - -let default_sapling_balance_annot = - some_var_annot_of_string_exn "sapling_balance" - let unparse_type_annot : type_annot option -> string list = function | None -> [] | Some (Type_annot a) -> [":" ^ (a :> string)] diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index 6615c62439..f5cc54d08c 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -39,18 +39,6 @@ module FOR_TESTS : sig val unsafe_field_annot_of_string : string -> field_annot end -(** Default annotations *) - -val default_param_annot : var_annot option - -val default_storage_annot : var_annot option - -val default_sapling_balance_annot : var_annot option - -val default_elt_annot : field_annot option - -val default_key_annot : field_annot option - (** Unparse annotations to their string representation *) val unparse_type_annot : type_annot option -> string list From 7d2765d0c5e1d5175d51dd47e16d3891744855e5 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 10 Jan 2022 16:47:14 +0100 Subject: [PATCH 0181/1220] Proto/Michelson: update ty_size --- src/proto_alpha/lib_protocol/script_typed_ir_size.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml index d01fb45e03..2950658c7c 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir_size.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir_size.ml @@ -81,7 +81,7 @@ let (comparable_ty_size, ty_size) = | Chest_key_t a -> ret_succ_adding accu @@ base a | Chest_t a -> ret_succ_adding accu @@ base a | Pair_t ((_ty1, _fa1), (_ty2, _fa2), a) -> - ret_succ_adding accu @@ (base a +! hh8w) + ret_succ_adding accu @@ (base a +! hh6w) | Union_t ((_ty1, _fa1), (_ty2, _fa2), a) -> ret_succ_adding accu @@ (base a +! hh6w) | Lambda_t (_ty1, _ty2, a) -> From 83ec6ee3a79233d8353393568813118b9203f98a Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 10 Jan 2022 16:50:37 +0100 Subject: [PATCH 0182/1220] Proto/Doc: add entry in changelog --- docs/protocols/alpha.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/protocols/alpha.rst b/docs/protocols/alpha.rst index 63d822e241..d1110e8e07 100644 --- a/docs/protocols/alpha.rst +++ b/docs/protocols/alpha.rst @@ -50,6 +50,9 @@ Michelson ``annot`` are replaced with the contents of the field ``item``. (MR :gl:`!4139`) +- Variable annotations in pairs are ignored and not propagated. + (MR :gl:`!4140`) + Internal -------- From f0452f08e668ae1964282365971e96a9b96bf59e Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 10 Jan 2022 19:32:46 +0100 Subject: [PATCH 0183/1220] Tests/Python: regenerate typechecking traces --- ...ck::test_typecheck[attic--accounts.tz].out | 112 +- ...st_typecheck[attic--after_strategy.tz].out | 5 +- ...eck::test_typecheck[attic--auction.tz].out | 25 +- ...heck::test_typecheck[attic--concat.tz].out | 5 +- ...::test_typecheck[attic--cons_twice.tz].out | 5 +- ...st_typecheck[attic--data_publisher.tz].out | 6 +- ...ck::test_typecheck[attic--dispatch.tz].out | 16 +- ...eck::test_typecheck[attic--forward.tz].out | 1846 ++++++++--------- ...est_typecheck[attic--int_publisher.tz].out | 90 +- ...:test_typecheck[attic--king_of_tez.tz].out | 14 +- ...check::test_typecheck[attic--queue.tz].out | 15 +- ...::test_typecheck[attic--reduce_map.tz].out | 3 +- ...pecheck[attic--scrutable_reservoir.tz].out | 66 +- ..._typecheck[attic--spawn_identities.tz].out | 4 +- ..._typecheck[macros--big_map_get_add.tz].out | 43 +- ...test_typecheck[macros--big_map_mem.tz].out | 10 +- ...:test_typecheck[macros--pair_macro.tz].out | 12 +- ...est_typecheck[macros--set_caddaadr.tz].out | 12 +- ...ck[mini_scenarios--create_contract.tz].out | 2 +- ...ck[mini_scenarios--default_account.tz].out | 2 +- ...eck[mini_scenarios--lqt_fa12.mligo.tz].out | 260 ++- ...check[mini_scenarios--multiple_en2.tz].out | 32 +- ...rios--multiple_entrypoints_counter.tz].out | 15 +- ..._scenarios--parameterized_multisig.tz].out | 9 +- ..._scenarios--reveal_signed_preimage.tz].out | 39 +- ...scenarios--ticket_builder_fungible.tz].out | 14 +- ...arios--ticket_builder_non_fungible.tz].out | 10 +- ..._scenarios--ticket_wallet_fungible.tz].out | 16 +- ...narios--ticket_wallet_non_fungible.tz].out | 16 +- ...[mini_scenarios--vote_for_delegate.tz].out | 56 +- ...[mini_scenarios--weather_insurance.tz].out | 279 ++- ...ypecheck[mini_scenarios--xcat_dapp.tz].out | 40 +- ...echeck[non_regression--pairk_annot.tz].out | 18 +- ...::test_typecheck[opcodes--chain_id.tz].out | 4 +- ...typecheck[opcodes--check_signature.tz].out | 34 +- ...t_typecheck[opcodes--comb-literals.tz].out | 2 +- ...typecheck[opcodes--create_contract.tz].out | 2 +- ...[opcodes--create_contract_rootname.tz].out | 2 +- ...odes--create_contract_rootname_alt.tz].out | 2 +- ...opcodes--create_contract_with_view.tz].out | 2 +- ...pecheck[opcodes--get_big_map_value.tz].out | 7 +- ...t_typecheck[opcodes--get_map_value.tz].out | 7 +- ...k::test_typecheck[opcodes--map_car.tz].out | 5 +- ...::test_typecheck[opcodes--map_iter.tz].out | 9 +- ...eck::test_typecheck[opcodes--pexec.tz].out | 4 +- ...k::test_typecheck[opcodes--set_car.tz].out | 6 +- ...k::test_typecheck[opcodes--set_cdr.tz].out | 6 +- ...test_typecheck[opcodes--set_member.tz].out | 24 +- ...ck::test_typecheck[opcodes--slices.tz].out | 123 +- 49 files changed, 1495 insertions(+), 1841 deletions(-) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--accounts.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--accounts.tz].out index 9995b3f7c9..2d6e91f2af 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--accounts.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--accounts.tz].out @@ -7,28 +7,24 @@ Gas remaining: 1039925.145 units remaining (pair %Withdraw (key %from) (pair (mutez %withdraw_amount) (signature %sig)))) ; storage (map :stored_balance key_hash mutez) ; code { DUP - /* [ pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + /* [ pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; CAR /* [ or (key_hash %Initialize) (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig)) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; IF_LEFT { DUP /* [ key_hash : key_hash - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; DIIP { CDR %stored_balance /* [ map :stored_balance key_hash mutez ] */ ; DUP @@ -73,97 +69,85 @@ Gas remaining: 1039925.145 units remaining { DUP /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; DUP /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; DUP /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; DUP /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; CAR %from /* [ key : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; DIIP { CDAR %withdraw_amount ; PACK /* [ bytes : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; BLAKE2B @signed_amount /* [ bytes : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ } + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ } /* [ key : pair (key %from) (mutez %withdraw_amount) (signature %sig) : bytes : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; DIP { CDDR %sig } /* [ key : signature : bytes : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; CHECK_SIGNATURE /* [ bool : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; IF { /* [ pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ } + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ } { PUSH string "Bad signature" /* [ string : pair (key %from) (mutez %withdraw_amount) (signature %sig) : pair (key %from) (mutez %withdraw_amount) (signature %sig) - : pair (or @parameter - (key_hash %Initialize) - (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) - (map :stored_balance @stored_balance key_hash mutez) ] */ ; + : pair (or (key_hash %Initialize) + (pair %Withdraw (key %from) (mutez %withdraw_amount) (signature %sig))) + (map :stored_balance key_hash mutez) ] */ ; FAILWITH /* [] */ } ; DIIP { CDR %stored_balance diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--after_strategy.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--after_strategy.tz].out index c556cd5fe6..f13f72ec5d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--after_strategy.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--after_strategy.tz].out @@ -5,10 +5,9 @@ Gas remaining: 1039989.643 units remaining { parameter nat ; storage (pair (pair nat bool) timestamp) ; code { DUP - /* [ pair (nat @parameter) (pair @storage (pair nat bool) timestamp) - : pair (nat @parameter) (pair @storage (pair nat bool) timestamp) ] */ ; + /* [ pair nat (pair nat bool) timestamp : pair nat (pair nat bool) timestamp ] */ ; CAR - /* [ nat : pair (nat @parameter) (pair @storage (pair nat bool) timestamp) ] */ ; + /* [ nat : pair nat (pair nat bool) timestamp ] */ ; DIP { CDDR ; DUP /* [ timestamp : timestamp ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--auction.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--auction.tz].out index 7944e5d105..1593cd1d0f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--auction.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--auction.tz].out @@ -5,30 +5,23 @@ Gas remaining: 1039972.258 units remaining { parameter key_hash ; storage (pair timestamp (pair mutez key_hash)) ; code { DUP - /* [ pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; + /* [ pair key_hash timestamp mutez key_hash + : pair key_hash timestamp mutez key_hash ] */ ; CDAR ; DUP - /* [ timestamp : timestamp - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; + /* [ timestamp : timestamp : pair key_hash timestamp mutez key_hash ] */ ; NOW /* [ timestamp : timestamp : timestamp - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; + : pair key_hash timestamp mutez key_hash ] */ ; CMPGT ; - IF { FAIL } - { /* [ timestamp - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ } ; + IF { FAIL } { /* [ timestamp : pair key_hash timestamp mutez key_hash ] */ } ; SWAP - /* [ pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) - : timestamp ] */ ; + /* [ pair key_hash timestamp mutez key_hash : timestamp ] */ ; DUP - /* [ pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) - : timestamp ] */ ; + /* [ pair key_hash timestamp mutez key_hash + : pair key_hash timestamp mutez key_hash : timestamp ] */ ; CAR - /* [ key_hash - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) - : timestamp ] */ ; + /* [ key_hash : pair key_hash timestamp mutez key_hash : timestamp ] */ ; DIP { CDDR } /* [ key_hash : pair mutez key_hash : timestamp ] */ ; AMOUNT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--concat.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--concat.tz].out index aed12ebd69..6a9d4a3fac 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--concat.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--concat.tz].out @@ -5,8 +5,7 @@ Gas remaining: 1039992.618 units remaining { parameter string ; storage string ; code { DUP - /* [ pair (string @parameter) (string @storage) - : pair (string @parameter) (string @storage) ] */ ; + /* [ pair string string : pair string string ] */ ; DIP { CDR /* [ string ] */ ; NIL string @@ -15,7 +14,7 @@ Gas remaining: 1039992.618 units remaining /* [ string : list string ] */ ; CONS /* [ list string ] */ } - /* [ pair (string @parameter) (string @storage) : list string ] */ ; + /* [ pair string string : list string ] */ ; CAR /* [ string : list string ] */ ; CONS diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cons_twice.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cons_twice.tz].out index 88a5f13091..61910b17a8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cons_twice.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--cons_twice.tz].out @@ -5,10 +5,9 @@ Gas remaining: 1039992.638 units remaining { parameter nat ; storage (list nat) ; code { DUP - /* [ pair (nat @parameter) (list @storage nat) - : pair (nat @parameter) (list @storage nat) ] */ ; + /* [ pair nat (list nat) : pair nat (list nat) ] */ ; CAR - /* [ nat : pair (nat @parameter) (list @storage nat) ] */ ; + /* [ nat : pair nat (list nat) ] */ ; DIP { CDR /* [ list nat ] */ } /* [ nat : list nat ] */ ; DUP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--data_publisher.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--data_publisher.tz].out index 5df6245e17..5f21c0a537 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--data_publisher.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--data_publisher.tz].out @@ -5,11 +5,11 @@ Gas remaining: 1039974.524 units remaining { parameter (pair signature (pair string nat)) ; storage (pair (pair key nat) string) ; code { DUP - /* [ pair (pair @parameter signature string nat) (pair @storage (pair key nat) string) - : pair (pair @parameter signature string nat) (pair @storage (pair key nat) string) ] */ ; + /* [ pair (pair signature string nat) (pair key nat) string + : pair (pair signature string nat) (pair key nat) string ] */ ; CAR /* [ pair signature string nat - : pair (pair @parameter signature string nat) (pair @storage (pair key nat) string) ] */ ; + : pair (pair signature string nat) (pair key nat) string ] */ ; DIP { CDR /* [ pair (pair key nat) string ] */ ; DUP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--dispatch.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--dispatch.tz].out index 98b786e67e..a02e29dd8d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--dispatch.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--dispatch.tz].out @@ -5,14 +5,16 @@ Gas remaining: 1039979.486 units remaining { parameter (or string (pair string (lambda unit string))) ; storage (pair string (map string (lambda unit string))) ; code { DUP - /* [ pair (or @parameter string (pair string (lambda unit string))) - (pair @storage string (map string (lambda unit string))) - : pair (or @parameter string (pair string (lambda unit string))) - (pair @storage string (map string (lambda unit string))) ] */ ; + /* [ pair (or string (pair string (lambda unit string))) + string + (map string (lambda unit string)) + : pair (or string (pair string (lambda unit string))) + string + (map string (lambda unit string)) ] */ ; DIP { CDDR } - /* [ pair (or @parameter string (pair string (lambda unit string))) - (pair @storage string (map string (lambda unit string))) - : map string (lambda unit string) ] */ ; + /* [ pair (or string (pair string (lambda unit string))) + string + (map string (lambda unit string)) : map string (lambda unit string) ] */ ; CAR /* [ or string (pair string (lambda unit string)) : map string (lambda unit string) ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--forward.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--forward.tz].out index 4dc2407fa3..3d717bb246 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--forward.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--forward.tz].out @@ -8,240 +8,213 @@ Gas remaining: 1039634.172 units remaining (pair (pair nat (pair timestamp timestamp)) (pair (pair mutez mutez) (pair (pair address address) address)))) ; code { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDADDR ; PUSH int 86400 /* [ int : timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; SWAP /* [ timestamp : int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; ADD /* [ timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; NOW /* [ timestamp : timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; LT /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CAR /* [ or string nat - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF_LEFT { DUP /* [ string : string - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PUSH string "buyer" /* [ string : string : string - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int : string - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; EQ /* [ bool : string - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { DROP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDADAR ; DIP { AMOUNT /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; ADD /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDADDR } /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PAIR /* [ pair mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PUSH nat 0 /* [ nat : pair mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PAIR /* [ pair nat mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { CDDR } /* [ pair nat mutez mutez : pair (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; @@ -268,134 +241,119 @@ Gas remaining: 1039634.172 units remaining { PUSH string "seller" /* [ string : string - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; EQ /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDADDR ; DIP { AMOUNT /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; ADD /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDADAR } /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; SWAP /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PAIR /* [ pair mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PUSH nat 0 /* [ nat : pair mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PAIR /* [ pair nat mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { CDDR } /* [ pair nat mutez mutez : pair (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; @@ -423,127 +381,113 @@ Gas remaining: 1039634.172 units remaining { FAIL } } { BALANCE /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PUSH mutez 0 /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IFCMPEQ { FAIL } - { /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } ; + { /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } ; DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDAAR ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDDADR } /* [ nat : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; MUL /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PUSH nat 2 /* [ nat : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; MUL /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; BALANCE /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; LT /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { CDR /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) @@ -834,358 +778,317 @@ Gas remaining: 1039634.172 units remaining (pair address address) address ] */ } { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDADAR ; NOW /* [ timestamp : timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; LT /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { FAIL } { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDADAR ; PUSH int 86400 /* [ int : timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; ADD /* [ timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; NOW /* [ timestamp : timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; LT /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CAR /* [ or string nat - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF_LEFT { PUSH string "buyer" /* [ string : string - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; EQ /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDADAR ; DIP { AMOUNT /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; ADD /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DUP /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDAAR ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDDAAR } /* [ nat : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; MUL /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } /* [ mutez : mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; GT /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { FAIL } - { /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } } + { /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } } /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDADDR } /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PAIR /* [ pair mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PUSH nat 0 /* [ nat : pair mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PAIR /* [ pair nat mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { CDDR } /* [ pair nat mutez mutez : pair (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; @@ -1212,129 +1115,114 @@ Gas remaining: 1039634.172 units remaining { FAIL } } { FAIL } } { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDAAR ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDDAAR } /* [ nat : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; MUL /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDADAR } /* [ mutez : mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; NEQ /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { BALANCE /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDDDADR } /* [ mutez : address - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIIP { CDR /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) @@ -1405,229 +1293,203 @@ Gas remaining: 1039634.172 units remaining (pair address address) address ] */ } { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDADAR ; PUSH int 86400 /* [ int : timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; ADD /* [ timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PUSH int 86400 /* [ int : timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; ADD /* [ timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; NOW /* [ timestamp : timestamp - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; LT /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDDDDR ; SENDER /* [ address : address - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; COMPARE /* [ int - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; NEQ /* [ bool - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF { FAIL } - { /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ } ; + { /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ } ; DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CAR /* [ or string nat - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; IF_LEFT { FAIL } { DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDAAR } /* [ nat : nat - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; ADD /* [ nat - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDADR } /* [ nat : pair mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; PAIR /* [ pair nat mutez mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { CDDR } /* [ pair nat mutez mutez : pair (pair nat timestamp timestamp) (pair mutez mutez) (pair address address) address ] */ ; @@ -1815,37 +1677,33 @@ Gas remaining: 1039634.172 units remaining address ] */ } { BALANCE /* [ mutez - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIP { DUP - /* [ pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + /* [ pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; CDDDDAAR } /* [ mutez : address - : pair (or @parameter string nat) - (pair @storage - (pair nat mutez mutez) - (pair nat timestamp timestamp) - (pair mutez mutez) - (pair address address) - address) ] */ ; + : pair (or string nat) + (pair nat mutez mutez) + (pair nat timestamp timestamp) + (pair mutez mutez) + (pair address address) + address ] */ ; DIIP { CDR /* [ pair (pair nat mutez mutez) (pair nat timestamp timestamp) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--int_publisher.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--int_publisher.tz].out index ca260fe7ee..be420737b5 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--int_publisher.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--int_publisher.tz].out @@ -5,94 +5,78 @@ Gas remaining: 1039967.523 units remaining { parameter (option (pair signature int)) ; storage (pair key int) ; code { DUP - /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int ] */ ; DUP - /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int ] */ ; CAR - /* [ option (pair signature int) - : pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ option (pair signature int) : pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int ] */ ; IF_NONE { PUSH mutez 1000000 - /* [ mutez - : pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ mutez : pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int ] */ ; AMOUNT - /* [ mutez : mutez - : pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ mutez : mutez : pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int ] */ ; CMPLE ; IF { FAIL } - { /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ } ; + { /* [ pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int ] */ } ; CDR - /* [ pair key int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ pair key int : pair (option (pair signature int)) key int ] */ ; DIP { CDDR } /* [ pair key int : int ] */ } { DUP /* [ pair signature int : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + : pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int ] */ ; DIP { SWAP - /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ } - /* [ pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) - : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ pair (option (pair signature int)) key int : pair signature int + : pair (option (pair signature int)) key int ] */ } + /* [ pair signature int : pair (option (pair signature int)) key int + : pair signature int : pair (option (pair signature int)) key int ] */ ; SWAP - /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : pair signature int : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ pair (option (pair signature int)) key int : pair signature int + : pair signature int : pair (option (pair signature int)) key int ] */ ; CDAR ; DIP { DUP /* [ pair signature int : pair signature int : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + : pair (option (pair signature int)) key int ] */ ; CAR /* [ signature : pair signature int : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + : pair (option (pair signature int)) key int ] */ ; DIP { CDR - /* [ int : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ int : pair signature int : pair (option (pair signature int)) key int ] */ ; PACK - /* [ bytes : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ bytes : pair signature int : pair (option (pair signature int)) key int ] */ ; BLAKE2B - /* [ bytes : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ } + /* [ bytes : pair signature int : pair (option (pair signature int)) key int ] */ } /* [ signature : bytes : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ } + : pair (option (pair signature int)) key int ] */ } /* [ key : signature : bytes : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + : pair (option (pair signature int)) key int ] */ ; CHECK_SIGNATURE - /* [ bool : pair signature int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ bool : pair signature int : pair (option (pair signature int)) key int ] */ ; IF { CDR - /* [ int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ int : pair (option (pair signature int)) key int ] */ ; SWAP - /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : int ] */ ; + /* [ pair (option (pair signature int)) key int : int ] */ ; DIP { DUP /* [ int : int ] */ } - /* [ pair (option @parameter (pair signature int)) (pair @storage key int) : int - : int ] */ ; + /* [ pair (option (pair signature int)) key int : int : int ] */ ; CDAR ; PAIR /* [ pair key int : int ] */ } { DROP - /* [ pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ pair (option (pair signature int)) key int ] */ ; DUP - /* [ pair (option @parameter (pair signature int)) (pair @storage key int) - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ pair (option (pair signature int)) key int + : pair (option (pair signature int)) key int ] */ ; CDR - /* [ pair key int - : pair (option @parameter (pair signature int)) (pair @storage key int) ] */ ; + /* [ pair key int : pair (option (pair signature int)) key int ] */ ; DIP { CDDR } /* [ pair key int : int ] */ } } ; DIP { DROP /* [] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--king_of_tez.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--king_of_tez.tz].out index b32f89c88d..ef5a0759ec 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--king_of_tez.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--king_of_tez.tz].out @@ -5,12 +5,11 @@ Gas remaining: 1039971.047 units remaining { parameter key_hash ; storage (pair timestamp (pair mutez key_hash)) ; code { DUP - /* [ pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; + /* [ pair key_hash timestamp mutez key_hash + : pair key_hash timestamp mutez key_hash ] */ ; CDAR ; NOW - /* [ timestamp : timestamp - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; + /* [ timestamp : timestamp : pair key_hash timestamp mutez key_hash ] */ ; CMPGT ; IF { CAR /* [ key_hash ] */ ; @@ -29,12 +28,11 @@ Gas remaining: 1039971.047 units remaining NIL operation /* [ list operation : pair timestamp mutez key_hash ] */ } { DUP - /* [ pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; + /* [ pair key_hash timestamp mutez key_hash + : pair key_hash timestamp mutez key_hash ] */ ; CDDAR ; AMOUNT - /* [ mutez : mutez - : pair (key_hash @parameter) (pair @storage timestamp mutez key_hash) ] */ ; + /* [ mutez : mutez : pair key_hash timestamp mutez key_hash ] */ ; CMPLT ; IF { FAIL } { CAR diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--queue.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--queue.tz].out index 3cc8befc24..ffce16bbaa 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--queue.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--queue.tz].out @@ -5,14 +5,11 @@ Gas remaining: 1039952.504 units remaining { parameter (option string) ; storage (pair (option string) (pair (pair nat nat) (map nat string))) ; code { DUP - /* [ pair (option @parameter string) - (pair @storage (option string) (pair nat nat) (map nat string)) - : pair (option @parameter string) - (pair @storage (option string) (pair nat nat) (map nat string)) ] */ ; + /* [ pair (option string) (option string) (pair nat nat) (map nat string) + : pair (option string) (option string) (pair nat nat) (map nat string) ] */ ; CAR /* [ option string - : pair (option @parameter string) - (pair @storage (option string) (pair nat nat) (map nat string)) ] */ ; + : pair (option string) (option string) (pair nat nat) (map nat string) ] */ ; IF_NONE { CDDR ; DUP @@ -68,10 +65,8 @@ Gas remaining: 1039952.504 units remaining PAIR /* [ pair (option string) (pair nat nat) (map nat string) ] */ } } { DIP { DUP - /* [ pair (option @parameter string) - (pair @storage (option string) (pair nat nat) (map nat string)) - : pair (option @parameter string) - (pair @storage (option string) (pair nat nat) (map nat string)) ] */ ; + /* [ pair (option string) (option string) (pair nat nat) (map nat string) + : pair (option string) (option string) (pair nat nat) (map nat string) ] */ ; CDDAR ; DIP { CDDDR } /* [ pair nat nat : map nat string ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reduce_map.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reduce_map.tz].out index cf4502fb1b..b12810ef5d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reduce_map.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--reduce_map.tz].out @@ -5,8 +5,7 @@ Gas remaining: 1039975.926 units remaining { parameter (pair (lambda int int) (list int)) ; storage (list int) ; code { DIP { NIL int /* [ list int ] */ } - /* [ pair (pair @parameter (lambda int int) (list int)) (list @storage int) - : list int ] */ ; + /* [ pair (pair (lambda int int) (list int)) (list int) : list int ] */ ; CAR /* [ pair (lambda int int) (list int) : list int ] */ ; DUP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--scrutable_reservoir.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--scrutable_reservoir.tz].out index 52189ffb5c..50c6a40c70 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--scrutable_reservoir.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--scrutable_reservoir.tz].out @@ -7,86 +7,64 @@ Gas remaining: 1039876.691 units remaining (pair string (pair timestamp (pair (pair mutez mutez) (pair address (pair address address))))) ; code { DUP - /* [ pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + /* [ pair unit string timestamp (pair mutez mutez) address address address + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; CDAR ; PUSH string "open" /* [ string : string - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; COMPARE /* [ int - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; NEQ /* [ bool - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; IF { FAIL } { DUP - /* [ pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + /* [ pair unit string timestamp (pair mutez mutez) address address address + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; CDDAR ; NOW /* [ timestamp : timestamp - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; COMPARE /* [ int - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; LT /* [ bool - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; IF { PUSH mutez 0 /* [ mutez - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; DIP { DUP - /* [ pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + /* [ pair unit string timestamp (pair mutez mutez) address address address + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; CDDDAAR } /* [ mutez : mutez - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; ADD /* [ mutez - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; DIP { DUP - /* [ pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + /* [ pair unit string timestamp (pair mutez mutez) address address address + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; CDDDADR } /* [ mutez : mutez - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; ADD /* [ mutez - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; BALANCE /* [ mutez : mutez - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; COMPARE /* [ int - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; LT /* [ bool - : pair (unit @parameter) - (pair @storage string timestamp (pair mutez mutez) address address address) ] */ ; + : pair unit string timestamp (pair mutez mutez) address address address ] */ ; IF { CDR /* [ pair string timestamp (pair mutez mutez) address address address ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--spawn_identities.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--spawn_identities.tz].out index a5e5598bb8..9f477fa3dd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--spawn_identities.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[attic--spawn_identities.tz].out @@ -4,11 +4,11 @@ Well typed Gas remaining: 1039971.200 units remaining { parameter nat ; storage (list address) ; - code { /* [ pair (string @parameter) (string @storage) ] */ + code { /* [ pair string string ] */ DUP /* [ list operation : string ] */ ; CAR - /* [ nat : pair (nat @parameter) (list @storage address) ] */ ; + /* [ nat : pair nat (list address) ] */ ; DIP { CDR /* [ list address ] */ ; NIL operation /* [ list operation : list address ] */ } /* [ pair (list operation) string ] */ ; PUSH bool True diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_get_add.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_get_add.tz].out index a83096b521..bc82e51f10 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_get_add.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_get_add.tz].out @@ -5,28 +5,23 @@ Gas remaining: 1039968.666 units remaining { parameter (pair (pair %set_pair int (option int)) (pair %check_pair int (option int))) ; storage (pair (big_map int int) unit) ; code { DUP - /* [ pair (pair @parameter - (pair %set_pair int (option int)) - (pair %check_pair int (option int))) - (pair @storage (big_map int int) unit) - : pair (pair @parameter - (pair %set_pair int (option int)) - (pair %check_pair int (option int))) - (pair @storage (big_map int int) unit) ] */ ; + /* [ pair (pair (pair %set_pair int (option int)) (pair %check_pair int (option int))) + (big_map int int) + unit + : pair (pair (pair %set_pair int (option int)) (pair %check_pair int (option int))) + (big_map int int) + unit ] */ ; DIP { CDAR } - /* [ pair (pair @parameter - (pair %set_pair int (option int)) - (pair %check_pair int (option int))) - (pair @storage (big_map int int) unit) : big_map int int ] */ ; + /* [ pair (pair (pair %set_pair int (option int)) (pair %check_pair int (option int))) + (big_map int int) + unit : big_map int int ] */ ; DUP - /* [ pair (pair @parameter - (pair %set_pair int (option int)) - (pair %check_pair int (option int))) - (pair @storage (big_map int int) unit) - : pair (pair @parameter - (pair %set_pair int (option int)) - (pair %check_pair int (option int))) - (pair @storage (big_map int int) unit) : big_map int int ] */ ; + /* [ pair (pair (pair %set_pair int (option int)) (pair %check_pair int (option int))) + (big_map int int) + unit + : pair (pair (pair %set_pair int (option int)) (pair %check_pair int (option int))) + (big_map int int) + unit : big_map int int ] */ ; DIP { CADR ; DUP /* [ pair int (option int) : pair int (option int) : big_map int int ] */ ; @@ -38,11 +33,9 @@ Gas remaining: 1039968.666 units remaining /* [ big_map int int ] */ ; DUP /* [ big_map int int : big_map int int ] */ } - /* [ pair (pair @parameter - (pair %set_pair int (option int)) - (pair %check_pair int (option int))) - (pair @storage (big_map int int) unit) : big_map int int - : big_map int int ] */ ; + /* [ pair (pair (pair %set_pair int (option int)) (pair %check_pair int (option int))) + (big_map int int) + unit : big_map int int : big_map int int ] */ ; CADR ; DUP /* [ pair int (option int) : pair int (option int) : big_map int int diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_mem.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_mem.tz].out index a18a6818b4..5e0952d8f8 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_mem.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--big_map_mem.tz].out @@ -5,12 +5,12 @@ Gas remaining: 1039982.471 units remaining { parameter (pair int bool) ; storage (pair (big_map int unit) unit) ; code { DUP - /* [ pair (pair @parameter int bool) (pair @storage (big_map int unit) unit) - : pair (pair @parameter int bool) (pair @storage (big_map int unit) unit) ] */ ; + /* [ pair (pair int bool) (big_map int unit) unit + : pair (pair int bool) (big_map int unit) unit ] */ ; DUP - /* [ pair (pair @parameter int bool) (pair @storage (big_map int unit) unit) - : pair (pair @parameter int bool) (pair @storage (big_map int unit) unit) - : pair (pair @parameter int bool) (pair @storage (big_map int unit) unit) ] */ ; + /* [ pair (pair int bool) (big_map int unit) unit + : pair (pair int bool) (big_map int unit) unit + : pair (pair int bool) (big_map int unit) unit ] */ ; CADR ; DIP { CAAR ; DIP { CDAR ; DUP /* [ big_map int unit : big_map int unit ] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--pair_macro.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--pair_macro.tz].out index 8abd8525ba..4cbabdcb2e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--pair_macro.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--pair_macro.tz].out @@ -5,19 +5,19 @@ Gas remaining: 1039988.218 units remaining { parameter unit ; storage unit ; code { UNIT - /* [ unit : pair (unit @parameter) (unit @storage) ] */ ; + /* [ unit : pair unit unit ] */ ; UNIT - /* [ unit : unit : pair (unit @parameter) (unit @storage) ] */ ; + /* [ unit : unit : pair unit unit ] */ ; UNIT - /* [ unit : unit : unit : pair (unit @parameter) (unit @storage) ] */ ; + /* [ unit : unit : unit : pair unit unit ] */ ; UNIT - /* [ unit : unit : unit : unit : pair (unit @parameter) (unit @storage) ] */ ; + /* [ unit : unit : unit : unit : pair unit unit ] */ ; UNIT - /* [ unit : unit : unit : unit : unit : pair (unit @parameter) (unit @storage) ] */ ; + /* [ unit : unit : unit : unit : unit : pair unit unit ] */ ; PAPAPAPAIR @name %x1 %x2 %x3 %x4 %x5 ; CDDDAR %x4 @fourth ; DROP - /* [ pair (unit @parameter) (unit @storage) ] */ ; + /* [ pair unit unit ] */ ; CDR /* [ unit ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--set_caddaadr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--set_caddaadr.tz].out index 6cb6fd18c0..ac30e8414c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--set_caddaadr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[macros--set_caddaadr.tz].out @@ -5,17 +5,13 @@ Gas remaining: 1039968.110 units remaining { parameter mutez ; storage (pair (pair nat (pair nat (pair (pair (pair (nat %p) (mutez %value)) nat) nat))) nat) ; code { DUP - /* [ pair (mutez @parameter) - (pair @storage (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat) - : pair (mutez @parameter) - (pair @storage (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat) ] */ ; + /* [ pair mutez (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat + : pair mutez (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat ] */ ; CAR /* [ mutez - : pair (mutez @parameter) - (pair @storage (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat) ] */ ; + : pair mutez (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat ] */ ; SWAP - /* [ pair (mutez @parameter) - (pair @storage (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat) + /* [ pair mutez (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat : mutez ] */ ; CDR /* [ pair (pair nat nat (pair (pair (nat %p) (mutez %value)) nat) nat) nat diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract.tz].out index 3be134e65c..49b3c3931e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--create_contract.tz].out @@ -4,7 +4,7 @@ Well typed Gas remaining: 1039968.907 units remaining { parameter (option address) ; storage unit ; - code { /* [ pair (string @parameter) (string @storage) ] */ + code { /* [ pair string string ] */ CAR /* [ list operation : string ] */ ; IF_NONE diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--default_account.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--default_account.tz].out index 45ce559fb8..6bae2d8ba1 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--default_account.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--default_account.tz].out @@ -5,7 +5,7 @@ Gas remaining: 1039992.790 units remaining { parameter key_hash ; storage unit ; code { DIP { UNIT /* [ unit ] */ } - /* [ pair (key_hash @parameter) (unit @storage) : unit ] */ ; + /* [ pair key_hash unit : unit ] */ ; CAR /* [ key_hash : unit ] */ ; IMPLICIT_ACCOUNT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lqt_fa12.mligo.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lqt_fa12.mligo.tz].out index f5298f8535..473949c34b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lqt_fa12.mligo.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--lqt_fa12.mligo.tz].out @@ -16,53 +16,47 @@ Gas remaining: 1039662.882 units remaining (pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (pair (address %admin) (nat %total_supply)))) ; code { DUP - /* [ pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) - : pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ ; + /* [ pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) + : pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ ; CDR /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ ; + : pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ ; PUSH mutez 0 /* [ mutez @@ -70,80 +64,72 @@ Gas remaining: 1039662.882 units remaining (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ ; + : pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ ; AMOUNT /* [ mutez : mutez : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ ; + : pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ ; COMPARE /* [ int : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ ; + : pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ ; NEQ /* [ bool : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ ; + : pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ ; IF { PUSH string "DontSendTez" /* [ string @@ -151,55 +137,49 @@ Gas remaining: 1039662.882 units remaining (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ ; + : pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ ; FAILWITH /* [] */ } { /* [ pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) (nat %total_supply) - : pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) ] */ } ; + : pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) ] */ } ; SWAP - /* [ pair (or @parameter - (or (or (pair %approve (address %spender) (nat %value)) - (pair %getAllowance - (pair %request (address %owner) (address %spender)) - (contract %callback nat))) - (or (pair %getBalance (address %owner) (contract %callback nat)) - (pair %getTotalSupply (unit %request) (contract %callback nat)))) - (or (pair %mintOrBurn (int %quantity) (address %target)) - (pair %transfer (address %from) (address %to) (nat %value)))) - (pair @storage - (big_map %tokens address nat) - (big_map %allowances (pair (address %owner) (address %spender)) nat) - (address %admin) - (nat %total_supply)) + /* [ pair (or (or (or (pair %approve (address %spender) (nat %value)) + (pair %getAllowance + (pair %request (address %owner) (address %spender)) + (contract %callback nat))) + (or (pair %getBalance (address %owner) (contract %callback nat)) + (pair %getTotalSupply (unit %request) (contract %callback nat)))) + (or (pair %mintOrBurn (int %quantity) (address %target)) + (pair %transfer (address %from) (address %to) (nat %value)))) + (big_map %tokens address nat) + (big_map %allowances (pair (address %owner) (address %spender)) nat) + (address %admin) + (nat %total_supply) : pair (big_map %tokens address nat) (big_map %allowances (pair (address %owner) (address %spender)) nat) (address %admin) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_en2.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_en2.tz].out index b01d416e6e..737df8b335 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_en2.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_en2.tz].out @@ -5,42 +5,38 @@ Gas remaining: 1039921.322 units remaining { parameter unit ; storage (option address) ; code { SENDER - /* [ address : pair (unit @parameter) (option @storage address) ] */ ; + /* [ address : pair unit (option address) ] */ ; SELF - /* [ contract unit : address - : pair (unit @parameter) (option @storage address) ] */ ; + /* [ contract unit : address : pair unit (option address) ] */ ; ADDRESS - /* [ address : address : pair (unit @parameter) (option @storage address) ] */ ; - { /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ + /* [ address : address : pair unit (option address) ] */ ; + { /* [ pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ COMPARE - /* [ mutez : mutez - : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ ; + /* [ mutez : mutez : pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ ; EQ - /* [ bool : pair (unit @parameter) (option @storage address) ] */ ; + /* [ bool : pair unit (option address) ] */ ; IF { CDR /* [ option address ] */ ; - { /* [ mutez : mutez - : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ + { /* [ mutez : mutez : pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ IF_NONE - { { /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ + { { /* [ pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ UNIT /* [ unit ] */ ; FAILWITH /* [] */ } } - { /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ } - /* [ bool - : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ } ; + { /* [ pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ } + /* [ bool : pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ } ; DIP { NIL operation - /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) - : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ + /* [ pair (or (or (nat %add) (nat %sub)) (unit %default)) int + : pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ /* [ list operation ] */ } /* [] */ ; DUP /* [ or (or (nat %add) (nat %sub)) (unit %default) - : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ ; + : pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ ; CONTRACT %add unit /* [ or (or (nat %add) (nat %sub)) (unit %default) : int ] */ ; - { /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ + { /* [ pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ IF_NONE { /* [ address : list operation ] */ } { { UNIT /* [ int ] */ ; FAILWITH /* [] */ } } } ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_entrypoints_counter.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_entrypoints_counter.tz].out index 8e192681a6..d703bb5e6f 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_entrypoints_counter.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--multiple_entrypoints_counter.tz].out @@ -5,19 +5,17 @@ Gas remaining: 1039924.032 units remaining { parameter unit ; storage (option address) ; code { SENDER - /* [ address : pair (unit @parameter) (option @storage address) ] */ ; + /* [ address : pair unit (option address) ] */ ; SELF - /* [ contract unit : address - : pair (unit @parameter) (option @storage address) ] */ ; + /* [ contract unit : address : pair unit (option address) ] */ ; ADDRESS - /* [ address : address : pair (unit @parameter) (option @storage address) ] */ ; + /* [ address : address : pair unit (option address) ] */ ; IFCMPEQ { CDR /* [ option address ] */ ; ASSERT_SOME - /* [ int - : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ ; - DIP { /* [ pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ + /* [ int : pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ ; + DIP { /* [ pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ NIL operation /* [ list operation ] */ } /* [] */ ; @@ -149,5 +147,4 @@ Gas remaining: 1039924.032 units remaining /* [ list operation : option address ] */ ; PAIR /* [ pair (list operation) (option address) ] */ } - /* [ mutez - : pair (or @parameter (or (nat %add) (nat %sub)) (unit %default)) (int @storage) ] */ } } + /* [ mutez : pair (or (or (nat %add) (nat %sub)) (unit %default)) int ] */ } } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--parameterized_multisig.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--parameterized_multisig.tz].out index b26188b480..a64f06f06b 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--parameterized_multisig.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--parameterized_multisig.tz].out @@ -5,14 +5,11 @@ Gas remaining: 1039928.103 units remaining { storage (pair bool (pair (map nat (pair bool bool)) (pair key key))) ; parameter (or nat (pair signature nat)) ; code { DUP - /* [ pair (or @parameter nat (pair signature nat)) - (pair @storage bool (map nat (pair bool bool)) key key) - : pair (or @parameter nat (pair signature nat)) - (pair @storage bool (map nat (pair bool bool)) key key) ] */ ; + /* [ pair (or nat (pair signature nat)) bool (map nat (pair bool bool)) key key + : pair (or nat (pair signature nat)) bool (map nat (pair bool bool)) key key ] */ ; CAR /* [ or nat (pair signature nat) - : pair (or @parameter nat (pair signature nat)) - (pair @storage bool (map nat (pair bool bool)) key key) ] */ ; + : pair (or nat (pair signature nat)) bool (map nat (pair bool bool)) key key ] */ ; DIP { CDDR } /* [ or nat (pair signature nat) : pair (map nat (pair bool bool)) key key ] */ ; IF_LEFT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--reveal_signed_preimage.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--reveal_signed_preimage.tz].out index 63c755149a..75ddcc06de 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--reveal_signed_preimage.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--reveal_signed_preimage.tz].out @@ -5,44 +5,37 @@ Gas remaining: 1039977.336 units remaining { parameter (pair bytes signature) ; storage (pair bytes key) ; code { DUP - /* [ pair (pair @parameter bytes signature) (pair @storage bytes key) - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + /* [ pair (pair bytes signature) bytes key + : pair (pair bytes signature) bytes key ] */ ; UNPAIR /* [ pair bytes signature : pair bytes key - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + : pair (pair bytes signature) bytes key ] */ ; CAR - /* [ bytes : pair bytes key - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + /* [ bytes : pair bytes key : pair (pair bytes signature) bytes key ] */ ; SHA256 - /* [ bytes : pair bytes key - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; - DIP { CAR - /* [ bytes : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ } - /* [ bytes : bytes - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + /* [ bytes : pair bytes key : pair (pair bytes signature) bytes key ] */ ; + DIP { CAR /* [ bytes : pair (pair bytes signature) bytes key ] */ } + /* [ bytes : bytes : pair (pair bytes signature) bytes key ] */ ; ASSERT_CMPEQ ; DUP - /* [ pair (pair @parameter bytes signature) (pair @storage bytes key) - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + /* [ pair (pair bytes signature) bytes key + : pair (pair bytes signature) bytes key ] */ ; UNPAIR /* [ pair bytes signature : pair bytes key - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + : pair (pair bytes signature) bytes key ] */ ; SWAP /* [ pair bytes key : pair bytes signature - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + : pair (pair bytes signature) bytes key ] */ ; DIP { UNPAIR - /* [ bytes : signature - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + /* [ bytes : signature : pair (pair bytes signature) bytes key ] */ ; SWAP - /* [ signature : bytes - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ } + /* [ signature : bytes : pair (pair bytes signature) bytes key ] */ } /* [ pair bytes key : signature : bytes - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + : pair (pair bytes signature) bytes key ] */ ; CDR - /* [ key : signature : bytes - : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + /* [ key : signature : bytes : pair (pair bytes signature) bytes key ] */ ; CHECK_SIGNATURE - /* [ bool : pair (pair @parameter bytes signature) (pair @storage bytes key) ] */ ; + /* [ bool : pair (pair bytes signature) bytes key ] */ ; ASSERT ; CDR /* [ pair bytes key ] */ ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_fungible.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_fungible.tz].out index 55032656ef..ecbda13d58 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_fungible.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_fungible.tz].out @@ -8,17 +8,15 @@ Gas remaining: 1039973.685 units remaining storage address ; code { AMOUNT /* [ mutez - : pair (or @parameter - (ticket %burn unit) - (pair %mint (contract %destination (ticket unit)) (nat %amount))) - (address @storage) ] */ ; + : pair (or (ticket %burn unit) + (pair %mint (contract %destination (ticket unit)) (nat %amount))) + address ] */ ; PUSH mutez 0 /* [ mutez : mutez - : pair (or @parameter - (ticket %burn unit) - (pair %mint (contract %destination (ticket unit)) (nat %amount))) - (address @storage) ] */ ; + : pair (or (ticket %burn unit) + (pair %mint (contract %destination (ticket unit)) (nat %amount))) + address ] */ ; ASSERT_CMPEQ ; UNPAIR /* [ or (ticket %burn unit) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_non_fungible.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_non_fungible.tz].out index c2a6e9a1ea..3eed07403e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_non_fungible.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_builder_non_fungible.tz].out @@ -6,13 +6,15 @@ Gas remaining: 1039970.718 units remaining storage (pair (address %manager) (nat %counter)) ; code { AMOUNT /* [ mutez - : pair (or @parameter (ticket %burn nat) (contract %mint_destination (ticket nat))) - (pair @storage (address %manager) (nat %counter)) ] */ ; + : pair (or (ticket %burn nat) (contract %mint_destination (ticket nat))) + (address %manager) + (nat %counter) ] */ ; PUSH mutez 0 /* [ mutez : mutez - : pair (or @parameter (ticket %burn nat) (contract %mint_destination (ticket nat))) - (pair @storage (address %manager) (nat %counter)) ] */ ; + : pair (or (ticket %burn nat) (contract %mint_destination (ticket nat))) + (address %manager) + (nat %counter) ] */ ; ASSERT_CMPEQ ; UNPAIR 3 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_fungible.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_fungible.tz].out index 4be42ebff4..2f781db908 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_fungible.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_fungible.tz].out @@ -8,17 +8,17 @@ Gas remaining: 1039935.806 units remaining storage (pair (address %manager) (big_map %tickets address (ticket unit))) ; code { AMOUNT /* [ mutez - : pair (or @parameter - (ticket %receive unit) - (pair %send (contract %destination (ticket unit)) (nat %amount) (address %ticketer))) - (pair @storage (address %manager) (big_map %tickets address (ticket unit))) ] */ ; + : pair (or (ticket %receive unit) + (pair %send (contract %destination (ticket unit)) (nat %amount) (address %ticketer))) + (address %manager) + (big_map %tickets address (ticket unit)) ] */ ; PUSH mutez 0 /* [ mutez : mutez - : pair (or @parameter - (ticket %receive unit) - (pair %send (contract %destination (ticket unit)) (nat %amount) (address %ticketer))) - (pair @storage (address %manager) (big_map %tickets address (ticket unit))) ] */ ; + : pair (or (ticket %receive unit) + (pair %send (contract %destination (ticket unit)) (nat %amount) (address %ticketer))) + (address %manager) + (big_map %tickets address (ticket unit)) ] */ ; ASSERT_CMPEQ ; UNPAIR 3 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_non_fungible.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_non_fungible.tz].out index 1a9b220534..bc3624931d 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_non_fungible.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--ticket_wallet_non_fungible.tz].out @@ -8,17 +8,17 @@ Gas remaining: 1039952.622 units remaining storage (pair (address %manager) (big_map %tickets (pair address nat) (ticket nat))) ; code { AMOUNT /* [ mutez - : pair (or @parameter - (ticket %receive nat) - (pair %send (contract %destination (ticket nat)) (address %ticketer) (nat %id))) - (pair @storage (address %manager) (big_map %tickets (pair address nat) (ticket nat))) ] */ ; + : pair (or (ticket %receive nat) + (pair %send (contract %destination (ticket nat)) (address %ticketer) (nat %id))) + (address %manager) + (big_map %tickets (pair address nat) (ticket nat)) ] */ ; PUSH mutez 0 /* [ mutez : mutez - : pair (or @parameter - (ticket %receive nat) - (pair %send (contract %destination (ticket nat)) (address %ticketer) (nat %id))) - (pair @storage (address %manager) (big_map %tickets (pair address nat) (ticket nat))) ] */ ; + : pair (or (ticket %receive nat) + (pair %send (contract %destination (ticket nat)) (address %ticketer) (nat %id))) + (address %manager) + (big_map %tickets (pair address nat) (ticket nat)) ] */ ; ASSERT_CMPEQ ; UNPAIR 3 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--vote_for_delegate.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--vote_for_delegate.tz].out index 09ddd4a678..84cf87c812 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--vote_for_delegate.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--vote_for_delegate.tz].out @@ -7,33 +7,28 @@ Gas remaining: 1039933.671 units remaining (pair (pair %mgr1 (address %addr) (option %key key_hash)) (pair %mgr2 (address %addr) (option %key key_hash))) ; code { DUP - /* [ pair (option @parameter key_hash) - (pair @storage - (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash))) - : pair (option @parameter key_hash) - (pair @storage - (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; + /* [ pair (option key_hash) + (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) + : pair (option key_hash) + (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) ] */ ; CDAAR %addr @% ; SENDER /* [ address : address - : pair (option @parameter key_hash) - (pair @storage - (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; + : pair (option key_hash) + (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) ] */ ; PAIR %@ %@ /* [ pair address address - : pair (option @parameter key_hash) - (pair @storage - (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; + : pair (option key_hash) + (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) ] */ ; UNPAIR /* [ address : address - : pair (option @parameter key_hash) - (pair @storage - (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; + : pair (option key_hash) + (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) ] */ ; IFCMPEQ { UNPAIR /* [ option key_hash @@ -44,21 +39,18 @@ Gas remaining: 1039933.671 units remaining (pair %mgr2 (address %addr) (option %key key_hash)) : option key_hash ] */ ; SET_CADR %key @changed_mgr1_key } { DUP - /* [ pair (option @parameter key_hash) - (pair @storage - (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash))) - : pair (option @parameter key_hash) - (pair @storage - (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; + /* [ pair (option key_hash) + (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) + : pair (option key_hash) + (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) ] */ ; CDDAR ; SENDER /* [ address : address - : pair (option @parameter key_hash) - (pair @storage - (pair %mgr1 (address %addr) (option %key key_hash)) - (pair %mgr2 (address %addr) (option %key key_hash))) ] */ ; + : pair (option key_hash) + (pair %mgr1 (address %addr) (option %key key_hash)) + (pair %mgr2 (address %addr) (option %key key_hash)) ] */ ; IFCMPEQ { UNPAIR /* [ option key_hash diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--weather_insurance.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--weather_insurance.tz].out index 24584db5b7..4fc3d59179 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--weather_insurance.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--weather_insurance.tz].out @@ -7,194 +7,163 @@ Gas remaining: 1039960.200 units remaining (pair (pair (address %under_key) (address %over_key)) (pair (nat :rain %rain_level) (key %weather_service_key))) ; code { DUP - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; DUP - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; CAR /* [ pair (signature %signed_weather_data) (nat :rain %actual_level) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; MAP_CDR { PACK /* [ bytes : pair (signature %signed_weather_data) (nat :rain %actual_level) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; BLAKE2B /* [ bytes : pair (signature %signed_weather_data) (nat :rain %actual_level) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ } ; + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ } ; SWAP - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) : pair signature bytes - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) : pair signature bytes + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; CDDDR %weather_service_key ; DIP { UNPAIR /* [ signature : bytes - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ } + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ } /* [ key : signature : bytes - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; CHECK_SIGNATURE @sigok /* [ bool - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; ASSERT ; DUP - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; DUP - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; DUP - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) ] */ ; + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) ] */ ; DIIIP { CDR %storage /* [ pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ } - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; DIIP { CDAR } - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) - : pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) + : pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) : pair (address %under_key) (address %over_key) : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) (key %weather_service_key) ] */ ; DIP { CADR %actual_level } - /* [ pair (pair @parameter (signature %signed_weather_data) (nat :rain %actual_level)) - (pair @storage - (pair (address %under_key) (address %over_key)) - (nat :rain %rain_level) - (key %weather_service_key)) : nat :rain + /* [ pair (pair (signature %signed_weather_data) (nat :rain %actual_level)) + (pair (address %under_key) (address %over_key)) + (nat :rain %rain_level) + (key %weather_service_key) : nat :rain : pair (address %under_key) (address %over_key) : pair (pair (address %under_key) (address %over_key)) (nat :rain %rain_level) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat_dapp.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat_dapp.tz].out index 6a8693771e..9be533d519 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat_dapp.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[mini_scenarios--xcat_dapp.tz].out @@ -16,29 +16,25 @@ Gas remaining: 1039911.852 units remaining code { NIL @operations operation /* [ list operation - : pair (or @parameter - (pair %fund - (address %dest) - (pair %settings (bytes %target_hash) (timestamp %deadline))) - (or %claim_refund (bytes %preimage_claim) (bytes %refund_hash))) - (pair @storage - (big_map - bytes - (pair (pair %recipients (address %from) (address %dest)) - (pair %settings (mutez %amount) (timestamp %deadline)))) - unit) ] */ ; + : pair (or (pair %fund + (address %dest) + (pair %settings (bytes %target_hash) (timestamp %deadline))) + (or %claim_refund (bytes %preimage_claim) (bytes %refund_hash))) + (big_map + bytes + (pair (pair %recipients (address %from) (address %dest)) + (pair %settings (mutez %amount) (timestamp %deadline)))) + unit ] */ ; SWAP - /* [ pair (or @parameter - (pair %fund - (address %dest) - (pair %settings (bytes %target_hash) (timestamp %deadline))) - (or %claim_refund (bytes %preimage_claim) (bytes %refund_hash))) - (pair @storage - (big_map - bytes - (pair (pair %recipients (address %from) (address %dest)) - (pair %settings (mutez %amount) (timestamp %deadline)))) - unit) : list operation ] */ ; + /* [ pair (or (pair %fund + (address %dest) + (pair %settings (bytes %target_hash) (timestamp %deadline))) + (or %claim_refund (bytes %preimage_claim) (bytes %refund_hash))) + (big_map + bytes + (pair (pair %recipients (address %from) (address %dest)) + (pair %settings (mutez %amount) (timestamp %deadline)))) + unit : list operation ] */ ; UNPAPAIR @% @% @% ; DIP { DUP /* [ big_map diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--pairk_annot.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--pairk_annot.tz].out index cc58de6ff1..b569215ee0 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--pairk_annot.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[non_regression--pairk_annot.tz].out @@ -5,23 +5,21 @@ Gas remaining: 1039992.198 units remaining { parameter unit ; storage unit ; code { SENDER - /* [ address : pair (unit @parameter) (unit @storage) ] */ ; + /* [ address : pair unit unit ] */ ; SOURCE - /* [ address : address : pair (unit @parameter) (unit @storage) ] */ ; + /* [ address : address : pair unit unit ] */ ; PAIR 2 - /* [ pair address address : pair (unit @parameter) (unit @storage) ] */ ; + /* [ pair address address : pair unit unit ] */ ; SOURCE - /* [ address : pair address address : pair (unit @parameter) (unit @storage) ] */ ; + /* [ address : pair address address : pair unit unit ] */ ; SENDER - /* [ address : address : pair address address - : pair (unit @parameter) (unit @storage) ] */ ; + /* [ address : address : pair address address : pair unit unit ] */ ; PAIR 2 - /* [ pair address address : pair address address - : pair (unit @parameter) (unit @storage) ] */ ; + /* [ pair address address : pair address address : pair unit unit ] */ ; COMPARE - /* [ int : pair (unit @parameter) (unit @storage) ] */ ; + /* [ int : pair unit unit ] */ ; DROP - /* [ pair (unit @parameter) (unit @storage) ] */ ; + /* [ pair unit unit ] */ ; CDR /* [ unit ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--chain_id.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--chain_id.tz].out index c884228e39..326a438aa6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--chain_id.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--chain_id.tz].out @@ -5,9 +5,9 @@ Gas remaining: 1039996.340 units remaining { parameter unit ; storage unit ; code { CHAIN_ID - /* [ chain_id : pair (unit @parameter) (unit @storage) ] */ ; + /* [ chain_id : pair unit unit ] */ ; DROP - /* [ pair (unit @parameter) (unit @storage) ] */ ; + /* [ pair unit unit ] */ ; CAR /* [ unit ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--check_signature.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--check_signature.tz].out index f0c95ff26b..945f42bbcd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--check_signature.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--check_signature.tz].out @@ -5,35 +5,27 @@ Gas remaining: 1039988.024 units remaining { parameter key ; storage (pair signature string) ; code { DUP - /* [ pair (key @parameter) (pair @storage signature string) - : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ pair key signature string : pair key signature string ] */ ; DUP - /* [ pair (key @parameter) (pair @storage signature string) - : pair (key @parameter) (pair @storage signature string) - : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ pair key signature string : pair key signature string + : pair key signature string ] */ ; DIP { CDR - /* [ pair signature string - : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ pair signature string : pair key signature string ] */ ; DUP - /* [ pair signature string : pair signature string - : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ pair signature string : pair signature string : pair key signature string ] */ ; CAR - /* [ signature : pair signature string - : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ signature : pair signature string : pair key signature string ] */ ; DIP { CDR - /* [ string : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ string : pair key signature string ] */ ; PACK - /* [ bytes : pair (key @parameter) (pair @storage signature string) ] */ } - /* [ signature : bytes - : pair (key @parameter) (pair @storage signature string) ] */ } - /* [ pair (key @parameter) (pair @storage signature string) : signature : bytes - : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ bytes : pair key signature string ] */ } + /* [ signature : bytes : pair key signature string ] */ } + /* [ pair key signature string : signature : bytes : pair key signature string ] */ ; CAR - /* [ key : signature : bytes - : pair (key @parameter) (pair @storage signature string) ] */ ; + /* [ key : signature : bytes : pair key signature string ] */ ; CHECK_SIGNATURE - /* [ bool : pair (key @parameter) (pair @storage signature string) ] */ ; - IF { /* [ pair (key @parameter) (pair @storage signature string) ] */ } { FAIL } ; + /* [ bool : pair key signature string ] */ ; + IF { /* [ pair key signature string ] */ } { FAIL } ; CDR /* [ pair signature string ] */ ; NIL operation diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-literals.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-literals.tz].out index 08859a5807..7f5e784094 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-literals.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--comb-literals.tz].out @@ -6,7 +6,7 @@ Gas remaining: 1039992.630 units remaining storage unit ; code { PUSH (list (pair nat nat nat nat)) { Pair 0 3 6 9 ; Pair 1 (Pair 4 (Pair 7 10)) ; { 2 ; 5 ; 8 ; 11 } } - /* [ list (pair nat nat nat nat) : pair (unit @parameter) (unit @storage) ] */ ; + /* [ list (pair nat nat nat nat) : pair unit unit ] */ ; DROP 2 /* [] */ ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract.tz].out index a1ee25882b..3d022a4fb7 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract.tz].out @@ -4,7 +4,7 @@ Well typed Gas remaining: 1039988.704 units remaining { parameter unit ; storage (option address) ; - code { /* [ pair (unit @parameter) (unit @storage) ] */ + code { /* [ pair unit unit ] */ DROP /* [ list operation : unit ] */ ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname.tz].out index cc16e3e475..b1c8f67e84 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname.tz].out @@ -4,7 +4,7 @@ Well typed Gas remaining: 1039988.704 units remaining { parameter unit ; storage (option address) ; - code { /* [ pair (unit @parameter) (unit @storage) ] */ + code { /* [ pair unit unit ] */ DROP /* [ list operation : unit ] */ ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname_alt.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname_alt.tz].out index f0a55dc59f..450cfd2bca 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname_alt.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_rootname_alt.tz].out @@ -4,7 +4,7 @@ Well typed Gas remaining: 1039988.704 units remaining { parameter unit ; storage (option address) ; - code { /* [ pair (unit @parameter) (unit @storage) ] */ + code { /* [ pair unit unit ] */ DROP /* [ list operation : unit ] */ ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_with_view.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_with_view.tz].out index 4bb8cbb75d..8d49d10779 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_with_view.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--create_contract_with_view.tz].out @@ -4,7 +4,7 @@ Well typed Gas remaining: 1039987.516 units remaining { parameter unit ; storage (option address) ; - code { /* [ pair (unit @parameter) (unit @storage) ] */ + code { /* [ pair unit unit ] */ DROP /* [ list operation : unit ] */ ; UNIT diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_big_map_value.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_big_map_value.tz].out index b8bc404ba2..f7e442486c 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_big_map_value.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_big_map_value.tz].out @@ -5,11 +5,10 @@ Gas remaining: 1039990.479 units remaining { parameter string ; storage (pair (big_map string string) (option string)) ; code { DUP - /* [ pair (string @parameter) (pair @storage (big_map string string) (option string)) - : pair (string @parameter) (pair @storage (big_map string string) (option string)) ] */ ; + /* [ pair string (big_map string string) (option string) + : pair string (big_map string string) (option string) ] */ ; CAR - /* [ string - : pair (string @parameter) (pair @storage (big_map string string) (option string)) ] */ ; + /* [ string : pair string (big_map string string) (option string) ] */ ; DIP { CDAR ; DUP /* [ big_map string string : big_map string string ] */ } /* [ string : big_map string string : big_map string string ] */ ; GET diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_map_value.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_map_value.tz].out index b81b76b414..738252442e 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_map_value.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--get_map_value.tz].out @@ -5,11 +5,10 @@ Gas remaining: 1039991.007 units remaining { parameter string ; storage (pair (option string) (map string string)) ; code { DUP - /* [ pair (string @parameter) (pair @storage (option string) (map string string)) - : pair (string @parameter) (pair @storage (option string) (map string string)) ] */ ; + /* [ pair string (option string) (map string string) + : pair string (option string) (map string string) ] */ ; CAR - /* [ string - : pair (string @parameter) (pair @storage (option string) (map string string)) ] */ ; + /* [ string : pair string (option string) (map string string) ] */ ; DIP { CDDR ; DUP /* [ map string string : map string string ] */ } /* [ string : map string string : map string string ] */ ; GET diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_car.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_car.tz].out index 38c2db76e9..20f4e12e76 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_car.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_car.tz].out @@ -5,10 +5,9 @@ Gas remaining: 1039990.103 units remaining { parameter bool ; storage (pair (bool %b) (nat %n)) ; code { DUP - /* [ pair (bool @parameter) (pair @storage (bool %b) (nat %n)) - : pair (bool @parameter) (pair @storage (bool %b) (nat %n)) ] */ ; + /* [ pair bool (bool %b) (nat %n) : pair bool (bool %b) (nat %n) ] */ ; CAR - /* [ bool : pair (bool @parameter) (pair @storage (bool %b) (nat %n)) ] */ ; + /* [ bool : pair bool (bool %b) (nat %n) ] */ ; DIP { CDR /* [ pair (bool %b) (nat %n) ] */ } /* [ bool : pair (bool %b) (nat %n) ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_iter.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_iter.tz].out index f865564d10..4aae424dee 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_iter.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--map_iter.tz].out @@ -20,14 +20,13 @@ Gas remaining: 1039985.509 units remaining /* [ int :k : pair (int :k) (int :e %r) ] */ ; DIP { CDR /* [ int :e ] */ } /* [ int :k : int :e ] */ } - /* [ pair (int :k @key) (int :e @elt) : int :k : int :e ] */ ; + /* [ pair (int :k) (int :e) : int :k : int :e ] */ ; DUP - /* [ pair (int :k @key) (int :e @elt) : pair (int :k @key) (int :e @elt) - : int :k : int :e ] */ ; + /* [ pair (int :k) (int :e) : pair (int :k) (int :e) : int :k : int :e ] */ ; DIP { CAR /* [ int :k : int :k : int :e ] */ ; ADD /* [ int :k : int :e ] */ } - /* [ pair (int :k @key) (int :e @elt) : int :k : int :e ] */ ; + /* [ pair (int :k) (int :e) : int :k : int :e ] */ ; SWAP - /* [ int :k : pair (int :k @key) (int :e @elt) : int :e ] */ ; + /* [ int :k : pair (int :k) (int :e) : int :e ] */ ; DIP { CDR /* [ int :e : int :e ] */ ; ADD /* [ int :e ] */ } /* [ int :k : int :e ] */ ; PAIR % %r diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec.tz].out index 31dc4c3442..ca033fd489 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--pexec.tz].out @@ -8,9 +8,9 @@ Gas remaining: 1039992.874 units remaining (pair nat nat) nat { UNPAIR /* [ nat : nat ] */ ; ADD /* [ nat ] */ } - /* [ lambda (pair nat nat) nat : pair (nat @parameter) (nat @storage) ] */ ; + /* [ lambda (pair nat nat) nat : pair nat nat ] */ ; SWAP - /* [ pair (nat @parameter) (nat @storage) : lambda (pair nat nat) nat ] */ ; + /* [ pair nat nat : lambda (pair nat nat) nat ] */ ; UNPAIR /* [ nat : nat : lambda (pair nat nat) nat ] */ ; DIP { APPLY /* [ lambda nat nat ] */ } diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_car.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_car.tz].out index 0fdf159b05..d670ca5e47 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_car.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_car.tz].out @@ -5,11 +5,9 @@ Gas remaining: 1039991.314 units remaining { parameter string ; storage (pair (string %s) (nat %n)) ; code { DUP - /* [ pair (string @parameter) (pair @storage (string %s) (nat %n)) - : pair (string @parameter) (pair @storage (string %s) (nat %n)) ] */ ; + /* [ pair string (string %s) (nat %n) : pair string (string %s) (nat %n) ] */ ; CDR - /* [ pair (string %s) (nat %n) - : pair (string @parameter) (pair @storage (string %s) (nat %n)) ] */ ; + /* [ pair (string %s) (nat %n) : pair string (string %s) (nat %n) ] */ ; DIP { CAR /* [ string ] */ } /* [ pair (string %s) (nat %n) : string ] */ ; SET_CAR %s ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_cdr.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_cdr.tz].out index 04a7076e77..6a964277b3 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_cdr.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_cdr.tz].out @@ -5,11 +5,9 @@ Gas remaining: 1039991.782 units remaining { parameter nat ; storage (pair (string %s) (nat %n)) ; code { DUP - /* [ pair (nat @parameter) (pair @storage (string %s) (nat %n)) - : pair (nat @parameter) (pair @storage (string %s) (nat %n)) ] */ ; + /* [ pair nat (string %s) (nat %n) : pair nat (string %s) (nat %n) ] */ ; CDR - /* [ pair (string %s) (nat %n) - : pair (nat @parameter) (pair @storage (string %s) (nat %n)) ] */ ; + /* [ pair (string %s) (nat %n) : pair nat (string %s) (nat %n) ] */ ; DIP { CAR /* [ nat ] */ } /* [ pair (string %s) (nat %n) : nat ] */ ; SET_CDR %n ; diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_member.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_member.tz].out index f218d06ece..06b1fd2891 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_member.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--set_member.tz].out @@ -5,25 +5,21 @@ Gas remaining: 1039988.400 units remaining { parameter string ; storage (pair (set string) (option bool)) ; code { DUP - /* [ pair (string @parameter) (pair @storage (set string) (option bool)) - : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; + /* [ pair string (set string) (option bool) + : pair string (set string) (option bool) ] */ ; DUP - /* [ pair (string @parameter) (pair @storage (set string) (option bool)) - : pair (string @parameter) (pair @storage (set string) (option bool)) - : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; + /* [ pair string (set string) (option bool) + : pair string (set string) (option bool) + : pair string (set string) (option bool) ] */ ; CAR - /* [ string - : pair (string @parameter) (pair @storage (set string) (option bool)) - : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; + /* [ string : pair string (set string) (option bool) + : pair string (set string) (option bool) ] */ ; DIP { CDAR } - /* [ string : set string - : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; + /* [ string : set string : pair string (set string) (option bool) ] */ ; MEM - /* [ bool - : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; + /* [ bool : pair string (set string) (option bool) ] */ ; SOME - /* [ option bool - : pair (string @parameter) (pair @storage (set string) (option bool)) ] */ ; + /* [ option bool : pair string (set string) (option bool) ] */ ; DIP { CDAR } /* [ option bool : set string ] */ ; SWAP diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slices.tz].out b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slices.tz].out index e09315842b..67d46ea071 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slices.tz].out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract.TestTypecheck::test_typecheck[opcodes--slices.tz].out @@ -5,113 +5,92 @@ Gas remaining: 1039935.257 units remaining { parameter (pair bytes signature) ; storage key ; code { DUP - /* [ pair (pair @parameter bytes signature) (key @storage) - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ pair (pair bytes signature) key : pair (pair bytes signature) key ] */ ; CAAR ; DUP - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; SIZE - /* [ nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; - PUSH nat - 128 - /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ nat : bytes : pair (pair bytes signature) key ] */ ; + PUSH nat 128 + /* [ nat : nat : bytes : pair (pair bytes signature) key ] */ ; SWAP - /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ nat : nat : bytes : pair (pair bytes signature) key ] */ ; SUB - /* [ int : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ int : bytes : pair (pair bytes signature) key ] */ ; ISNAT - /* [ option nat : bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; - IF_SOME - { /* [ nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ } - { FAIL } ; - PUSH nat - 128 - /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option nat : bytes : pair (pair bytes signature) key ] */ ; + IF_SOME { /* [ nat : bytes : pair (pair bytes signature) key ] */ } { FAIL } ; + PUSH nat 128 + /* [ nat : nat : bytes : pair (pair bytes signature) key ] */ ; SLICE @payload - /* [ option bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option bytes : pair (pair bytes signature) key ] */ ; ASSERT_SOME ; DUP - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; DIP { DIP { DUP - /* [ pair (pair @parameter bytes signature) (key @storage) - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ pair (pair bytes signature) key : pair (pair bytes signature) key ] */ ; CAAR ; - PUSH nat - 32 - /* [ nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; - PUSH nat - 0 - /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + PUSH nat 32 + /* [ nat : bytes : pair (pair bytes signature) key ] */ ; + PUSH nat 0 + /* [ nat : nat : bytes : pair (pair bytes signature) key ] */ ; SLICE - /* [ option bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option bytes : pair (pair bytes signature) key ] */ ; ASSERT_SOME } - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; SHA256 - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; ASSERT_CMPEQ } - /* [ bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : pair (pair bytes signature) key ] */ ; DUP - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; DIP { DIP { DUP - /* [ pair (pair @parameter bytes signature) (key @storage) - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ pair (pair bytes signature) key : pair (pair bytes signature) key ] */ ; CAAR ; - PUSH nat - 32 - /* [ nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; - PUSH nat - 32 - /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + PUSH nat 32 + /* [ nat : bytes : pair (pair bytes signature) key ] */ ; + PUSH nat 32 + /* [ nat : nat : bytes : pair (pair bytes signature) key ] */ ; SLICE - /* [ option bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option bytes : pair (pair bytes signature) key ] */ ; ASSERT_SOME } - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; BLAKE2B - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; ASSERT_CMPEQ } - /* [ bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : pair (pair bytes signature) key ] */ ; DUP - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; DIP { DIP { DUP - /* [ pair (pair @parameter bytes signature) (key @storage) - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ pair (pair bytes signature) key : pair (pair bytes signature) key ] */ ; CAAR ; - PUSH nat - 64 - /* [ nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; - PUSH nat - 64 - /* [ nat : nat : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + PUSH nat 64 + /* [ nat : bytes : pair (pair bytes signature) key ] */ ; + PUSH nat 64 + /* [ nat : nat : bytes : pair (pair bytes signature) key ] */ ; SLICE - /* [ option bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ option bytes : pair (pair bytes signature) key ] */ ; ASSERT_SOME } - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; SHA512 - /* [ bytes : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : bytes : pair (pair bytes signature) key ] */ ; ASSERT_CMPEQ } - /* [ bytes : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bytes : pair (pair bytes signature) key ] */ ; DIP { DUP - /* [ pair (pair @parameter bytes signature) (key @storage) - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ pair (pair bytes signature) key : pair (pair bytes signature) key ] */ ; CDR - /* [ key : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ key : pair (pair bytes signature) key ] */ ; DIP { DUP - /* [ pair (pair @parameter bytes signature) (key @storage) - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ pair (pair bytes signature) key : pair (pair bytes signature) key ] */ ; CADR } - /* [ key : signature : pair (pair @parameter bytes signature) (key @storage) ] */ } - /* [ bytes : key : signature - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ key : signature : pair (pair bytes signature) key ] */ } + /* [ bytes : key : signature : pair (pair bytes signature) key ] */ ; SWAP - /* [ key : bytes : signature - : pair (pair @parameter bytes signature) (key @storage) ] */ ; - DIP { SWAP - /* [ signature : bytes : pair (pair @parameter bytes signature) (key @storage) ] */ } - /* [ key : signature : bytes - : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ key : bytes : signature : pair (pair bytes signature) key ] */ ; + DIP { SWAP /* [ signature : bytes : pair (pair bytes signature) key ] */ } + /* [ key : signature : bytes : pair (pair bytes signature) key ] */ ; CHECK_SIGNATURE - /* [ bool : pair (pair @parameter bytes signature) (key @storage) ] */ ; + /* [ bool : pair (pair bytes signature) key ] */ ; ASSERT ; CDR /* [ key ] */ ; From 497142df65521141dcd018cfc140dd01980799b8 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 10 Jan 2022 19:35:34 +0100 Subject: [PATCH 0184/1220] Tests/Python: regenerate opcodes regtests outputs --- ...odes.TestContractOnchainOpcodes::test_set_delegate.out | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_set_delegate.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_set_delegate.out index dc85dd773e..b7f5b011a6 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_set_delegate.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_set_delegate.out @@ -48,7 +48,7 @@ Injected block at minimal timestamp Injected block at minimal timestamp none Node is bootstrapped. -Estimated gas: 3056.118 units (will add 100 for safety) +Estimated gas: 3056.061 units (will add 100 for safety) Estimated storage: no bytes added Operation successfully injected in the node. Operation hash is '[BLOCK_HASH]' @@ -74,7 +74,7 @@ This sequence of operations was run: This transaction was successfully applied Updated storage: Unit Storage size: 51 bytes - Consumed gas: 2056.118 + Consumed gas: 2056.061 Internal operations: Delegation: Contract: [CONTRACT_HASH] @@ -85,7 +85,7 @@ This sequence of operations was run: Injected block at minimal timestamp [CONTRACT_HASH] (known as bootstrap5) Node is bootstrapped. -Estimated gas: 2202.482 units (will add 100 for safety) +Estimated gas: 2202.425 units (will add 100 for safety) Estimated storage: no bytes added Operation successfully injected in the node. Operation hash is '[BLOCK_HASH]' @@ -111,7 +111,7 @@ This sequence of operations was run: This transaction was successfully applied Updated storage: Unit Storage size: 51 bytes - Consumed gas: 1202.482 + Consumed gas: 1202.425 Internal operations: Delegation: Contract: [CONTRACT_HASH] From aa187e5d8c8143b30f9c11823f0e7e9586aac74e Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 11 Jan 2022 19:46:36 +0100 Subject: [PATCH 0185/1220] Proto/Tests: adapt script cache hard-coded values --- .../test/integration/michelson/test_script_cache.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml index d8dc8be679..c2360c1e3d 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml @@ -46,7 +46,7 @@ let err x = Exn (Script_cache_test_error x) model. It has been computed by a manual run of the test. *) -let liquidity_baking_contract_size = 291537 +let liquidity_baking_contract_size = 289783 let liquidity_baking_contract = Contract.of_b58check "KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5" |> function @@ -120,7 +120,7 @@ let add_some_contracts k src block baker = model. It has been computed by a manual run of the test. *) -let int_store_contract_size = 1456 +let int_store_contract_size = 1406 (* From e553e7a3b65cc36b736bb1789d51feea75c477f0 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Mon, 11 Jan 2021 13:03:53 +0100 Subject: [PATCH 0186/1220] Proto/Michelson: remove dead values --- src/proto_alpha/lib_protocol/script_ir_annot.ml | 3 --- src/proto_alpha/lib_protocol/script_ir_annot.mli | 4 ---- .../test/integration/michelson/test_typechecking.ml | 2 -- 3 files changed, 9 deletions(-) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.ml b/src/proto_alpha/lib_protocol/script_ir_annot.ml index 5da87b253b..01fa09bea1 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.ml +++ b/src/proto_alpha/lib_protocol/script_ir_annot.ml @@ -34,9 +34,6 @@ type type_annot = Type_annot of Non_empty_string.t [@@ocaml.unboxed] type field_annot = Field_annot of Non_empty_string.t [@@ocaml.unboxed] module FOR_TESTS = struct - let unsafe_var_annot_of_string s = - Var_annot (Non_empty_string.of_string_exn s) - let unsafe_type_annot_of_string s = Type_annot (Non_empty_string.of_string_exn s) diff --git a/src/proto_alpha/lib_protocol/script_ir_annot.mli b/src/proto_alpha/lib_protocol/script_ir_annot.mli index f5cc54d08c..cf7c5f0cb5 100644 --- a/src/proto_alpha/lib_protocol/script_ir_annot.mli +++ b/src/proto_alpha/lib_protocol/script_ir_annot.mli @@ -25,15 +25,11 @@ open Alpha_context -type var_annot = private Var_annot of Non_empty_string.t [@@ocaml.unboxed] - type type_annot = private Type_annot of Non_empty_string.t [@@ocaml.unboxed] type field_annot = private Field_annot of Non_empty_string.t [@@ocaml.unboxed] module FOR_TESTS : sig - val unsafe_var_annot_of_string : string -> var_annot - val unsafe_type_annot_of_string : string -> type_annot val unsafe_field_annot_of_string : string -> field_annot diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml index 5037627a9d..ad265b4a76 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_typechecking.ml @@ -179,8 +179,6 @@ let test_parse_ty ctxt node expected = Script_ir_translator.ty_eq ctxt (location node) actual expected >|? fun (_, ctxt) -> ctxt ) -let var_annot = Script_ir_annot.FOR_TESTS.unsafe_var_annot_of_string - let type_annot = Script_ir_annot.FOR_TESTS.unsafe_type_annot_of_string let field_annot = Script_ir_annot.FOR_TESTS.unsafe_field_annot_of_string From 0869cc0a8ca799615a256bc376e7969a883cec9d Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Thu, 16 Dec 2021 16:02:54 +0100 Subject: [PATCH 0187/1220] env: bootstrap env V5 --- src/lib_base/protocol.ml | 6 +- src/lib_base/protocol.mli | 2 +- .../environment_V5.ml | 1349 +++++++++++++++++ .../environment_V5.mli | 152 ++ .../environment_context_intf.ml | 3 + .../sigs/v0/protocol.mli | 2 +- .../sigs/v1/protocol.mli | 2 +- .../sigs/v2/protocol.mli | 2 +- .../sigs/v3/protocol.mli | 2 +- .../sigs/v4/protocol.mli | 2 +- src/lib_protocol_environment/sigs/v5.dune.inc | 80 + .../sigs/v5/.ocamlformat | 17 + .../sigs/v5/.ocamlformat-ignore | 15 + .../sigs/v5/RPC_answer.mli | 55 + .../sigs/v5/RPC_arg.mli | 64 + .../sigs/v5/RPC_context.mli | 149 ++ .../sigs/v5/RPC_directory.mli | 259 ++++ .../sigs/v5/RPC_path.mli | 50 + .../sigs/v5/RPC_query.mli | 66 + .../sigs/v5/RPC_service.mli | 71 + .../sigs/v5/base58.mli | 44 + src/lib_protocol_environment/sigs/v5/bits.mli | 29 + .../sigs/v5/blake2B.mli | 58 + .../sigs/v5/block_hash.mli | 27 + .../sigs/v5/block_header.mli | 45 + .../sigs/v5/bls12_381.mli | 32 + .../sigs/v5/bls_signature.mli | 62 + .../sigs/v5/bytes.mli | 260 ++++ .../sigs/v5/chain_id.mli | 26 + src/lib_protocol_environment/sigs/v5/char.mli | 54 + .../sigs/v5/compare.mli | 116 ++ .../sigs/v5/context.mli | 324 ++++ .../sigs/v5/context_hash.mli | 47 + .../sigs/v5/data_encoding.mli | 445 ++++++ .../sigs/v5/ed25519.mli | 28 + .../sigs/v5/equality_witness.mli | 62 + .../sigs/v5/error_monad.mli | 224 +++ .../sigs/v5/fallbackArray.mli | 70 + .../sigs/v5/fitness.mli | 28 + .../sigs/v5/format.mli | 747 +++++++++ src/lib_protocol_environment/sigs/v5/hex.mli | 82 + .../sigs/v5/int32.mli | 144 ++ .../sigs/v5/int64.mli | 152 ++ src/lib_protocol_environment/sigs/v5/json.mli | 45 + src/lib_protocol_environment/sigs/v5/list.mli | 938 ++++++++++++ .../sigs/v5/logging.mli | 44 + src/lib_protocol_environment/sigs/v5/lwt.mli | 265 ++++ src/lib_protocol_environment/sigs/v5/map.mli | 152 ++ .../sigs/v5/micheline.mli | 54 + .../sigs/v5/operation.mli | 38 + .../sigs/v5/operation_hash.mli | 27 + .../sigs/v5/operation_list_hash.mli | 27 + .../sigs/v5/operation_list_list_hash.mli | 27 + .../sigs/v5/option.mli | 142 ++ src/lib_protocol_environment/sigs/v5/p256.mli | 28 + .../sigs/v5/pervasives.mli | 482 ++++++ .../sigs/v5/protocol.mli | 44 + .../sigs/v5/protocol_hash.mli | 27 + .../sigs/v5/pvss_secp256k1.mli | 28 + .../sigs/v5/raw_hashes.mli | 36 + .../sigs/v5/result.mli | 160 ++ src/lib_protocol_environment/sigs/v5/s.mli | 406 +++++ .../sigs/v5/sapling.mli | 125 ++ .../sigs/v5/secp256k1.mli | 28 + src/lib_protocol_environment/sigs/v5/seq.mli | 119 ++ src/lib_protocol_environment/sigs/v5/set.mli | 131 ++ .../sigs/v5/signature.mli | 46 + .../sigs/v5/string.mli | 242 +++ .../sigs/v5/tezos_data.mli | 26 + src/lib_protocol_environment/sigs/v5/time.mli | 48 + .../sigs/v5/timelock.mli | 53 + .../sigs/v5/tzEndian.mli | 60 + .../sigs/v5/updater.mli | 295 ++++ src/lib_protocol_environment/sigs/v5/z.mli | 468 ++++++ .../structs/v5.dune.inc | 8 + src/lib_validation/block_validation.ml | 11 +- 76 files changed, 10071 insertions(+), 13 deletions(-) create mode 100644 src/lib_protocol_environment/environment_V5.ml create mode 100644 src/lib_protocol_environment/environment_V5.mli create mode 100644 src/lib_protocol_environment/sigs/v5.dune.inc create mode 100644 src/lib_protocol_environment/sigs/v5/.ocamlformat create mode 100644 src/lib_protocol_environment/sigs/v5/.ocamlformat-ignore create mode 100644 src/lib_protocol_environment/sigs/v5/RPC_answer.mli create mode 100644 src/lib_protocol_environment/sigs/v5/RPC_arg.mli create mode 100644 src/lib_protocol_environment/sigs/v5/RPC_context.mli create mode 100644 src/lib_protocol_environment/sigs/v5/RPC_directory.mli create mode 100644 src/lib_protocol_environment/sigs/v5/RPC_path.mli create mode 100644 src/lib_protocol_environment/sigs/v5/RPC_query.mli create mode 100644 src/lib_protocol_environment/sigs/v5/RPC_service.mli create mode 100644 src/lib_protocol_environment/sigs/v5/base58.mli create mode 100644 src/lib_protocol_environment/sigs/v5/bits.mli create mode 100644 src/lib_protocol_environment/sigs/v5/blake2B.mli create mode 100644 src/lib_protocol_environment/sigs/v5/block_hash.mli create mode 100644 src/lib_protocol_environment/sigs/v5/block_header.mli create mode 100644 src/lib_protocol_environment/sigs/v5/bls12_381.mli create mode 100644 src/lib_protocol_environment/sigs/v5/bls_signature.mli create mode 100644 src/lib_protocol_environment/sigs/v5/bytes.mli create mode 100644 src/lib_protocol_environment/sigs/v5/chain_id.mli create mode 100644 src/lib_protocol_environment/sigs/v5/char.mli create mode 100644 src/lib_protocol_environment/sigs/v5/compare.mli create mode 100644 src/lib_protocol_environment/sigs/v5/context.mli create mode 100644 src/lib_protocol_environment/sigs/v5/context_hash.mli create mode 100644 src/lib_protocol_environment/sigs/v5/data_encoding.mli create mode 100644 src/lib_protocol_environment/sigs/v5/ed25519.mli create mode 100644 src/lib_protocol_environment/sigs/v5/equality_witness.mli create mode 100644 src/lib_protocol_environment/sigs/v5/error_monad.mli create mode 100644 src/lib_protocol_environment/sigs/v5/fallbackArray.mli create mode 100644 src/lib_protocol_environment/sigs/v5/fitness.mli create mode 100644 src/lib_protocol_environment/sigs/v5/format.mli create mode 100644 src/lib_protocol_environment/sigs/v5/hex.mli create mode 100644 src/lib_protocol_environment/sigs/v5/int32.mli create mode 100644 src/lib_protocol_environment/sigs/v5/int64.mli create mode 100644 src/lib_protocol_environment/sigs/v5/json.mli create mode 100644 src/lib_protocol_environment/sigs/v5/list.mli create mode 100644 src/lib_protocol_environment/sigs/v5/logging.mli create mode 100644 src/lib_protocol_environment/sigs/v5/lwt.mli create mode 100644 src/lib_protocol_environment/sigs/v5/map.mli create mode 100644 src/lib_protocol_environment/sigs/v5/micheline.mli create mode 100644 src/lib_protocol_environment/sigs/v5/operation.mli create mode 100644 src/lib_protocol_environment/sigs/v5/operation_hash.mli create mode 100644 src/lib_protocol_environment/sigs/v5/operation_list_hash.mli create mode 100644 src/lib_protocol_environment/sigs/v5/operation_list_list_hash.mli create mode 100644 src/lib_protocol_environment/sigs/v5/option.mli create mode 100644 src/lib_protocol_environment/sigs/v5/p256.mli create mode 100644 src/lib_protocol_environment/sigs/v5/pervasives.mli create mode 100644 src/lib_protocol_environment/sigs/v5/protocol.mli create mode 100644 src/lib_protocol_environment/sigs/v5/protocol_hash.mli create mode 100644 src/lib_protocol_environment/sigs/v5/pvss_secp256k1.mli create mode 100644 src/lib_protocol_environment/sigs/v5/raw_hashes.mli create mode 100644 src/lib_protocol_environment/sigs/v5/result.mli create mode 100644 src/lib_protocol_environment/sigs/v5/s.mli create mode 100644 src/lib_protocol_environment/sigs/v5/sapling.mli create mode 100644 src/lib_protocol_environment/sigs/v5/secp256k1.mli create mode 100644 src/lib_protocol_environment/sigs/v5/seq.mli create mode 100644 src/lib_protocol_environment/sigs/v5/set.mli create mode 100644 src/lib_protocol_environment/sigs/v5/signature.mli create mode 100644 src/lib_protocol_environment/sigs/v5/string.mli create mode 100644 src/lib_protocol_environment/sigs/v5/tezos_data.mli create mode 100644 src/lib_protocol_environment/sigs/v5/time.mli create mode 100644 src/lib_protocol_environment/sigs/v5/timelock.mli create mode 100644 src/lib_protocol_environment/sigs/v5/tzEndian.mli create mode 100644 src/lib_protocol_environment/sigs/v5/updater.mli create mode 100644 src/lib_protocol_environment/sigs/v5/z.mli create mode 100644 src/lib_protocol_environment/structs/v5.dune.inc diff --git a/src/lib_base/protocol.ml b/src/lib_base/protocol.ml index 7d1b847075..9e734572ed 100644 --- a/src/lib_base/protocol.ml +++ b/src/lib_base/protocol.ml @@ -31,7 +31,7 @@ and component = { implementation : string; } -and env_version = V0 | V1 | V2 | V3 | V4 +and env_version = V0 | V1 | V2 | V3 | V4 | V5 let compare_version = Stdlib.compare @@ -57,18 +57,20 @@ let module_name_of_env_version = function | V2 -> "V2" | V3 -> "V3" | V4 -> "V4" + | V5 -> "V5" let env_version_encoding = let open Data_encoding in def "protocol.environment_version" @@ conv - (function V0 -> 0 | V1 -> 1 | V2 -> 2 | V3 -> 3 | V4 -> 4) + (function V0 -> 0 | V1 -> 1 | V2 -> 2 | V3 -> 3 | V4 -> 4 | V5 -> 5) (function | 0 -> V0 | 1 -> V1 | 2 -> V2 | 3 -> V3 | 4 -> V4 + | 5 -> V5 | _ -> failwith "unexpected environment version") uint16 diff --git a/src/lib_base/protocol.mli b/src/lib_base/protocol.mli index d8cc47c538..e5c2a30e2b 100644 --- a/src/lib_base/protocol.mli +++ b/src/lib_base/protocol.mli @@ -31,7 +31,7 @@ and component = { implementation : string; } -and env_version = V0 | V1 | V2 | V3 | V4 +and env_version = V0 | V1 | V2 | V3 | V4 | V5 val component_encoding : component Data_encoding.t diff --git a/src/lib_protocol_environment/environment_V5.ml b/src/lib_protocol_environment/environment_V5.ml new file mode 100644 index 0000000000..7c4f8a13b4 --- /dev/null +++ b/src/lib_protocol_environment/environment_V5.ml @@ -0,0 +1,1349 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2020 Nomadic Labs. *) +(* Copyright (c) 2020 Metastate AG *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +module Shell_error_monad = Error_monad + +type shell_error = error = .. + +open Environment_context +open Environment_protocol_T + +module type V5 = sig + include + Tezos_protocol_environment_sigs.V5.T + with type Format.formatter = Format.formatter + and type 'a Data_encoding.t = 'a Data_encoding.t + and type 'a Data_encoding.lazy_t = 'a Data_encoding.lazy_t + and type 'a Lwt.t = 'a Lwt.t + and type ('a, 'b) Pervasives.result = ('a, 'b) result + and type Chain_id.t = Chain_id.t + and type Block_hash.t = Block_hash.t + and type Operation_hash.t = Operation_hash.t + and type Operation_list_hash.t = Operation_list_hash.t + and type Operation_list_list_hash.t = Operation_list_list_hash.t + and type Context.t = Context.t + and type Context.cache_key = Environment_context.Context.cache_key + and type Context.cache_value = Environment_context.Context.cache_value + and type Context_hash.t = Context_hash.t + and type Context_hash.Version.t = Context_hash.Version.t + and type Protocol_hash.t = Protocol_hash.t + and type Time.t = Time.Protocol.t + and type Operation.shell_header = Operation.shell_header + and type Operation.t = Operation.t + and type Block_header.shell_header = Block_header.shell_header + and type Block_header.t = Block_header.t + and type 'a RPC_directory.t = 'a RPC_directory.t + and type Ed25519.Public_key_hash.t = Ed25519.Public_key_hash.t + and type Ed25519.Public_key.t = Ed25519.Public_key.t + and type Ed25519.t = Ed25519.t + and type Secp256k1.Public_key_hash.t = Secp256k1.Public_key_hash.t + and type Secp256k1.Public_key.t = Secp256k1.Public_key.t + and type Secp256k1.t = Secp256k1.t + and type P256.Public_key_hash.t = P256.Public_key_hash.t + and type P256.Public_key.t = P256.Public_key.t + and type P256.t = P256.t + and type Signature.public_key_hash = Signature.public_key_hash + and type Signature.public_key = Signature.public_key + and type Signature.t = Signature.t + and type Signature.watermark = Signature.watermark + and type Pvss_secp256k1.Commitment.t = Pvss_secp256k1.Commitment.t + and type Pvss_secp256k1.Encrypted_share.t = + Pvss_secp256k1.Encrypted_share.t + and type Pvss_secp256k1.Clear_share.t = Pvss_secp256k1.Clear_share.t + and type Pvss_secp256k1.Public_key.t = Pvss_secp256k1.Public_key.t + and type Pvss_secp256k1.Secret_key.t = Pvss_secp256k1.Secret_key.t + and type Micheline.canonical_location = Micheline.canonical_location + and type 'a Micheline.canonical = 'a Micheline.canonical + and type Z.t = Z.t + and type ('a, 'b) Micheline.node = ('a, 'b) Micheline.node + and type Data_encoding.json_schema = Data_encoding.json_schema + and type ('a, 'b) RPC_path.t = ('a, 'b) RPC_path.t + and type RPC_service.meth = RPC_service.meth + and type (+'m, 'pr, 'p, 'q, 'i, 'o) RPC_service.t = + ('m, 'pr, 'p, 'q, 'i, 'o) RPC_service.t + and type Error_monad.shell_tztrace = Error_monad.tztrace + and type 'a Error_monad.shell_tzresult = ('a, Error_monad.tztrace) result + and type Timelock.chest = Timelock.chest + and type Timelock.chest_key = Timelock.chest_key + and type Timelock.opening_result = Timelock.opening_result + and module Sapling = Tezos_sapling.Core.Validator + and type Bls_signature.pk = Bls12_381.Signature.pk + + type error += Ecoproto_error of Error_monad.error + + val wrap_tzerror : Error_monad.error -> error + + val wrap_tztrace : Error_monad.error Error_monad.trace -> error trace + + val wrap_tzresult : 'a Error_monad.tzresult -> 'a tzresult + + module Lift (P : Updater.PROTOCOL) : + PROTOCOL + with type block_header_data = P.block_header_data + and type block_header_metadata = P.block_header_metadata + and type block_header = P.block_header + and type operation_data = P.operation_data + and type operation_receipt = P.operation_receipt + and type operation = P.operation + and type validation_state = P.validation_state + + class ['chain, 'block] proto_rpc_context : + Tezos_rpc.RPC_context.t + -> (unit, (unit * 'chain) * 'block) RPC_path.t + -> ['chain * 'block] RPC_context.simple + + class ['block] proto_rpc_context_of_directory : + ('block -> RPC_context.t) + -> RPC_context.t RPC_directory.t + -> ['block] RPC_context.simple +end + +module MakeV5 (Param : sig + val name : string +end) +() = +struct + (* The protocol V5 only supports 64-bits architectures. We ensure this the + hard way with a dynamic check. *) + let () = + match Sys.word_size with + | 32 -> + Printf.eprintf + "FAILURE: Environment V5 does not support 32-bit architectures\n%!" ; + Stdlib.exit 1 + | 64 -> () + | n -> + Printf.eprintf + "FAILURE: Unknown, unsupported architecture (%d bits)\n%!" + n ; + Stdlib.exit 1 + + include Stdlib + + (* The modules provided in the [_struct.V5.M] pack are meant specifically to + shadow modules from [Stdlib]/[Base]/etc. with backwards compatible + versions. Thus we open the module, hiding the incompatible, newer modules. + *) + open Tezos_protocol_environment_structs.V5.M + module Pervasives = Stdlib + + module Logging = struct + type level = Internal_event.level = + | Debug + | Info + | Notice + | Warning + | Error + | Fatal + + let logging_function = ref None + + let name_colon_space = Param.name ^ ": " + + let null_formatter = Format.make_formatter (fun _ _ _ -> ()) (fun () -> ()) + + let log (level : Internal_event.level) = + match !logging_function with + | None -> Format.ikfprintf ignore null_formatter + | Some f -> Format.kasprintf (fun s -> f level (name_colon_space ^ s)) + + let log_string (level : Internal_event.level) s = + match !logging_function with + | None -> () + | Some f -> f level (name_colon_space ^ s) + end + + module Compare = Compare + module Seq = Tezos_error_monad.TzLwtreslib.Seq + module List = Tezos_error_monad.TzLwtreslib.List + module Char = Char + module Bytes = Bytes + module Hex = Hex + module String = String + module Bits = Bits + module TzEndian = TzEndian + module Set = Tezos_error_monad.TzLwtreslib.Set + module Map = Tezos_error_monad.TzLwtreslib.Map + module Int32 = Int32 + module Int64 = Int64 + module Buffer = Buffer + module Format = Format + module FallbackArray = FallbackArray + + let not_a_sys_exc next_classifier = function + | Unix.Unix_error _ | UnixLabels.Unix_error _ | Sys_error _ -> false + | e -> next_classifier e + + module Option = struct + include Tezos_error_monad.TzLwtreslib.Option + + (* This as well as the catchers in [Result] and [Error_monad] are different + from the ones in Lwtreslib/Error Monad in that they also hide the Unix + and System errors. This is because, from the point-of-view of the + protocol, these exceptions are too abstract and too indeterministic. *) + let catch ?(catch_only = fun _ -> true) f = + (* Note that [catch] also special-cases its own set of exceptions. *) + catch ~catch_only:(not_a_sys_exc catch_only) f + + let catch_s ?(catch_only = fun _ -> true) f = + catch_s ~catch_only:(not_a_sys_exc catch_only) f + end + + module Result = struct + include Tezos_error_monad.TzLwtreslib.Result + + let catch ?(catch_only = fun _ -> true) f = + catch ~catch_only:(not_a_sys_exc catch_only) f + + let catch_f ?(catch_only = fun _ -> true) f = + catch_f ~catch_only:(not_a_sys_exc catch_only) f + + let catch_s ?(catch_only = fun _ -> true) f = + catch_s ~catch_only:(not_a_sys_exc catch_only) f + end + + module Raw_hashes = struct + let sha256 = Hacl.Hash.SHA256.digest + + let sha512 = Hacl.Hash.SHA512.digest + + let blake2b msg = Blake2B.to_bytes (Blake2B.hash_bytes [msg]) + + let keccak256 msg = Hacl.Hash.Keccak_256.digest msg + + let sha3_256 msg = Hacl.Hash.SHA3_256.digest msg + + let sha3_512 msg = Hacl.Hash.SHA3_512.digest msg + end + + module Z = Z + module Lwt = Lwt + module Uri = Uri + + module Data_encoding = struct + include Data_encoding + + type tag_size = [`Uint8 | `Uint16] + + let def name ?title ?description encoding = + def (Param.name ^ "." ^ name) ?title ?description encoding + end + + module Time = Time.Protocol + + module Bls12_381 = struct + include Bls12_381 + + let pairing_check = Bls12_381.Pairing.pairing_check + end + + module Bls_signature = struct + open Bls12_381.Signature + + type pk = Bls12_381.Signature.pk + + let unsafe_pk_of_bytes = unsafe_pk_of_bytes + + let pk_of_bytes_opt = pk_of_bytes_opt + + let pk_to_bytes = pk_to_bytes + + type signature = Bls12_381.Signature.signature + + let verify = Aug.verify + + let aggregate_verify = Aug.aggregate_verify + + let aggregate_signature_opt = aggregate_signature_opt + end + + module Ed25519 = Ed25519 + module Secp256k1 = Secp256k1 + module P256 = P256 + module Signature = Signature + module Pvss_secp256k1 = Pvss_secp256k1 + module Timelock = Timelock + + module S = struct + module type T = Tezos_base.S.T + + module type HASHABLE = Tezos_base.S.HASHABLE + + module type MINIMAL_HASH = Tezos_crypto.S.MINIMAL_HASH + + module type B58_DATA = sig + type t + + val to_b58check : t -> string + + val to_short_b58check : t -> string + + val of_b58check_exn : string -> t + + val of_b58check_opt : string -> t option + + type Base58.data += Data of t + + val b58check_encoding : t Base58.encoding + end + + module type RAW_DATA = sig + type t + + val size : int (* in bytes *) + + val to_bytes : t -> Bytes.t + + val of_bytes_opt : Bytes.t -> t option + + val of_bytes_exn : Bytes.t -> t + end + + module type ENCODER = sig + type t + + val encoding : t Data_encoding.t + + val rpc_arg : t RPC_arg.t + end + + module type INDEXES_SET = sig + include Set.S + + val random_elt : t -> elt + + val encoding : t Data_encoding.t + end + + module type INDEXES_MAP = sig + include Map.S + + val encoding : 'a Data_encoding.t -> 'a t Data_encoding.t + end + + module type INDEXES = sig + type t + + module Set : INDEXES_SET with type elt = t + + module Map : INDEXES_MAP with type key = t + end + + module type HASH = sig + include MINIMAL_HASH + + include RAW_DATA with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + + include INDEXES with type t := t + end + + module type MERKLE_TREE = sig + type elt + + include HASH + + val compute : elt list -> t + + val empty : t + + type path = Left of path * t | Right of t * path | Op + + val compute_path : elt list -> int -> path + + val check_path : path -> elt -> t * int + + val path_encoding : path Data_encoding.t + end + + module type SIGNATURE_PUBLIC_KEY_HASH = sig + type t + + val pp : Format.formatter -> t -> unit + + val pp_short : Format.formatter -> t -> unit + + include Compare.S with type t := t + + include RAW_DATA with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + + include INDEXES with type t := t + + val zero : t + end + + module type SIGNATURE_PUBLIC_KEY = sig + type t + + val pp : Format.formatter -> t -> unit + + include Compare.S with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + + type public_key_hash_t + + val hash : t -> public_key_hash_t + + val size : t -> int (* in bytes *) + + val of_bytes_without_validation : bytes -> t option + end + + module type SIGNATURE = sig + module Public_key_hash : SIGNATURE_PUBLIC_KEY_HASH + + module Public_key : + SIGNATURE_PUBLIC_KEY with type public_key_hash_t := Public_key_hash.t + + type t + + val pp : Format.formatter -> t -> unit + + include RAW_DATA with type t := t + + include Compare.S with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + + val zero : t + + type watermark + + (** Check a signature *) + val check : ?watermark:watermark -> Public_key.t -> t -> Bytes.t -> bool + end + + module type FIELD = sig + type t + + (** The order of the finite field *) + val order : Z.t + + (** minimal number of bytes required to encode a value of the field. *) + val size_in_bytes : int + + (** [check_bytes bs] returns [true] if [bs] is a correct byte + representation of a field element *) + val check_bytes : Bytes.t -> bool + + (** The neutral element for the addition *) + val zero : t + + (** The neutral element for the multiplication *) + val one : t + + (** [add a b] returns [a + b mod order] *) + val add : t -> t -> t + + (** [mul a b] returns [a * b mod order] *) + val mul : t -> t -> t + + (** [eq a b] returns [true] if [a = b mod order], else [false] *) + val eq : t -> t -> bool + + (** [negate x] returns [-x mod order]. Equivalently, [negate x] returns the + unique [y] such that [x + y mod order = 0] + *) + val negate : t -> t + + (** [inverse_opt x] returns [x^-1] if [x] is not [0] as an option, else [None] *) + val inverse_opt : t -> t option + + (** [pow x n] returns [x^n] *) + val pow : t -> Z.t -> t + + (** From a predefined bytes representation, construct a value t. It is not + required that to_bytes [(Option.get (of_bytes_opt t)) = t]. By default, little endian encoding + is used and the given element is modulo the prime order *) + val of_bytes_opt : Bytes.t -> t option + + (** Convert the value t to a bytes representation which can be used for + hashing for instance. It is not required that [Option.get (to_bytes + (of_bytes_opt t)) = t]. By default, little endian encoding is used, and + length of the resulting bytes may vary depending on the order. + *) + val to_bytes : t -> Bytes.t + end + + (** Module type for the prime fields GF(p) *) + module type PRIME_FIELD = sig + include FIELD + + (** [of_z x] builds an element t from the Zarith element [x]. [mod order] is + applied if [x >= order] or [x < 0]. *) + val of_z : Z.t -> t + + (** [to_z x] builds a Zarith element, using the decimal representation. + Arithmetic on the result can be done using the modular functions on + integers *) + val to_z : t -> Z.t + end + + module type CURVE = sig + (** The type of the element in the elliptic curve *) + type t + + (** The size of a point representation, in bytes *) + val size_in_bytes : int + + module Scalar : FIELD + + (** Check if a point, represented as a byte array, is on the curve **) + val check_bytes : Bytes.t -> bool + + (** Attempt to construct a point from a byte array *) + val of_bytes_opt : Bytes.t -> t option + + (** Return a representation in bytes *) + val to_bytes : t -> Bytes.t + + (** Zero of the elliptic curve *) + val zero : t + + (** A fixed generator of the elliptic curve *) + val one : t + + (** Return the addition of two element *) + val add : t -> t -> t + + (** Double the element *) + val double : t -> t + + (** Return the opposite of the element *) + val negate : t -> t + + (** Return [true] if the two elements are algebraically the same *) + val eq : t -> t -> bool + + (** Multiply an element by a scalar *) + val mul : t -> Scalar.t -> t + end + + module type PVSS_ELEMENT = sig + type t + + include B58_DATA with type t := t + + include ENCODER with type t := t + end + + module type PVSS_PUBLIC_KEY = sig + type t + + val pp : Format.formatter -> t -> unit + + include Compare.S with type t := t + + include RAW_DATA with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + end + + module type PVSS_SECRET_KEY = sig + type public_key + + type t + + include ENCODER with type t := t + + val to_public_key : t -> public_key + end + + module type PVSS = sig + type proof + + module Clear_share : PVSS_ELEMENT + + module Commitment : PVSS_ELEMENT + + module Encrypted_share : PVSS_ELEMENT + + module Public_key : PVSS_PUBLIC_KEY + + module Secret_key : PVSS_SECRET_KEY with type public_key := Public_key.t + + val proof_encoding : proof Data_encoding.t + + val check_dealer_proof : + Encrypted_share.t list -> + Commitment.t list -> + proof:proof -> + public_keys:Public_key.t list -> + bool + + val check_revealed_share : + Encrypted_share.t -> + Clear_share.t -> + public_key:Public_key.t -> + proof -> + bool + + val reconstruct : Clear_share.t list -> int list -> Public_key.t + end + end + + module Error_core = struct + include + Tezos_error_monad.Core_maker.Make + (struct + let id = Format.asprintf "proto.%s." Param.name + end) + (struct + type t = + [ `Branch (** Errors that may not happen in another context *) + | `Temporary (** Errors that may not happen in a later context *) + | `Permanent (** Errors that will happen no matter the context *) + | `Outdated (** Errors that happen when the context is too old *) + ] + + let default_category = `Temporary + + let string_of_category = function + | `Permanent -> "permanent" + | `Outdated -> "outdated" + | `Branch -> "branch" + | `Temporary -> "temporary" + + let classify = function + | `Permanent -> Tezos_error_monad.Error_classification.Permanent + | `Branch -> Branch + | `Temporary -> Temporary + | `Outdated -> Outdated + end) + end + + type error_category = Error_core.error_category + + type shell_error += Ecoproto_error of Error_core.error + + module Wrapped_error_monad = struct + type unwrapped = Error_core.error = .. + + include ( + Error_core : + sig + include + Tezos_error_monad.Sig.CORE + with type error := unwrapped + and type error_category = error_category + end) + + let unwrap = function Ecoproto_error ecoerror -> Some ecoerror | _ -> None + + let wrap ecoerror = Ecoproto_error ecoerror + end + + module Error_monad = struct + type shell_tztrace = Error_monad.tztrace + + type 'a shell_tzresult = ('a, Error_monad.tztrace) result + + include Error_core + include Tezos_error_monad.TzLwtreslib.Monad + include + Tezos_error_monad.Monad_extension_maker.Make (Error_core) (TzTrace) + (Tezos_error_monad.TzLwtreslib.Monad) + + (* Backwards compatibility additions (dont_wait, trace helpers) *) + let dont_wait ex er f = dont_wait f er ex + + let trace_of_error e = TzTrace.make e + + let make_trace_encoding e = TzTrace.encoding e + + let pp_trace = pp_print_trace + + type 'err trace = 'err TzTrace.trace + + (* Shadowing catch to prevent catching system exceptions *) + type error += Exn of exn + + let () = + register_error_kind + `Temporary + ~id:"failure" + ~title:"Exception" + ~description:"Exception safely wrapped in an error" + ~pp:(fun ppf s -> + Format.fprintf ppf "@[%a@]" Format.pp_print_text s) + Data_encoding.(obj1 (req "msg" string)) + (function + | Exn (Failure msg) -> Some msg + | Exn exn -> Some (Printexc.to_string exn) + | _ -> None) + (fun msg -> Exn (Failure msg)) + + let error_of_exn e = TzTrace.make @@ Exn e + + let catch ?catch_only f = + Result.catch ?catch_only f |> Result.map_error error_of_exn + + let catch_f ?catch_only f h = + Result.catch ?catch_only f + |> Result.map_error (fun e -> trace_of_error (h e)) + + let catch_s ?catch_only f = + Result.catch_s ?catch_only f + >|= Result.map_error (fun e -> error_of_exn e) + + let both_e = Tzresult_syntax.both + + let join_e = Tzresult_syntax.join + + let all_e = Tzresult_syntax.all + end + + let () = + let id = Format.asprintf "proto.%s.wrapper" Param.name in + Shell_error_monad.register_wrapped_error_kind + (module Wrapped_error_monad) + ~id + ~title:("Error returned by protocol " ^ Param.name) + ~description:("Wrapped error for economic protocol " ^ Param.name ^ ".") + + let wrap_tzerror error = Ecoproto_error error + + let wrap_tztrace t = List.map wrap_tzerror t + + let wrap_tzresult r = Result.map_error wrap_tztrace r + + module Chain_id = Chain_id + module Block_hash = Block_hash + module Operation_hash = Operation_hash + module Operation_list_hash = Operation_list_hash + module Operation_list_list_hash = Operation_list_list_hash + module Context_hash = Context_hash + module Protocol_hash = Protocol_hash + module Blake2B = Blake2B + module Fitness = Fitness + module Operation = Operation + module Block_header = Block_header + module Protocol = Protocol + module RPC_arg = RPC_arg + module RPC_path = RPC_path + module RPC_query = RPC_query + module RPC_service = RPC_service + + module RPC_answer = struct + type 'o t = + [ `Ok of 'o (* 200 *) + | `OkChunk of 'o (* 200 but with chunked transfer encoding *) + | `OkStream of 'o stream (* 200 *) + | `Created of string option (* 201 *) + | `No_content (* 204 *) + | `Unauthorized of Error_monad.error list option (* 401 *) + | `Forbidden of Error_monad.error list option (* 403 *) + | `Not_found of Error_monad.error list option (* 404 *) + | `Conflict of Error_monad.error list option (* 409 *) + | `Error of Error_monad.error list option (* 500 *) ] + + and 'a stream = 'a Resto_directory.Answer.stream = { + next : unit -> 'a option Lwt.t; + shutdown : unit -> unit; + } + + let return x = Lwt.return (`Ok x) + + let return_chunked x = Lwt.return (`OkChunk x) + + let return_stream x = Lwt.return (`OkStream x) + + let not_found = Lwt.return (`Not_found None) + + let fail err = Lwt.return (`Error (Some err)) + end + + module RPC_directory = struct + include RPC_directory + + let gen_register dir service handler = + gen_register dir service (fun p q i -> + handler p q i >>= function + | `Ok o -> RPC_answer.return o + | `OkChunk o -> RPC_answer.return_chunked o + | `OkStream s -> RPC_answer.return_stream s + | `Created s -> Lwt.return (`Created s) + | `No_content -> Lwt.return `No_content + | `Unauthorized e -> + let e = Option.map (List.map (fun e -> Ecoproto_error e)) e in + Lwt.return (`Unauthorized e) + | `Forbidden e -> + let e = Option.map (List.map (fun e -> Ecoproto_error e)) e in + Lwt.return (`Forbidden e) + | `Not_found e -> + let e = Option.map (List.map (fun e -> Ecoproto_error e)) e in + Lwt.return (`Not_found e) + | `Conflict e -> + let e = Option.map (List.map (fun e -> Ecoproto_error e)) e in + Lwt.return (`Conflict e) + | `Error e -> + let e = Option.map (List.map (fun e -> Ecoproto_error e)) e in + Lwt.return (`Error e)) + + let register ~chunked dir service handler = + gen_register dir service (fun p q i -> + handler p q i >>= function + | Ok o when chunked -> RPC_answer.return_chunked o + | Ok o (* otherwise *) -> RPC_answer.return o + | Error e -> RPC_answer.fail e) + + let opt_register ~chunked dir service handler = + gen_register dir service (fun p q i -> + handler p q i >>= function + | Ok (Some o) when chunked -> RPC_answer.return_chunked o + | Ok (Some o) (* otherwise *) -> RPC_answer.return o + | Ok None -> RPC_answer.not_found + | Error e -> RPC_answer.fail e) + + let lwt_register ~chunked dir service handler = + gen_register dir service (fun p q i -> + handler p q i >>= fun o -> + if chunked then RPC_answer.return_chunked o else RPC_answer.return o) + + open Curry + + let register0 ~chunked root s f = register ~chunked root s (curry Z f) + + let register1 ~chunked root s f = register ~chunked root s (curry (S Z) f) + + let register2 ~chunked root s f = + register ~chunked root s (curry (S (S Z)) f) + + let register3 ~chunked root s f = + register ~chunked root s (curry (S (S (S Z))) f) + + let register4 ~chunked root s f = + register ~chunked root s (curry (S (S (S (S Z)))) f) + + let register5 ~chunked root s f = + register ~chunked root s (curry (S (S (S (S (S Z))))) f) + + let opt_register0 ~chunked root s f = + opt_register ~chunked root s (curry Z f) + + let opt_register1 ~chunked root s f = + opt_register ~chunked root s (curry (S Z) f) + + let opt_register2 ~chunked root s f = + opt_register ~chunked root s (curry (S (S Z)) f) + + let opt_register3 ~chunked root s f = + opt_register ~chunked root s (curry (S (S (S Z))) f) + + let opt_register4 ~chunked root s f = + opt_register ~chunked root s (curry (S (S (S (S Z)))) f) + + let opt_register5 ~chunked root s f = + opt_register ~chunked root s (curry (S (S (S (S (S Z))))) f) + + let gen_register0 root s f = gen_register root s (curry Z f) + + let gen_register1 root s f = gen_register root s (curry (S Z) f) + + let gen_register2 root s f = gen_register root s (curry (S (S Z)) f) + + let gen_register3 root s f = gen_register root s (curry (S (S (S Z))) f) + + let gen_register4 root s f = gen_register root s (curry (S (S (S (S Z)))) f) + + let gen_register5 root s f = + gen_register root s (curry (S (S (S (S (S Z))))) f) + + let lwt_register0 ~chunked root s f = + lwt_register ~chunked root s (curry Z f) + + let lwt_register1 ~chunked root s f = + lwt_register ~chunked root s (curry (S Z) f) + + let lwt_register2 ~chunked root s f = + lwt_register ~chunked root s (curry (S (S Z)) f) + + let lwt_register3 ~chunked root s f = + lwt_register ~chunked root s (curry (S (S (S Z))) f) + + let lwt_register4 ~chunked root s f = + lwt_register ~chunked root s (curry (S (S (S (S Z)))) f) + + let lwt_register5 ~chunked root s f = + lwt_register ~chunked root s (curry (S (S (S (S (S Z))))) f) + end + + module RPC_context = struct + type t = rpc_context + + class type ['pr] simple = + object + method call_proto_service0 : + 'm 'q 'i 'o. + (([< RPC_service.meth] as 'm), t, t, 'q, 'i, 'o) RPC_service.t -> + 'pr -> + 'q -> + 'i -> + 'o Error_monad.shell_tzresult Lwt.t + + method call_proto_service1 : + 'm 'a 'q 'i 'o. + (([< RPC_service.meth] as 'm), t, t * 'a, 'q, 'i, 'o) RPC_service.t -> + 'pr -> + 'a -> + 'q -> + 'i -> + 'o Error_monad.shell_tzresult Lwt.t + + method call_proto_service2 : + 'm 'a 'b 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + t, + (t * 'a) * 'b, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'pr -> + 'a -> + 'b -> + 'q -> + 'i -> + 'o Error_monad.shell_tzresult Lwt.t + + method call_proto_service3 : + 'm 'a 'b 'c 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + t, + ((t * 'a) * 'b) * 'c, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'pr -> + 'a -> + 'b -> + 'c -> + 'q -> + 'i -> + 'o Error_monad.shell_tzresult Lwt.t + end + + let make_call0 s (ctxt : _ simple) = ctxt#call_proto_service0 s + + let make_call0 = (make_call0 : _ -> _ simple -> _ :> _ -> _ #simple -> _) + + let make_call1 s (ctxt : _ simple) = ctxt#call_proto_service1 s + + let make_call1 = (make_call1 : _ -> _ simple -> _ :> _ -> _ #simple -> _) + + let make_call2 s (ctxt : _ simple) = ctxt#call_proto_service2 s + + let make_call2 = (make_call2 : _ -> _ simple -> _ :> _ -> _ #simple -> _) + + let make_call3 s (ctxt : _ simple) = ctxt#call_proto_service3 s + + let make_call3 = (make_call3 : _ -> _ simple -> _ :> _ -> _ #simple -> _) + + let make_opt_call0 s ctxt block q i = + make_call0 s ctxt block q i >>= function + | Error [RPC_context.Not_found _] -> Lwt.return_ok None + | Error _ as v -> Lwt.return v + | Ok v -> Lwt.return_ok (Some v) + + let make_opt_call1 s ctxt block a1 q i = + make_call1 s ctxt block a1 q i >>= function + | Error [RPC_context.Not_found _] -> Lwt.return_ok None + | Error _ as v -> Lwt.return v + | Ok v -> Lwt.return_ok (Some v) + + let make_opt_call2 s ctxt block a1 a2 q i = + make_call2 s ctxt block a1 a2 q i >>= function + | Error [RPC_context.Not_found _] -> Lwt.return_ok None + | Error _ as v -> Lwt.return v + | Ok v -> Lwt.return_ok (Some v) + + let make_opt_call3 s ctxt block a1 a2 a3 q i = + make_call3 s ctxt block a1 a2 a3 q i >>= function + | Error [RPC_context.Not_found _] -> Lwt.return_ok None + | Error _ as v -> Lwt.return v + | Ok v -> Lwt.return_ok (Some v) + end + + module Sapling = Tezos_sapling.Core.Validator + + module Micheline = struct + include Micheline + include Micheline_encoding + + (* The environment exposes a single canonical encoding for Micheline + expression. For env-V5, it is encoding-v2 because this is the most + recent, most correct-at-time-of-writing encoding. For backwards + compatibility reason, you should never upgrade (nor downgrade) this. + Future fixes and improvements of the encoding should be made available in + future environments only. *) + let canonical_encoding ~variant encoding = + canonical_encoding_v2 ~variant:(Param.name ^ "." ^ variant) encoding + end + + module Updater = struct + type nonrec validation_result = validation_result = { + context : Context.t; + fitness : Fitness.t; + message : string option; + max_operations_ttl : int; + last_allowed_fork_level : Int32.t; + } + + type nonrec quota = quota = {max_size : int; max_op : int option} + + type nonrec rpc_context = rpc_context = { + block_hash : Block_hash.t; + block_header : Block_header.shell_header; + context : Context.t; + } + + let activate = Context.set_protocol + + module type PROTOCOL = + Environment_protocol_T_V3.T + with type context := Context.t + and type cache_value := Environment_context.Context.cache_value + and type cache_key := Environment_context.Context.cache_key + and type quota := quota + and type validation_result := validation_result + and type rpc_context := rpc_context + and type 'a tzresult := 'a Error_monad.tzresult + end + + module Base58 = struct + include Tezos_crypto.Base58 + + let simple_encode enc s = simple_encode enc s + + let simple_decode enc s = simple_decode enc s + + include Make (struct + type context = Context.t + end) + + let decode s = decode s + end + + module Context = struct + include Context + include Environment_context.V5 + + let register_resolver = Base58.register_resolver + + let complete ctxt s = Base58.complete ctxt s + end + + module Lift (P : Updater.PROTOCOL) = struct + let environment_version = Protocol.V5 + + include P + + let value_of_key ~chain_id ~predecessor_context ~predecessor_timestamp + ~predecessor_level ~predecessor_fitness ~predecessor ~timestamp = + value_of_key + ~chain_id + ~predecessor_context + ~predecessor_timestamp + ~predecessor_level + ~predecessor_fitness + ~predecessor + ~timestamp + >|= wrap_tzresult + >>=? fun f -> return (fun x -> f x >|= wrap_tzresult) + + (* + [load_predecessor_cache] ensures that the cache is correctly + loaded in memory before running any operations. + *) + let load_predecessor_cache ~chain_id ~predecessor_context + ~predecessor_timestamp ~predecessor_level ~predecessor_fitness + ~predecessor ~timestamp ~cache = + value_of_key + ~chain_id + ~predecessor_context + ~predecessor_timestamp + ~predecessor_level + ~predecessor_fitness + ~predecessor + ~timestamp + >>=? fun value_of_key -> + Context.load_cache predecessor predecessor_context cache value_of_key + + let begin_partial_application ~chain_id ~ancestor_context + ~(predecessor : Block_header.t) ~predecessor_hash ~cache + (raw_block : block_header) = + load_predecessor_cache + ~chain_id + ~predecessor_context:ancestor_context + ~predecessor_timestamp:predecessor.shell.timestamp + ~predecessor_level:predecessor.shell.level + ~predecessor_fitness:predecessor.shell.fitness + ~predecessor:predecessor_hash + ~timestamp:raw_block.shell.timestamp + ~cache + >>=? fun ancestor_context -> + begin_partial_application + ~chain_id + ~ancestor_context + ~predecessor_timestamp:predecessor.shell.timestamp + ~predecessor_fitness:predecessor.shell.fitness + raw_block + >|= wrap_tzresult + + let begin_application ~chain_id ~predecessor_context ~predecessor_timestamp + ~predecessor_fitness ~cache (raw_block : block_header) = + load_predecessor_cache + ~chain_id + ~predecessor_context + ~predecessor_timestamp + ~predecessor_level:(Int32.pred raw_block.shell.level) + ~predecessor_fitness + ~predecessor:raw_block.shell.predecessor + ~timestamp:raw_block.shell.timestamp + ~cache + >>=? fun predecessor_context -> + begin_application + ~chain_id + ~predecessor_context + ~predecessor_timestamp + ~predecessor_fitness + raw_block + >|= wrap_tzresult + + let begin_construction ~chain_id ~predecessor_context ~predecessor_timestamp + ~predecessor_level ~predecessor_fitness ~predecessor ~timestamp + ?protocol_data ~cache () = + load_predecessor_cache + ~chain_id + ~predecessor_context + ~predecessor_timestamp + ~predecessor_level + ~predecessor_fitness + ~predecessor + ~timestamp + ~cache + >>=? fun predecessor_context -> + begin_construction + ~chain_id + ~predecessor_context + ~predecessor_timestamp + ~predecessor_level + ~predecessor_fitness + ~predecessor + ~timestamp + ?protocol_data + () + >|= wrap_tzresult + + let apply_operation c o = apply_operation c o >|= wrap_tzresult + + let finalize_block c shell_header = + finalize_block c shell_header >|= wrap_tzresult + + let init c bh = init c bh >|= wrap_tzresult + + let set_log_message_consumer f = Logging.logging_function := Some f + end + + class ['chain, 'block] proto_rpc_context (t : Tezos_rpc.RPC_context.t) + (prefix : (unit, (unit * 'chain) * 'block) RPC_path.t) = + object + method call_proto_service0 + : 'm 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + RPC_context.t, + RPC_context.t, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'chain * 'block -> + 'q -> + 'i -> + 'o tzresult Lwt.t = + fun s (chain, block) q i -> + let s = RPC_service.subst0 s in + let s = RPC_service.prefix prefix s in + t#call_service s (((), chain), block) q i + + method call_proto_service1 + : 'm 'a 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + RPC_context.t, + RPC_context.t * 'a, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'chain * 'block -> + 'a -> + 'q -> + 'i -> + 'o tzresult Lwt.t = + fun s (chain, block) a1 q i -> + let s = RPC_service.subst1 s in + let s = RPC_service.prefix prefix s in + t#call_service s ((((), chain), block), a1) q i + + method call_proto_service2 + : 'm 'a 'b 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + RPC_context.t, + (RPC_context.t * 'a) * 'b, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'chain * 'block -> + 'a -> + 'b -> + 'q -> + 'i -> + 'o tzresult Lwt.t = + fun s (chain, block) a1 a2 q i -> + let s = RPC_service.subst2 s in + let s = RPC_service.prefix prefix s in + t#call_service s (((((), chain), block), a1), a2) q i + + method call_proto_service3 + : 'm 'a 'b 'c 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + RPC_context.t, + ((RPC_context.t * 'a) * 'b) * 'c, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'chain * 'block -> + 'a -> + 'b -> + 'c -> + 'q -> + 'i -> + 'o tzresult Lwt.t = + fun s (chain, block) a1 a2 a3 q i -> + let s = RPC_service.subst3 s in + let s = RPC_service.prefix prefix s in + t#call_service s ((((((), chain), block), a1), a2), a3) q i + end + + class ['block] proto_rpc_context_of_directory conv dir : + ['block] RPC_context.simple = + let lookup = new Tezos_rpc.RPC_context.of_directory dir in + object + method call_proto_service0 + : 'm 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + RPC_context.t, + RPC_context.t, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'block -> + 'q -> + 'i -> + 'o tzresult Lwt.t = + fun s block q i -> + let rpc_context = conv block in + lookup#call_service s rpc_context q i + + method call_proto_service1 + : 'm 'a 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + RPC_context.t, + RPC_context.t * 'a, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'block -> + 'a -> + 'q -> + 'i -> + 'o tzresult Lwt.t = + fun s block a1 q i -> + let rpc_context = conv block in + lookup#call_service s (rpc_context, a1) q i + + method call_proto_service2 + : 'm 'a 'b 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + RPC_context.t, + (RPC_context.t * 'a) * 'b, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'block -> + 'a -> + 'b -> + 'q -> + 'i -> + 'o tzresult Lwt.t = + fun s block a1 a2 q i -> + let rpc_context = conv block in + lookup#call_service s ((rpc_context, a1), a2) q i + + method call_proto_service3 + : 'm 'a 'b 'c 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + RPC_context.t, + ((RPC_context.t * 'a) * 'b) * 'c, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'block -> + 'a -> + 'b -> + 'c -> + 'q -> + 'i -> + 'o tzresult Lwt.t = + fun s block a1 a2 a3 q i -> + let rpc_context = conv block in + lookup#call_service s (((rpc_context, a1), a2), a3) q i + end + + module Equality_witness = Environment_context.Equality_witness +end diff --git a/src/lib_protocol_environment/environment_V5.mli b/src/lib_protocol_environment/environment_V5.mli new file mode 100644 index 0000000000..9a456fceda --- /dev/null +++ b/src/lib_protocol_environment/environment_V5.mli @@ -0,0 +1,152 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2021 Nomadic Labs. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +open Environment_context +open Environment_protocol_T + +module type V5 = sig + include + Tezos_protocol_environment_sigs.V5.T + with type Format.formatter = Format.formatter + and type 'a Data_encoding.t = 'a Data_encoding.t + and type 'a Data_encoding.lazy_t = 'a Data_encoding.lazy_t + and type 'a Lwt.t = 'a Lwt.t + and type ('a, 'b) Pervasives.result = ('a, 'b) result + and type Chain_id.t = Chain_id.t + and type Block_hash.t = Block_hash.t + and type Operation_hash.t = Operation_hash.t + and type Operation_list_hash.t = Operation_list_hash.t + and type Operation_list_list_hash.t = Operation_list_list_hash.t + and type Context.t = Context.t + and type Context.cache_key = Environment_context.Context.cache_key + and type Context.cache_value = Environment_context.Context.cache_value + and type Context_hash.t = Context_hash.t + and type Context_hash.Version.t = Context_hash.Version.t + and type Protocol_hash.t = Protocol_hash.t + and type Time.t = Time.Protocol.t + and type Operation.shell_header = Operation.shell_header + and type Operation.t = Operation.t + and type Block_header.shell_header = Block_header.shell_header + and type Block_header.t = Block_header.t + and type 'a RPC_directory.t = 'a RPC_directory.t + and type Ed25519.Public_key_hash.t = Ed25519.Public_key_hash.t + and type Ed25519.Public_key.t = Ed25519.Public_key.t + and type Ed25519.t = Ed25519.t + and type Secp256k1.Public_key_hash.t = Secp256k1.Public_key_hash.t + and type Secp256k1.Public_key.t = Secp256k1.Public_key.t + and type Secp256k1.t = Secp256k1.t + and type P256.Public_key_hash.t = P256.Public_key_hash.t + and type P256.Public_key.t = P256.Public_key.t + and type P256.t = P256.t + and type Signature.public_key_hash = Signature.public_key_hash + and type Signature.public_key = Signature.public_key + and type Signature.t = Signature.t + and type Signature.watermark = Signature.watermark + and type Pvss_secp256k1.Commitment.t = Pvss_secp256k1.Commitment.t + and type Pvss_secp256k1.Encrypted_share.t = + Pvss_secp256k1.Encrypted_share.t + and type Pvss_secp256k1.Clear_share.t = Pvss_secp256k1.Clear_share.t + and type Pvss_secp256k1.Public_key.t = Pvss_secp256k1.Public_key.t + and type Pvss_secp256k1.Secret_key.t = Pvss_secp256k1.Secret_key.t + and type Micheline.canonical_location = Micheline.canonical_location + and type 'a Micheline.canonical = 'a Micheline.canonical + and type Z.t = Z.t + and type ('a, 'b) Micheline.node = ('a, 'b) Micheline.node + and type Data_encoding.json_schema = Data_encoding.json_schema + and type ('a, 'b) RPC_path.t = ('a, 'b) RPC_path.t + and type RPC_service.meth = RPC_service.meth + and type (+'m, 'pr, 'p, 'q, 'i, 'o) RPC_service.t = + ('m, 'pr, 'p, 'q, 'i, 'o) RPC_service.t + and type Error_monad.shell_tztrace = Error_monad.tztrace + and type 'a Error_monad.shell_tzresult = ('a, Error_monad.tztrace) result + and type Timelock.chest = Timelock.chest + and type Timelock.chest_key = Timelock.chest_key + and type Timelock.opening_result = Timelock.opening_result + and module Sapling = Tezos_sapling.Core.Validator + and type Bls_signature.pk = Bls12_381.Signature.pk + + (** An [Ecoproto_error e] is a shell error that carry a protocol error. + + Each protocol has its own error-monad (instantiated when this module here + is applied) with a fresh extensible error type. This protocol-specific + error type is incompatible with the shell's. The [Ecoproto_error] + constructor belongs to the shell's error type and it carries the errors of + the protocol's specific error type back into the shell's. + + The function [wrap_tz*] below provide wrappers for three different levels: + errors, traces, and tzresults. They are used within the implementation of + the environment to translate some return values from the protocol's error + monad into the shell's. They are exported because they can be useful for + writing tests for the protocol (i.e., for the tests located in + [src/proto_*/lib_protocol/test/]) and for writing protocol-specific + support libraries and binaries (i.e., for the code in + [src/proto_*/lib_{client,delegate,etc.}]). *) + type error += Ecoproto_error of Error_monad.error + + (** [wrap_tzerror e] is a shell error wrapping the protocol error [e]. + (It is [Ecoproto_error e].) *) + val wrap_tzerror : Error_monad.error -> error + + (** [wrap_tztrace t] is a shell trace composed of the wrapped errors of the + protocol trace [t]. *) + val wrap_tztrace : Error_monad.error Error_monad.trace -> error trace + + (** [wrap_tzresult r] is a shell tzresult that carries the same result as or a + wrapped trace of the protocol tzresult [r]. + (It is [Ok x] if [r] is [Ok x], it is [Error (wrap_tztrace t)] if [r] is + [Error t].) *) + val wrap_tzresult : 'a Error_monad.tzresult -> 'a tzresult + + module Lift (P : Updater.PROTOCOL) : + PROTOCOL + with type block_header_data = P.block_header_data + and type block_header_metadata = P.block_header_metadata + and type block_header = P.block_header + and type operation_data = P.operation_data + and type operation_receipt = P.operation_receipt + and type operation = P.operation + and type validation_state = P.validation_state + + class ['chain, 'block] proto_rpc_context : + Tezos_rpc.RPC_context.t + -> (unit, (unit * 'chain) * 'block) RPC_path.t + -> ['chain * 'block] RPC_context.simple + + class ['block] proto_rpc_context_of_directory : + ('block -> RPC_context.t) + -> RPC_context.t RPC_directory.t + -> ['block] RPC_context.simple +end + +module MakeV5 (Param : sig + val name : string +end) +() : + V5 + with type Context.t = Context.t + and type Updater.validation_result = validation_result + and type Updater.quota = quota + and type Updater.rpc_context = rpc_context diff --git a/src/lib_protocol_environment/environment_context_intf.ml b/src/lib_protocol_environment/environment_context_intf.ml index 245cd1deb5..00ff77748c 100644 --- a/src/lib_protocol_environment/environment_context_intf.ml +++ b/src/lib_protocol_environment/environment_context_intf.ml @@ -227,6 +227,8 @@ module V4 = struct end end +module V5 = V4 + module type VIEW = sig (** @inline *) include Tezos_context_sigs.Context.VIEW @@ -265,6 +267,7 @@ module type Sigs = sig module V2 = V2 module V3 = V3 module V4 = V4 + module V5 = V5 module type VIEW = VIEW diff --git a/src/lib_protocol_environment/sigs/v0/protocol.mli b/src/lib_protocol_environment/sigs/v0/protocol.mli index 77231065c2..35bf38a36c 100644 --- a/src/lib_protocol_environment/sigs/v0/protocol.mli +++ b/src/lib_protocol_environment/sigs/v0/protocol.mli @@ -35,7 +35,7 @@ and component = { implementation : string; } -and env_version = V0 | V1 | V2 | V3 | V4 +and env_version = V0 | V1 | V2 | V3 | V4 | V5 val component_encoding : component Data_encoding.t diff --git a/src/lib_protocol_environment/sigs/v1/protocol.mli b/src/lib_protocol_environment/sigs/v1/protocol.mli index 77231065c2..35bf38a36c 100644 --- a/src/lib_protocol_environment/sigs/v1/protocol.mli +++ b/src/lib_protocol_environment/sigs/v1/protocol.mli @@ -35,7 +35,7 @@ and component = { implementation : string; } -and env_version = V0 | V1 | V2 | V3 | V4 +and env_version = V0 | V1 | V2 | V3 | V4 | V5 val component_encoding : component Data_encoding.t diff --git a/src/lib_protocol_environment/sigs/v2/protocol.mli b/src/lib_protocol_environment/sigs/v2/protocol.mli index 77231065c2..35bf38a36c 100644 --- a/src/lib_protocol_environment/sigs/v2/protocol.mli +++ b/src/lib_protocol_environment/sigs/v2/protocol.mli @@ -35,7 +35,7 @@ and component = { implementation : string; } -and env_version = V0 | V1 | V2 | V3 | V4 +and env_version = V0 | V1 | V2 | V3 | V4 | V5 val component_encoding : component Data_encoding.t diff --git a/src/lib_protocol_environment/sigs/v3/protocol.mli b/src/lib_protocol_environment/sigs/v3/protocol.mli index 77231065c2..35bf38a36c 100644 --- a/src/lib_protocol_environment/sigs/v3/protocol.mli +++ b/src/lib_protocol_environment/sigs/v3/protocol.mli @@ -35,7 +35,7 @@ and component = { implementation : string; } -and env_version = V0 | V1 | V2 | V3 | V4 +and env_version = V0 | V1 | V2 | V3 | V4 | V5 val component_encoding : component Data_encoding.t diff --git a/src/lib_protocol_environment/sigs/v4/protocol.mli b/src/lib_protocol_environment/sigs/v4/protocol.mli index 77231065c2..35bf38a36c 100644 --- a/src/lib_protocol_environment/sigs/v4/protocol.mli +++ b/src/lib_protocol_environment/sigs/v4/protocol.mli @@ -35,7 +35,7 @@ and component = { implementation : string; } -and env_version = V0 | V1 | V2 | V3 | V4 +and env_version = V0 | V1 | V2 | V3 | V4 | V5 val component_encoding : component Data_encoding.t diff --git a/src/lib_protocol_environment/sigs/v5.dune.inc b/src/lib_protocol_environment/sigs/v5.dune.inc new file mode 100644 index 0000000000..cf2b5153e3 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5.dune.inc @@ -0,0 +1,80 @@ +(rule + (targets v5.ml) + (deps + + ;; Part of OCaml stdlib 4.09.1 + v5/pervasives.mli + v5/string.mli + v5/char.mli + v5/bytes.mli + v5/int32.mli + v5/int64.mli + v5/format.mli + + v5/logging.mli + + ;; Part of external libraries + v5/hex.mli ; 1.4.0 + v5/z.mli ; 1.10 + v5/lwt.mli ; 5.3.0 + v5/data_encoding.mli ; 0.2 + + ;; Tezos extended stdlib revision 32f04ec483b8d9c62dd0957389eb5268d8b3a38d + v5/raw_hashes.mli + v5/compare.mli + v5/time.mli + v5/tzEndian.mli + v5/bits.mli + v5/equality_witness.mli + v5/fallbackArray.mli + + ;; Part of Error_monad/Lwtreslib + v5/error_monad.mli + v5/seq.mli + v5/list.mli + v5/set.mli + v5/map.mli + v5/option.mli + v5/result.mli + + ;; everything RPC + v5/RPC_arg.mli + v5/RPC_path.mli + v5/RPC_query.mli + v5/RPC_service.mli + v5/RPC_answer.mli + v5/RPC_directory.mli + + ;; Tezos common types and functions (cryptographic primitives, contract + ;; addresses, operations, etc.) + v5/base58.mli + v5/s.mli + v5/blake2B.mli + v5/bls12_381.mli + v5/bls_signature.mli + v5/ed25519.mli + v5/secp256k1.mli + v5/p256.mli + v5/chain_id.mli + v5/signature.mli + v5/block_hash.mli + v5/operation_hash.mli + v5/operation_list_hash.mli + v5/operation_list_list_hash.mli + v5/protocol_hash.mli + v5/context_hash.mli + v5/pvss_secp256k1.mli + v5/sapling.mli + v5/timelock.mli + + v5/micheline.mli + v5/block_header.mli + v5/fitness.mli + v5/operation.mli + v5/protocol.mli + v5/context.mli + v5/updater.mli + v5/RPC_context.mli + ) + (action (with-stdout-to %{targets} (chdir %{workspace_root}} + (run %{libexec:tezos-protocol-environment-packer:s_packer} "sigs" %{deps}))))) diff --git a/src/lib_protocol_environment/sigs/v5/.ocamlformat b/src/lib_protocol_environment/sigs/v5/.ocamlformat new file mode 100644 index 0000000000..5e1158919e --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/.ocamlformat @@ -0,0 +1,17 @@ +version=0.18.0 +wrap-fun-args=false +let-binding-spacing=compact +field-space=loose +break-separators=after +space-around-arrays=false +space-around-lists=false +space-around-records=false +space-around-variants=false +dock-collection-brackets=true +space-around-records=false +sequence-style=separator +doc-comments=before +margin=80 +module-item-spacing=sparse +parens-tuple=always +parens-tuple-patterns=always diff --git a/src/lib_protocol_environment/sigs/v5/.ocamlformat-ignore b/src/lib_protocol_environment/sigs/v5/.ocamlformat-ignore new file mode 100644 index 0000000000..154496fb51 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/.ocamlformat-ignore @@ -0,0 +1,15 @@ +bytes.mli +char.mli +format.mli +hex.mli +int32.mli +int64.mli +list.mli +lwt.mli +map.mli +option.mli +pervasives.mli +s.mli +set.mli +string.mli +z.mli diff --git a/src/lib_protocol_environment/sigs/v5/RPC_answer.mli b/src/lib_protocol_environment/sigs/v5/RPC_answer.mli new file mode 100644 index 0000000000..4a5f32f307 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/RPC_answer.mli @@ -0,0 +1,55 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Return type for service handler *) +type 'o t = + [ `Ok of 'o (* 200 *) + | `OkChunk of 'o (* 200 but send answer as chunked transfer encoding *) + | `OkStream of 'o stream (* 200 *) + | `Created of string option (* 201 *) + | `No_content (* 204 *) + | `Unauthorized of error list option (* 401 *) + | `Forbidden of error list option (* 403 *) + | `Not_found of error list option (* 404 *) + | `Conflict of error list option (* 409 *) + | `Error of error list option (* 500 *) ] + +and 'a stream = {next : unit -> 'a option Lwt.t; shutdown : unit -> unit} + +val return : 'o -> 'o t Lwt.t + +(** [return_chunked] is identical to [return] but it indicates to the server + that the result might be long and that the serialisation should be done in + mutliple chunks. + + You should use [return_chunked] when returning an (unbounded or potentially + large) list, array, map, or other such set. *) +val return_chunked : 'o -> 'o t Lwt.t + +val return_stream : 'o stream -> 'o t Lwt.t + +val not_found : 'o t Lwt.t + +val fail : error list -> 'a t Lwt.t diff --git a/src/lib_protocol_environment/sigs/v5/RPC_arg.mli b/src/lib_protocol_environment/sigs/v5/RPC_arg.mli new file mode 100644 index 0000000000..660a6bfada --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/RPC_arg.mli @@ -0,0 +1,64 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** See [src/lib_rpc/RPC_arg.mli] for documentation *) + +type 'a t + +type 'a arg = 'a t + +val make : + ?descr:string -> + name:string -> + destruct:(string -> ('a, string) result) -> + construct:('a -> string) -> + unit -> + 'a arg + +type descr = {name : string; descr : string option} + +val descr : 'a arg -> descr + +val bool : bool arg + +val int : int arg + +val uint : int arg + +val int32 : int32 arg + +val uint31 : int32 arg + +val int64 : int64 arg + +val uint63 : int64 arg + +val string : string arg + +val like : 'a arg -> ?descr:string -> string -> 'a arg + +type ('a, 'b) eq = Eq : ('a, 'a) eq + +val eq : 'a arg -> 'b arg -> ('a, 'b) eq option diff --git a/src/lib_protocol_environment/sigs/v5/RPC_context.mli b/src/lib_protocol_environment/sigs/v5/RPC_context.mli new file mode 100644 index 0000000000..3eb4b4094a --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/RPC_context.mli @@ -0,0 +1,149 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type t = Updater.rpc_context + +class type ['pr] simple = + object + method call_proto_service0 : + 'm 'q 'i 'o. + (([< RPC_service.meth] as 'm), t, t, 'q, 'i, 'o) RPC_service.t -> + 'pr -> + 'q -> + 'i -> + 'o Error_monad.shell_tzresult Lwt.t + + method call_proto_service1 : + 'm 'a 'q 'i 'o. + (([< RPC_service.meth] as 'm), t, t * 'a, 'q, 'i, 'o) RPC_service.t -> + 'pr -> + 'a -> + 'q -> + 'i -> + 'o Error_monad.shell_tzresult Lwt.t + + method call_proto_service2 : + 'm 'a 'b 'q 'i 'o. + (([< RPC_service.meth] as 'm), t, (t * 'a) * 'b, 'q, 'i, 'o) RPC_service.t -> + 'pr -> + 'a -> + 'b -> + 'q -> + 'i -> + 'o Error_monad.shell_tzresult Lwt.t + + method call_proto_service3 : + 'm 'a 'b 'c 'q 'i 'o. + ( ([< RPC_service.meth] as 'm), + t, + ((t * 'a) * 'b) * 'c, + 'q, + 'i, + 'o ) + RPC_service.t -> + 'pr -> + 'a -> + 'b -> + 'c -> + 'q -> + 'i -> + 'o Error_monad.shell_tzresult Lwt.t + end + +val make_call0 : + ([< RPC_service.meth], t, t, 'q, 'i, 'o) RPC_service.t -> + 'pr #simple -> + 'pr -> + 'q -> + 'i -> + 'o shell_tzresult Lwt.t + +val make_call1 : + ([< RPC_service.meth], t, t * 'a, 'q, 'i, 'o) RPC_service.t -> + 'pr #simple -> + 'pr -> + 'a -> + 'q -> + 'i -> + 'o shell_tzresult Lwt.t + +val make_call2 : + ([< RPC_service.meth], t, (t * 'a) * 'b, 'q, 'i, 'o) RPC_service.t -> + 'pr #simple -> + 'pr -> + 'a -> + 'b -> + 'q -> + 'i -> + 'o shell_tzresult Lwt.t + +val make_call3 : + ([< RPC_service.meth], t, ((t * 'a) * 'b) * 'c, 'q, 'i, 'o) RPC_service.t -> + 'pr #simple -> + 'pr -> + 'a -> + 'b -> + 'c -> + 'q -> + 'i -> + 'o shell_tzresult Lwt.t + +val make_opt_call0 : + ([< RPC_service.meth], t, t, 'q, 'i, 'o) RPC_service.t -> + 'pr #simple -> + 'pr -> + 'q -> + 'i -> + 'o option shell_tzresult Lwt.t + +val make_opt_call1 : + ([< RPC_service.meth], t, t * 'a, 'q, 'i, 'o) RPC_service.t -> + 'pr #simple -> + 'pr -> + 'a -> + 'q -> + 'i -> + 'o option shell_tzresult Lwt.t + +val make_opt_call2 : + ([< RPC_service.meth], t, (t * 'a) * 'b, 'q, 'i, 'o) RPC_service.t -> + 'pr #simple -> + 'pr -> + 'a -> + 'b -> + 'q -> + 'i -> + 'o option shell_tzresult Lwt.t + +val make_opt_call3 : + ([< RPC_service.meth], t, ((t * 'a) * 'b) * 'c, 'q, 'i, 'o) RPC_service.t -> + 'pr #simple -> + 'pr -> + 'a -> + 'b -> + 'c -> + 'q -> + 'i -> + 'o option shell_tzresult Lwt.t diff --git a/src/lib_protocol_environment/sigs/v5/RPC_directory.mli b/src/lib_protocol_environment/sigs/v5/RPC_directory.mli new file mode 100644 index 0000000000..b45970de9b --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/RPC_directory.mli @@ -0,0 +1,259 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Dispatch tree *) +type 'prefix t + +type 'prefix directory = 'prefix t + +(** Empty list of dispatch trees *) +val empty : 'prefix directory + +val map : ('a -> 'b Lwt.t) -> 'b directory -> 'a directory + +val prefix : ('pr, 'p) RPC_path.path -> 'p directory -> 'pr directory + +val merge : 'a directory -> 'a directory -> 'a directory + +(** Possible error while registering services. *) +type step = + | Static of string + | Dynamic of RPC_arg.descr + | DynamicTail of RPC_arg.descr + +type conflict = + | CService of RPC_service.meth + | CDir + | CBuilder + | CTail + | CTypes of RPC_arg.descr * RPC_arg.descr + | CType of RPC_arg.descr * string list + +exception Conflict of step list * conflict + +(** Registering handler in service tree. + + The [chunked] parameter controls whether the answer to the RPC is chunk + encoded (i.e., the serialisation is split and the caller receives the answer + in multiple chunks) or not. Defaults to [false]. Set to [true] for RPCs that + return potentially large collections (e.g., unbounded lists). *) +val register : + chunked:bool -> + 'prefix directory -> + ('meth, 'prefix, 'params, 'query, 'input, 'output) RPC_service.t -> + ('params -> 'query -> 'input -> 'output tzresult Lwt.t) -> + 'prefix directory + +val opt_register : + chunked:bool -> + 'prefix directory -> + ('meth, 'prefix, 'params, 'query, 'input, 'output) RPC_service.t -> + ('params -> 'query -> 'input -> 'output option tzresult Lwt.t) -> + 'prefix directory + +val gen_register : + 'prefix directory -> + ('meth, 'prefix, 'params, 'query, 'input, 'output) RPC_service.t -> + ('params -> 'query -> 'input -> [< 'output RPC_answer.t] Lwt.t) -> + 'prefix directory + +val lwt_register : + chunked:bool -> + 'prefix directory -> + ('meth, 'prefix, 'params, 'query, 'input, 'output) RPC_service.t -> + ('params -> 'query -> 'input -> 'output Lwt.t) -> + 'prefix directory + +(** Registering handler in service tree. Curryfied variant. *) + +val register0 : + chunked:bool -> + unit directory -> + ('m, unit, unit, 'q, 'i, 'o) RPC_service.t -> + ('q -> 'i -> 'o tzresult Lwt.t) -> + unit directory + +val register1 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, unit * 'a, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'q -> 'i -> 'o tzresult Lwt.t) -> + 'prefix directory + +val register2 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, (unit * 'a) * 'b, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'q -> 'i -> 'o tzresult Lwt.t) -> + 'prefix directory + +val register3 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, ((unit * 'a) * 'b) * 'c, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'q -> 'i -> 'o tzresult Lwt.t) -> + 'prefix directory + +val register4 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, (((unit * 'a) * 'b) * 'c) * 'd, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'd -> 'q -> 'i -> 'o tzresult Lwt.t) -> + 'prefix directory + +val register5 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, ((((unit * 'a) * 'b) * 'c) * 'd) * 'e, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'd -> 'e -> 'q -> 'i -> 'o tzresult Lwt.t) -> + 'prefix directory + +val opt_register0 : + chunked:bool -> + unit directory -> + ('m, unit, unit, 'q, 'i, 'o) RPC_service.t -> + ('q -> 'i -> 'o option tzresult Lwt.t) -> + unit directory + +val opt_register1 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, unit * 'a, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'q -> 'i -> 'o option tzresult Lwt.t) -> + 'prefix directory + +val opt_register2 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, (unit * 'a) * 'b, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'q -> 'i -> 'o option tzresult Lwt.t) -> + 'prefix directory + +val opt_register3 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, ((unit * 'a) * 'b) * 'c, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'q -> 'i -> 'o option tzresult Lwt.t) -> + 'prefix directory + +val opt_register4 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, (((unit * 'a) * 'b) * 'c) * 'd, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'd -> 'q -> 'i -> 'o option tzresult Lwt.t) -> + 'prefix directory + +val opt_register5 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, ((((unit * 'a) * 'b) * 'c) * 'd) * 'e, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'd -> 'e -> 'q -> 'i -> 'o option tzresult Lwt.t) -> + 'prefix directory + +val gen_register0 : + unit directory -> + ('m, unit, unit, 'q, 'i, 'o) RPC_service.t -> + ('q -> 'i -> [< 'o RPC_answer.t] Lwt.t) -> + unit directory + +val gen_register1 : + 'prefix directory -> + ('m, 'prefix, unit * 'a, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'q -> 'i -> [< 'o RPC_answer.t] Lwt.t) -> + 'prefix directory + +val gen_register2 : + 'prefix directory -> + ('m, 'prefix, (unit * 'a) * 'b, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'q -> 'i -> [< 'o RPC_answer.t] Lwt.t) -> + 'prefix directory + +val gen_register3 : + 'prefix directory -> + ('m, 'prefix, ((unit * 'a) * 'b) * 'c, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'q -> 'i -> [< 'o RPC_answer.t] Lwt.t) -> + 'prefix directory + +val gen_register4 : + 'prefix directory -> + ('m, 'prefix, (((unit * 'a) * 'b) * 'c) * 'd, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'd -> 'q -> 'i -> [< 'o RPC_answer.t] Lwt.t) -> + 'prefix directory + +val gen_register5 : + 'prefix directory -> + ('m, 'prefix, ((((unit * 'a) * 'b) * 'c) * 'd) * 'e, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'd -> 'e -> 'q -> 'i -> [< 'o RPC_answer.t] Lwt.t) -> + 'prefix directory + +val lwt_register0 : + chunked:bool -> + unit directory -> + ('m, unit, unit, 'q, 'i, 'o) RPC_service.t -> + ('q -> 'i -> 'o Lwt.t) -> + unit directory + +val lwt_register1 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, unit * 'a, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'q -> 'i -> 'o Lwt.t) -> + 'prefix directory + +val lwt_register2 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, (unit * 'a) * 'b, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'q -> 'i -> 'o Lwt.t) -> + 'prefix directory + +val lwt_register3 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, ((unit * 'a) * 'b) * 'c, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'q -> 'i -> 'o Lwt.t) -> + 'prefix directory + +val lwt_register4 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, (((unit * 'a) * 'b) * 'c) * 'd, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'd -> 'q -> 'i -> 'o Lwt.t) -> + 'prefix directory + +val lwt_register5 : + chunked:bool -> + 'prefix directory -> + ('m, 'prefix, ((((unit * 'a) * 'b) * 'c) * 'd) * 'e, 'q, 'i, 'o) RPC_service.t -> + ('a -> 'b -> 'c -> 'd -> 'e -> 'q -> 'i -> 'o Lwt.t) -> + 'prefix directory + +(** Registering dynamic subtree. *) +val register_dynamic_directory : + ?descr:string -> + 'prefix directory -> + ('prefix, 'a) RPC_path.t -> + ('a -> 'a directory Lwt.t) -> + 'prefix directory diff --git a/src/lib_protocol_environment/sigs/v5/RPC_path.mli b/src/lib_protocol_environment/sigs/v5/RPC_path.mli new file mode 100644 index 0000000000..4cfe075e33 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/RPC_path.mli @@ -0,0 +1,50 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type ('prefix, 'params) t + +type ('prefix, 'params) path = ('prefix, 'params) t + +type 'prefix context = ('prefix, 'prefix) path + +val root : unit context + +val open_root : 'a context + +val add_suffix : ('prefix, 'params) path -> string -> ('prefix, 'params) path + +val ( / ) : ('prefix, 'params) path -> string -> ('prefix, 'params) path + +val add_arg : + ('prefix, 'params) path -> 'a RPC_arg.t -> ('prefix, 'params * 'a) path + +val ( /: ) : + ('prefix, 'params) path -> 'a RPC_arg.t -> ('prefix, 'params * 'a) path + +val add_final_args : + ('prefix, 'params) path -> 'a RPC_arg.t -> ('prefix, 'params * 'a list) path + +val ( /:* ) : + ('prefix, 'params) path -> 'a RPC_arg.t -> ('prefix, 'params * 'a list) path diff --git a/src/lib_protocol_environment/sigs/v5/RPC_query.mli b/src/lib_protocol_environment/sigs/v5/RPC_query.mli new file mode 100644 index 0000000000..b0e15c3121 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/RPC_query.mli @@ -0,0 +1,66 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type 'a t + +type 'a query = 'a t + +val empty : unit query + +type ('a, 'b) field + +val field : + ?descr:string -> string -> 'a RPC_arg.t -> 'a -> ('b -> 'a) -> ('b, 'a) field + +val opt_field : + ?descr:string -> + string -> + 'a RPC_arg.t -> + ('b -> 'a option) -> + ('b, 'a option) field + +val flag : ?descr:string -> string -> ('b -> bool) -> ('b, bool) field + +val multi_field : + ?descr:string -> + string -> + 'a RPC_arg.t -> + ('b -> 'a list) -> + ('b, 'a list) field + +type ('a, 'b, 'c) open_query + +val query : 'b -> ('a, 'b, 'b) open_query + +val ( |+ ) : + ('a, 'b, 'c -> 'd) open_query -> ('a, 'c) field -> ('a, 'b, 'd) open_query + +val seal : ('a, 'b, 'a) open_query -> 'a t + +type untyped = (string * string) list + +exception Invalid of string + +val parse : 'a query -> untyped -> 'a diff --git a/src/lib_protocol_environment/sigs/v5/RPC_service.mli b/src/lib_protocol_environment/sigs/v5/RPC_service.mli new file mode 100644 index 0000000000..8287492434 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/RPC_service.mli @@ -0,0 +1,71 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** HTTP methods. *) +type meth = [`GET | `POST | `DELETE | `PUT | `PATCH] + +type (+'meth, 'prefix, 'params, 'query, 'input, 'output) t + constraint 'meth = [< meth] + +type (+'meth, 'prefix, 'params, 'query, 'input, 'output) service = + ('meth, 'prefix, 'params, 'query, 'input, 'output) t + +val get_service : + ?description:string -> + query:'query RPC_query.t -> + output:'output Data_encoding.t -> + ('prefix, 'params) RPC_path.t -> + ([`GET], 'prefix, 'params, 'query, unit, 'output) service + +val post_service : + ?description:string -> + query:'query RPC_query.t -> + input:'input Data_encoding.t -> + output:'output Data_encoding.t -> + ('prefix, 'params) RPC_path.t -> + ([`POST], 'prefix, 'params, 'query, 'input, 'output) service + +val delete_service : + ?description:string -> + query:'query RPC_query.t -> + output:'output Data_encoding.t -> + ('prefix, 'params) RPC_path.t -> + ([`DELETE], 'prefix, 'params, 'query, unit, 'output) service + +val patch_service : + ?description:string -> + query:'query RPC_query.t -> + input:'input Data_encoding.t -> + output:'output Data_encoding.t -> + ('prefix, 'params) RPC_path.t -> + ([`PATCH], 'prefix, 'params, 'query, 'input, 'output) service + +val put_service : + ?description:string -> + query:'query RPC_query.t -> + input:'input Data_encoding.t -> + output:'output Data_encoding.t -> + ('prefix, 'params) RPC_path.t -> + ([`PUT], 'prefix, 'params, 'query, 'input, 'output) service diff --git a/src/lib_protocol_environment/sigs/v5/base58.mli b/src/lib_protocol_environment/sigs/v5/base58.mli new file mode 100644 index 0000000000..145c91b6e4 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/base58.mli @@ -0,0 +1,44 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type 'a encoding + +val simple_decode : 'a encoding -> string -> 'a option + +val simple_encode : 'a encoding -> 'a -> string + +type data = .. + +val register_encoding : + prefix:string -> + length:int -> + to_raw:('a -> string) -> + of_raw:(string -> 'a option) -> + wrap:('a -> data) -> + 'a encoding + +val check_encoded_prefix : 'a encoding -> string -> int -> unit + +val decode : string -> data option diff --git a/src/lib_protocol_environment/sigs/v5/bits.mli b/src/lib_protocol_environment/sigs/v5/bits.mli new file mode 100644 index 0000000000..1882f25c8e --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/bits.mli @@ -0,0 +1,29 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Assuming [x >= 0], [numbits x] is the number of bits needed to + represent [x]. This is also the unique [k] such that [2^{k - 1} + <= x < 2^k] if [x > 0] and [0] otherwise. *) +val numbits : int -> int diff --git a/src/lib_protocol_environment/sigs/v5/blake2B.mli b/src/lib_protocol_environment/sigs/v5/blake2B.mli new file mode 100644 index 0000000000..29dcaab0e8 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/blake2B.mli @@ -0,0 +1,58 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Builds a new Hash type using Blake2B. *) + +(** The parameters for creating a new Hash type using + {!Make_Blake2B}. Both {!name} and {!title} are only informative, + used in error messages and serializers. *) + +module type Name = sig + val name : string + + val title : string + + val size : int option +end + +module type PrefixedName = sig + include Name + + val b58check_prefix : string +end + +module Make_minimal (Name : Name) : S.MINIMAL_HASH + +module type Register = sig + val register_encoding : + prefix:string -> + length:int -> + to_raw:('a -> string) -> + of_raw:(string -> 'a option) -> + wrap:('a -> Base58.data) -> + 'a Base58.encoding +end + +module Make (Register : Register) (Name : PrefixedName) : S.HASH diff --git a/src/lib_protocol_environment/sigs/v5/block_hash.mli b/src/lib_protocol_environment/sigs/v5/block_hash.mli new file mode 100644 index 0000000000..701c94cbbf --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/block_hash.mli @@ -0,0 +1,27 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Blocks hashes / IDs. *) +include S.HASH diff --git a/src/lib_protocol_environment/sigs/v5/block_header.mli b/src/lib_protocol_environment/sigs/v5/block_header.mli new file mode 100644 index 0000000000..4a53331111 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/block_header.mli @@ -0,0 +1,45 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type shell_header = { + level : Int32.t; + (** The number of preceding block in this chain, i.e. the genesis + has level 0. *) + proto_level : int; + (** The number of preceding protocol change in the chain (modulo 256), + i.e. the genesis has proto_level 0. *) + predecessor : Block_hash.t; + timestamp : Time.t; + validation_passes : int; + operations_hash : Operation_list_list_hash.t; + fitness : Bytes.t list; + context : Context_hash.t; +} + +val shell_header_encoding : shell_header Data_encoding.t + +type t = {shell : shell_header; protocol_data : bytes} + +include S.HASHABLE with type t := t and type hash := Block_hash.t diff --git a/src/lib_protocol_environment/sigs/v5/bls12_381.mli b/src/lib_protocol_environment/sigs/v5/bls12_381.mli new file mode 100644 index 0000000000..cfa9d40e45 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/bls12_381.mli @@ -0,0 +1,32 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Metastate AG *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +module Fr : S.PRIME_FIELD + +module G1 : S.CURVE with type Scalar.t = Fr.t + +module G2 : S.CURVE with type Scalar.t = Fr.t + +val pairing_check : (G1.t * G2.t) list -> bool diff --git a/src/lib_protocol_environment/sigs/v5/bls_signature.mli b/src/lib_protocol_environment/sigs/v5/bls_signature.mli new file mode 100644 index 0000000000..ca4f59d42e --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/bls_signature.mli @@ -0,0 +1,62 @@ +(* MIT License +* +* Copyright (c) 2020 Danny Willems +* Copyright (c) 2020 Nomadic Labs +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. *) + +(** Type of the public keys *) +type pk + +(* Not abstracting the type to avoid to write (de)serialisation routines *) +type signature = Bytes.t + +(** Build a value of type [pk] without performing any check on the input. + It is safe to use this function when verifying a signature as the + signature function verifies if the point is in the prime subgroup. Using + [unsafe_pk_of_bytes] removes a verification performed twice when used + [pk_of_bytes_exn] or [pk_of_bytes_opt]. + + The expected bytes format are the compressed form of a point on G1. *) + +val unsafe_pk_of_bytes : Bytes.t -> pk + +(** Build a value of type [pk] safely, i.e. the function checks the bytes + given in parameters represents a point on the curve and in the prime subgroup. + Return [None] if the bytes are not in the correct format or does + not represent a point in the prime subgroup. + + The expected bytes format are the compressed form of a point on G1. +*) +val pk_of_bytes_opt : Bytes.t -> pk option + +(** Returns a bytes representation of a value of type [pk]. The output is the + compressed form a the point G1.t the [pk] represents. +*) +val pk_to_bytes : pk -> Bytes.t + +(** [aggregate_signature_opt signatures] aggregates the signatures [signatures], following + https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-bls-signature-04#section-2.8. + Return [None] if [INVALID] is expected in the specification +*) +val aggregate_signature_opt : Bytes.t list -> Bytes.t option + +val verify : pk -> Bytes.t -> signature -> bool + +val aggregate_verify : (pk * Bytes.t) list -> signature -> bool diff --git a/src/lib_protocol_environment/sigs/v5/bytes.mli b/src/lib_protocol_environment/sigs/v5/bytes.mli new file mode 100644 index 0000000000..b19a0d423d --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/bytes.mli @@ -0,0 +1,260 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** Byte sequence operations. + + A byte sequence is a mutable data structure that contains a + fixed-length sequence of bytes. Each byte can be indexed in + constant time for reading or writing. + + Given a byte sequence [s] of length [l], we can access each of the + [l] bytes of [s] via its index in the sequence. Indexes start at + [0], and we will call an index valid in [s] if it falls within the + range [[0...l-1]] (inclusive). A position is the point between two + bytes or at the beginning or end of the sequence. We call a + position valid in [s] if it falls within the range [[0...l]] + (inclusive). Note that the byte at index [n] is between positions + [n] and [n+1]. + + Two parameters [start] and [len] are said to designate a valid + range of [s] if [len >= 0] and [start] and [start+len] are valid + positions in [s]. + + Byte sequences can be modified in place, for instance via the [set] + and [blit] functions described below. See also strings (module + {!String}), which are almost the same data structure, but cannot be + modified in place. + + Bytes are represented by the OCaml type [char]. + + @since 4.02.0 + *) + +external length : bytes -> int = "%bytes_length" +(** Return the length (number of bytes) of the argument. *) + +external get : bytes -> int -> char = "%bytes_safe_get" +(** [get s n] returns the byte at index [n] in argument [s]. + + Raise [Invalid_argument] if [n] is not a valid index in [s]. *) + +external set : bytes -> int -> char -> unit = "%bytes_safe_set" +(** [set s n c] modifies [s] in place, replacing the byte at index [n] + with [c]. + + Raise [Invalid_argument] if [n] is not a valid index in [s]. *) + +val make : int -> char -> bytes +(** [make n c] returns a new byte sequence of length [n], filled with + the byte [c]. + + Raise [Invalid_argument] if [n < 0] or [n > ]{!Sys.max_string_length}. *) + +val init : int -> (int -> char) -> bytes +(** [Bytes.init n f] returns a fresh byte sequence of length [n], with + character [i] initialized to the result of [f i] (in increasing + index order). + + Raise [Invalid_argument] if [n < 0] or [n > ]{!Sys.max_string_length}. *) + +val empty : bytes +(** A byte sequence of size 0. *) + +val copy : bytes -> bytes +(** Return a new byte sequence that contains the same bytes as the + argument. *) + +val of_string : string -> bytes +(** Return a new byte sequence that contains the same bytes as the + given string. *) + +val to_string : bytes -> string +(** Return a new string that contains the same bytes as the given byte + sequence. *) + +val sub : bytes -> int -> int -> bytes +(** [sub s start len] returns a new byte sequence of length [len], + containing the subsequence of [s] that starts at position [start] + and has length [len]. + + Raise [Invalid_argument] if [start] and [len] do not designate a + valid range of [s]. *) + +val sub_string : bytes -> int -> int -> string +(** Same as [sub] but return a string instead of a byte sequence. *) + +val extend : bytes -> int -> int -> bytes +(** [extend s left right] returns a new byte sequence that contains + the bytes of [s], with [left] uninitialized bytes prepended and + [right] uninitialized bytes appended to it. If [left] or [right] + is negative, then bytes are removed (instead of appended) from + the corresponding side of [s]. + + Raise [Invalid_argument] if the result length is negative or + longer than {!Sys.max_string_length} bytes. *) + +val fill : bytes -> int -> int -> char -> unit +(** [fill s start len c] modifies [s] in place, replacing [len] + characters with [c], starting at [start]. + + Raise [Invalid_argument] if [start] and [len] do not designate a + valid range of [s]. *) + +val blit : bytes -> int -> bytes -> int -> int -> unit +(** [blit src srcoff dst dstoff len] copies [len] bytes from sequence + [src], starting at index [srcoff], to sequence [dst], starting at + index [dstoff]. It works correctly even if [src] and [dst] are the + same byte sequence, and the source and destination intervals + overlap. + + Raise [Invalid_argument] if [srcoff] and [len] do not + designate a valid range of [src], or if [dstoff] and [len] + do not designate a valid range of [dst]. *) + +val blit_string : string -> int -> bytes -> int -> int -> unit +(** [blit src srcoff dst dstoff len] copies [len] bytes from string + [src], starting at index [srcoff], to byte sequence [dst], + starting at index [dstoff]. + + Raise [Invalid_argument] if [srcoff] and [len] do not + designate a valid range of [src], or if [dstoff] and [len] + do not designate a valid range of [dst]. *) + +val concat : bytes -> bytes list -> bytes +(** [concat sep sl] concatenates the list of byte sequences [sl], + inserting the separator byte sequence [sep] between each, and + returns the result as a new byte sequence. + + Raise [Invalid_argument] if the result is longer than + {!Sys.max_string_length} bytes. *) + +val cat : bytes -> bytes -> bytes +(** [cat s1 s2] concatenates [s1] and [s2] and returns the result + as new byte sequence. + + Raise [Invalid_argument] if the result is longer than + {!Sys.max_string_length} bytes. *) + +val iter : (char -> unit) -> bytes -> unit +(** [iter f s] applies function [f] in turn to all the bytes of [s]. + It is equivalent to [f (get s 0); f (get s 1); ...; f (get s + (length s - 1)); ()]. *) + +val iteri : (int -> char -> unit) -> bytes -> unit +(** Same as {!Bytes.iter}, but the function is applied to the index of + the byte as first argument and the byte itself as second + argument. *) + +val map : (char -> char) -> bytes -> bytes +(** [map f s] applies function [f] in turn to all the bytes of [s] + (in increasing index order) and stores the resulting bytes in + a new sequence that is returned as the result. *) + +val mapi : (int -> char -> char) -> bytes -> bytes +(** [mapi f s] calls [f] with each character of [s] and its + index (in increasing index order) and stores the resulting bytes + in a new sequence that is returned as the result. *) + +val trim : bytes -> bytes +(** Return a copy of the argument, without leading and trailing + whitespace. The bytes regarded as whitespace are the ASCII + characters [' '], ['\012'], ['\n'], ['\r'], and ['\t']. *) + +val escaped : bytes -> bytes +(** Return a copy of the argument, with special characters represented + by escape sequences, following the lexical conventions of OCaml. + All characters outside the ASCII printable range (32..126) are + escaped, as well as backslash and double-quote. + + Raise [Invalid_argument] if the result is longer than + {!Sys.max_string_length} bytes. *) + +val index_opt: bytes -> char -> int option +(** [index_opt s c] returns the index of the first occurrence of byte [c] + in [s] or [None] if [c] does not occur in [s]. + @since 4.05 *) + +val rindex_opt: bytes -> char -> int option +(** [rindex_opt s c] returns the index of the last occurrence of byte [c] + in [s] or [None] if [c] does not occur in [s]. + @since 4.05 *) + +val index_from_opt: bytes -> int -> char -> int option +(** [index_from _opts i c] returns the index of the first occurrence of + byte [c] in [s] after position [i] or [None] if [c] does not occur in [s] + after position [i]. + [Bytes.index_opt s c] is equivalent to [Bytes.index_from_opt s 0 c]. + + Raise [Invalid_argument] if [i] is not a valid position in [s]. + @since 4.05 *) + +val rindex_from_opt: bytes -> int -> char -> int option +(** [rindex_from_opt s i c] returns the index of the last occurrence + of byte [c] in [s] before position [i+1] or [None] if [c] does not + occur in [s] before position [i+1]. [rindex_opt s c] is equivalent to + [rindex_from s (Bytes.length s - 1) c]. + + Raise [Invalid_argument] if [i+1] is not a valid position in [s]. + @since 4.05 *) + +val contains : bytes -> char -> bool +(** [contains s c] tests if byte [c] appears in [s]. *) + +val contains_from : bytes -> int -> char -> bool +(** [contains_from s start c] tests if byte [c] appears in [s] after + position [start]. [contains s c] is equivalent to [contains_from + s 0 c]. + + Raise [Invalid_argument] if [start] is not a valid position in [s]. *) + +val rcontains_from : bytes -> int -> char -> bool +(** [rcontains_from s stop c] tests if byte [c] appears in [s] before + position [stop+1]. + + Raise [Invalid_argument] if [stop < 0] or [stop+1] is not a valid + position in [s]. *) + +val uppercase_ascii : bytes -> bytes +(** Return a copy of the argument, with all lowercase letters + translated to uppercase, using the US-ASCII character set. + @since 4.03.0 *) + +val lowercase_ascii : bytes -> bytes +(** Return a copy of the argument, with all uppercase letters + translated to lowercase, using the US-ASCII character set. + @since 4.03.0 *) + +val capitalize_ascii : bytes -> bytes +(** Return a copy of the argument, with the first character set to uppercase, + using the US-ASCII character set. + @since 4.03.0 *) + +val uncapitalize_ascii : bytes -> bytes +(** Return a copy of the argument, with the first character set to lowercase, + using the US-ASCII character set. + @since 4.03.0 *) + +type t = bytes +(** An alias for the type of byte sequences. *) + +val compare: t -> t -> int +(** The comparison function for byte sequences, with the same + specification as {!Stdlib.compare}. Along with the type [t], + this function [compare] allows the module [Bytes] to be passed as + argument to the functors {!Set.Make} and {!Map.Make}. *) + +val equal: t -> t -> bool +(** The equality function for byte sequences. + @since 4.03.0 *) diff --git a/src/lib_protocol_environment/sigs/v5/chain_id.mli b/src/lib_protocol_environment/sigs/v5/chain_id.mli new file mode 100644 index 0000000000..2203c82e60 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/chain_id.mli @@ -0,0 +1,26 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +include S.HASH diff --git a/src/lib_protocol_environment/sigs/v5/char.mli b/src/lib_protocol_environment/sigs/v5/char.mli new file mode 100644 index 0000000000..638fd6e47f --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/char.mli @@ -0,0 +1,54 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** Character operations. *) + +external code : char -> int = "%identity" +(** Return the ASCII code of the argument. *) + +val chr : int -> char +(** Return the character with the given ASCII code. + Raise [Invalid_argument "Char.chr"] if the argument is + outside the range 0--255. *) + +val escaped : char -> string +(** Return a string representing the given character, + with special characters escaped following the lexical conventions + of OCaml. + All characters outside the ASCII printable range (32..126) are + escaped, as well as backslash, double-quote, and single-quote. *) + +val lowercase_ascii : char -> char +(** Convert the given character to its equivalent lowercase character, + using the US-ASCII character set. + @since 4.03.0 *) + +val uppercase_ascii : char -> char +(** Convert the given character to its equivalent uppercase character, + using the US-ASCII character set. + @since 4.03.0 *) + +type t = char +(** An alias for the type of characters. *) + +val compare: t -> t -> int +(** The comparison function for characters, with the same specification as + {!Stdlib.compare}. Along with the type [t], this function [compare] + allows the module [Char] to be passed as argument to the functors + {!Set.Make} and {!Map.Make}. *) + +val equal: t -> t -> bool +(** The equal function for chars. + @since 4.03.0 *) diff --git a/src/lib_protocol_environment/sigs/v5/compare.mli b/src/lib_protocol_environment/sigs/v5/compare.mli new file mode 100644 index 0000000000..73d6ad373c --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/compare.mli @@ -0,0 +1,116 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +module type COMPARABLE = sig + type t + + val compare : t -> t -> int +end + +module type S = sig + type t + + val ( = ) : t -> t -> bool + + val ( <> ) : t -> t -> bool + + val ( < ) : t -> t -> bool + + val ( <= ) : t -> t -> bool + + val ( >= ) : t -> t -> bool + + val ( > ) : t -> t -> bool + + val compare : t -> t -> int + + val equal : t -> t -> bool + + val max : t -> t -> t + + val min : t -> t -> t +end + +module Make (P : COMPARABLE) : S with type t := P.t + +module Char : S with type t = char + +module Bool : S with type t = bool + +module Int : S with type t = int + +module Int32 : S with type t = int32 + +module Uint32 : S with type t = int32 + +module Int64 : S with type t = int64 + +module Uint64 : S with type t = int64 + +module String : S with type t = string + +module Bytes : S with type t = bytes + +module Z : S with type t = Z.t + +module List (P : COMPARABLE) : S with type t = P.t list + +module Option (P : COMPARABLE) : S with type t = P.t option + +module List_length_with : sig + val ( = ) : 'a list -> int -> bool + + val ( <> ) : 'a list -> int -> bool + + val ( < ) : 'a list -> int -> bool + + val ( <= ) : 'a list -> int -> bool + + val ( >= ) : 'a list -> int -> bool + + val ( > ) : 'a list -> int -> bool + + val compare : 'a list -> int -> int + + val equal : 'a list -> int -> bool +end + +module List_lengths : sig + val ( = ) : 'a list -> 'b list -> bool + + val ( <> ) : 'a list -> 'b list -> bool + + val ( < ) : 'a list -> 'b list -> bool + + val ( <= ) : 'a list -> 'b list -> bool + + val ( >= ) : 'a list -> 'b list -> bool + + val ( > ) : 'a list -> 'b list -> bool + + val compare : 'a list -> 'b list -> int + + val equal : 'a list -> 'b list -> bool +end diff --git a/src/lib_protocol_environment/sigs/v5/context.mli b/src/lib_protocol_environment/sigs/v5/context.mli new file mode 100644 index 0000000000..6114a50ed3 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/context.mli @@ -0,0 +1,324 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** View over the context store, restricted to types, access and + functional manipulation of an existing context. *) + +(* Copy/paste of Environment_context_sigs.Context.S *) + +(** The tree depth of a fold. See the [fold] function for more information. *) +type depth = [`Eq of int | `Le of int | `Lt of int | `Ge of int | `Gt of int] + +module type VIEW = sig + (** The type for context views. *) + type t + + (** The type for context keys. *) + type key + + (** The type for context values. *) + type value + + (** The type for context trees. *) + type tree + + (** {2 Getters} *) + + (** [mem t k] is an Lwt promise that resolves to [true] iff [k] is bound + to a value in [t]. *) + val mem : t -> key -> bool Lwt.t + + (** [mem_tree t k] is like {!mem} but for trees. *) + val mem_tree : t -> key -> bool Lwt.t + + (** [find t k] is an Lwt promise that resolves to [Some v] if [k] is + bound to the value [v] in [t] and [None] otherwise. *) + val find : t -> key -> value option Lwt.t + + (** [find_tree t k] is like {!find} but for trees. *) + val find_tree : t -> key -> tree option Lwt.t + + (** [list t key] is the list of files and sub-nodes stored under [k] in [t]. + The result order is not specified but is stable. + + [offset] and [length] are used for pagination. *) + val list : + t -> ?offset:int -> ?length:int -> key -> (string * tree) list Lwt.t + + (** {2 Setters} *) + + (** [add t k v] is an Lwt promise that resolves to [c] such that: + + - [k] is bound to [v] in [c]; + - and [c] is similar to [t] otherwise. + + If [k] was already bound in [t] to a value that is physically equal + to [v], the result of the function is a promise that resolves to + [t]. Otherwise, the previous binding of [k] in [t] disappears. *) + val add : t -> key -> value -> t Lwt.t + + (** [add_tree] is like {!add} but for trees. *) + val add_tree : t -> key -> tree -> t Lwt.t + + (** [remove t k v] is an Lwt promise that resolves to [c] such that: + + - [k] is unbound in [c]; + - and [c] is similar to [t] otherwise. *) + val remove : t -> key -> t Lwt.t + + (** {2 Folding} *) + + (** [fold ?depth t root ~init ~f] recursively folds over the trees + and values of [t]. The [f] callbacks are called with a key relative + to [root]. [f] is never called with an empty key for values; i.e., + folding over a value is a no-op. + + Elements are traversed in lexical order of keys. + + The depth is 0-indexed. If [depth] is set (by default it is not), then [f] + is only called when the conditions described by the parameter is true: + + - [Eq d] folds over nodes and contents of depth exactly [d]. + - [Lt d] folds over nodes and contents of depth strictly less than [d]. + - [Le d] folds over nodes and contents of depth less than or equal to [d]. + - [Gt d] folds over nodes and contents of depth strictly more than [d]. + - [Ge d] folds over nodes and contents of depth more than or equal to [d]. + + If [order] is [`Sorted] (the default), the elements are traversed in + lexicographic order of their keys. For large nodes, these two modes are memory-consuming, + use [`Undefined] for a more memory efficient [fold]. *) + val fold : + ?depth:depth -> + t -> + key -> + order:[`Sorted | `Undefined] -> + init:'a -> + f:(key -> tree -> 'a -> 'a Lwt.t) -> + 'a Lwt.t +end + +module Kind : sig + type t = [`Value | `Tree] +end + +module type TREE = sig + (** [Tree] provides immutable, in-memory partial mirror of the + context, with lazy reads and delayed writes. + + Trees are immutable and non-persistent (they disappear if the + host crash), held in memory for efficiency, where reads are done + lazily and writes are done only when needed, e.g. on + [Context.commit]. If a key is modified twice, only the last + value will be written to disk on commit. *) + + (** The type for context views. *) + type t + + (** The type for context trees. *) + type tree + + include VIEW with type t := tree and type tree := tree + + (** [empty _] is the empty tree. *) + val empty : t -> tree + + (** [is_empty t] is true iff [t] is [empty _]. *) + val is_empty : tree -> bool + + (** [kind t] is [t]'s kind. It's either a tree node or a leaf + value. *) + val kind : tree -> Kind.t + + (** [to_value t] is an Lwt promise that resolves to [Some v] if [t] + is a leaf tree and [None] otherwise. It is equivalent to [find t + []]. *) + val to_value : tree -> value option Lwt.t + + (** [of_value _ v] is an Lwt promise that resolves to the leaf tree + [v]. Is is equivalent to [add (empty _) [] v]. *) + val of_value : t -> value -> tree Lwt.t + + (** [hash t] is [t]'s Merkle hash. *) + val hash : tree -> Context_hash.t + + (** [equal x y] is true iff [x] and [y] have the same Merkle hash. *) + val equal : tree -> tree -> bool + + (** {2 Caches} *) + + (** [clear ?depth t] clears all caches in the tree [t] for subtrees with a + depth higher than [depth]. If [depth] is not set, all of the subtrees are + cleared. *) + val clear : ?depth:int -> tree -> unit +end + +include VIEW with type key = string list and type value = bytes + +module Tree : + TREE + with type t := t + and type key := key + and type value := value + and type tree := tree + +val register_resolver : + 'a Base58.encoding -> (t -> string -> 'a list Lwt.t) -> unit + +val complete : t -> string -> string list Lwt.t + +(** Get the hash version used for the context *) +val get_hash_version : t -> Context_hash.Version.t + +(** Set the hash version used for the context. It may recalculate the hashes + of the whole context, which can be a long process. + Returns an Error if the hash version is unsupported. *) +val set_hash_version : + t -> Context_hash.Version.t -> t Error_monad.shell_tzresult Lwt.t + +type cache_key + +type cache_value = .. + +module type CACHE = sig + (** Type for context view. A context contains a cache. A cache is + made of subcaches. Each subcache has its own size limit. The + limit of its subcache is called a layout and can be initialized + via the [set_cache_layout] function. *) + type t + + (** Size for subcaches and values of the cache. Units are not + specified and left to the economic protocol. *) + type size + + (** Index type to index caches. *) + type index + + (** Identifier type for keys. *) + type identifier + + (** A key uniquely identifies a cached [value] in some subcache. *) + type key + + (** Cached values inhabit an extensible type. *) + type value = .. + + (** [key_of_identifier ~cache_index identifier] builds a key from the + [cache_index] and the [identifier]. + + No check are made to ensure the validity of the index. *) + val key_of_identifier : cache_index:index -> identifier -> key + + (** [identifier_of_key key] returns the identifier associated to the + [key]. *) + val identifier_of_key : key -> identifier + + (** [pp fmt cache] is a pretty printter for a [cache]. *) + val pp : Format.formatter -> t -> unit + + (** [find ctxt k = Some v] if [v] is the value associated to [k] in + in the cache where [k] is. Returns [None] if there is no such + value in the cache of [k]. This function is in the Lwt monad + because if the value has not been constructed, it is constructed + on the fly. *) + val find : t -> key -> value option Lwt.t + + (** [set_cache_layout ctxt layout] sets the caches of [ctxt] to + comply with given [layout]. If there was already a cache in + [ctxt], it is erased by the new layout. + + Otherwise, a fresh collection of empty caches is reconstructed + from the new [layout]. Notice that cache [key]s are invalidated + in that case, i.e., [get t k] will return [None]. *) + val set_cache_layout : t -> size list -> t Lwt.t + + (** [update ctxt k (Some (e, size))] returns a cache where the value + [e] of [size] is associated to key [k]. If [k] is already in the + cache, the cache entry is updated. + + [update ctxt k None] removes [k] from the cache. *) + val update : t -> key -> (value * size) option -> t + + (** [sync ctxt ~cache_nonce] updates the context with the domain of + the cache computed so far. Such function is expected to be called + at the end of the validation of a block, when there is no more + accesses to the cache. + + [cache_nonce] identifies the block that introduced new cache + entries. The nonce should identify uniquely the block which + modifies this value. It cannot be the block hash for circularity + reasons: The value of the nonce is stored onto the context and + consequently influences the context hash of the very same + block. Such nonce cannot be determined by the shell and its + computation is delegated to the economic protocol. + *) + val sync : t -> cache_nonce:Bytes.t -> t Lwt.t + + (** [clear ctxt] removes all cache entries. *) + val clear : t -> t + + (** {3 Cache introspection} *) + + (** [list_keys ctxt ~cache_index] returns the list of cached keys in + cache numbered [cache_index] along with their respective + [size]. The returned list is sorted in terms of their age in the + cache, the oldest coming first. If [cache_index] is invalid, + then this function returns [None]. *) + val list_keys : t -> cache_index:index -> (key * size) list option + + (** [key_rank index ctxt key] returns the number of cached value older + than the given [key]; or, [None] if the [key] is not a cache key. *) + val key_rank : t -> key -> int option + + (** {3 Cache helpers for RPCs} *) + + (** [future_cache_expectation ctxt ~time_in_blocks] returns [ctxt] except + that the entries of the caches that are presumably too old to + still be in the caches in [n_blocks] are removed. + + This function is based on a heuristic. The context maintains + the median of the number of removed entries: this number is + multipled by `n_blocks` to determine the entries that are + likely to be removed in `n_blocks`. *) + val future_cache_expectation : t -> time_in_blocks:int -> t + + (** [cache_size ctxt ~cache_index] returns an overapproximation of + the size of the cache. Returns [None] if [cache_index] is not a + valid cache index. *) + val cache_size : t -> cache_index:index -> size option + + (** [cache_size_limit ctxt ~cache_index] returns the maximal size of + the cache indexed by [cache_index]. Returns [None] if + [cache_index] is not a valid cache index. *) + val cache_size_limit : t -> cache_index:index -> size option +end + +module Cache : + CACHE + with type t := t + and type size := int + and type index := int + and type identifier := string + and type key = cache_key + and type value = cache_value diff --git a/src/lib_protocol_environment/sigs/v5/context_hash.mli b/src/lib_protocol_environment/sigs/v5/context_hash.mli new file mode 100644 index 0000000000..104973b351 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/context_hash.mli @@ -0,0 +1,47 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Committed context hashes / IDs. *) +include S.HASH + +(** The module for representing the hash version of a context *) +module Version : sig + (** The type for hash versions. *) + type t = private int + + include Compare.S with type t := t + + (** [pp] is the pretty-printer for hash versions. *) + val pp : Format.formatter -> t -> unit + + (** [encoding] is the data encoding for hash versions. *) + val encoding : t Data_encoding.t + + (** [of_int i] is the hash version equivalent to [i]. + This function raises [Invalid_argument] if [i] is not an unsigned 16-bit integer. *) + val of_int : int -> t +end + +type version = Version.t diff --git a/src/lib_protocol_environment/sigs/v5/data_encoding.mli b/src/lib_protocol_environment/sigs/v5/data_encoding.mli new file mode 100644 index 0000000000..3d769e9706 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/data_encoding.mli @@ -0,0 +1,445 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** In memory JSON data *) +type json = + [ `O of (string * json) list + | `Bool of bool + | `Float of float + | `A of json list + | `Null + | `String of string ] + +type json_schema + +type 'a t + +type 'a encoding = 'a t + +val classify : 'a encoding -> [`Fixed of int | `Dynamic | `Variable] + +val splitted : json:'a encoding -> binary:'a encoding -> 'a encoding + +val null : unit encoding + +val empty : unit encoding + +val unit : unit encoding + +val constant : string -> unit encoding + +val int8 : int encoding + +val uint8 : int encoding + +val int16 : int encoding + +val uint16 : int encoding + +val int31 : int encoding + +val int32 : int32 encoding + +val int64 : int64 encoding + +val n : Z.t encoding + +val z : Z.t encoding + +val bool : bool encoding + +val string : string encoding + +val bytes : bytes encoding + +val option : 'a encoding -> 'a option encoding + +val string_enum : (string * 'a) list -> 'a encoding + +module Fixed : sig + val string : int -> string encoding + + val bytes : int -> bytes encoding + + val add_padding : 'a encoding -> int -> 'a encoding +end + +module Variable : sig + val string : string encoding + + val bytes : bytes encoding + + val array : ?max_length:int -> 'a encoding -> 'a array encoding + + val list : ?max_length:int -> 'a encoding -> 'a list encoding +end + +module Bounded : sig + val string : int -> string encoding + + val bytes : int -> bytes encoding +end + +val dynamic_size : + ?kind:[`Uint30 | `Uint16 | `Uint8] -> 'a encoding -> 'a encoding + +val json : json encoding + +val json_schema : json_schema encoding + +type 'a field + +val req : + ?title:string -> ?description:string -> string -> 't encoding -> 't field + +val opt : + ?title:string -> + ?description:string -> + string -> + 't encoding -> + 't option field + +val varopt : + ?title:string -> + ?description:string -> + string -> + 't encoding -> + 't option field + +val dft : + ?title:string -> + ?description:string -> + string -> + 't encoding -> + 't -> + 't field + +val obj1 : 'f1 field -> 'f1 encoding + +val obj2 : 'f1 field -> 'f2 field -> ('f1 * 'f2) encoding + +val obj3 : 'f1 field -> 'f2 field -> 'f3 field -> ('f1 * 'f2 * 'f3) encoding + +val obj4 : + 'f1 field -> + 'f2 field -> + 'f3 field -> + 'f4 field -> + ('f1 * 'f2 * 'f3 * 'f4) encoding + +val obj5 : + 'f1 field -> + 'f2 field -> + 'f3 field -> + 'f4 field -> + 'f5 field -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5) encoding + +val obj6 : + 'f1 field -> + 'f2 field -> + 'f3 field -> + 'f4 field -> + 'f5 field -> + 'f6 field -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6) encoding + +val obj7 : + 'f1 field -> + 'f2 field -> + 'f3 field -> + 'f4 field -> + 'f5 field -> + 'f6 field -> + 'f7 field -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6 * 'f7) encoding + +val obj8 : + 'f1 field -> + 'f2 field -> + 'f3 field -> + 'f4 field -> + 'f5 field -> + 'f6 field -> + 'f7 field -> + 'f8 field -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6 * 'f7 * 'f8) encoding + +val obj9 : + 'f1 field -> + 'f2 field -> + 'f3 field -> + 'f4 field -> + 'f5 field -> + 'f6 field -> + 'f7 field -> + 'f8 field -> + 'f9 field -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6 * 'f7 * 'f8 * 'f9) encoding + +val obj10 : + 'f1 field -> + 'f2 field -> + 'f3 field -> + 'f4 field -> + 'f5 field -> + 'f6 field -> + 'f7 field -> + 'f8 field -> + 'f9 field -> + 'f10 field -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6 * 'f7 * 'f8 * 'f9 * 'f10) encoding + +val tup1 : 'f1 encoding -> 'f1 encoding + +val tup2 : 'f1 encoding -> 'f2 encoding -> ('f1 * 'f2) encoding + +val tup3 : + 'f1 encoding -> 'f2 encoding -> 'f3 encoding -> ('f1 * 'f2 * 'f3) encoding + +val tup4 : + 'f1 encoding -> + 'f2 encoding -> + 'f3 encoding -> + 'f4 encoding -> + ('f1 * 'f2 * 'f3 * 'f4) encoding + +val tup5 : + 'f1 encoding -> + 'f2 encoding -> + 'f3 encoding -> + 'f4 encoding -> + 'f5 encoding -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5) encoding + +val tup6 : + 'f1 encoding -> + 'f2 encoding -> + 'f3 encoding -> + 'f4 encoding -> + 'f5 encoding -> + 'f6 encoding -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6) encoding + +val tup7 : + 'f1 encoding -> + 'f2 encoding -> + 'f3 encoding -> + 'f4 encoding -> + 'f5 encoding -> + 'f6 encoding -> + 'f7 encoding -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6 * 'f7) encoding + +val tup8 : + 'f1 encoding -> + 'f2 encoding -> + 'f3 encoding -> + 'f4 encoding -> + 'f5 encoding -> + 'f6 encoding -> + 'f7 encoding -> + 'f8 encoding -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6 * 'f7 * 'f8) encoding + +val tup9 : + 'f1 encoding -> + 'f2 encoding -> + 'f3 encoding -> + 'f4 encoding -> + 'f5 encoding -> + 'f6 encoding -> + 'f7 encoding -> + 'f8 encoding -> + 'f9 encoding -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6 * 'f7 * 'f8 * 'f9) encoding + +val tup10 : + 'f1 encoding -> + 'f2 encoding -> + 'f3 encoding -> + 'f4 encoding -> + 'f5 encoding -> + 'f6 encoding -> + 'f7 encoding -> + 'f8 encoding -> + 'f9 encoding -> + 'f10 encoding -> + ('f1 * 'f2 * 'f3 * 'f4 * 'f5 * 'f6 * 'f7 * 'f8 * 'f9 * 'f10) encoding + +val merge_objs : 'o1 encoding -> 'o2 encoding -> ('o1 * 'o2) encoding + +val merge_tups : 'a1 encoding -> 'a2 encoding -> ('a1 * 'a2) encoding + +val array : ?max_length:int -> 'a encoding -> 'a array encoding + +val list : ?max_length:int -> 'a encoding -> 'a list encoding + +val assoc : 'a encoding -> (string * 'a) list encoding + +type case_tag = Tag of int | Json_only + +type 't case + +val case : + title:string -> + ?description:string -> + case_tag -> + 'a encoding -> + ('t -> 'a option) -> + ('a -> 't) -> + 't case + +type match_result + +type 'a matching_function = 'a -> match_result + +(* [tag_size] is not declared in the upstream library, instead, the expanded + polymorphic-variant type-expression is used as is. We include it in the + protocol environment to help coq-of-ocaml process the files. *) +type tag_size = [`Uint8 | `Uint16] + +val matched : ?tag_size:tag_size -> int -> 'a encoding -> 'a -> match_result + +val matching : + ?tag_size:tag_size -> 't matching_function -> 't case list -> 't encoding + +val union : ?tag_size:tag_size -> 't case list -> 't encoding + +val def : + string -> ?title:string -> ?description:string -> 't encoding -> 't encoding + +val conv : + ('a -> 'b) -> ('b -> 'a) -> ?schema:json_schema -> 'b encoding -> 'a encoding + +val conv_with_guard : + ('a -> 'b) -> + ('b -> ('a, string) result) -> + ?schema:json_schema -> + 'b encoding -> + 'a encoding + +val with_decoding_guard : + ('a -> (unit, string) result) -> 'a encoding -> 'a encoding + +val mu : + string -> + ?title:string -> + ?description:string -> + ('a encoding -> 'a encoding) -> + 'a encoding + +type 'a lazy_t + +val lazy_encoding : 'a encoding -> 'a lazy_t encoding + +val force_decode : 'a lazy_t -> 'a option + +val force_bytes : 'a lazy_t -> bytes + +val make_lazy : 'a encoding -> 'a -> 'a lazy_t + +val apply_lazy : + fun_value:('a -> 'b) -> + fun_bytes:(bytes -> 'b) -> + fun_combine:('b -> 'b -> 'b) -> + 'a lazy_t -> + 'b + +module Json : sig + val schema : ?definitions_path:string -> 'a encoding -> json_schema + + val construct : 't encoding -> 't -> json + + val destruct : 't encoding -> json -> 't + + (** JSON Error *) + + type path = path_item list + + and path_item = + [ `Field of string (** A field in an object. *) + | `Index of int (** An index in an array. *) + | `Star (** Any / every field or index. *) + | `Next (** The next element after an array. *) ] + + (** Exception raised by destructors, with the location in the original + JSON structure and the specific error. *) + exception Cannot_destruct of (path * exn) + + (** Unexpected kind of data encountered (w/ the expectation). *) + exception Unexpected of string * string + + (** Some {!union} couldn't be destructed, w/ the reasons for each {!case}. *) + exception No_case_matched of exn list + + (** Array of unexpected size encountered (w/ the expectation). *) + exception Bad_array_size of int * int + + (** Missing field in an object. *) + exception Missing_field of string + + (** Supernumerary field in an object. *) + exception Unexpected_field of string + + val print_error : + ?print_unknown:(Format.formatter -> exn -> unit) -> + Format.formatter -> + exn -> + unit + + (** Helpers for writing encoders. *) + val cannot_destruct : ('a, Format.formatter, unit, 'b) format4 -> 'a + + val wrap_error : ('a -> 'b) -> 'a -> 'b + + val pp : Format.formatter -> json -> unit +end + +module Binary : sig + val fixed_length : 'a encoding -> int option + + val maximum_length : 'a encoding -> int option + + val length : 'a encoding -> 'a -> int + + val to_bytes_opt : ?buffer_size:int -> 'a encoding -> 'a -> bytes option + + val to_bytes_exn : ?buffer_size:int -> 'a encoding -> 'a -> bytes + + val of_bytes_opt : 'a encoding -> bytes -> 'a option + + val to_string_opt : ?buffer_size:int -> 'a encoding -> 'a -> string option + + val to_string_exn : ?buffer_size:int -> 'a encoding -> 'a -> string + + val of_string_opt : 'a encoding -> string -> 'a option +end + +(** [check_size size encoding] ensures that the binary encoding + of a value will not be allowed to exceed [size] bytes. The reader + and the writer fails otherwise. This function do not modify + the JSON encoding. *) +val check_size : int -> 'a encoding -> 'a encoding diff --git a/src/lib_protocol_environment/sigs/v5/ed25519.mli b/src/lib_protocol_environment/sigs/v5/ed25519.mli new file mode 100644 index 0000000000..2d96e41b15 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/ed25519.mli @@ -0,0 +1,28 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Tezos - Ed25519 cryptography *) + +include S.SIGNATURE with type watermark := bytes diff --git a/src/lib_protocol_environment/sigs/v5/equality_witness.mli b/src/lib_protocol_environment/sigs/v5/equality_witness.mli new file mode 100644 index 0000000000..9c3ea56fd2 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/equality_witness.mli @@ -0,0 +1,62 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** + + This module provides support for type equalities and runtime type identifiers. + + For two types [a] and [b], [(a, b) eq] is a witness that [a = b]. This is + a standard generalized algebraic datatype on top of which type-level + programming techniques can be implemented. + + Given a type [a], an inhabitant of [a t] is a dynamic identifier for [a]. + Identifiers can be compared for equality. They are also equipped with a + hash function. + + WARNING: the hash function changes at every run. Therefore, the result + of the hash function should never be stored. + + Notice that dynamic identifiers are not unique: two identifiers for [a] + can have distinct hash and can be physically distinct. Hence, only [eq] + can decide if two type identifiers correspond to the same type. + +*) + +(** A proof witness that two types are equal. *) +type (_, _) eq = Refl : ('a, 'a) eq + +(** A dynamic representation for ['a]. *) +type 'a t + +(** [make ()] is a dynamic representation for ['a]. A fresh identifier + is returned each time [make ()] is evaluated. *) +val make : unit -> 'a t + +(** [eq ida idb] returns a proof that [a = b] if [ida] and [idb] + identify the same type. *) +val eq : 'a t -> 'b t -> ('a, 'b) eq option + +(** [hash id] returns a hash for [id]. *) +val hash : 'a t -> int diff --git a/src/lib_protocol_environment/sigs/v5/error_monad.mli b/src/lib_protocol_environment/sigs/v5/error_monad.mli new file mode 100644 index 0000000000..4858b59246 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/error_monad.mli @@ -0,0 +1,224 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2020 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type error_category = [`Branch | `Temporary | `Permanent | `Outdated] + +(** CORE : errors *) + +type error = .. + +val error_encoding : error Data_encoding.t + +val pp : Format.formatter -> error -> unit + +(** EXT : error registration/query *) + +val register_error_kind : + error_category -> + id:string -> + title:string -> + description:string -> + ?pp:(Format.formatter -> 'err -> unit) -> + 'err Data_encoding.t -> + (error -> 'err option) -> + ('err -> error) -> + unit + +val json_of_error : error -> Data_encoding.json + +val error_of_json : Data_encoding.json -> error + +type error_info = { + category : error_category; + id : string; + title : string; + description : string; + schema : Data_encoding.json_schema; +} + +val pp_info : Format.formatter -> error_info -> unit + +(** Retrieves information of registered errors *) +val get_registered_errors : unit -> error_info list + +(** MONAD : trace, monad, etc. *) + +type 'err trace + +type 'a tzresult = ('a, error trace) result + +val make_trace_encoding : 'error Data_encoding.t -> 'error trace Data_encoding.t + +val trace_encoding : error trace Data_encoding.t + +val pp_trace : Format.formatter -> error trace -> unit + +val result_encoding : 'a Data_encoding.t -> 'a tzresult Data_encoding.t + +val ok : 'a -> ('a, 'trace) result + +val return : 'a -> ('a, 'trace) result Lwt.t + +val return_unit : (unit, 'trace) result Lwt.t + +val return_none : ('a option, 'trace) result Lwt.t + +val return_some : 'a -> ('a option, 'trace) result Lwt.t + +val return_nil : ('a list, 'trace) result Lwt.t + +val return_true : (bool, 'trace) result Lwt.t + +val return_false : (bool, 'trace) result Lwt.t + +val error : 'err -> ('a, 'err trace) result + +val trace_of_error : 'err -> 'err trace + +val fail : 'err -> ('a, 'err trace) result Lwt.t + +val ( >>= ) : 'a Lwt.t -> ('a -> 'b Lwt.t) -> 'b Lwt.t + +val ( >|= ) : 'a Lwt.t -> ('a -> 'b) -> 'b Lwt.t + +val ( >>? ) : + ('a, 'trace) result -> ('a -> ('b, 'trace) result) -> ('b, 'trace) result + +val ( >|? ) : ('a, 'trace) result -> ('a -> 'b) -> ('b, 'trace) result + +val ( >>=? ) : + ('a, 'trace) result Lwt.t -> + ('a -> ('b, 'trace) result Lwt.t) -> + ('b, 'trace) result Lwt.t + +val ( >|=? ) : + ('a, 'trace) result Lwt.t -> ('a -> 'b) -> ('b, 'trace) result Lwt.t + +val ( >>?= ) : + ('a, 'trace) result -> + ('a -> ('b, 'trace) result Lwt.t) -> + ('b, 'trace) result Lwt.t + +val ( >|?= ) : + ('a, 'trace) result -> ('a -> 'b Lwt.t) -> ('b, 'trace) result Lwt.t + +val record_trace : 'err -> ('a, 'err trace) result -> ('a, 'err trace) result + +val trace : + 'err -> ('b, 'err trace) result Lwt.t -> ('b, 'err trace) result Lwt.t + +val record_trace_eval : + (unit -> 'err) -> ('a, 'err trace) result -> ('a, 'err trace) result + +val trace_eval : + (unit -> 'err) -> + ('b, 'err trace) result Lwt.t -> + ('b, 'err trace) result Lwt.t + +val error_unless : bool -> 'err -> (unit, 'err trace) result + +val error_when : bool -> 'err -> (unit, 'err trace) result + +val fail_unless : bool -> 'err -> (unit, 'err trace) result Lwt.t + +val fail_when : bool -> 'err -> (unit, 'err trace) result Lwt.t + +val unless : + bool -> (unit -> (unit, 'trace) result Lwt.t) -> (unit, 'trace) result Lwt.t + +val when_ : + bool -> (unit -> (unit, 'trace) result Lwt.t) -> (unit, 'trace) result Lwt.t + +val dont_wait : + (exn -> unit) -> + ('trace -> unit) -> + (unit -> (unit, 'trace) result Lwt.t) -> + unit + +(** [catch f] executes [f] within a try-with block and wraps exceptions within + a [tzresult]. [catch f] is equivalent to + [try Ok (f ()) with e -> Error (error_of_exn e)]. + + If [catch_only] is set, then only exceptions [e] such that [catch_only e] is + [true] are caught. + + Whether [catch_only] is set or not, this function never catches + non-deterministic runtime exceptions of OCaml such as {!Stack_overflow} and + {!Out_of_memory} nor system-exceptions such as {!Unix.Unix_error} and + {!Sys_error}. *) +val catch : ?catch_only:(exn -> bool) -> (unit -> 'a) -> 'a tzresult + +(** [catch_f f handler] is equivalent to [map_error (catch f) handler]. + In other words, it catches exceptions in [f ()] and either returns the + value in an [Ok] or passes the exception to [handler] for the [Error]. + + [catch_only] has the same use as with [catch]. The same restriction on + catching non-deterministic runtime exceptions applies. *) +val catch_f : + ?catch_only:(exn -> bool) -> (unit -> 'a) -> (exn -> error) -> 'a tzresult + +(** [catch_s] is like [catch] but when [f] returns a promise. It is equivalent + to + +{[ +Lwt.try_bind f + (fun v -> Lwt.return (Ok v)) + (fun e -> Lwt.return (Error (error_of_exn e))) +]} + + If [catch_only] is set, then only exceptions [e] such that [catch_only e] is + [true] are caught. + + Whether [catch_only] is set or not, this function never catches + non-deterministic runtime exceptions of OCaml such as {!Stack_overflow} and + {!Out_of_memory} nor system-exceptions such as {!Unix.Unix_error} and + {!Sys_error}. *) +val catch_s : + ?catch_only:(exn -> bool) -> (unit -> 'a Lwt.t) -> 'a tzresult Lwt.t + +(* Synchronisation *) + +val join_e : (unit, 'err trace) result list -> (unit, 'err trace) result + +val all_e : ('a, 'err trace) result list -> ('a list, 'err trace) result + +val both_e : + ('a, 'err trace) result -> + ('b, 'err trace) result -> + ('a * 'b, 'err trace) result + +(**/**) + +(* The protocol environment needs to know about shell's tzresult because they are + used for in-protocol RPCs. Moreover, some light processing on these results + is done in the protocol which requires the type to be concrete. + + The type is kept private because the environment is sole responsible for + wrapping the protocol's errors into the shell's. *) + +type shell_tztrace + +type 'a shell_tzresult = ('a, shell_tztrace) result diff --git a/src/lib_protocol_environment/sigs/v5/fallbackArray.mli b/src/lib_protocol_environment/sigs/v5/fallbackArray.mli new file mode 100644 index 0000000000..71dd14d3c3 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/fallbackArray.mli @@ -0,0 +1,70 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** + + This module implements arrays equipped with accessors that cannot + raise exceptions. Reading out of the bounds of the arrays return a + fallback value fixed at array construction time, writing out of the + bounds of the arrays is ignored. + +*) + +(** The type for array containing values of type ['a]. *) +type 'a t + +(** [make len v] builds an array [a] initialized [len] cells with + [v]. The value [v] is the fallback value for [a]. *) +val make : int -> 'a -> 'a t + +(** [fallback a] returns the fallback value for [a]. *) +val fallback : 'a t -> 'a + +(** [length a] returns the length of [a]. *) +val length : 'a t -> int + +(** [get a idx] returns the contents of the cell of index [idx] in + [a]. If [idx] < 0 or [idx] >= [length a], [get a idx] = + [fallback a]. *) +val get : 'a t -> int -> 'a + +(** [set a idx value] updates the cell of index [idx] with [value]. + If [idx] < 0 or [idx] >= [length a], [a] is unchanged. *) +val set : 'a t -> int -> 'a -> unit + +(** [iter f a] iterates [f] over the cells of [a] from the + cell indexed [0] to the cell indexed [length a - 1]. *) +val iter : ('a -> unit) -> 'a t -> unit + +(** [map f a] computes a new array obtained by applying [f] to each + cell contents of [a]. Notice that the fallback value of the new + array is [f (fallback a)]. *) +val map : ('a -> 'b) -> 'a t -> 'b t + +(** [fold a init f] traverses [a] from the cell indexed [0] to the + cell indexed [length a - 1] and transforms [accu] into [f accu x] + where [x] is the content of the cell under focus. [accu] is + [init] on the first iteration. *) +val fold : ('b -> 'a -> 'b) -> 'a t -> 'b -> 'b diff --git a/src/lib_protocol_environment/sigs/v5/fitness.mli b/src/lib_protocol_environment/sigs/v5/fitness.mli new file mode 100644 index 0000000000..3408d03a94 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/fitness.mli @@ -0,0 +1,28 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** The fitness of a block is defined as a list of bytes, + compared in a lexicographical order (longer list are greater). *) +include S.T with type t = bytes list diff --git a/src/lib_protocol_environment/sigs/v5/format.mli b/src/lib_protocol_environment/sigs/v5/format.mli new file mode 100644 index 0000000000..e5b04e2bca --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/format.mli @@ -0,0 +1,747 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Pierre Weis, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** Pretty-printing. + + This module implements a pretty-printing facility to format values + within {{!boxes}'pretty-printing boxes'} and {{!tags}'semantic tags'} + combined with a set of {{!fpp}printf-like functions}. + The pretty-printer splits lines at specified {{!breaks}break hints}, + and indents lines according to the box structure. + Similarly, {{!tags}semantic tags} can be used to decouple text + presentation from its contents. + + This pretty-printing facility is implemented as an overlay on top of + abstract {{!section:formatter}formatters} which provide basic output + functions. + Some formatters are predefined, notably: + - {!std_formatter} outputs to {{!Stdlib.stdout}stdout} + - {!err_formatter} outputs to {{!Stdlib.stderr}stderr} + + Most functions in the {!Format} module come in two variants: + a short version that operates on {!std_formatter} and the + generic version prefixed by [pp_] that takes a formatter + as its first argument. + + More formatters can be created with {!formatter_of_out_channel}, + {!formatter_of_buffer}, {!formatter_of_symbolic_output_buffer} + or using {{!section:formatter}custom formatters}. + +*) + +(** {1 Introduction} + For a gentle introduction to the basics of pretty-printing using + [Format], read + {{:http://caml.inria.fr/resources/doc/guides/format.en.html} + http://caml.inria.fr/resources/doc/guides/format.en.html}. + + You may consider this module as providing an extension to the + [printf] facility to provide automatic line splitting. The addition of + pretty-printing annotations to your regular [printf] format strings gives + you fancy indentation and line breaks. + Pretty-printing annotations are described below in the documentation of + the function {!Format.fprintf}. + + You may also use the explicit pretty-printing box management and printing + functions provided by this module. This style is more basic but more + verbose than the concise [fprintf] format strings. + + For instance, the sequence + [open_box 0; print_string "x ="; print_space (); + print_int 1; close_box (); print_newline ()] + that prints [x = 1] within a pretty-printing box, can be + abbreviated as [printf "@[%s@ %i@]@." "x =" 1], or even shorter + [printf "@[x =@ %i@]@." 1]. + + Rule of thumb for casual users of this library: + - use simple pretty-printing boxes (as obtained by [open_box 0]); + - use simple break hints as obtained by [print_cut ()] that outputs a + simple break hint, or by [print_space ()] that outputs a space + indicating a break hint; + - once a pretty-printing box is open, display its material with basic + printing functions (e. g. [print_int] and [print_string]); + - when the material for a pretty-printing box has been printed, call + [close_box ()] to close the box; + - at the end of pretty-printing, flush the pretty-printer to display all + the remaining material, e.g. evaluate [print_newline ()]. + + The behavior of pretty-printing commands is unspecified + if there is no open pretty-printing box. Each box opened by + one of the [open_] functions below must be closed using [close_box] + for proper formatting. Otherwise, some of the material printed in the + boxes may not be output, or may be formatted incorrectly. + + In case of interactive use, each phrase is executed in the initial state + of the standard pretty-printer: after each phrase execution, the + interactive system closes all open pretty-printing boxes, flushes all + pending text, and resets the standard pretty-printer. + + Warning: mixing calls to pretty-printing functions of this module with + calls to {!Stdlib} low level output functions is error prone. + + The pretty-printing functions output material that is delayed in the + pretty-printer queue and stacks in order to compute proper line + splitting. In contrast, basic I/O output functions write directly in + their output device. As a consequence, the output of a basic I/O function + may appear before the output of a pretty-printing function that has been + called before. For instance, + [ + Stdlib.print_string "<"; + Format.print_string "PRETTY"; + Stdlib.print_string ">"; + Format.print_string "TEXT"; + ] + leads to output [<>PRETTYTEXT]. + +*) + +type formatter +(** Abstract data corresponding to a pretty-printer (also called a + formatter) and all its machinery. See also {!section:formatter}. *) + +(** {1:boxes Pretty-printing boxes} *) + +(** The pretty-printing engine uses the concepts of pretty-printing box and + break hint to drive indentation and line splitting behavior of the + pretty-printer. + + Each different pretty-printing box kind introduces a specific line splitting + policy: + + - within an {e horizontal} box, break hints never split the line (but the + line may be split in a box nested deeper), + - within a {e vertical} box, break hints always split the line, + - within an {e horizontal/vertical} box, if the box fits on the current line + then break hints never split the line, otherwise break hint always split + the line, + - within a {e compacting} box, a break hint never splits the line, + unless there is no more room on the current line. + + Note that line splitting policy is box specific: the policy of a box does + not rule the policy of inner boxes. For instance, if a vertical box is + nested in an horizontal box, all break hints within the vertical box will + split the line. +*) + +val pp_open_box : formatter -> int -> unit +(** [pp_open_box ppf d] opens a new compacting pretty-printing box with + offset [d] in the formatter [ppf]. + + Within this box, the pretty-printer prints as much as possible material on + every line. + + A break hint splits the line if there is no more room on the line to + print the remainder of the box. + + Within this box, the pretty-printer emphasizes the box structure: a break + hint also splits the line if the splitting ``moves to the left'' + (i.e. the new line gets an indentation smaller than the one of the current + line). + + This box is the general purpose pretty-printing box. + + If the pretty-printer splits the line in the box, offset [d] is added to + the current indentation. +*) + + +val pp_close_box : formatter -> unit -> unit +(** Closes the most recently open pretty-printing box. *) + +val pp_open_hbox : formatter -> unit -> unit +(** [pp_open_hbox ppf ()] opens a new 'horizontal' pretty-printing box. + + This box prints material on a single line. + + Break hints in a horizontal box never split the line. + (Line splitting may still occur inside boxes nested deeper). +*) + +val pp_open_vbox : formatter -> int -> unit +(** [pp_open_vbox ppf d] opens a new 'vertical' pretty-printing box + with offset [d]. + + This box prints material on as many lines as break hints in the box. + + Every break hint in a vertical box splits the line. + + If the pretty-printer splits the line in the box, [d] is added to the + current indentation. +*) + +val pp_open_hvbox : formatter -> int -> unit +(** [pp_open_hvbox ppf d] opens a new 'horizontal/vertical' pretty-printing box + with offset [d]. + + This box behaves as an horizontal box if it fits on a single line, + otherwise it behaves as a vertical box. + + If the pretty-printer splits the line in the box, [d] is added to the + current indentation. +*) + +val pp_open_hovbox : formatter -> int -> unit +(** [pp_open_hovbox ppf d] opens a new 'horizontal-or-vertical' + pretty-printing box with offset [d]. + + This box prints material as much as possible on every line. + + A break hint splits the line if there is no more room on the line to + print the remainder of the box. + + If the pretty-printer splits the line in the box, [d] is added to the + current indentation. +*) + +(** {1 Formatting functions} *) + +val pp_print_string : formatter -> string -> unit +(** [pp_print_string ppf s] prints [s] in the current pretty-printing box. *) + +val pp_print_as : formatter -> int -> string -> unit +(** [pp_print_as ppf len s] prints [s] in the current pretty-printing box. + The pretty-printer formats [s] as if it were of length [len]. +*) + +val pp_print_int : formatter -> int -> unit +(** Print an integer in the current pretty-printing box. *) + +val pp_print_char : formatter -> char -> unit +(** Print a character in the current pretty-printing box. *) + +val pp_print_bool : formatter -> bool -> unit +(** Print a boolean in the current pretty-printing box. *) + +(** {1:breaks Break hints} *) + +(** A 'break hint' tells the pretty-printer to output some space or split the + line whichever way is more appropriate to the current pretty-printing box + splitting rules. + + Break hints are used to separate printing items and are mandatory to let + the pretty-printer correctly split lines and indent items. + + Simple break hints are: + - the 'space': output a space or split the line if appropriate, + - the 'cut': split the line if appropriate. + + Note: the notions of space and line splitting are abstract for the + pretty-printing engine, since those notions can be completely redefined + by the programmer. + However, in the pretty-printer default setting, ``output a space'' simply + means printing a space character (ASCII code 32) and ``split the line'' + means printing a newline character (ASCII code 10). +*) + +val pp_print_space : formatter -> unit -> unit +(** [pp_print_space ppf ()] emits a 'space' break hint: + the pretty-printer may split the line at this point, + otherwise it prints one space. + + [pp_print_space ppf ()] is equivalent to [pp_print_break ppf 1 0]. +*) + +val pp_print_cut : formatter -> unit -> unit +(** [pp_print_cut ppf ()] emits a 'cut' break hint: + the pretty-printer may split the line at this point, + otherwise it prints nothing. + + [pp_print_cut ppf ()] is equivalent to [pp_print_break ppf 0 0]. +*) + +val pp_print_break : formatter -> int -> int -> unit +(** [pp_print_break ppf nspaces offset] emits a 'full' break hint: + the pretty-printer may split the line at this point, + otherwise it prints [nspaces] spaces. + + If the pretty-printer splits the line, [offset] is added to + the current indentation. +*) + +val pp_print_custom_break : + formatter -> + fits:(string * int * string) -> + breaks:(string * int * string) -> + unit +(** [pp_print_custom_break ppf ~fits:(s1, n, s2) ~breaks:(s3, m, s4)] emits a + custom break hint: the pretty-printer may split the line at this point. + + If it does not split the line, then the [s1] is emitted, then [n] spaces, + then [s2]. + + If it splits the line, then it emits the [s3] string, then an indent + (according to the box rules), then an offset of [m] spaces, then the [s4] + string. + + While [n] and [m] are handled by [formatter_out_functions.out_indent], the + strings will be handled by [formatter_out_functions.out_string]. This allows + for a custom formatter that handles indentation distinctly, for example, + outputs [
] tags or [ ] entities. + + The custom break is useful if you want to change which visible + (non-whitespace) characters are printed in case of break or no break. For + example, when printing a list {[ [a; b; c] ]}, you might want to add a + trailing semicolon when it is printed vertically: + + {[ +[ + a; + b; + c; +] + ]} + + You can do this as follows: + {[ +printf "@[[@;<0 2>@[a;@,b;@,c@]%t]@]@\n" + (pp_print_custom_break ~fits:("", 0, "") ~breaks:(";", 0, "")) + ]} + + @since 4.08.0 +*) + +val pp_force_newline : formatter -> unit -> unit +(** Force a new line in the current pretty-printing box. + + The pretty-printer must split the line at this point, + + Not the normal way of pretty-printing, since imperative line splitting may + interfere with current line counters and box size calculation. + Using break hints within an enclosing vertical box is a better + alternative. +*) + +val pp_print_if_newline : formatter -> unit -> unit +(** Execute the next formatting command if the preceding line + has just been split. Otherwise, ignore the next formatting + command. +*) + +(** {1 Pretty-printing termination} *) + +val pp_print_flush : formatter -> unit -> unit +(** End of pretty-printing: resets the pretty-printer to initial state. + + All open pretty-printing boxes are closed, all pending text is printed. + In addition, the pretty-printer low level output device is flushed to + ensure that all pending text is really displayed. + + Note: never use [print_flush] in the normal course of a pretty-printing + routine, since the pretty-printer uses a complex buffering machinery to + properly indent the output; manually flushing those buffers at random + would conflict with the pretty-printer strategy and result to poor + rendering. + + Only consider using [print_flush] when displaying all pending material is + mandatory (for instance in case of interactive use when you want the user + to read some text) and when resetting the pretty-printer state will not + disturb further pretty-printing. + + Warning: If the output device of the pretty-printer is an output channel, + repeated calls to [print_flush] means repeated calls to {!Stdlib.flush} + to flush the out channel; these explicit flush calls could foil the + buffering strategy of output channels and could dramatically impact + efficiency. +*) + +val pp_print_newline : formatter -> unit -> unit +(** End of pretty-printing: resets the pretty-printer to initial state. + + All open pretty-printing boxes are closed, all pending text is printed. + + Equivalent to {!print_flush} followed by a new line. + See corresponding words of caution for {!print_flush}. + + Note: this is not the normal way to output a new line; + the preferred method is using break hints within a vertical pretty-printing + box. +*) + +(** {1 Margin} *) + +val pp_set_margin : formatter -> int -> unit +(** [pp_set_margin ppf d] sets the right margin to [d] (in characters): + the pretty-printer splits lines that overflow the right margin according to + the break hints given. + Nothing happens if [d] is smaller than 2. + If [d] is too large, the right margin is set to the maximum + admissible value (which is greater than [10 ^ 9]). + If [d] is less than the current maximum indentation limit, the + maximum indentation limit is decreased while trying to preserve + a minimal ratio [max_indent/margin>=50%] and if possible + the current difference [margin - max_indent]. + + See also {!pp_set_geometry}. +*) + +val pp_get_margin : formatter -> unit -> int +(** Returns the position of the right margin. *) + +(** {1 Maximum indentation limit} *) + +val pp_set_max_indent : formatter -> int -> unit +(** [pp_set_max_indent ppf d] sets the maximum indentation limit of lines + to [d] (in characters): + once this limit is reached, new pretty-printing boxes are rejected to the + left, unless the enclosing box fully fits on the current line. + As an illustration, + {[ set_margin 10; set_max_indent 5; printf "@[123456@[7@]89A@]@." ]} + yields + {[ + 123456 + 789A + ]} + because the nested box ["@[7@]"] is opened after the maximum indentation + limit ([7>5]) and its parent box does not fit on the current line. + Either decreasing the length of the parent box to make it fit on a line: + {[ printf "@[123456@[7@]89@]@." ]} + or opening an intermediary box before the maximum indentation limit which + fits on the current line + {[ printf "@[123@[456@[7@]89@]A@]@." ]} + avoids the rejection to the left of the inner boxes and print respectively + ["123456789"] and ["123456789A"] . + Note also that vertical boxes never fit on a line whereas horizontal boxes + always fully fit on the current line. + + Nothing happens if [d] is smaller than 2. + + If [d] is too large, the limit is set to the maximum + admissible value (which is greater than [10 ^ 9]). + + If [d] is greater or equal than the current margin, it is ignored, + and the current maximum indentation limit is kept. + + See also {!pp_set_geometry}. +*) + +val pp_get_max_indent : formatter -> unit -> int +(** Return the maximum indentation limit (in characters). *) + +(** {1 Maximum formatting depth} *) + +(** The maximum formatting depth is the maximum number of pretty-printing + boxes simultaneously open. + + Material inside boxes nested deeper is printed as an ellipsis (more + precisely as the text returned by {!get_ellipsis_text} [()]). +*) + +val pp_set_max_boxes : formatter -> int -> unit +(** [pp_set_max_boxes ppf max] sets the maximum number of pretty-printing + boxes simultaneously open. + + Material inside boxes nested deeper is printed as an ellipsis (more + precisely as the text returned by {!get_ellipsis_text} [()]). + + Nothing happens if [max] is smaller than 2. +*) + +val pp_get_max_boxes : formatter -> unit -> int +(** Returns the maximum number of pretty-printing boxes allowed before + ellipsis. +*) + +val pp_over_max_boxes : formatter -> unit -> bool +(** Tests if the maximum number of pretty-printing boxes allowed have already + been opened. +*) + +(** {1 Tabulation boxes} *) + +(** + + A {e tabulation box} prints material on lines divided into cells of fixed + length. A tabulation box provides a simple way to display vertical columns + of left adjusted text. + + This box features command [set_tab] to define cell boundaries, and command + [print_tab] to move from cell to cell and split the line when there is no + more cells to print on the line. + + Note: printing within tabulation box is line directed, so arbitrary line + splitting inside a tabulation box leads to poor rendering. Yet, controlled + use of tabulation boxes allows simple printing of columns within + module {!Format}. +*) + +val pp_open_tbox : formatter -> unit -> unit +(** [open_tbox ()] opens a new tabulation box. + + This box prints lines separated into cells of fixed width. + + Inside a tabulation box, special {e tabulation markers} defines points of + interest on the line (for instance to delimit cell boundaries). + Function {!Format.set_tab} sets a tabulation marker at insertion point. + + A tabulation box features specific {e tabulation breaks} to move to next + tabulation marker or split the line. Function {!Format.print_tbreak} prints + a tabulation break. +*) + +val pp_close_tbox : formatter -> unit -> unit +(** Closes the most recently opened tabulation box. *) + +val pp_set_tab : formatter -> unit -> unit +(** Sets a tabulation marker at current insertion point. *) + +val pp_print_tab : formatter -> unit -> unit +(** [print_tab ()] emits a 'next' tabulation break hint: if not already set on + a tabulation marker, the insertion point moves to the first tabulation + marker on the right, or the pretty-printer splits the line and insertion + point moves to the leftmost tabulation marker. + + It is equivalent to [print_tbreak 0 0]. *) + +val pp_print_tbreak : formatter -> int -> int -> unit +(** [print_tbreak nspaces offset] emits a 'full' tabulation break hint. + + If not already set on a tabulation marker, the insertion point moves to the + first tabulation marker on the right and the pretty-printer prints + [nspaces] spaces. + + If there is no next tabulation marker on the right, the pretty-printer + splits the line at this point, then insertion point moves to the leftmost + tabulation marker of the box. + + If the pretty-printer splits the line, [offset] is added to + the current indentation. +*) + +(** {1 Ellipsis} *) + +val pp_set_ellipsis_text : formatter -> string -> unit +(** Set the text of the ellipsis printed when too many pretty-printing boxes + are open (a single dot, [.], by default). +*) + +val pp_get_ellipsis_text : formatter -> unit -> string +(** Return the text of the ellipsis. *) + +(** {1 Convenience formatting functions.} *) + +val pp_print_list: + ?pp_sep:(formatter -> unit -> unit) -> + (formatter -> 'a -> unit) -> (formatter -> 'a list -> unit) +(** [pp_print_list ?pp_sep pp_v ppf l] prints items of list [l], + using [pp_v] to print each item, and calling [pp_sep] + between items ([pp_sep] defaults to {!pp_print_cut}. + Does nothing on empty lists. + + @since 4.02.0 +*) + +val pp_print_text : formatter -> string -> unit +(** [pp_print_text ppf s] prints [s] with spaces and newlines respectively + printed using {!pp_print_space} and {!pp_force_newline}. + + @since 4.02.0 +*) + +val pp_print_option : + ?none:(formatter -> unit -> unit) -> + (formatter -> 'a -> unit) -> (formatter -> 'a option -> unit) +(** [pp_print_option ?none pp_v ppf o] prints [o] on [ppf] + using [pp_v] if [o] is [Some v] and [none] if it is [None]. [none] + prints nothing by default. + + @since 4.08 *) + +val pp_print_result : + ok:(formatter -> 'a -> unit) -> error:(formatter -> 'e -> unit) -> + formatter -> ('a, 'e) result -> unit +(** [pp_print_result ~ok ~error ppf r] prints [r] on [ppf] using + [ok] if [r] is [Ok _] and [error] if [r] is [Error _]. + + @since 4.08 *) + +(** {1:fpp Formatted pretty-printing} *) + +(** + Module [Format] provides a complete set of [printf] like functions for + pretty-printing using format string specifications. + + Specific annotations may be added in the format strings to give + pretty-printing commands to the pretty-printing engine. + + Those annotations are introduced in the format strings using the [@] + character. For instance, [@ ] means a space break, [@,] means a cut, + [@\[] opens a new box, and [@\]] closes the last open box. + +*) + +val fprintf : formatter -> ('a, formatter, unit) format -> 'a + +(** [fprintf ff fmt arg1 ... argN] formats the arguments [arg1] to [argN] + according to the format string [fmt], and outputs the resulting string on + the formatter [ff]. + + The format string [fmt] is a character string which contains three types of + objects: plain characters and conversion specifications as specified in + the {!Printf} module, and pretty-printing indications specific to the + [Format] module. + + The pretty-printing indication characters are introduced by + a [@] character, and their meanings are: + - [@\[]: open a pretty-printing box. The type and offset of the + box may be optionally specified with the following syntax: + the [<] character, followed by an optional box type indication, + then an optional integer offset, and the closing [>] character. + Pretty-printing box type is one of [h], [v], [hv], [b], or [hov]. + '[h]' stands for an 'horizontal' pretty-printing box, + '[v]' stands for a 'vertical' pretty-printing box, + '[hv]' stands for an 'horizontal/vertical' pretty-printing box, + '[b]' stands for an 'horizontal-or-vertical' pretty-printing box + demonstrating indentation, + '[hov]' stands a simple 'horizontal-or-vertical' pretty-printing box. + For instance, [@\[] opens an 'horizontal-or-vertical' + pretty-printing box with indentation 2 as obtained with [open_hovbox 2]. + For more details about pretty-printing boxes, see the various box opening + functions [open_*box]. + - [@\]]: close the most recently opened pretty-printing box. + - [@,]: output a 'cut' break hint, as with [print_cut ()]. + - [@ ]: output a 'space' break hint, as with [print_space ()]. + - [@;]: output a 'full' break hint as with [print_break]. The + [nspaces] and [offset] parameters of the break hint may be + optionally specified with the following syntax: + the [<] character, followed by an integer [nspaces] value, + then an integer [offset], and a closing [>] character. + If no parameters are provided, the good break defaults to a + 'space' break hint. + - [@.]: flush the pretty-printer and split the line, as with + [print_newline ()]. + - [@]: print the following item as if it were of length [n]. + Hence, [printf "@<0>%s" arg] prints [arg] as a zero length string. + If [@] is not followed by a conversion specification, + then the following character of the format is printed as if + it were of length [n]. + - [@\{]: open a semantic tag. The name of the tag may be optionally + specified with the following syntax: + the [<] character, followed by an optional string + specification, and the closing [>] character. The string + specification is any character string that does not contain the + closing character ['>']. If omitted, the tag name defaults to the + empty string. + For more details about semantic tags, see the functions {!open_stag} and + {!close_stag}. + - [@\}]: close the most recently opened semantic tag. + - [@?]: flush the pretty-printer as with [print_flush ()]. + This is equivalent to the conversion [%!]. + - [@\n]: force a newline, as with [force_newline ()], not the normal way + of pretty-printing, you should prefer using break hints inside a vertical + pretty-printing box. + + Note: To prevent the interpretation of a [@] character as a + pretty-printing indication, escape it with a [%] character. + Old quotation mode [@@] is deprecated since it is not compatible with + formatted input interpretation of character ['@']. + + Example: [printf "@[%s@ %d@]@." "x =" 1] is equivalent to + [open_box (); print_string "x ="; print_space (); + print_int 1; close_box (); print_newline ()]. + It prints [x = 1] within a pretty-printing 'horizontal-or-vertical' box. + +*) + +val sprintf : ('a, unit, string) format -> 'a +(** Same as [printf] above, but instead of printing on a formatter, + returns a string containing the result of formatting the arguments. + Note that the pretty-printer queue is flushed at the end of {e each + call} to [sprintf]. + + In case of multiple and related calls to [sprintf] to output + material on a single string, you should consider using [fprintf] + with the predefined formatter [str_formatter] and call + [flush_str_formatter ()] to get the final result. + + Alternatively, you can use [Format.fprintf] with a formatter writing to a + buffer of your own: flushing the formatter and the buffer at the end of + pretty-printing returns the desired string. +*) + +val asprintf : ('a, formatter, unit, string) format4 -> 'a +(** Same as [printf] above, but instead of printing on a formatter, + returns a string containing the result of formatting the arguments. + The type of [asprintf] is general enough to interact nicely with [%a] + conversions. + + @since 4.01.0 +*) + +val dprintf : + ('a, formatter, unit, formatter -> unit) format4 -> 'a +(** Same as {!fprintf}, except the formatter is the last argument. + [dprintf "..." a b c] is a function of type + [formatter -> unit] which can be given to a format specifier [%t]. + + This can be used as a replacement for {!asprintf} to delay + formatting decisions. Using the string returned by {!asprintf} in a + formatting context forces formatting decisions to be taken in + isolation, and the final string may be created + prematurely. {!dprintf} allows delay of formatting decisions until + the final formatting context is known. + For example: +{[ + let t = Format.dprintf "%i@ %i@ %i" 1 2 3 in + ... + Format.printf "@[%t@]" t +]} + + @since 4.08.0 +*) + + +val ifprintf : formatter -> ('a, formatter, unit) format -> 'a +(** Same as [fprintf] above, but does not print anything. + Useful to ignore some material when conditionally printing. + + @since 3.10.0 +*) + +(** Formatted Pretty-Printing with continuations. *) + +val kfprintf : + (formatter -> 'a) -> formatter -> + ('b, formatter, unit, 'a) format4 -> 'b +(** Same as [fprintf] above, but instead of returning immediately, + passes the formatter to its first argument at the end of printing. *) + +val kdprintf : + ((formatter -> unit) -> 'a) -> + ('b, formatter, unit, 'a) format4 -> 'b +(** Same as {!dprintf} above, but instead of returning immediately, + passes the suspended printer to its first argument at the end of printing. + + @since 4.08.0 +*) + +val ikfprintf : + (formatter -> 'a) -> formatter -> + ('b, formatter, unit, 'a) format4 -> 'b +(** Same as [kfprintf] above, but does not print anything. + Useful to ignore some material when conditionally printing. + + @since 3.12.0 +*) + +val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b +(** Same as [sprintf] above, but instead of returning the string, + passes it to the first argument. *) + +val kasprintf : (string -> 'a) -> ('b, formatter, unit, 'a) format4 -> 'b +(** Same as [asprintf] above, but instead of returning the string, + passes it to the first argument. + + @since 4.03 +*) diff --git a/src/lib_protocol_environment/sigs/v5/hex.mli b/src/lib_protocol_environment/sigs/v5/hex.mli new file mode 100644 index 0000000000..3bc46cf1a7 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/hex.mli @@ -0,0 +1,82 @@ +(* + * Copyright (c) 2015 Trevor Summers Smith + * Copyright (c) 2014 Thomas Gazagnaire + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + *) + +(** Hexadecimal encoding. + + [Hex] defines hexadecimal encodings for {{!char}characters}, + {{!string}strings} and {{!cstruct}Cstruct.t} buffers. *) + +type t = [`Hex of string] +(** The type var hexadecimal values. *) + +(** {1:char Characters} *) + +val of_char: char -> char * char +(** [of_char c] is the the hexadecimal encoding of the character + [c]. *) + +val to_char: char -> char -> char option +(** [to_char x y] is the character corresponding to the [xy] + hexadecimal encoding. + + Returns [None] if [x] or [y] are not in the ranges ['0'..'9'], + ['a'..'f'], or ['A'..'F']. *) + +(** {1:string Strings} *) + +val of_string: ?ignore:char list -> string -> t +(** [of_string s] is the hexadecimal representation of the binary + string [s]. If [ignore] is set, skip the characters in the list + when converting. Eg [of_string ~ignore:[' '] "a f"]. The default + value of [ignore] is [[]]). *) + +val to_string: t -> string option +(** [to_string t] is the binary string [s] such that [of_string s] is + [t]. + + Returns [None] if [t] contains a character that is not in the range ['0'..'9'], + ['a'..'f'], or ['A'..'F']. *) + +(** {1:byte Bytes} *) + +val of_bytes: ?ignore:char list -> bytes -> t +(** [of_bytes s] is the hexadecimal representation of the binary + string [s]. If [ignore] is set, skip the characters in the list + when converting. Eg [of_bytes ~ignore:[' '] "a f"]. The default + value of [ignore] is [[]]). *) + +val to_bytes: t -> bytes option +(** [to_bytes t] is the binary string [s] such that [of_bytes s] is + [t]. + + Returns [None] if [t] contains a character that is not in the range ['0'..'9'], + ['a'..'f'], or ['A'..'F']. *) + +(** {1 Debugging} *) + +val hexdump_s: ?print_row_numbers:bool -> ?print_chars:bool -> t -> string +(** Same as [hexdump] except returns a string. *) + +(** {1 Pretty printing} *) + +val pp : Format.formatter -> t -> unit [@@ocaml.toplevel_printer] +(** [pp fmt t] will output a human-readable hex representation of [t] + to the formatter [fmt]. *) + +val show : t -> string +(** [show t] will return a human-readable hex representation of [t] as + a string. *) diff --git a/src/lib_protocol_environment/sigs/v5/int32.mli b/src/lib_protocol_environment/sigs/v5/int32.mli new file mode 100644 index 0000000000..cddc53f23b --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/int32.mli @@ -0,0 +1,144 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** 32-bit integers. + + This module provides operations on the type [int32] + of signed 32-bit integers. Unlike the built-in [int] type, + the type [int32] is guaranteed to be exactly 32-bit wide on all + platforms. All arithmetic operations over [int32] are taken + modulo 2{^32}. + + Performance notice: values of type [int32] occupy more memory + space than values of type [int], and arithmetic operations on + [int32] are generally slower than those on [int]. Use [int32] + only when the application requires exact 32-bit arithmetic. + + Literals for 32-bit integers are suffixed by l: + {[ + let zero: int32 = 0l + let one: int32 = 1l + let m_one: int32 = -1l + ]} +*) + +val zero : int32 +(** The 32-bit integer 0. *) + +val one : int32 +(** The 32-bit integer 1. *) + +val minus_one : int32 +(** The 32-bit integer -1. *) + +external neg : int32 -> int32 = "%int32_neg" +(** Unary negation. *) + +external add : int32 -> int32 -> int32 = "%int32_add" +(** Addition. *) + +external sub : int32 -> int32 -> int32 = "%int32_sub" +(** Subtraction. *) + +external mul : int32 -> int32 -> int32 = "%int32_mul" +(** Multiplication. *) + +external div : int32 -> int32 -> int32 = "%int32_div" +(** Integer division. Raise [Division_by_zero] if the second + argument is zero. This division rounds the real quotient of + its arguments towards zero, as specified for {!Stdlib.(/)}. *) + +external rem : int32 -> int32 -> int32 = "%int32_mod" +(** Integer remainder. If [y] is not zero, the result + of [Int32.rem x y] satisfies the following property: + [x = Int32.add (Int32.mul (Int32.div x y) y) (Int32.rem x y)]. + If [y = 0], [Int32.rem x y] raises [Division_by_zero]. *) + +val succ : int32 -> int32 +(** Successor. [Int32.succ x] is [Int32.add x Int32.one]. *) + +val pred : int32 -> int32 +(** Predecessor. [Int32.pred x] is [Int32.sub x Int32.one]. *) + +val abs : int32 -> int32 +(** Return the absolute value of its argument. *) + +val max_int : int32 +(** The greatest representable 32-bit integer, 2{^31} - 1. *) + +val min_int : int32 +(** The smallest representable 32-bit integer, -2{^31}. *) + + +external logand : int32 -> int32 -> int32 = "%int32_and" +(** Bitwise logical and. *) + +external logor : int32 -> int32 -> int32 = "%int32_or" +(** Bitwise logical or. *) + +external logxor : int32 -> int32 -> int32 = "%int32_xor" +(** Bitwise logical exclusive or. *) + +val lognot : int32 -> int32 +(** Bitwise logical negation. *) + +external shift_left : int32 -> int -> int32 = "%int32_lsl" +(** [Int32.shift_left x y] shifts [x] to the left by [y] bits. + The result is unspecified if [y < 0] or [y >= 32]. *) + +external shift_right : int32 -> int -> int32 = "%int32_asr" +(** [Int32.shift_right x y] shifts [x] to the right by [y] bits. + This is an arithmetic shift: the sign bit of [x] is replicated + and inserted in the vacated bits. + The result is unspecified if [y < 0] or [y >= 32]. *) + +external shift_right_logical : int32 -> int -> int32 = "%int32_lsr" +(** [Int32.shift_right_logical x y] shifts [x] to the right by [y] bits. + This is a logical shift: zeroes are inserted in the vacated bits + regardless of the sign of [x]. + The result is unspecified if [y < 0] or [y >= 32]. *) + +external of_int : int -> int32 = "%int32_of_int" +(** Convert the given integer (type [int]) to a 32-bit integer + (type [int32]). On 64-bit platforms, the argument is taken + modulo 2{^32}. *) + +external to_int : int32 -> int = "%int32_to_int" +(** Convert the given 32-bit integer (type [int32]) to an + integer (type [int]). On 32-bit platforms, the 32-bit integer + is taken modulo 2{^31}, i.e. the high-order bit is lost + during the conversion. On 64-bit platforms, the conversion + is exact. *) + +val of_string_opt: string -> int32 option +(** Same as [of_string], but return [None] instead of raising. + @since 4.05 *) + + +val to_string : int32 -> string +(** Return the string representation of its argument, in signed decimal. *) + +type t = int32 +(** An alias for the type of 32-bit integers. *) + +val compare: t -> t -> int +(** The comparison function for 32-bit integers, with the same specification as + {!Stdlib.compare}. Along with the type [t], this function [compare] + allows the module [Int32] to be passed as argument to the functors + {!Set.Make} and {!Map.Make}. *) + +val equal: t -> t -> bool +(** The equal function for int32s. + @since 4.03.0 *) diff --git a/src/lib_protocol_environment/sigs/v5/int64.mli b/src/lib_protocol_environment/sigs/v5/int64.mli new file mode 100644 index 0000000000..5eb4db0154 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/int64.mli @@ -0,0 +1,152 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** 64-bit integers. + + This module provides operations on the type [int64] of + signed 64-bit integers. Unlike the built-in [int] type, + the type [int64] is guaranteed to be exactly 64-bit wide on all + platforms. All arithmetic operations over [int64] are taken + modulo 2{^64} + + Performance notice: values of type [int64] occupy more memory + space than values of type [int], and arithmetic operations on + [int64] are generally slower than those on [int]. Use [int64] + only when the application requires exact 64-bit arithmetic. + + Literals for 64-bit integers are suffixed by L: + {[ + let zero: int64 = 0L + let one: int64 = 1L + let m_one: int64 = -1L + ]} +*) + +val zero : int64 +(** The 64-bit integer 0. *) + +val one : int64 +(** The 64-bit integer 1. *) + +val minus_one : int64 +(** The 64-bit integer -1. *) + +external neg : int64 -> int64 = "%int64_neg" +(** Unary negation. *) + +external add : int64 -> int64 -> int64 = "%int64_add" +(** Addition. *) + +external sub : int64 -> int64 -> int64 = "%int64_sub" +(** Subtraction. *) + +external mul : int64 -> int64 -> int64 = "%int64_mul" +(** Multiplication. *) + +external div : int64 -> int64 -> int64 = "%int64_div" +(** Integer division. Raise [Division_by_zero] if the second + argument is zero. This division rounds the real quotient of + its arguments towards zero, as specified for {!Stdlib.(/)}. *) + +external rem : int64 -> int64 -> int64 = "%int64_mod" +(** Integer remainder. If [y] is not zero, the result + of [Int64.rem x y] satisfies the following property: + [x = Int64.add (Int64.mul (Int64.div x y) y) (Int64.rem x y)]. + If [y = 0], [Int64.rem x y] raises [Division_by_zero]. *) + +val succ : int64 -> int64 +(** Successor. [Int64.succ x] is [Int64.add x Int64.one]. *) + +val pred : int64 -> int64 +(** Predecessor. [Int64.pred x] is [Int64.sub x Int64.one]. *) + +val abs : int64 -> int64 +(** Return the absolute value of its argument. *) + +val max_int : int64 +(** The greatest representable 64-bit integer, 2{^63} - 1. *) + +val min_int : int64 +(** The smallest representable 64-bit integer, -2{^63}. *) + +external logand : int64 -> int64 -> int64 = "%int64_and" +(** Bitwise logical and. *) + +external logor : int64 -> int64 -> int64 = "%int64_or" +(** Bitwise logical or. *) + +external logxor : int64 -> int64 -> int64 = "%int64_xor" +(** Bitwise logical exclusive or. *) + +val lognot : int64 -> int64 +(** Bitwise logical negation. *) + +external shift_left : int64 -> int -> int64 = "%int64_lsl" +(** [Int64.shift_left x y] shifts [x] to the left by [y] bits. + The result is unspecified if [y < 0] or [y >= 64]. *) + +external shift_right : int64 -> int -> int64 = "%int64_asr" +(** [Int64.shift_right x y] shifts [x] to the right by [y] bits. + This is an arithmetic shift: the sign bit of [x] is replicated + and inserted in the vacated bits. + The result is unspecified if [y < 0] or [y >= 64]. *) + +external shift_right_logical : int64 -> int -> int64 = "%int64_lsr" +(** [Int64.shift_right_logical x y] shifts [x] to the right by [y] bits. + This is a logical shift: zeroes are inserted in the vacated bits + regardless of the sign of [x]. + The result is unspecified if [y < 0] or [y >= 64]. *) + +external of_int : int -> int64 = "%int64_of_int" +(** Convert the given integer (type [int]) to a 64-bit integer + (type [int64]). *) + +external to_int : int64 -> int = "%int64_to_int" +(** Convert the given 64-bit integer (type [int64]) to an + integer (type [int]). On 64-bit platforms, the 64-bit integer + is taken modulo 2{^63}, i.e. the high-order bit is lost + during the conversion. On 32-bit platforms, the 64-bit integer + is taken modulo 2{^31}, i.e. the top 33 bits are lost + during the conversion. *) + +external of_int32 : int32 -> int64 = "%int64_of_int32" +(** Convert the given 32-bit integer (type [int32]) + to a 64-bit integer (type [int64]). *) + +external to_int32 : int64 -> int32 = "%int64_to_int32" +(** Convert the given 64-bit integer (type [int64]) to a + 32-bit integer (type [int32]). The 64-bit integer + is taken modulo 2{^32}, i.e. the top 32 bits are lost + during the conversion. *) + +val of_string_opt: string -> int64 option +(** Same as [of_string], but return [None] instead of raising. + @since 4.05 *) + +val to_string : int64 -> string +(** Return the string representation of its argument, in decimal. *) + +type t = int64 +(** An alias for the type of 64-bit integers. *) + +val compare: t -> t -> int +(** The comparison function for 64-bit integers, with the same specification as + {!Stdlib.compare}. Along with the type [t], this function [compare] + allows the module [Int64] to be passed as argument to the functors + {!Set.Make} and {!Map.Make}. *) + +val equal: t -> t -> bool +(** The equal function for int64s. + @since 4.03.0 *) diff --git a/src/lib_protocol_environment/sigs/v5/json.mli b/src/lib_protocol_environment/sigs/v5/json.mli new file mode 100644 index 0000000000..5af3ac389f --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/json.mli @@ -0,0 +1,45 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** In memory JSON data *) +type json = + [ `O of (string * json) list + | `Bool of bool + | `Float of float + | `A of json list + | `Null + | `String of string ] + +(** Read a JSON document from a string. *) +val from_string : string -> (json, string) result + +(** Write a JSON document to a string. This goes via an intermediate + buffer and so may be slow on large documents. *) +val to_string : json -> string + +(** Helpers for [Data_encoding] *) +val cannot_destruct : ('a, Format.formatter, unit, 'b) format4 -> 'a + +val wrap_error : ('a -> 'b) -> 'a -> 'b diff --git a/src/lib_protocol_environment/sigs/v5/list.mli b/src/lib_protocol_environment/sigs/v5/list.mli new file mode 100644 index 0000000000..d61fe10776 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/list.mli @@ -0,0 +1,938 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** {1 List} + + A replacement for {!Stdlib.List} which: + - replaces the exception-raising functions by exception-safe variants, + - provides Lwt-, result- and Lwt-result-aware traversors. + + [List] is intended to shadow both {!Stdlib.List} and {!Lwt_list}. *) + +(** {2 Basics} + + Checkout {!Lwtreslib} for an introduction to the naming and semantic + convention of Lwtreslib. In a nutshell: + - Stdlib functions that raise exceptions are replaced by safe variants + (typically returning [option]). + - The [_e] suffix is for result-aware traversors ("e" stands for "error"), + [_s] and [_p] are for Lwt-aware, and [_es] and [_ep] are for + Lwt-result-aware. + - [_e], [_s], and [_es] traversors are {i fail-early}: they stop traversal + as soon as a failure ([Error] or [Fail]) occurs; [_p] and [_ep] + traversors are {i best-effort}: they only resolve once all of the + intermediate promises have, even if a failure occurs. *) + +(** {2 Double-traversal and combine} + + Note that double-list traversors ([iter2], [map2], etc., and also [combine]) + take an additional [when_different_lengths] parameter. This is to control + the error that is returned when the two lists passed as arguments have + different lengths. + + This mechanism is a replacement for {!Stdlib.List.iter2} (etc.) raising + [Invalid_argument]. + + Note that, as per the fail-early behaviour mentioned above, [_e], [_s], and + [_es] traversors will have already processed the common-prefix before the + error is returned. + + Because the best-effort behaviour of [_p] and [_ep] is unsatisfying for this + failure case, double parallel traversors are omitted from this library. + (Specifically, it is not obvious whether nor how the + [when_different_lengths] error should be composed with the other errors.) + + To obtain a different behaviour for sequential traversors, or to process + two lists in parallel, you can use {!combine} or any of the alternatives + that handles the error differently: {!combine_drop}, + {!combine_with_leftovers}. Finally, the {!rev_combine} is provided to allow + to avoid multiple-reversing. + + {3 Special considerations} + + Because they traverse the list from right-to-left, the {!fold_right2} + function and all its variants fail with [when_different_lengths] before any + of the processing starts. Whilst this is still within the fail-early + behaviour, it may be surprising enough that it requires mentioning here. + + Because they may return early, {!for_all2} and {!exists2} and all their + variants may return [Ok _] even though the arguments have different lengths. +*) + +(** {3 Trivial values} *) + +type 'a t = 'a list = [] | ( :: ) of 'a * 'a list + +(** in-monad, preallocated nil *) + +(** [nil] is [[]] *) +val nil : 'a list + +(** [nil_e] is [Ok []] *) +val nil_e : ('a list, 'trace) result + +(** [nil_s] is [Lwt.return_nil] *) +val nil_s : 'a list Lwt.t + +(** [nil_es] is [Lwt.return (Ok [])] *) +val nil_es : ('a list, 'trace) result Lwt.t + +(** {3 Safe wrappers} + + Shadowing unsafe functions to avoid all exceptions. *) + +(** {4 Safe lookups, scans, retrievals} + + Return option rather than raise [Not_found], [Failure _], or + [Invalid_argument _] *) + +(** [hd xs] is the head (first element) of the list or [None] if the list is + empty. *) +val hd : 'a list -> 'a option + +(** [tl xs] is the tail of the list (the whole list except the first element) + or [None] if the list is empty. *) +val tl : 'a list -> 'a list option + +(** [nth xs n] is the [n]th element of the list or [None] if the list has + fewer than [n] elements. + + [nth xs 0 = hd xs] *) +val nth : 'a list -> int -> 'a option + +(** [nth_opt] is an alias for [nth] provided for backwards compatibility. *) +val nth_opt : 'a list -> int -> 'a option + +(** [last x xs] is the last element of the list [xs] or [x] if [xs] is empty. + + The primary intended use for [last] is after destructing a list: + [match l with | None -> … | Some x :: xs -> last x xs] + but it can also be used for a default value: + [last default_value_if_empty xs]. *) +val last : 'a -> 'a list -> 'a + +(** [last_opt xs] is the last element of the list [xs] or [None] if the list + [xs] is empty. *) +val last_opt : 'a list -> 'a option + +(** [find predicate xs] is the first element [x] of the list [xs] such that + [predicate x] is [true] or [None] if the list [xs] has no such element. *) +val find : ('a -> bool) -> 'a list -> 'a option + +(** [find_opt] is an alias for [find] provided for backwards compatibility. *) +val find_opt : ('a -> bool) -> 'a list -> 'a option + +(** [mem ~equal a l] is [true] iff there is an element [e] of [l] such that + [equal a e]. *) +val mem : equal:('a -> 'a -> bool) -> 'a -> 'a list -> bool + +(** [assoc ~equal k kvs] is [Some v] such that [(k', v)] is the first pair in + the list such that [equal k' k] or [None] if the list contains no such + pair. *) +val assoc : equal:('a -> 'a -> bool) -> 'a -> ('a * 'b) list -> 'b option + +(** [assoc_opt] is an alias for [assoc] provided for backwards compatibility. *) +val assoc_opt : equal:('a -> 'a -> bool) -> 'a -> ('a * 'b) list -> 'b option + +(** [assq k kvs] is the same as [assoc ~equal:Stdlib.( == ) k kvs]: it uses + the physical equality. *) +val assq : 'a -> ('a * 'b) list -> 'b option + +(** [assq_opt] is an alias for [assq] provided for backwards compatibility. *) +val assq_opt : 'a -> ('a * 'b) list -> 'b option + +(** [mem_assoc ~equal k l] is equivalent to + [Option.is_some @@ assoc ~equal k l]. *) +val mem_assoc : equal:('a -> 'a -> bool) -> 'a -> ('a * 'b) list -> bool + +(** [mem_assq k l] is [mem_assoc ~equal:Stdlib.( == ) k l]. *) +val mem_assq : 'a -> ('a * 'b) list -> bool + +(** [remove_assoc ~equal k l] is [l] without the first element [(k', _)] such + that [equal k k']. *) +val remove_assoc : + equal:('a -> 'a -> bool) -> 'a -> ('a * 'b) list -> ('a * 'b) list + +(** [remove_assoq k l] is [remove_assoc ~equal:Stdlib.( == ) k l]. *) +val remove_assq : 'a -> ('a * 'b) list -> ('a * 'b) list + +(** {4 Initialisation} *) + +(** [init ~when_negative_length n f] is [Error when_negative_length] if [n] is + strictly negative and [Ok (Stdlib.List.init n f)] otherwise. *) +val init : + when_negative_length:'trace -> + int -> + (int -> 'a) -> + ('a list, 'trace) result + +(** {4 Basic traversal} *) + +val length : 'a list -> int + +val rev : 'a list -> 'a list + +val concat : 'a list list -> 'a list + +val append : 'a list -> 'a list -> 'a list + +val rev_append : 'a list -> 'a list -> 'a list + +val flatten : 'a list list -> 'a list + +(** {4 Double-list traversals} + + These safe-wrappers take an explicit value to handle the case of lists of + unequal length. +*) + +(** [combine ~when_different_lengths l1 l2] is either + - [Error when_different_lengths] if [List.length l1 <> List.length l2] + - a list of pairs of elements from [l1] and [l2] + + E.g., [combine ~when_different_lengths [] [] = Ok []] + + E.g., [combine ~when_different_lengths [1; 2] ['a'; 'b'] = Ok [(1,'a'); (2, 'b')]] + + E.g., [combine ~when_different_lengths:() [1] [] = Error ()] + + Note: [combine ~when_different_lengths l1 l2] is equivalent to + [try Ok (Stdlib.List.combine l1 l2) + with Invalid_argument _ -> when_different_lengths] + + The same equivalence almost holds for the other double traversors below. + The notable difference is if the functions passed as argument to the + traversors raise the [Invalid_argument _] exception. *) +val combine : + when_different_lengths:'trace -> + 'a list -> + 'b list -> + (('a * 'b) list, 'trace) result + +(** [rev_combine ~when_different_lengths xs ys] is + [rev (combine ~when_different_lengths xs ys)] but more efficient. *) +val rev_combine : + when_different_lengths:'trace -> + 'a list -> + 'b list -> + (('a * 'b) list, 'trace) result + +val split : ('a * 'b) list -> 'a list * 'b list + +val iter2 : + when_different_lengths:'trace -> + ('a -> 'b -> unit) -> + 'a list -> + 'b list -> + (unit, 'trace) result + +val map2 : + when_different_lengths:'trace -> + ('a -> 'b -> 'c) -> + 'a list -> + 'b list -> + ('c list, 'trace) result + +val rev_map2 : + when_different_lengths:'trace -> + ('a -> 'b -> 'c) -> + 'a list -> + 'b list -> + ('c list, 'trace) result + +val fold_left2 : + when_different_lengths:'trace -> + ('a -> 'b -> 'c -> 'a) -> + 'a -> + 'b list -> + 'c list -> + ('a, 'trace) result + +(** This function is not tail-recursive *) +val fold_right2 : + when_different_lengths:'trace -> + ('a -> 'b -> 'c -> 'c) -> + 'a list -> + 'b list -> + 'c -> + ('c, 'trace) result + +(** [fold_left_map f a xs] is a combination of [fold_left] and [map] that maps + over all elements of [xs] and threads an accumulator with initial value [a] + through calls to [f]. *) +val fold_left_map : ('a -> 'b -> 'a * 'c) -> 'a -> 'b list -> 'a * 'c list + +val for_all2 : + when_different_lengths:'trace -> + ('a -> 'b -> bool) -> + 'a list -> + 'b list -> + (bool, 'trace) result + +val exists2 : + when_different_lengths:'trace -> + ('a -> 'b -> bool) -> + 'a list -> + 'b list -> + (bool, 'trace) result + +(** {3 Monad-aware variants} + + The functions below are strict extensions of the standard {!Stdlib.List} + module. It is for result-, lwt- and lwt-result-aware variants. The meaning + of the suffix is as described above, in {!Lwtreslib}, and in {!Sigs.Seq}. *) + +(** {4 Initialisation variants} + + Note that for asynchronous variants ([_s], [_es], [_p], and [_ep]), if the + length parameter is negative, then the promise is returned already + fulfilled with [Error when_different_lengths]. *) + +val init_e : + when_negative_length:'trace -> + int -> + (int -> ('a, 'trace) result) -> + ('a list, 'trace) result + +val init_s : + when_negative_length:'trace -> + int -> + (int -> 'a Lwt.t) -> + ('a list, 'trace) result Lwt.t + +val init_es : + when_negative_length:'trace -> + int -> + (int -> ('a, 'trace) result Lwt.t) -> + ('a list, 'trace) result Lwt.t + +val init_p : + when_negative_length:'trace -> + int -> + (int -> 'a Lwt.t) -> + ('a list, 'trace) result Lwt.t + +(** {4 Query variants} *) + +val find_e : + ('a -> (bool, 'trace) result) -> 'a list -> ('a option, 'trace) result + +val find_s : ('a -> bool Lwt.t) -> 'a list -> 'a option Lwt.t + +val find_es : + ('a -> (bool, 'trace) result Lwt.t) -> + 'a list -> + ('a option, 'trace) result Lwt.t + +val filter : ('a -> bool) -> 'a list -> 'a list + +(** [rev_filter f l] is [rev (filter f l)] but more efficient. *) +val rev_filter : ('a -> bool) -> 'a list -> 'a list + +val rev_filter_some : 'a option list -> 'a list + +val filter_some : 'a option list -> 'a list + +val rev_filter_ok : ('a, 'b) result list -> 'a list + +val filter_ok : ('a, 'b) result list -> 'a list + +val rev_filter_error : ('a, 'b) result list -> 'b list + +val filter_error : ('a, 'b) result list -> 'b list + +val rev_filter_e : + ('a -> (bool, 'trace) result) -> 'a list -> ('a list, 'trace) result + +val filter_e : + ('a -> (bool, 'trace) result) -> 'a list -> ('a list, 'trace) result + +val rev_filter_s : ('a -> bool Lwt.t) -> 'a list -> 'a list Lwt.t + +val filter_s : ('a -> bool Lwt.t) -> 'a list -> 'a list Lwt.t + +val rev_filter_es : + ('a -> (bool, 'trace) result Lwt.t) -> + 'a list -> + ('a list, 'trace) result Lwt.t + +val filter_es : + ('a -> (bool, 'trace) result Lwt.t) -> + 'a list -> + ('a list, 'trace) result Lwt.t + +val filter_p : ('a -> bool Lwt.t) -> 'a list -> 'a list Lwt.t + +val rev_partition : ('a -> bool) -> 'a list -> 'a list * 'a list + +val partition : ('a -> bool) -> 'a list -> 'a list * 'a list + +val rev_partition_result : ('a, 'b) result list -> 'a list * 'b list + +val partition_result : ('a, 'b) result list -> 'a list * 'b list + +val rev_partition_e : + ('a -> (bool, 'trace) result) -> + 'a list -> + ('a list * 'a list, 'trace) result + +val partition_e : + ('a -> (bool, 'trace) result) -> + 'a list -> + ('a list * 'a list, 'trace) result + +val rev_partition_s : + ('a -> bool Lwt.t) -> 'a list -> ('a list * 'a list) Lwt.t + +val partition_s : ('a -> bool Lwt.t) -> 'a list -> ('a list * 'a list) Lwt.t + +val rev_partition_es : + ('a -> (bool, 'trace) result Lwt.t) -> + 'a list -> + ('a list * 'a list, 'trace) result Lwt.t + +val partition_es : + ('a -> (bool, 'trace) result Lwt.t) -> + 'a list -> + ('a list * 'a list, 'trace) result Lwt.t + +val partition_p : ('a -> bool Lwt.t) -> 'a list -> ('a list * 'a list) Lwt.t + +(** {4 Traversal variants} *) +val iter : ('a -> unit) -> 'a list -> unit + +val iter_e : ('a -> (unit, 'trace) result) -> 'a list -> (unit, 'trace) result + +val iter_s : ('a -> unit Lwt.t) -> 'a list -> unit Lwt.t + +val iter_es : + ('a -> (unit, 'trace) result Lwt.t) -> + 'a list -> + (unit, 'trace) result Lwt.t + +val iter_p : ('a -> unit Lwt.t) -> 'a list -> unit Lwt.t + +val iteri : (int -> 'a -> unit) -> 'a list -> unit + +val iteri_e : + (int -> 'a -> (unit, 'trace) result) -> 'a list -> (unit, 'trace) result + +val iteri_s : (int -> 'a -> unit Lwt.t) -> 'a list -> unit Lwt.t + +val iteri_es : + (int -> 'a -> (unit, 'trace) result Lwt.t) -> + 'a list -> + (unit, 'trace) result Lwt.t + +val iteri_p : (int -> 'a -> unit Lwt.t) -> 'a list -> unit Lwt.t + +val map : ('a -> 'b) -> 'a list -> 'b list + +val map_e : ('a -> ('b, 'trace) result) -> 'a list -> ('b list, 'trace) result + +val map_s : ('a -> 'b Lwt.t) -> 'a list -> 'b list Lwt.t + +val map_es : + ('a -> ('b, 'trace) result Lwt.t) -> + 'a list -> + ('b list, 'trace) result Lwt.t + +val map_p : ('a -> 'b Lwt.t) -> 'a list -> 'b list Lwt.t + +val mapi : (int -> 'a -> 'b) -> 'a list -> 'b list + +val mapi_e : + (int -> 'a -> ('b, 'trace) result) -> 'a list -> ('b list, 'trace) result + +val mapi_s : (int -> 'a -> 'b Lwt.t) -> 'a list -> 'b list Lwt.t + +val mapi_es : + (int -> 'a -> ('b, 'trace) result Lwt.t) -> + 'a list -> + ('b list, 'trace) result Lwt.t + +val mapi_p : (int -> 'a -> 'b Lwt.t) -> 'a list -> 'b list Lwt.t + +val rev_map : ('a -> 'b) -> 'a list -> 'b list + +val rev_mapi : (int -> 'a -> 'b) -> 'a list -> 'b list + +val rev_map_e : + ('a -> ('b, 'trace) result) -> 'a list -> ('b list, 'trace) result + +val rev_map_s : ('a -> 'b Lwt.t) -> 'a list -> 'b list Lwt.t + +val rev_map_es : + ('a -> ('b, 'trace) result Lwt.t) -> + 'a list -> + ('b list, 'trace) result Lwt.t + +val rev_map_p : ('a -> 'b Lwt.t) -> 'a list -> 'b list Lwt.t + +val rev_mapi_e : + (int -> 'a -> ('b, 'trace) result) -> 'a list -> ('b list, 'trace) result + +val rev_mapi_s : (int -> 'a -> 'b Lwt.t) -> 'a list -> 'b list Lwt.t + +val rev_mapi_es : + (int -> 'a -> ('b, 'trace) result Lwt.t) -> + 'a list -> + ('b list, 'trace) result Lwt.t + +val rev_mapi_p : (int -> 'a -> 'b Lwt.t) -> 'a list -> 'b list Lwt.t + +val rev_filter_map : ('a -> 'b option) -> 'a list -> 'b list + +val rev_filter_map_e : + ('a -> ('b option, 'trace) result) -> 'a list -> ('b list, 'trace) result + +val filter_map_e : + ('a -> ('b option, 'trace) result) -> 'a list -> ('b list, 'trace) result + +val rev_filter_map_s : ('a -> 'b option Lwt.t) -> 'a list -> 'b list Lwt.t + +val filter_map : ('a -> 'b option) -> 'a list -> 'b list + +val filter_map_s : ('a -> 'b option Lwt.t) -> 'a list -> 'b list Lwt.t + +val rev_filter_map_es : + ('a -> ('b option, 'trace) result Lwt.t) -> + 'a list -> + ('b list, 'trace) result Lwt.t + +val filter_map_es : + ('a -> ('b option, 'trace) result Lwt.t) -> + 'a list -> + ('b list, 'trace) result Lwt.t + +val filter_map_p : ('a -> 'b option Lwt.t) -> 'a list -> 'b list Lwt.t + +val concat_map : ('a -> 'b list) -> 'a list -> 'b list + +val concat_map_s : ('a -> 'b list Lwt.t) -> 'a list -> 'b list Lwt.t + +val concat_map_e : + ('a -> ('b list, 'error) result) -> 'a list -> ('b list, 'error) result + +val concat_map_es : + ('a -> ('b list, 'error) result Lwt.t) -> + 'a list -> + ('b list, 'error) result Lwt.t + +val concat_map_p : ('a -> 'b list Lwt.t) -> 'a list -> 'b list Lwt.t + +val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a + +val fold_left_e : + ('a -> 'b -> ('a, 'trace) result) -> 'a -> 'b list -> ('a, 'trace) result + +val fold_left_s : ('a -> 'b -> 'a Lwt.t) -> 'a -> 'b list -> 'a Lwt.t + +val fold_left_es : + ('a -> 'b -> ('a, 'trace) result Lwt.t) -> + 'a -> + 'b list -> + ('a, 'trace) result Lwt.t + +(** [fold_left_map_e f a xs] is a combination of [fold_left_e] and [map_e] that + maps over all elements of [xs] and threads an accumulator with initial + value [a] through calls to [f]. The list is traversed from left to right + and the first encountered error is returned. *) +val fold_left_map_e : + ('a -> 'b -> ('a * 'c, 'trace) result) -> + 'a -> + 'b list -> + ('a * 'c list, 'trace) result + +(** [fold_left_map_s f a xs] is a combination of [fold_left_s] and [map_s] that + maps over all elements of [xs] and threads an accumulator with initial + value [a] through calls to [f]. *) +val fold_left_map_s : + ('a -> 'b -> ('a * 'c) Lwt.t) -> 'a -> 'b list -> ('a * 'c list) Lwt.t + +(** [fold_left_map_es f a xs] is a combination of [fold_left_es] and [map_es] that + maps over all elements of [xs] and threads an accumulator with initial + value [a] through calls to [f]. The list is traversed from left to right + and the first encountered error is returned. *) +val fold_left_map_es : + ('a -> 'b -> ('a * 'c, 'trace) result Lwt.t) -> + 'a -> + 'b list -> + ('a * 'c list, 'trace) result Lwt.t + +val fold_left_i : (int -> 'a -> 'b -> 'a) -> 'a -> 'b list -> 'a + +val fold_left_i_e : + (int -> 'a -> 'b -> ('a, 'trace) result) -> + 'a -> + 'b list -> + ('a, 'trace) result + +val fold_left_i_s : (int -> 'a -> 'b -> 'a Lwt.t) -> 'a -> 'b list -> 'a Lwt.t + +val fold_left_i_es : + (int -> 'a -> 'b -> ('a, 'trace) result Lwt.t) -> + 'a -> + 'b list -> + ('a, 'trace) result Lwt.t + +(** This function is not tail-recursive *) +val fold_right : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b + +(** This function is not tail-recursive *) +val fold_right_e : + ('a -> 'b -> ('b, 'trace) result) -> 'a list -> 'b -> ('b, 'trace) result + +(** This function is not tail-recursive *) +val fold_right_s : ('a -> 'b -> 'b Lwt.t) -> 'a list -> 'b -> 'b Lwt.t + +(** This function is not tail-recursive *) +val fold_right_es : + ('a -> 'b -> ('b, 'trace) result Lwt.t) -> + 'a list -> + 'b -> + ('b, 'trace) result Lwt.t + +(** {4 Double-traversal variants} + + As mentioned above, there are no [_p] and [_ep] double-traversors. Use + {!combine} (and variants) to circumvent this. *) + +val iter2_e : + when_different_lengths:'trace -> + ('a -> 'b -> (unit, 'trace) result) -> + 'a list -> + 'b list -> + (unit, 'trace) result + +val iter2_s : + when_different_lengths:'trace -> + ('a -> 'b -> unit Lwt.t) -> + 'a list -> + 'b list -> + (unit, 'trace) result Lwt.t + +val iter2_es : + when_different_lengths:'trace -> + ('a -> 'b -> (unit, 'trace) result Lwt.t) -> + 'a list -> + 'b list -> + (unit, 'trace) result Lwt.t + +val map2_e : + when_different_lengths:'trace -> + ('a -> 'b -> ('c, 'trace) result) -> + 'a list -> + 'b list -> + ('c list, 'trace) result + +val map2_s : + when_different_lengths:'trace -> + ('a -> 'b -> 'c Lwt.t) -> + 'a list -> + 'b list -> + ('c list, 'trace) result Lwt.t + +val map2_es : + when_different_lengths:'trace -> + ('a -> 'b -> ('c, 'trace) result Lwt.t) -> + 'a list -> + 'b list -> + ('c list, 'trace) result Lwt.t + +val rev_map2_e : + when_different_lengths:'trace -> + ('a -> 'b -> ('c, 'trace) result) -> + 'a list -> + 'b list -> + ('c list, 'trace) result + +val rev_map2_s : + when_different_lengths:'trace -> + ('a -> 'b -> 'c Lwt.t) -> + 'a list -> + 'b list -> + ('c list, 'trace) result Lwt.t + +val rev_map2_es : + when_different_lengths:'trace -> + ('a -> 'b -> ('c, 'trace) result Lwt.t) -> + 'a list -> + 'b list -> + ('c list, 'trace) result Lwt.t + +val fold_left2_e : + when_different_lengths:'trace -> + ('a -> 'b -> 'c -> ('a, 'trace) result) -> + 'a -> + 'b list -> + 'c list -> + ('a, 'trace) result + +val fold_left2_s : + when_different_lengths:'trace -> + ('a -> 'b -> 'c -> 'a Lwt.t) -> + 'a -> + 'b list -> + 'c list -> + ('a, 'trace) result Lwt.t + +val fold_left2_es : + when_different_lengths:'trace -> + ('a -> 'b -> 'c -> ('a, 'trace) result Lwt.t) -> + 'a -> + 'b list -> + 'c list -> + ('a, 'trace) result Lwt.t + +(** This function is not tail-recursive *) +val fold_right2_e : + when_different_lengths:'trace -> + ('a -> 'b -> 'c -> ('c, 'trace) result) -> + 'a list -> + 'b list -> + 'c -> + ('c, 'trace) result + +(** This function is not tail-recursive *) +val fold_right2_s : + when_different_lengths:'trace -> + ('a -> 'b -> 'c -> 'c Lwt.t) -> + 'a list -> + 'b list -> + 'c -> + ('c, 'trace) result Lwt.t + +(** This function is not tail-recursive *) +val fold_right2_es : + when_different_lengths:'trace -> + ('a -> 'b -> 'c -> ('c, 'trace) result Lwt.t) -> + 'a list -> + 'b list -> + 'c -> + ('c, 'trace) result Lwt.t + +(** {4 Scanning variants} *) + +val for_all : ('a -> bool) -> 'a list -> bool + +val for_all_e : + ('a -> (bool, 'trace) result) -> 'a list -> (bool, 'trace) result + +val for_all_s : ('a -> bool Lwt.t) -> 'a list -> bool Lwt.t + +val for_all_es : + ('a -> (bool, 'trace) result Lwt.t) -> + 'a list -> + (bool, 'trace) result Lwt.t + +val for_all_p : ('a -> bool Lwt.t) -> 'a list -> bool Lwt.t + +val exists : ('a -> bool) -> 'a list -> bool + +val exists_e : + ('a -> (bool, 'trace) result) -> 'a list -> (bool, 'trace) result + +val exists_s : ('a -> bool Lwt.t) -> 'a list -> bool Lwt.t + +val exists_es : + ('a -> (bool, 'trace) result Lwt.t) -> + 'a list -> + (bool, 'trace) result Lwt.t + +val exists_p : ('a -> bool Lwt.t) -> 'a list -> bool Lwt.t + +(** {4 Double-scanning variants} + + As mentioned above, there are no [_p] and [_ep] double-scanners. Use + {!combine} (and variants) to circumvent this. *) + +val for_all2_e : + when_different_lengths:'trace -> + ('a -> 'b -> (bool, 'trace) result) -> + 'a list -> + 'b list -> + (bool, 'trace) result + +val for_all2_s : + when_different_lengths:'trace -> + ('a -> 'b -> bool Lwt.t) -> + 'a list -> + 'b list -> + (bool, 'trace) result Lwt.t + +val for_all2_es : + when_different_lengths:'trace -> + ('a -> 'b -> (bool, 'trace) result Lwt.t) -> + 'a list -> + 'b list -> + (bool, 'trace) result Lwt.t + +val exists2_e : + when_different_lengths:'trace -> + ('a -> 'b -> (bool, 'trace) result) -> + 'a list -> + 'b list -> + (bool, 'trace) result + +val exists2_s : + when_different_lengths:'trace -> + ('a -> 'b -> bool Lwt.t) -> + 'a list -> + 'b list -> + (bool, 'trace) result Lwt.t + +val exists2_es : + when_different_lengths:'trace -> + ('a -> 'b -> (bool, 'trace) result Lwt.t) -> + 'a list -> + 'b list -> + (bool, 'trace) result Lwt.t + +(** {3 Combine variants} + + These are primarily intended to be used for preprocessing before applying + a traversor to the resulting list of pairs. They give alternatives to the + [when_different_lengths] mechanism of the immediate double-traversors + above. + + In case the semantic of, say, [map2_es] was unsatisfying, one can use + [map_es] on a [combine]-preprocessed pair of lists. The different variants + of [combine] give different approaches to different-length handling. *) + +(** [combine_drop ll lr] is a list [l] of pairs of elements taken from the + common-length prefix of [ll] and [lr]. The suffix of whichever list is + longer (if any) is dropped. + + More formally [nth l n] is: + - [None] if [n >= min (length ll) (length lr)] + - [Some (Option.get @@ nth ll n, Option.get @@ nth lr n)] otherwise + *) +val combine_drop : 'a list -> 'b list -> ('a * 'b) list + +(** A type like [result] but which is symmetric *) +type ('a, 'b) left_or_right_list = [`Left of 'a list | `Right of 'b list] + +(** [combine_with_leftovers ll lr] is a tuple [(combined, leftover)] + where [combined] is [combine_drop ll lr] + and [leftover] is either [`Left lsuffix] or [`Right rsuffix] depending on + which of [ll] or [lr] is longer. [leftover] is [None] if the two lists + have the same length. *) +val combine_with_leftovers : + 'a list -> + 'b list -> + ('a * 'b) list * ('a, 'b) left_or_right_list option + +(** {3 compare / equal} *) + +val compare : ('a -> 'a -> int) -> 'a list -> 'a list -> int + +val compare_lengths : 'a list -> 'b list -> int + +val compare_length_with : 'a list -> int -> int + +val equal : ('a -> 'a -> bool) -> 'a list -> 'a list -> bool + +(** {3 Sorting} *) + +val sort : ('a -> 'a -> int) -> 'a list -> 'a list + +val stable_sort : ('a -> 'a -> int) -> 'a list -> 'a list + +val fast_sort : ('a -> 'a -> int) -> 'a list -> 'a list + +val sort_uniq : ('a -> 'a -> int) -> 'a list -> 'a list + +(** {3 conversion} *) + +val to_seq : 'a list -> 'a Seq.t + +val of_seq : 'a Seq.t -> 'a list + +val init_ep : + when_negative_length:'error -> + int -> + (int -> ('a, 'error Error_monad.trace) result Lwt.t) -> + ('a list, 'error Error_monad.trace) result Lwt.t + +val filter_ep : + ('a -> (bool, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + ('a list, 'error Error_monad.trace) result Lwt.t + +val partition_ep : + ('a -> (bool, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + ('a list * 'a list, 'error Error_monad.trace) result Lwt.t + +val iter_ep : + ('a -> (unit, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + (unit, 'error Error_monad.trace) result Lwt.t + +val iteri_ep : + (int -> 'a -> (unit, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + (unit, 'error Error_monad.trace) result Lwt.t + +val map_ep : + ('a -> ('b, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + ('b list, 'error Error_monad.trace) result Lwt.t + +val mapi_ep : + (int -> 'a -> ('b, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + ('b list, 'error Error_monad.trace) result Lwt.t + +val rev_map_ep : + ('a -> ('b, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + ('b list, 'error Error_monad.trace) result Lwt.t + +val rev_mapi_ep : + (int -> 'a -> ('b, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + ('b list, 'error Error_monad.trace) result Lwt.t + +val filter_map_ep : + ('a -> ('b option, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + ('b list, 'error Error_monad.trace) result Lwt.t + +val concat_map_ep : + ('a -> ('b list, 'error trace) result Lwt.t) -> + 'a list -> + ('b list, 'error trace) result Lwt.t + +val for_all_ep : + ('a -> (bool, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + (bool, 'error Error_monad.trace) result Lwt.t + +val exists_ep : + ('a -> (bool, 'error Error_monad.trace) result Lwt.t) -> + 'a list -> + (bool, 'error Error_monad.trace) result Lwt.t diff --git a/src/lib_protocol_environment/sigs/v5/logging.mli b/src/lib_protocol_environment/sigs/v5/logging.mli new file mode 100644 index 0000000000..36aff78bda --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/logging.mli @@ -0,0 +1,44 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2021 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Logging levels. See [docs/developer/guidelines.rst] for their meaning *) +type level = Debug | Info | Notice | Warning | Error | Fatal + +(** Logs a message. It is the shell's responsibility to manage the actual + logging. + + Even though logging may involve system calls, formatting, or other work, the + shell guarantees that calling this function doesn't transfer control over + another promise. Consequently, the performance of this function can be + considered predictable from the point of view of gas-consumption. + + Note that the function call has predictable performance, but that it is the + caller's responsibility to ensure that argument evaluation has predictable + performance too. E.g., [log Notice "%s" (Format.asprint …)] may spend time + formatting the argument string. *) +val log : level -> ('a, Format.formatter, unit, unit) format4 -> 'a + +(** Same as [log] but more efficient with a simpler interface. *) +val log_string : level -> string -> unit diff --git a/src/lib_protocol_environment/sigs/v5/lwt.mli b/src/lib_protocol_environment/sigs/v5/lwt.mli new file mode 100644 index 0000000000..5361fc293a --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/lwt.mli @@ -0,0 +1,265 @@ +(* This file is part of Lwt, released under the MIT license. See LICENSE.md for + details, or visit https://github.com/ocsigen/lwt/blob/master/LICENSE.md. *) + + +(** {2 Fundamentals} *) + +(** {3 Promises} *) + +type +'a t +(** Promises for values of type ['a]. + + A {b promise} is a memory cell that is always in one of three {b states}: + + - {e fulfilled}, and containing one value of type ['a], + - {e rejected}, and containing one exception, or + - {e pending}, in which case it may become fulfilled or rejected later. + + A {e resolved} promise is one that is either fulfilled or rejected, i.e. not + pending. Once a promise is resolved, its content cannot change. So, promises + are {e write-once references}. The only possible state changes are (1) from + pending to fulfilled and (2) from pending to rejected. + + Promises are typically “read” by attaching {b callbacks} to them. The most + basic functions for that are {!Lwt.bind}, which attaches a callback that is + called when a promise becomes fulfilled, and {!Lwt.catch}, for rejection. + + Promise variables of this type, ['a Lwt.t], are actually {b read-only} in + Lwt. Separate {e resolvers} of type ['a ]{!Lwt.u} are used to write to them. + Promises and their resolvers are created together by calling {!Lwt.wait}. + There is one exception to this: most promises can be {e canceled} by calling + {!Lwt.cancel}, without going through a resolver. *) + +val return : 'a -> 'a t +(** [Lwt.return v] creates a new {{: #TYPEt} promise} that is {e already + fulfilled} with value [v]. + + This is needed to satisfy the type system in some cases. For example, in a + [match] expression where one case evaluates to a promise, the other cases + have to evaluate to promises as well: + +{[ +match need_input with +| true -> Lwt_io.(read_line stdin) (* Has type string Lwt.t... *) +| false -> Lwt.return "" (* ...so wrap empty string in a promise. *) +]} + + Another typical usage is in {{: #VALbind} [let%lwt]}. The expression after + the “[in]” has to evaluate to a promise. So, if you compute an ordinary + value instead, you have to wrap it: + +{[ +let%lwt line = Lwt_io.(read_line stdin) in +Lwt.return (line ^ ".") +]} *) + + +(** {3 Callbacks} *) + +val bind : 'a t -> ('a -> 'b t) -> 'b t +(** [Lwt.bind p_1 f] makes it so that [f] will run when [p_1] is {{: #TYPEt} + {e fulfilled}}. + + When [p_1] is fulfilled with value [v_1], the callback [f] is called with + that same value [v_1]. Eventually, after perhaps starting some I/O or other + computation, [f] returns promise [p_2]. + + [Lwt.bind] itself returns immediately. It only attaches the callback [f] to + [p_1] – it does not wait for [p_2]. {e What} [Lwt.bind] returns is yet a + third promise, [p_3]. Roughly speaking, fulfillment of [p_3] represents both + [p_1] and [p_2] becoming fulfilled, one after the other. + + A minimal example of this is an echo program: + +{[ +let () = + let p_3 = + Lwt.bind + Lwt_io.(read_line stdin) + (fun line -> Lwt_io.printl line) + in + Lwt_main.run p_3 + +(* ocamlfind opt -linkpkg -thread -package lwt.unix code.ml && ./a.out *) +]} + + Rejection of [p_1] and [p_2], and raising an exception in [f], are all + forwarded to rejection of [p_3]. + + {b Precise behavior} + + [Lwt.bind] returns a promise [p_3] immediately. [p_3] starts out pending, + and is resolved as follows: + + - The first condition to wait for is that [p_1] becomes resolved. It does + not matter whether [p_1] is already resolved when [Lwt.bind] is called, or + becomes resolved later – the rest of the behavior is the same. + - If and when [p_1] becomes resolved, it will, by definition, be either + fulfilled or rejected. + - If [p_1] is rejected, [p_3] is rejected with the same exception. + - If [p_1] is fulfilled, with value [v], [f] is applied to [v]. + - [f] may finish by returning the promise [p_2], or raising an exception. + - If [f] raises an exception, [p_3] is rejected with that exception. + - Finally, the remaining case is when [f] returns [p_2]. From that point on, + [p_3] is effectively made into a reference to [p_2]. This means they have + the same state, undergo the same state changes, and performing any + operation on one is equivalent to performing it on the other. + + {b Syntactic sugar} + + [Lwt.bind] is almost never written directly, because sequences of [Lwt.bind] + result in growing indentation and many parentheses: + +{[ +let () = + Lwt_main.run begin + Lwt.bind Lwt_io.(read_line stdin) (fun line -> + Lwt.bind (Lwt_unix.sleep 1.) (fun () -> + Lwt_io.printf "One second ago, you entered %s\n" line)) + end + +(* ocamlfind opt -linkpkg -thread -package lwt.unix code.ml && ./a.out *) +]} + + The recommended way to write [Lwt.bind] is using the [let%lwt] syntactic + sugar: + +{[ +let () = + Lwt_main.run begin + let%lwt line = Lwt_io.(read_line stdin) in + let%lwt () = Lwt_unix.sleep 1. in + Lwt_io.printf "One second ago, you entered %s\n" line + end + +(* ocamlfind opt -linkpkg -thread -package lwt_ppx,lwt.unix code.ml && ./a.out *) +]} + + This uses the Lwt {{: Ppx_lwt.html} PPX} (preprocessor). Note that we had to + add package [lwt_ppx] to the command line for building this program. We will + do that throughout this manual. + + Another way to write [Lwt.bind], that you may encounter while reading code, + is with the [>>=] operator: + +{[ +open Lwt.Infix + +let () = + Lwt_main.run begin + Lwt_io.(read_line stdin) >>= fun line -> + Lwt_unix.sleep 1. >>= fun () -> + Lwt_io.printf "One second ago, you entered %s\n" line + end + +(* ocamlfind opt -linkpkg -thread -package lwt.unix code.ml && ./a.out *) +]} + + The [>>=] operator comes from the module {!Lwt.Infix}, which is why we + opened it at the beginning of the program. + + See also {!Lwt.map}. *) + + + +(** {2 Convenience} *) + +(** {3 Callback helpers} *) + +val map : ('a -> 'b) -> 'a t -> 'b t +(** [Lwt.map f p_1] is similar to {!Lwt.bind}[ p_1 f], but [f] is not expected + to return a promise. + + This function is more convenient that {!Lwt.bind} when [f] inherently does + not return a promise. An example is [Stdlib.int_of_string]: + +{[ +let read_int : unit -> int Lwt.t = fun () -> + Lwt.map + int_of_string + Lwt_io.(read_line stdin) + +let () = + Lwt_main.run begin + let%lwt number = read_int () in + Lwt_io.printf "%i\n" number + end + +(* ocamlfind opt -linkpkg -thread -package lwt_ppx,lwt.unix code.ml && ./a.out *) +]} + + By comparison, the {!Lwt.bind} version is more awkward: + +{[ +let read_int : unit -> int Lwt.t = fun () -> + Lwt.bind + Lwt_io.(read_line stdin) + (fun line -> Lwt.return (int_of_string line)) +]} + + As with {!Lwt.bind}, sequences of calls to [Lwt.map] result in excessive + indentation and parentheses. The recommended syntactic sugar for avoiding + this is the {{: #VAL(>|=)} [>|=]} operator, which comes from module + [Lwt.Infix]: + +{[ +open Lwt.Infix + +let read_int : unit -> int Lwt.t = fun () -> + Lwt_io.(read_line stdin) >|= int_of_string +]} + + The detailed operation follows. For consistency with the promises in + {!Lwt.bind}, the {e two} promises involved are named [p_1] and [p_3]: + + - [p_1] is the promise passed to [Lwt.map]. + - [p_3] is the promise returned by [Lwt.map]. + + [Lwt.map] returns a promise [p_3]. [p_3] starts out pending. It is resolved + as follows: + + - [p_1] may be, or become, resolved. In that case, by definition, it will + become fulfilled or rejected. Fulfillment is the interesting case, but the + behavior on rejection is simpler, so we focus on rejection first. + - When [p_1] becomes rejected, [p_3] is rejected with the same exception. + - When [p_1] instead becomes fulfilled, call the value it is fulfilled with + [v]. + - [f v] is applied. If this finishes, it may either return another value, or + raise an exception. + - If [f v] returns another value [v'], [p_3] is fulfilled with [v']. + - If [f v] raises exception [exn], [p_3] is rejected with [exn]. *) + + +(** {3 Pre-allocated promises} *) + +val return_unit : unit t +(** [Lwt.return_unit] is defined as {!Lwt.return}[ ()], but this definition is + evaluated only once, during initialization of module [Lwt], at the beginning + of your program. + + This means the promise is allocated only once. By contrast, each time + {!Lwt.return}[ ()] is evaluated, it allocates a new promise. + + It is recommended to use [Lwt.return_unit] only where you know the + allocations caused by an instance of {!Lwt.return}[ ()] are a performance + bottleneck. Generally, the cost of I/O tends to dominate the cost of + {!Lwt.return}[ ()] anyway. + + In future Lwt, we hope to perform this optimization, of using a single, + pre-allocated promise, automatically, wherever {!Lwt.return}[ ()] is + written. *) + +val return_none : (_ option) t +(** [Lwt.return_none] is like {!Lwt.return_unit}, but for + {!Lwt.return}[ None]. *) + +val return_nil : (_ list) t +(** [Lwt.return_nil] is like {!Lwt.return_unit}, but for {!Lwt.return}[ []]. *) + +val return_true : bool t +(** [Lwt.return_true] is like {!Lwt.return_unit}, but for + {!Lwt.return}[ true]. *) + +val return_false : bool t +(** [Lwt.return_false] is like {!Lwt.return_unit}, but for + {!Lwt.return}[ false]. *) diff --git a/src/lib_protocol_environment/sigs/v5/map.mli b/src/lib_protocol_environment/sigs/v5/map.mli new file mode 100644 index 0000000000..8a6371e359 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/map.mli @@ -0,0 +1,152 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(* From Lwtreslib *) + +module type S = sig + + type key + + type +!'a t + + (**/**) + module Legacy : Stdlib.Map.S with type key = key and type 'a t = 'a t + (**/**) + + val empty : 'a t + + val is_empty : 'a t -> bool + + val mem : key -> 'a t -> bool + + val add : key -> 'a -> 'a t -> 'a t + + val update : key -> ('a option -> 'a option) -> 'a t -> 'a t + + val singleton : key -> 'a -> 'a t + + val remove : key -> 'a t -> 'a t + + val merge : + (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t + + val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t + + val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int + + val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool + + val iter : (key -> 'a -> unit) -> 'a t -> unit + + (** [iter_e f m] applies [f] to the bindings of [m] one by one in an + unspecified order. If all the applications result in [Ok ()], then the + result of the iteration is [Ok ()]. If any of the applications results in + [Error e] then the iteration stops and the result of the iteration is + [Error e]. *) + val iter_e : + (key -> 'a -> (unit, 'trace) result) -> 'a t -> (unit, 'trace) result + + val iter_s : (key -> 'a -> unit Lwt.t) -> 'a t -> unit Lwt.t + + val iter_p : (key -> 'a -> unit Lwt.t) -> 'a t -> unit Lwt.t + + (** [iter_es f m] applies [f] to the bindings of [m] in an unspecified order, + one after the other as the promises resolve. If all the applications + result in [Ok ()], then the result of the iteration is [Ok ()]. If any of + the applications results in [Error e] then the iteration stops and the + result of the iteration is [Error e]. *) + val iter_es : + (key -> 'a -> (unit, 'trace) result Lwt.t) -> + 'a t -> + (unit, 'trace) result Lwt.t + + val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b + + (** [fold_e f m init] is + [f k1 d1 init >>? fun acc -> f k2 d2 acc >>? fun acc -> …] where [kN] is + the key bound to [dN] in [m]. *) + val fold_e : + (key -> 'a -> 'b -> ('b, 'trace) result) -> + 'a t -> + 'b -> + ('b, 'trace) result + + val fold_s : (key -> 'a -> 'b -> 'b Lwt.t) -> 'a t -> 'b -> 'b Lwt.t + + (** [fold_es f m init] is + [f k1 d1 init >>=? fun acc -> f k2 d2 acc >>=? fun acc -> …] where [kN] is + the key bound to [dN] in [m]. *) + val fold_es : + (key -> 'a -> 'b -> ('b, 'trace) result Lwt.t) -> + 'a t -> + 'b -> + ('b, 'trace) result Lwt.t + + val for_all : (key -> 'a -> bool) -> 'a t -> bool + + val exists : (key -> 'a -> bool) -> 'a t -> bool + + val filter : (key -> 'a -> bool) -> 'a t -> 'a t + + val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t + + val cardinal : 'a t -> int + + val bindings : 'a t -> (key * 'a) list + + val min_binding : 'a t -> (key * 'a) option + + val max_binding : 'a t -> (key * 'a) option + + val choose : 'a t -> (key * 'a) option + + val split : key -> 'a t -> 'a t * 'a option * 'a t + + val find : key -> 'a t -> 'a option + + val find_first : (key -> bool) -> 'a t -> (key * 'a) option + + val find_last : (key -> bool) -> 'a t -> (key * 'a) option + + val map : ('a -> 'b) -> 'a t -> 'b t + + val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t + + val to_seq : 'a t -> (key * 'a) Seq.t + + val to_seq_from : key -> 'a t -> (key * 'a) Seq.t + + val add_seq : (key * 'a) Seq.t -> 'a t -> 'a t + + val of_seq : (key * 'a) Seq.t -> 'a t + + val iter_ep : + (key -> 'a -> (unit, 'error Error_monad.trace) result Lwt.t) -> + 'a t -> + (unit, 'error Error_monad.trace) result Lwt.t + +end + +module Make (Ord : Compare.COMPARABLE) : S with type key = Ord.t diff --git a/src/lib_protocol_environment/sigs/v5/micheline.mli b/src/lib_protocol_environment/sigs/v5/micheline.mli new file mode 100644 index 0000000000..29f9ef5c47 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/micheline.mli @@ -0,0 +1,54 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type annot = string list + +type ('l, 'p) node = + | Int of 'l * Z.t + | String of 'l * string + | Bytes of 'l * bytes + | Prim of 'l * 'p * ('l, 'p) node list * annot + | Seq of 'l * ('l, 'p) node list + +type 'p canonical + +type canonical_location + +val dummy_location : canonical_location + +val root : 'p canonical -> (canonical_location, 'p) node + +val canonical_location_encoding : canonical_location Data_encoding.encoding + +val canonical_encoding : + variant:string -> + 'l Data_encoding.encoding -> + 'l canonical Data_encoding.encoding + +val location : ('l, 'p) node -> 'l + +val annotations : ('l, 'p) node -> string list + +val strip_locations : (_, 'p) node -> 'p canonical diff --git a/src/lib_protocol_environment/sigs/v5/operation.mli b/src/lib_protocol_environment/sigs/v5/operation.mli new file mode 100644 index 0000000000..f87670b4b1 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/operation.mli @@ -0,0 +1,38 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Tezos operations. *) + +type shell_header = { + branch : Block_hash.t; + (** The operation is only valid in a branch containing the + block [branch]. *) +} + +val shell_header_encoding : shell_header Data_encoding.t + +type t = {shell : shell_header; proto : bytes} + +include S.HASHABLE with type t := t and type hash := Operation_hash.t diff --git a/src/lib_protocol_environment/sigs/v5/operation_hash.mli b/src/lib_protocol_environment/sigs/v5/operation_hash.mli new file mode 100644 index 0000000000..15967e9d74 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/operation_hash.mli @@ -0,0 +1,27 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Operations hashes / IDs. *) +include S.HASH diff --git a/src/lib_protocol_environment/sigs/v5/operation_list_hash.mli b/src/lib_protocol_environment/sigs/v5/operation_list_hash.mli new file mode 100644 index 0000000000..f5c95720ae --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/operation_list_hash.mli @@ -0,0 +1,27 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Blocks hashes / IDs. *) +include S.MERKLE_TREE with type elt = Operation_hash.t diff --git a/src/lib_protocol_environment/sigs/v5/operation_list_list_hash.mli b/src/lib_protocol_environment/sigs/v5/operation_list_list_hash.mli new file mode 100644 index 0000000000..949a197839 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/operation_list_list_hash.mli @@ -0,0 +1,27 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Blocks hashes / IDs. *) +include S.MERKLE_TREE with type elt = Operation_list_hash.t diff --git a/src/lib_protocol_environment/sigs/v5/option.mli b/src/lib_protocol_environment/sigs/v5/option.mli new file mode 100644 index 0000000000..a86b7946ca --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/option.mli @@ -0,0 +1,142 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Signature from Lwtreslib's option module *) + +type 'a t = 'a option = None | Some of 'a + +val none : 'a option + +val none_e : ('a option, 'trace) result + +val none_s : 'a option Lwt.t + +val none_es : ('a option, 'trace) result Lwt.t + +val some : 'a -> 'a option + +val some_unit : unit option + +val some_nil : 'a list option + +val some_e : 'a -> ('a option, 'trace) result + +val some_s : 'a -> 'a option Lwt.t + +val some_es : 'a -> ('a option, 'trace) result Lwt.t + +val value : 'a option -> default:'a -> 'a + +val value_e : 'a option -> error:'trace -> ('a, 'trace) result + +val value_f : 'a option -> default:(unit -> 'a) -> 'a + +val value_fe : 'a option -> error:(unit -> 'trace) -> ('a, 'trace) result + +val bind : 'a option -> ('a -> 'b option) -> 'b option + +val join : 'a option option -> 'a option + +val either : 'a option -> 'a option -> 'a option + +val map : ('a -> 'b) -> 'a option -> 'b option + +val map_s : ('a -> 'b Lwt.t) -> 'a option -> 'b option Lwt.t + +val map_e : + ('a -> ('b, 'trace) result) -> 'a option -> ('b option, 'trace) result + +val map_es : + ('a -> ('b, 'trace) result Lwt.t) -> + 'a option -> + ('b option, 'trace) result Lwt.t + +val fold : none:'a -> some:('b -> 'a) -> 'b option -> 'a + +val fold_s : none:'a -> some:('b -> 'a Lwt.t) -> 'b option -> 'a Lwt.t + +val fold_f : none:(unit -> 'a) -> some:('b -> 'a) -> 'b option -> 'a + +val iter : ('a -> unit) -> 'a option -> unit + +val iter_s : ('a -> unit Lwt.t) -> 'a option -> unit Lwt.t + +val iter_e : + ('a -> (unit, 'trace) result) -> 'a option -> (unit, 'trace) result + +val iter_es : + ('a -> (unit, 'trace) result Lwt.t) -> + 'a option -> + (unit, 'trace) result Lwt.t + +val is_none : 'a option -> bool + +val is_some : 'a option -> bool + +val equal : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool + +val compare : ('a -> 'a -> int) -> 'a option -> 'a option -> int + +val to_result : none:'trace -> 'a option -> ('a, 'trace) result + +val of_result : ('a, 'e) result -> 'a option + +val to_list : 'a option -> 'a list + +val to_seq : 'a option -> 'a Seq.t + +(** [catch f] is [Some (f ())] if [f] does not raise an exception, it is + [None] otherwise. + + You should only use [catch] when you truly do not care about + what exception may be raised during the evaluation of [f ()]. If you need + to inspect the raised exception, or if you need to pass it along, consider + {!Result.catch} instead. + + If [catch_only] is set, then only exceptions [e] such that [catch_only e] + is [true] are caught. + + Whether [catch_only] is set or not, you cannot catch non-deterministic + runtime exceptions of OCaml such as {!Stack_overflow} and + {!Out_of_memory} nor system exceptions such as {!Unix.Unix_error}. *) +val catch : ?catch_only:(exn -> bool) -> (unit -> 'a) -> 'a option + +(** [catch_s f] is a promise that resolves to [Some x] if and when [f ()] + resolves to [x]. Alternatively, it resolves to [None] if and when [f ()] + is rejected. + + You should only use [catch_s] when you truly do not care about + what exception may be raised during the evaluation of [f ()]. If you need + to inspect the raised exception, or if you need to pass it along, consider + {!Result.catch_s} instead. + + If [catch_only] is set, then only exceptions [e] such that [catch_only e] + is [true] are caught. + + Whether [catch_only] is set or not, you cannot catch non-deterministic + runtime exceptions of OCaml such as {!Stack_overflow} and + {!Out_of_memory} nor system exceptions such as {!Unix.Unix_error}. *) +val catch_s : + ?catch_only:(exn -> bool) -> (unit -> 'a Lwt.t) -> 'a option Lwt.t diff --git a/src/lib_protocol_environment/sigs/v5/p256.mli b/src/lib_protocol_environment/sigs/v5/p256.mli new file mode 100644 index 0000000000..cc7ded3e5a --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/p256.mli @@ -0,0 +1,28 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Tezos - P256 cryptography *) + +include S.SIGNATURE with type watermark := bytes diff --git a/src/lib_protocol_environment/sigs/v5/pervasives.mli b/src/lib_protocol_environment/sigs/v5/pervasives.mli new file mode 100644 index 0000000000..f1a8eacdca --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/pervasives.mli @@ -0,0 +1,482 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** The OCaml Standard library. + + This module is automatically opened at the beginning of each + compilation. All components of this module can therefore be + referred by their short name, without prefixing them by [Stdlib]. + + It particular, it provides the basic operations over the built-in + types (numbers, booleans, byte sequences, strings, exceptions, + references, lists, arrays, input-output channels, ...) and the + {{!modules}standard library modules}. +*) + +(** {1 Exceptions} *) + +external raise : exn -> 'a = "%raise" +(** Raise the given exception value *) + +external raise_notrace : exn -> 'a = "%raise_notrace" +(** A faster version [raise] which does not record the backtrace. + @since 4.02.0 +*) + +val invalid_arg : string -> 'a +(** Raise exception [Invalid_argument] with the given string. *) + +val failwith : string -> 'a +(** Raise exception [Failure] with the given string. *) + +exception Exit +(** The [Exit] exception is not raised by any library function. It is + provided for use in your programs. *) + +(** {1 Boolean operations} *) + +external not : bool -> bool = "%boolnot" +(** The boolean negation. *) + +external ( && ) : bool -> bool -> bool = "%sequand" +(** The boolean 'and'. Evaluation is sequential, left-to-right: + in [e1 && e2], [e1] is evaluated first, and if it returns [false], + [e2] is not evaluated at all. + Right-associative operator, see {!Ocaml_operators} for more information. +*) + +external ( || ) : bool -> bool -> bool = "%sequor" +(** The boolean 'or'. Evaluation is sequential, left-to-right: + in [e1 || e2], [e1] is evaluated first, and if it returns [true], + [e2] is not evaluated at all. + Right-associative operator, see {!Ocaml_operators} for more information. +*) + +(** {1 Debugging} *) + +external __LOC__ : string = "%loc_LOC" +(** [__LOC__] returns the location at which this expression appears in + the file currently being parsed by the compiler, with the standard + error format of OCaml: "File %S, line %d, characters %d-%d". + @since 4.02.0 +*) + +external __FILE__ : string = "%loc_FILE" +(** [__FILE__] returns the name of the file currently being + parsed by the compiler. + @since 4.02.0 +*) + +external __LINE__ : int = "%loc_LINE" +(** [__LINE__] returns the line number at which this expression + appears in the file currently being parsed by the compiler. + @since 4.02.0 +*) + +external __MODULE__ : string = "%loc_MODULE" +(** [__MODULE__] returns the module name of the file being + parsed by the compiler. + @since 4.02.0 +*) + +external __POS__ : string * int * int * int = "%loc_POS" +(** [__POS__] returns a tuple [(file,lnum,cnum,enum)], corresponding + to the location at which this expression appears in the file + currently being parsed by the compiler. [file] is the current + filename, [lnum] the line number, [cnum] the character position in + the line and [enum] the last character position in the line. + @since 4.02.0 + *) + +external __LOC_OF__ : 'a -> string * 'a = "%loc_LOC" +(** [__LOC_OF__ expr] returns a pair [(loc, expr)] where [loc] is the + location of [expr] in the file currently being parsed by the + compiler, with the standard error format of OCaml: "File %S, line + %d, characters %d-%d". + @since 4.02.0 +*) + +external __LINE_OF__ : 'a -> int * 'a = "%loc_LINE" +(** [__LINE_OF__ expr] returns a pair [(line, expr)], where [line] is the + line number at which the expression [expr] appears in the file + currently being parsed by the compiler. + @since 4.02.0 + *) + +external __POS_OF__ : 'a -> (string * int * int * int) * 'a = "%loc_POS" +(** [__POS_OF__ expr] returns a pair [(loc,expr)], where [loc] is a + tuple [(file,lnum,cnum,enum)] corresponding to the location at + which the expression [expr] appears in the file currently being + parsed by the compiler. [file] is the current filename, [lnum] the + line number, [cnum] the character position in the line and [enum] + the last character position in the line. + @since 4.02.0 + *) + +(** {1 Composition operators} *) + +external ( |> ) : 'a -> ('a -> 'b) -> 'b = "%revapply" +(** Reverse-application operator: [x |> f |> g] is exactly equivalent + to [g (f (x))]. + Left-associative operator, see {!Ocaml_operators} for more information. + @since 4.01 +*) + +external ( @@ ) : ('a -> 'b) -> 'a -> 'b = "%apply" +(** Application operator: [g @@ f @@ x] is exactly equivalent to + [g (f (x))]. + Right-associative operator, see {!Ocaml_operators} for more information. + @since 4.01 +*) + +(** {1 Integer arithmetic} *) + +(** Integers are [Sys.int_size] bits wide. + All operations are taken modulo 2{^[Sys.int_size]}. + They do not fail on overflow. *) + +external ( ~- ) : int -> int = "%negint" +(** Unary negation. You can also write [- e] instead of [~- e]. + Unary operator, see {!Ocaml_operators} for more information. +*) + + +external ( ~+ ) : int -> int = "%identity" +(** Unary addition. You can also write [+ e] instead of [~+ e]. + Unary operator, see {!Ocaml_operators} for more information. + @since 3.12.0 +*) + +external succ : int -> int = "%succint" +(** [succ x] is [x + 1]. *) + +external pred : int -> int = "%predint" +(** [pred x] is [x - 1]. *) + +external ( + ) : int -> int -> int = "%addint" +(** Integer addition. + Left-associative operator, see {!Ocaml_operators} for more information. +*) + +external ( - ) : int -> int -> int = "%subint" +(** Integer subtraction. + Left-associative operator, , see {!Ocaml_operators} for more information. +*) + +external ( * ) : int -> int -> int = "%mulint" +(** Integer multiplication. + Left-associative operator, see {!Ocaml_operators} for more information. +*) + +external ( / ) : int -> int -> int = "%divint" +(** Integer division. + Raise [Division_by_zero] if the second argument is 0. + Integer division rounds the real quotient of its arguments towards zero. + More precisely, if [x >= 0] and [y > 0], [x / y] is the greatest integer + less than or equal to the real quotient of [x] by [y]. Moreover, + [(- x) / y = x / (- y) = - (x / y)]. + Left-associative operator, see {!Ocaml_operators} for more information. +*) + +external ( mod ) : int -> int -> int = "%modint" +(** Integer remainder. If [y] is not zero, the result + of [x mod y] satisfies the following properties: + [x = (x / y) * y + x mod y] and + [abs(x mod y) <= abs(y) - 1]. + If [y = 0], [x mod y] raises [Division_by_zero]. + Note that [x mod y] is negative only if [x < 0]. + Raise [Division_by_zero] if [y] is zero. + Left-associative operator, see {!Ocaml_operators} for more information. +*) + +val abs : int -> int +(** Return the absolute value of the argument. Note that this may be + negative if the argument is [min_int]. *) + +val max_int : int +(** The greatest representable integer. *) + +val min_int : int +(** The smallest representable integer. *) + + +(** {2 Bitwise operations} *) + +external ( land ) : int -> int -> int = "%andint" +(** Bitwise logical and. + Left-associative operator, see {!Ocaml_operators} for more information. +*) + +external ( lor ) : int -> int -> int = "%orint" +(** Bitwise logical or. + Left-associative operator, see {!Ocaml_operators} for more information. +*) + +external ( lxor ) : int -> int -> int = "%xorint" +(** Bitwise logical exclusive or. + Left-associative operator, see {!Ocaml_operators} for more information. +*) + +val lnot : int -> int +(** Bitwise logical negation. *) + +external ( lsl ) : int -> int -> int = "%lslint" +(** [n lsl m] shifts [n] to the left by [m] bits. + The result is unspecified if [m < 0] or [m > Sys.int_size]. + Right-associative operator, see {!Ocaml_operators} for more information. +*) + +external ( lsr ) : int -> int -> int = "%lsrint" +(** [n lsr m] shifts [n] to the right by [m] bits. + This is a logical shift: zeroes are inserted regardless of + the sign of [n]. + The result is unspecified if [m < 0] or [m > Sys.int_size]. + Right-associative operator, see {!Ocaml_operators} for more information. +*) + +external ( asr ) : int -> int -> int = "%asrint" +(** [n asr m] shifts [n] to the right by [m] bits. + This is an arithmetic shift: the sign bit of [n] is replicated. + The result is unspecified if [m < 0] or [m > Sys.int_size]. + Right-associative operator, see {!Ocaml_operators} for more information. +*) + +(** {1 String operations} + + More string operations are provided in module {!String}. +*) + +val ( ^ ) : string -> string -> string +(** String concatenation. + Right-associative operator, see {!Ocaml_operators} for more information. +*) + +(** {1 Character operations} + + More character operations are provided in module {!Char}. +*) + +external int_of_char : char -> int = "%identity" +(** Return the ASCII code of the argument. *) + +val char_of_int : int -> char +(** Return the character with the given ASCII code. + Raise [Invalid_argument "char_of_int"] if the argument is + outside the range 0--255. *) + + +(** {1 Unit operations} *) + +external ignore : 'a -> unit = "%ignore" +(** Discard the value of its argument and return [()]. + For instance, [ignore(f x)] discards the result of + the side-effecting function [f]. It is equivalent to + [f x; ()], except that the latter may generate a + compiler warning; writing [ignore(f x)] instead + avoids the warning. *) + + +(** {1 String conversion functions} *) + +val string_of_bool : bool -> string +(** Return the string representation of a boolean. As the returned values + may be shared, the user should not modify them directly. +*) + +val bool_of_string_opt: string -> bool option +(** Convert the given string to a boolean. + + Return [None] if the string is not ["true"] or ["false"]. + @since 4.05 +*) + +val string_of_int : int -> string +(** Return the string representation of an integer, in decimal. *) + +val int_of_string_opt: string -> int option +(** Convert the given string to an integer. + The string is read in decimal (by default, or if the string + begins with [0u]), in hexadecimal (if it begins with [0x] or + [0X]), in octal (if it begins with [0o] or [0O]), or in binary + (if it begins with [0b] or [0B]). + + The [0u] prefix reads the input as an unsigned integer in the range + [[0, 2*max_int+1]]. If the input exceeds {!max_int} + it is converted to the signed integer + [min_int + input - max_int - 1]. + + The [_] (underscore) character can appear anywhere in the string + and is ignored. + + Return [None] if the given string is not a valid representation of an + integer, or if the integer represented exceeds the range of integers + representable in type [int]. + @since 4.05 +*) + +(** {1 Pair operations} *) + +external fst : 'a * 'b -> 'a = "%field0" +(** Return the first component of a pair. *) + +external snd : 'a * 'b -> 'b = "%field1" +(** Return the second component of a pair. *) + + +(** {1 List operations} + + More list operations are provided in module {!List}. +*) + +val ( @ ) : 'a list -> 'a list -> 'a list +(** List concatenation. Not tail-recursive (length of the first argument). + Right-associative operator, see {!Ocaml_operators} for more information. +*) + +(** {1 References} *) + +type 'a ref = { mutable contents : 'a } +(** The type of references (mutable indirection cells) containing + a value of type ['a]. *) + +external ref : 'a -> 'a ref = "%makemutable" +(** Return a fresh reference containing the given value. *) + +external ( ! ) : 'a ref -> 'a = "%field0" +(** [!r] returns the current contents of reference [r]. + Equivalent to [fun r -> r.contents]. + Unary operator, see {!Ocaml_operators} for more information. +*) + +external ( := ) : 'a ref -> 'a -> unit = "%setfield0" +(** [r := a] stores the value of [a] in reference [r]. + Equivalent to [fun r v -> r.contents <- v]. + Right-associative operator, see {!Ocaml_operators} for more information. +*) + +external incr : int ref -> unit = "%incr" +(** Increment the integer contained in the given reference. + Equivalent to [fun r -> r := succ !r]. *) + +external decr : int ref -> unit = "%decr" +(** Decrement the integer contained in the given reference. + Equivalent to [fun r -> r := pred !r]. *) + +(** {1 Result type} *) + +(** @since 4.03.0 *) +type ('a,'b) result = Ok of 'a | Error of 'b + +(** {1 Operations on format strings} *) + +(** Format strings are character strings with special lexical conventions + that defines the functionality of formatted input/output functions. Format + strings are used to read data with formatted input functions from module + {!Scanf} and to print data with formatted output functions from modules + {!Printf} and {!Format}. + + Format strings are made of three kinds of entities: + - {e conversions specifications}, introduced by the special character ['%'] + followed by one or more characters specifying what kind of argument to + read or print, + - {e formatting indications}, introduced by the special character ['@'] + followed by one or more characters specifying how to read or print the + argument, + - {e plain characters} that are regular characters with usual lexical + conventions. Plain characters specify string literals to be read in the + input or printed in the output. + + There is an additional lexical rule to escape the special characters ['%'] + and ['@'] in format strings: if a special character follows a ['%'] + character, it is treated as a plain character. In other words, ["%%"] is + considered as a plain ['%'] and ["%@"] as a plain ['@']. + + For more information about conversion specifications and formatting + indications available, read the documentation of modules {!Scanf}, + {!Printf} and {!Format}. +*) + +(** Format strings have a general and highly polymorphic type + [('a, 'b, 'c, 'd, 'e, 'f) format6]. + The two simplified types, [format] and [format4] below are + included for backward compatibility with earlier releases of + OCaml. + + The meaning of format string type parameters is as follows: + + - ['a] is the type of the parameters of the format for formatted output + functions ([printf]-style functions); + ['a] is the type of the values read by the format for formatted input + functions ([scanf]-style functions). + + - ['b] is the type of input source for formatted input functions and the + type of output target for formatted output functions. + For [printf]-style functions from module {!Printf}, ['b] is typically + [out_channel]; + for [printf]-style functions from module {!Format}, ['b] is typically + {!Format.formatter}; + for [scanf]-style functions from module {!Scanf}, ['b] is typically + {!Scanf.Scanning.in_channel}. + + Type argument ['b] is also the type of the first argument given to + user's defined printing functions for [%a] and [%t] conversions, + and user's defined reading functions for [%r] conversion. + + - ['c] is the type of the result of the [%a] and [%t] printing + functions, and also the type of the argument transmitted to the + first argument of [kprintf]-style functions or to the + [kscanf]-style functions. + + - ['d] is the type of parameters for the [scanf]-style functions. + + - ['e] is the type of the receiver function for the [scanf]-style functions. + + - ['f] is the final result type of a formatted input/output function + invocation: for the [printf]-style functions, it is typically [unit]; + for the [scanf]-style functions, it is typically the result type of the + receiver function. +*) + +type ('a, 'b, 'c, 'd, 'e, 'f) format6 = + ('a, 'b, 'c, 'd, 'e, 'f) CamlinternalFormatBasics.format6 + +type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6 + +type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4 + +val string_of_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string +(** Converts a format string into a string. *) + +external format_of_string : + ('a, 'b, 'c, 'd, 'e, 'f) format6 -> + ('a, 'b, 'c, 'd, 'e, 'f) format6 = "%identity" +(** [format_of_string s] returns a format string read from the string + literal [s]. + Note: [format_of_string] can not convert a string argument that is not a + literal. If you need this functionality, use the more general + {!Scanf.format_from_string} function. +*) + +val ( ^^ ) : + ('a, 'b, 'c, 'd, 'e, 'f) format6 -> + ('f, 'b, 'c, 'e, 'g, 'h) format6 -> + ('a, 'b, 'c, 'd, 'g, 'h) format6 +(** [f1 ^^ f2] catenates format strings [f1] and [f2]. The result is a + format string that behaves as the concatenation of format strings [f1] and + [f2]: in case of formatted output, it accepts arguments from [f1], then + arguments from [f2]; in case of formatted input, it returns results from + [f1], then results from [f2]. + Right-associative operator, see {!Ocaml_operators} for more information. +*) diff --git a/src/lib_protocol_environment/sigs/v5/protocol.mli b/src/lib_protocol_environment/sigs/v5/protocol.mli new file mode 100644 index 0000000000..35bf38a36c --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/protocol.mli @@ -0,0 +1,44 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type t = {expected_env : env_version; components : component list} + +(** An OCaml source component of a protocol implementation. *) +and component = { + (* The OCaml module name. *) + name : string; + (* The OCaml interface source code *) + interface : string option; + (* The OCaml source code *) + implementation : string; +} + +and env_version = V0 | V1 | V2 | V3 | V4 | V5 + +val component_encoding : component Data_encoding.t + +val env_version_encoding : env_version Data_encoding.t + +include S.HASHABLE with type t := t and type hash := Protocol_hash.t diff --git a/src/lib_protocol_environment/sigs/v5/protocol_hash.mli b/src/lib_protocol_environment/sigs/v5/protocol_hash.mli new file mode 100644 index 0000000000..4b50414f89 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/protocol_hash.mli @@ -0,0 +1,27 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Protocol hashes / IDs. *) +include S.HASH diff --git a/src/lib_protocol_environment/sigs/v5/pvss_secp256k1.mli b/src/lib_protocol_environment/sigs/v5/pvss_secp256k1.mli new file mode 100644 index 0000000000..49f1026bd6 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/pvss_secp256k1.mli @@ -0,0 +1,28 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Metastate AG *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Tezos - PVSS Secp256k1 cryptography *) + +include S.PVSS diff --git a/src/lib_protocol_environment/sigs/v5/raw_hashes.mli b/src/lib_protocol_environment/sigs/v5/raw_hashes.mli new file mode 100644 index 0000000000..e493f7cdc6 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/raw_hashes.mli @@ -0,0 +1,36 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +val blake2b : bytes -> bytes + +val sha256 : bytes -> bytes + +val sha512 : bytes -> bytes + +val keccak256 : bytes -> bytes + +val sha3_256 : bytes -> bytes + +val sha3_512 : bytes -> bytes diff --git a/src/lib_protocol_environment/sigs/v5/result.mli b/src/lib_protocol_environment/sigs/v5/result.mli new file mode 100644 index 0000000000..818dd2a071 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/result.mli @@ -0,0 +1,160 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type ('a, 'e) t = ('a, 'e) result = Ok of 'a | Error of 'e (***) + +val ok : 'a -> ('a, 'e) result + +val ok_s : 'a -> ('a, 'e) result Lwt.t + +val error : 'e -> ('a, 'e) result + +val error_s : 'e -> ('a, 'e) result Lwt.t + +val return : 'a -> ('a, 'e) result + +val return_unit : (unit, 'e) result + +val return_none : ('a option, 'e) result + +val return_some : 'a -> ('a option, 'e) result + +val return_nil : ('a list, 'e) result + +val return_true : (bool, 'e) result + +val return_false : (bool, 'e) result + +val value : ('a, 'e) result -> default:'a -> 'a + +val value_f : ('a, 'e) result -> default:(unit -> 'a) -> 'a + +val bind : ('a, 'e) result -> ('a -> ('b, 'e) result) -> ('b, 'e) result + +val bind_s : + ('a, 'e) result -> ('a -> ('b, 'e) result Lwt.t) -> ('b, 'e) result Lwt.t + +val bind_error : ('a, 'e) result -> ('e -> ('a, 'f) result) -> ('a, 'f) result + +val bind_error_s : + ('a, 'e) result -> ('e -> ('a, 'f) result Lwt.t) -> ('a, 'f) result Lwt.t + +val join : (('a, 'e) result, 'e) result -> ('a, 'e) result + +val map : ('a -> 'b) -> ('a, 'e) result -> ('b, 'e) result + +(* NOTE: [map_e] is [bind] *) +val map_e : ('a -> ('b, 'e) result) -> ('a, 'e) result -> ('b, 'e) result + +val map_s : ('a -> 'b Lwt.t) -> ('a, 'e) result -> ('b, 'e) result Lwt.t + +(* NOTE: [map_es] is [bind_s] *) +val map_es : + ('a -> ('b, 'e) result Lwt.t) -> ('a, 'e) result -> ('b, 'e) result Lwt.t + +val map_error : ('e -> 'f) -> ('a, 'e) result -> ('a, 'f) result + +(* NOTE: [map_error_e] is [bind_error] *) +val map_error_e : ('e -> ('a, 'f) result) -> ('a, 'e) result -> ('a, 'f) result + +val map_error_s : ('e -> 'f Lwt.t) -> ('a, 'e) result -> ('a, 'f) result Lwt.t + +(* NOTE: [map_error_es] is [bind_error_s] *) +val map_error_es : + ('e -> ('a, 'f) result Lwt.t) -> ('a, 'e) result -> ('a, 'f) result Lwt.t + +val fold : ok:('a -> 'c) -> error:('e -> 'c) -> ('a, 'e) result -> 'c + +val iter : ('a -> unit) -> ('a, 'e) result -> unit + +val iter_s : ('a -> unit Lwt.t) -> ('a, 'e) result -> unit Lwt.t + +val iter_error : ('e -> unit) -> ('a, 'e) result -> unit + +val iter_error_s : ('e -> unit Lwt.t) -> ('a, 'e) result -> unit Lwt.t + +val is_ok : ('a, 'e) result -> bool + +val is_error : ('a, 'e) result -> bool + +val equal : + ok:('a -> 'a -> bool) -> + error:('e -> 'e -> bool) -> + ('a, 'e) result -> + ('a, 'e) result -> + bool + +val compare : + ok:('a -> 'a -> int) -> + error:('e -> 'e -> int) -> + ('a, 'e) result -> + ('a, 'e) result -> + int + +val to_option : ('a, 'e) result -> 'a option + +val of_option : error:'e -> 'a option -> ('a, 'e) result + +val to_list : ('a, 'e) result -> 'a list + +val to_seq : ('a, 'e) result -> 'a Seq.t + +(** [catch f] is [try Ok (f ()) with e -> Error e]: it is [Ok x] if [f ()] + evaluates to [x], and it is [Error e] if [f ()] raises [e]. + + See {!WithExceptions.S.Result.to_exn} for a converse function. + + If [catch_only] is set, then only exceptions [e] such that [catch_only e] + is [true] are caught. + + Whether [catch_only] is set or not, you cannot catch non-deterministic + runtime exceptions of OCaml such as {!Stack_overflow} and + {!Out_of_memory} nor system exceptions such as {!Unix.Unix_error}. *) +val catch : ?catch_only:(exn -> bool) -> (unit -> 'a) -> ('a, exn) result + +(** [catch_f f handler] is equivalent to [map_error (catch f) handler]. + In other words, it catches exceptions in [f ()] and either returns the + value in an [Ok] or passes the exception to [handler] for the [Error]. + + [catch_only] has the same use as with [catch]. The same restriction on + catching non-deterministic runtime exceptions applies. *) +val catch_f : + ?catch_only:(exn -> bool) -> + (unit -> 'a) -> + (exn -> 'error) -> + ('a, 'error) result + +(** [catch_s] is [catch] but for Lwt promises. Specifically, [catch_s f] + returns a promise that resolves to [Ok x] if and when [f ()] resolves to + [x], or to [Error exc] if and when [f ()] is rejected with [exc]. + + If [catch_only] is set, then only exceptions [e] such that [catch_only e] + is [true] are caught. + + Whether [catch_only] is set or not, you cannot catch non-deterministic + runtime exceptions of OCaml such as {!Stack_overflow} and + {!Out_of_memory} nor system exceptions such as {!Unix.Unix_error}. *) +val catch_s : + ?catch_only:(exn -> bool) -> (unit -> 'a Lwt.t) -> ('a, exn) result Lwt.t diff --git a/src/lib_protocol_environment/sigs/v5/s.mli b/src/lib_protocol_environment/sigs/v5/s.mli new file mode 100644 index 0000000000..3bca106e31 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/s.mli @@ -0,0 +1,406 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* Copyright (c) 2020 Metastate AG *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Generic interface for a datatype with comparison, pretty-printer + and serialization functions. *) +module type T = sig + type t + + include Compare.S with type t := t + + val pp : Format.formatter -> t -> unit + + val encoding : t Data_encoding.t + + val to_bytes : t -> bytes + + val of_bytes : bytes -> t option +end + +(** Generic interface for a datatype with comparison, pretty-printer, + serialization functions and a hashing function. *) +module type HASHABLE = sig + include T + + type hash + + val hash : t -> hash + + val hash_raw : bytes -> hash +end + +(** {2 Hash Types} *) + +(** The signature of an abstract hash type, as produced by functor + {!Make_SHA256}. The {!t} type is abstracted for separating the + various kinds of hashes in the system at typing time. Each type is + equipped with functions to use it as is of as keys in the database + or in memory sets and maps. *) + +module type MINIMAL_HASH = sig + type t + + val name : string + + val title : string + + val pp : Format.formatter -> t -> unit + + val pp_short : Format.formatter -> t -> unit + + include Compare.S with type t := t + + val hash_bytes : ?key:bytes -> bytes list -> t + + val hash_string : ?key:string -> string list -> t + + val zero : t +end + +module type RAW_DATA = sig + type t + + val size : int (* in bytes *) + + val to_bytes : t -> bytes + + val of_bytes_opt : bytes -> t option + + val of_bytes_exn : bytes -> t +end + +module type B58_DATA = sig + type t + + val to_b58check : t -> string + + val to_short_b58check : t -> string + + val of_b58check_exn : string -> t + + val of_b58check_opt : string -> t option + + type Base58.data += Data of t + + val b58check_encoding : t Base58.encoding +end + +module type ENCODER = sig + type t + + val encoding : t Data_encoding.t + + val rpc_arg : t RPC_arg.t +end + +module type INDEXES_SET = sig + include Set.S + + val random_elt : t -> elt + + val encoding : t Data_encoding.t +end + +module type INDEXES_MAP = sig + include Map.S + + val encoding : 'a Data_encoding.t -> 'a t Data_encoding.t +end + +module type INDEXES = sig + type t + + module Set : INDEXES_SET with type elt = t + + module Map : INDEXES_MAP with type key = t +end + +module type HASH = sig + include MINIMAL_HASH + + include RAW_DATA with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + + include INDEXES with type t := t +end + +module type MERKLE_TREE = sig + type elt + + include HASH + + val compute : elt list -> t + + val empty : t + + type path = Left of path * t | Right of t * path | Op + + val compute_path : elt list -> int -> path + + val check_path : path -> elt -> t * int + + val path_encoding : path Data_encoding.t +end + +module type SIGNATURE_PUBLIC_KEY_HASH = sig + type t + + val pp : Format.formatter -> t -> unit + + val pp_short : Format.formatter -> t -> unit + + include Compare.S with type t := t + + include RAW_DATA with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + + include INDEXES with type t := t + + val zero : t +end + +module type SIGNATURE_PUBLIC_KEY = sig + type t + + val pp : Format.formatter -> t -> unit + + include Compare.S with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + + type public_key_hash_t + + val hash : t -> public_key_hash_t + + val size : t -> int (* in bytes *) + + val of_bytes_without_validation : bytes -> t option +end + +module type SIGNATURE = sig + module Public_key_hash : SIGNATURE_PUBLIC_KEY_HASH + + module Public_key : + SIGNATURE_PUBLIC_KEY with type public_key_hash_t := Public_key_hash.t + + type t + + val pp : Format.formatter -> t -> unit + + include RAW_DATA with type t := t + + include Compare.S with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t + + val zero : t + + type watermark + + (** Check a signature *) + val check : ?watermark:watermark -> Public_key.t -> t -> bytes -> bool +end + +module type FIELD = sig + type t + + (** The order of the finite field *) + val order : Z.t + + (** minimal number of bytes required to encode a value of the field. *) + val size_in_bytes : int + + (** [check_bytes bs] returns [true] if [bs] is a correct byte + representation of a field element *) + val check_bytes : Bytes.t -> bool + + (** The neutral element for the addition *) + val zero : t + + (** The neutral element for the multiplication *) + val one : t + + (** [add a b] returns [a + b mod order] *) + val add : t -> t -> t + + (** [mul a b] returns [a * b mod order] *) + val mul : t -> t -> t + + (** [eq a b] returns [true] if [a = b mod order], else [false] *) + val eq : t -> t -> bool + + (** [negate x] returns [-x mod order]. Equivalently, [negate x] returns the + unique [y] such that [x + y mod order = 0] + *) + val negate : t -> t + + (** [inverse_opt x] returns [x^-1] if [x] is not [0] as an option, else [None] *) + val inverse_opt : t -> t option + + (** [pow x n] returns [x^n] *) + val pow : t -> Z.t -> t + + (** From a predefined bytes representation, construct a value t. It is not + required that to_bytes [(Option.get (of_bytes_opt t)) = t]. By default, + little endian encoding is used and the given element is modulo the prime + order *) + val of_bytes_opt : Bytes.t -> t option + + (** Convert the value t to a bytes representation which can be used for + hashing for instance. It is not required that [to_bytes (Option.get + (of_bytes_opt t)) = t]. By default, little endian encoding is used, and + length of the resulting bytes may vary depending on the order. + *) + val to_bytes : t -> Bytes.t +end + +(** Module type for the prime fields GF(p) *) +module type PRIME_FIELD = sig + include FIELD + + (** [of_z x] builds an element t from the Zarith element [x]. [mod order] is + applied if [x >= order] or [x < 0]. *) + val of_z : Z.t -> t + + (** [to_z x] builds a Zarith element, using the decimal representation. + Arithmetic on the result can be done using the modular functions on + integers *) + val to_z : t -> Z.t +end + +module type CURVE = sig + (** The type of the element in the elliptic curve *) + type t + + (** The size of a point representation, in bytes *) + val size_in_bytes : int + + module Scalar : FIELD + + (** Check if a point, represented as a byte array, is on the curve **) + val check_bytes : Bytes.t -> bool + + (** Attempt to construct a point from a byte array *) + val of_bytes_opt : Bytes.t -> t option + + (** Return a representation in bytes *) + val to_bytes : t -> Bytes.t + + (** Zero of the elliptic curve *) + val zero : t + + (** A fixed generator of the elliptic curve *) + val one : t + + (** Return the addition of two element *) + val add : t -> t -> t + + (** Double the element *) + val double : t -> t + + (** Return the opposite of the element *) + val negate : t -> t + + (** Return [true] if the two elements are algebraically the same *) + val eq : t -> t -> bool + + (** Multiply an element by a scalar *) + val mul : t -> Scalar.t -> t +end + +module type PVSS_ELEMENT = sig + type t + + include B58_DATA with type t := t + + include ENCODER with type t := t +end + +module type PVSS_PUBLIC_KEY = sig + type t + + val pp : Format.formatter -> t -> unit + + include Compare.S with type t := t + + include RAW_DATA with type t := t + + include B58_DATA with type t := t + + include ENCODER with type t := t +end + +module type PVSS_SECRET_KEY = sig + type public_key + + type t + + include ENCODER with type t := t + + val to_public_key : t -> public_key +end + +module type PVSS = sig + type proof + + module Clear_share : PVSS_ELEMENT + + module Commitment : PVSS_ELEMENT + + module Encrypted_share : PVSS_ELEMENT + + module Public_key : PVSS_PUBLIC_KEY + + module Secret_key : PVSS_SECRET_KEY with type public_key := Public_key.t + + val proof_encoding : proof Data_encoding.t + + val check_dealer_proof : + Encrypted_share.t list -> + Commitment.t list -> + proof:proof -> + public_keys:Public_key.t list -> + bool + + val check_revealed_share : + Encrypted_share.t -> + Clear_share.t -> + public_key:Public_key.t -> + proof -> + bool + + val reconstruct : Clear_share.t list -> int list -> Public_key.t +end diff --git a/src/lib_protocol_environment/sigs/v5/sapling.mli b/src/lib_protocol_environment/sigs/v5/sapling.mli new file mode 100644 index 0000000000..682a867464 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/sapling.mli @@ -0,0 +1,125 @@ +(* The MIT License (MIT) + * + * Copyright (c) 2019-2020 Nomadic Labs + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. *) + +module Ciphertext : sig + type t + + val encoding : t Data_encoding.t + + val get_memo_size : t -> int +end + +module Commitment : sig + type t + + val encoding : t Data_encoding.t + + val valid_position : int64 -> bool +end + +module CV : sig + type t + + val encoding : t Data_encoding.t +end + +module Hash : sig + type t + + val compare : t -> t -> int + + val encoding : t Data_encoding.t + + val to_bytes : t -> Bytes.t + + val of_bytes_exn : Bytes.t -> t + + val uncommitted : height:int -> t + + val merkle_hash : height:int -> t -> t -> t + + val of_commitment : Commitment.t -> t + + val to_commitment : t -> Commitment.t +end + +module Nullifier : sig + type t + + val encoding : t Data_encoding.t + + val compare : t -> t -> int +end + +module UTXO : sig + type rk + + type spend_proof + + type spend_sig + + type output_proof + + type input = { + cv : CV.t; + nf : Nullifier.t; + rk : rk; + proof_i : spend_proof; + signature : spend_sig; + } + + val input_encoding : input Data_encoding.t + + type output = { + cm : Commitment.t; + proof_o : output_proof; + ciphertext : Ciphertext.t; + } + + val output_encoding : output Data_encoding.t + + type binding_sig + + type transaction = { + inputs : input list; + outputs : output list; + binding_sig : binding_sig; + balance : Int64.t; + root : Hash.t; + } + + val transaction_encoding : transaction Data_encoding.t + + val binding_sig_encoding : binding_sig Data_encoding.t +end + +module Verification : sig + type t + + val with_verification_ctx : (t -> 'a) -> 'a + + val check_spend : t -> UTXO.input -> Hash.t -> string -> bool + + val check_output : t -> UTXO.output -> bool + + val final_check : t -> UTXO.transaction -> string -> bool +end diff --git a/src/lib_protocol_environment/sigs/v5/secp256k1.mli b/src/lib_protocol_environment/sigs/v5/secp256k1.mli new file mode 100644 index 0000000000..a7fe448185 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/secp256k1.mli @@ -0,0 +1,28 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Tezos - Secp256k1 cryptography *) + +include S.SIGNATURE with type watermark := bytes diff --git a/src/lib_protocol_environment/sigs/v5/seq.mli b/src/lib_protocol_environment/sigs/v5/seq.mli new file mode 100644 index 0000000000..74d5054d4b --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/seq.mli @@ -0,0 +1,119 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(* From Lwtreslib *) + +type 'a t = unit -> 'a node + +and +'a node = 'a Stdlib.Seq.node = Nil | Cons of 'a * 'a t + +val empty : 'a t + +val return : 'a -> 'a t + +val cons : 'a -> 'a t -> 'a t + +val append : 'a t -> 'a t -> 'a t + +val map : ('a -> 'b) -> 'a t -> 'b t + +val filter : ('a -> bool) -> 'a t -> 'a t + +val filter_map : ('a -> 'b option) -> 'a t -> 'b t + +val flat_map : ('a -> 'b t) -> 'a t -> 'b t + +val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a + +val iter : ('a -> unit) -> 'a t -> unit + +val unfold : ('b -> ('a * 'b) option) -> 'b -> 'a t + +(** {3 Lwtreslib-specific extensions} *) + +(** [first s] is [None] if [s] is empty, it is [Some x] where [x] is the + first element of [s] otherwise. + + Note that [first] forces the first element of the sequence, which can have + side-effects or be computationally expensive. Consider, e.g., the case + where [s = filter (fun …) s']: [first s] can force multiple of the values + from [s']. *) +val first : 'a t -> 'a option + +(** Similar to {!fold_left} but wraps the traversal in {!result}. The + traversal is interrupted if one of the step returns an [Error _]. *) +val fold_left_e : + ('a -> 'b -> ('a, 'trace) result) -> 'a -> 'b t -> ('a, 'trace) result + +(** Similar to {!fold_left} but wraps the traversing in {!Lwt}. Each step of + the traversal is started after the previous one has resolved. The + traversal is interrupted if one of the promise is rejected. *) +val fold_left_s : ('a -> 'b -> 'a Lwt.t) -> 'a -> 'b t -> 'a Lwt.t + +(** Similar to {!fold_left} but wraps the traversing in [result Lwt.t]. + Each step of the traversal is started after the previous one resolved. The + traversal is interrupted if one of the step is rejected or is fulfilled + with [Error _]. *) +val fold_left_es : + ('a -> 'b -> ('a, 'trace) result Lwt.t) -> + 'a -> + 'b t -> + ('a, 'trace) result Lwt.t + +(** Similar to {!iter} but wraps the iteration in {!result}. The iteration + is interrupted if one of the step returns an [Error _]. *) +val iter_e : ('a -> (unit, 'trace) result) -> 'a t -> (unit, 'trace) result + +(** Similar to {!iter} but wraps the iteration in {!Lwt}. Each step + of the iteration is started after the previous one resolved. The iteration + is interrupted if one of the promise is rejected. *) +val iter_s : ('a -> unit Lwt.t) -> 'a t -> unit Lwt.t + +(** Similar to {!iter} but wraps the iteration in [result Lwt.t]. Each step + of the iteration is started after the previous one resolved. The iteration + is interrupted if one of the promise is rejected of fulfilled with an + [Error _]. *) +val iter_es : + ('a -> (unit, 'trace) result Lwt.t) -> 'a t -> (unit, 'trace) result Lwt.t + +(** Similar to {!iter} but wraps the iteration in [result Lwt.t]. All the + steps of the iteration are started concurrently. The promise [iter_ep] + resolves once all the promises of the traversal resolve. At this point it + either: + - is rejected if at least one of the promises is, otherwise + - is fulfilled with [Error _] if at least one of the promises is, + otherwise + - is fulfilled with [Ok ()] if all the promises are. *) +val iter_ep : + ('a -> (unit, 'error Error_monad.trace) result Lwt.t) -> + 'a t -> + (unit, 'error Error_monad.trace) result Lwt.t + +(** Similar to {!iter} but wraps the iteration in {!Lwt}. All the + steps of the iteration are started concurrently. The promise [iter_p f s] + is resolved only once all the promises of the iteration are. At this point + it is either fulfilled if all promises are, or rejected if at least one of + them is. *) +val iter_p : ('a -> unit Lwt.t) -> 'a t -> unit Lwt.t diff --git a/src/lib_protocol_environment/sigs/v5/set.mli b/src/lib_protocol_environment/sigs/v5/set.mli new file mode 100644 index 0000000000..ade4bb1cff --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/set.mli @@ -0,0 +1,131 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(* From Lwtreslib *) + +module type S = sig + type elt + + type t + + (**/**) + module Legacy : Stdlib.Set.S with type elt = elt and type t = t + (**/**) + + val empty : t + + val is_empty : t -> bool + + val mem : elt -> t -> bool + + val add : elt -> t -> t + + val singleton : elt -> t + + val remove : elt -> t -> t + + val union : t -> t -> t + + val inter : t -> t -> t + + val disjoint : t -> t -> bool + + val diff : t -> t -> t + + val compare : t -> t -> int + + val equal : t -> t -> bool + + val subset : t -> t -> bool + + val iter : (elt -> unit) -> t -> unit + + val iter_e : (elt -> (unit, 'trace) result) -> t -> (unit, 'trace) result + + val iter_s : (elt -> unit Lwt.t) -> t -> unit Lwt.t + + val iter_p : (elt -> unit Lwt.t) -> t -> unit Lwt.t + + val iter_es : + (elt -> (unit, 'trace) result Lwt.t) -> t -> (unit, 'trace) result Lwt.t + + val map : (elt -> elt) -> t -> t + + val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a + + val fold_e : + (elt -> 'a -> ('a, 'trace) result) -> t -> 'a -> ('a, 'trace) result + + val fold_s : (elt -> 'a -> 'a Lwt.t) -> t -> 'a -> 'a Lwt.t + + val fold_es : + (elt -> 'a -> ('a, 'trace) result Lwt.t) -> + t -> + 'a -> + ('a, 'trace) result Lwt.t + + val for_all : (elt -> bool) -> t -> bool + + val exists : (elt -> bool) -> t -> bool + + val filter : (elt -> bool) -> t -> t + + val partition : (elt -> bool) -> t -> t * t + + val cardinal : t -> int + + val elements : t -> elt list + + val min_elt : t -> elt option + + val max_elt : t -> elt option + + val choose : t -> elt option + + val split : elt -> t -> t * bool * t + + val find : elt -> t -> elt option + + val find_first : (elt -> bool) -> t -> elt option + + val find_last : (elt -> bool) -> t -> elt option + + val of_list : elt list -> t + + val to_seq_from : elt -> t -> elt Seq.t + + val to_seq : t -> elt Seq.t + + val add_seq : elt Seq.t -> t -> t + + val of_seq : elt Seq.t -> t + + val iter_ep : + (elt -> (unit, 'error Error_monad.trace) result Lwt.t) -> + t -> + (unit, 'error Error_monad.trace) result Lwt.t +end + +module Make (Ord : Compare.COMPARABLE) : S with type elt = Ord.t diff --git a/src/lib_protocol_environment/sigs/v5/signature.mli b/src/lib_protocol_environment/sigs/v5/signature.mli new file mode 100644 index 0000000000..1a1d295d60 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/signature.mli @@ -0,0 +1,46 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type public_key_hash = + | Ed25519 of Ed25519.Public_key_hash.t + | Secp256k1 of Secp256k1.Public_key_hash.t + | P256 of P256.Public_key_hash.t + +type public_key = + | Ed25519 of Ed25519.Public_key.t + | Secp256k1 of Secp256k1.Public_key.t + | P256 of P256.Public_key.t + +type watermark = + | Block_header of Chain_id.t + | Endorsement of Chain_id.t + | Generic_operation + | Custom of bytes + +include + S.SIGNATURE + with type Public_key_hash.t = public_key_hash + and type Public_key.t = public_key + and type watermark := watermark diff --git a/src/lib_protocol_environment/sigs/v5/string.mli b/src/lib_protocol_environment/sigs/v5/string.mli new file mode 100644 index 0000000000..e18c5afa07 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/string.mli @@ -0,0 +1,242 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** String operations. + + A string is an immutable data structure that contains a + fixed-length sequence of (single-byte) characters. Each character + can be accessed in constant time through its index. + + Given a string [s] of length [l], we can access each of the [l] + characters of [s] via its index in the sequence. Indexes start at + [0], and we will call an index valid in [s] if it falls within the + range [[0...l-1]] (inclusive). A position is the point between two + characters or at the beginning or end of the string. We call a + position valid in [s] if it falls within the range [[0...l]] + (inclusive). Note that the character at index [n] is between + positions [n] and [n+1]. + + Two parameters [start] and [len] are said to designate a valid + substring of [s] if [len >= 0] and [start] and [start+len] are + valid positions in [s]. + + Note: OCaml strings used to be modifiable in place, for instance via + the {!String.set} and {!String.blit} functions described below. This + usage is only possible when the compiler is put in "unsafe-string" + mode by giving the [-unsafe-string] command-line option. This + compatibility mode makes the types [string] and [bytes] (see module + {!Bytes}) interchangeable so that functions expecting byte sequences + can also accept strings as arguments and modify them. + + The distinction between [bytes] and [string] was introduced in OCaml + 4.02, and the "unsafe-string" compatibility mode was the default + until OCaml 4.05. Starting with 4.06, the compatibility mode is + opt-in; we intend to remove the option in the future. +*) + +external length : string -> int = "%string_length" +(** Return the length (number of characters) of the given string. *) + +external get : string -> int -> char = "%string_safe_get" +(** [String.get s n] returns the character at index [n] in string [s]. + You can also write [s.[n]] instead of [String.get s n]. + + Raise [Invalid_argument] if [n] not a valid index in [s]. *) + + +val make : int -> char -> string +(** [String.make n c] returns a fresh string of length [n], + filled with the character [c]. + + Raise [Invalid_argument] if [n < 0] or [n > ]{!Sys.max_string_length}. *) + +val init : int -> (int -> char) -> string +(** [String.init n f] returns a string of length [n], with character + [i] initialized to the result of [f i] (called in increasing + index order). + + Raise [Invalid_argument] if [n < 0] or [n > ]{!Sys.max_string_length}. + + @since 4.02.0 +*) + +val sub : string -> int -> int -> string +(** [String.sub s start len] returns a fresh string of length [len], + containing the substring of [s] that starts at position [start] and + has length [len]. + + Raise [Invalid_argument] if [start] and [len] do not + designate a valid substring of [s]. *) + +val blit : string -> int -> bytes -> int -> int -> unit +(** Same as {!Bytes.blit_string}. *) + +val concat : string -> string list -> string +(** [String.concat sep sl] concatenates the list of strings [sl], + inserting the separator string [sep] between each. + + Raise [Invalid_argument] if the result is longer than + {!Sys.max_string_length} bytes. *) + +val iter : (char -> unit) -> string -> unit +(** [String.iter f s] applies function [f] in turn to all + the characters of [s]. It is equivalent to + [f s.[0]; f s.[1]; ...; f s.[String.length s - 1]; ()]. *) + +val iteri : (int -> char -> unit) -> string -> unit +(** Same as {!String.iter}, but the + function is applied to the index of the element as first argument + (counting from 0), and the character itself as second argument. + @since 4.00.0 *) + +val map : (char -> char) -> string -> string +(** [String.map f s] applies function [f] in turn to all the + characters of [s] (in increasing index order) and stores the + results in a new string that is returned. + @since 4.00.0 *) + +val mapi : (int -> char -> char) -> string -> string +(** [String.mapi f s] calls [f] with each character of [s] and its + index (in increasing index order) and stores the results in a new + string that is returned. + @since 4.02.0 *) + +val trim : string -> string +(** Return a copy of the argument, without leading and trailing + whitespace. The characters regarded as whitespace are: [' '], + ['\012'], ['\n'], ['\r'], and ['\t']. If there is neither leading nor + trailing whitespace character in the argument, return the original + string itself, not a copy. + @since 4.00.0 *) + +val escaped : string -> string +(** Return a copy of the argument, with special characters + represented by escape sequences, following the lexical + conventions of OCaml. + All characters outside the ASCII printable range (32..126) are + escaped, as well as backslash and double-quote. + + If there is no special character in the argument that needs + escaping, return the original string itself, not a copy. + + Raise [Invalid_argument] if the result is longer than + {!Sys.max_string_length} bytes. + + The function {!Scanf.unescaped} is a left inverse of [escaped], + i.e. [Scanf.unescaped (escaped s) = s] for any string [s] (unless + [escape s] fails). *) + +val index_opt: string -> char -> int option +(** [String.index_opt s c] returns the index of the first + occurrence of character [c] in string [s], or + [None] if [c] does not occur in [s]. + @since 4.05 *) + +val rindex_opt: string -> char -> int option +(** [String.rindex_opt s c] returns the index of the last occurrence + of character [c] in string [s], or [None] if [c] does not occur in + [s]. + @since 4.05 *) + +val index_from_opt: string -> int -> char -> int option +(** [String.index_from_opt s i c] returns the index of the + first occurrence of character [c] in string [s] after position [i] + or [None] if [c] does not occur in [s] after position [i]. + + [String.index_opt s c] is equivalent to [String.index_from_opt s 0 c]. + Raise [Invalid_argument] if [i] is not a valid position in [s]. + + @since 4.05 +*) + +val rindex_from_opt: string -> int -> char -> int option +(** [String.rindex_from_opt s i c] returns the index of the + last occurrence of character [c] in string [s] before position [i+1] + or [None] if [c] does not occur in [s] before position [i+1]. + + [String.rindex_opt s c] is equivalent to + [String.rindex_from_opt s (String.length s - 1) c]. + + Raise [Invalid_argument] if [i+1] is not a valid position in [s]. + + @since 4.05 +*) + +val contains : string -> char -> bool +(** [String.contains s c] tests if character [c] + appears in the string [s]. *) + +val contains_from : string -> int -> char -> bool +(** [String.contains_from s start c] tests if character [c] + appears in [s] after position [start]. + [String.contains s c] is equivalent to + [String.contains_from s 0 c]. + + Raise [Invalid_argument] if [start] is not a valid position in [s]. *) + +val rcontains_from : string -> int -> char -> bool +(** [String.rcontains_from s stop c] tests if character [c] + appears in [s] before position [stop+1]. + + Raise [Invalid_argument] if [stop < 0] or [stop+1] is not a valid + position in [s]. *) + +val uppercase_ascii : string -> string +(** Return a copy of the argument, with all lowercase letters + translated to uppercase, using the US-ASCII character set. + @since 4.03.0 *) + +val lowercase_ascii : string -> string +(** Return a copy of the argument, with all uppercase letters + translated to lowercase, using the US-ASCII character set. + @since 4.03.0 *) + +val capitalize_ascii : string -> string +(** Return a copy of the argument, with the first character set to uppercase, + using the US-ASCII character set. + @since 4.03.0 *) + +val uncapitalize_ascii : string -> string +(** Return a copy of the argument, with the first character set to lowercase, + using the US-ASCII character set. + @since 4.03.0 *) + +type t = string +(** An alias for the type of strings. *) + +val compare: t -> t -> int +(** The comparison function for strings, with the same specification as + {!Stdlib.compare}. Along with the type [t], this function [compare] + allows the module [String] to be passed as argument to the functors + {!Set.Make} and {!Map.Make}. *) + +val equal: t -> t -> bool +(** The equal function for strings. + @since 4.03.0 *) + +val split_on_char: char -> string -> string list +(** [String.split_on_char sep s] returns the list of all (possibly empty) + substrings of [s] that are delimited by the [sep] character. + + The function's output is specified by the following invariants: + + - The list is not empty. + - Concatenating its elements using [sep] as a separator returns a + string equal to the input ([String.concat (String.make 1 sep) + (String.split_on_char sep s) = s]). + - No string in the result contains the [sep] character. + + @since 4.04.0 +*) diff --git a/src/lib_protocol_environment/sigs/v5/tezos_data.mli b/src/lib_protocol_environment/sigs/v5/tezos_data.mli new file mode 100644 index 0000000000..f14e14044b --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/tezos_data.mli @@ -0,0 +1,26 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +module Protocol : sig end diff --git a/src/lib_protocol_environment/sigs/v5/time.mli b/src/lib_protocol_environment/sigs/v5/time.mli new file mode 100644 index 0000000000..d555494d2b --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/time.mli @@ -0,0 +1,48 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +type t + +include Compare.S with type t := t + +val add : t -> int64 -> t + +val diff : t -> t -> int64 + +val of_seconds : int64 -> t + +val to_seconds : t -> int64 + +val of_notation : string -> t option + +val of_notation_exn : string -> t + +val to_notation : t -> string + +val encoding : t Data_encoding.t + +val rfc_encoding : t Data_encoding.t + +val pp_hum : Format.formatter -> t -> unit diff --git a/src/lib_protocol_environment/sigs/v5/timelock.mli b/src/lib_protocol_environment/sigs/v5/timelock.mli new file mode 100644 index 0000000000..4151d194a0 --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/timelock.mli @@ -0,0 +1,53 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2020 Nomadic Labs, chest_key -> time:int -> opening_result + +(** Gives the size of the underlying plaintext in a chest in bytes. + Used for gas accounting*) +val get_plaintext_size : chest -> int diff --git a/src/lib_protocol_environment/sigs/v5/tzEndian.mli b/src/lib_protocol_environment/sigs/v5/tzEndian.mli new file mode 100644 index 0000000000..4766e9e73f --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/tzEndian.mli @@ -0,0 +1,60 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2019 Nomadic Labs, *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +val get_int32 : bytes -> int -> int32 + +val get_int32_string : string -> int -> int32 + +val set_int32 : bytes -> int -> int32 -> unit + +val set_int8 : bytes -> int -> int -> unit + +val get_int8 : bytes -> int -> int + +val get_int8_string : string -> int -> int + +val set_int16 : bytes -> int -> int -> unit + +val get_int16 : bytes -> int -> int + +val get_int16_string : string -> int -> int + +val set_int64 : bytes -> int -> int64 -> unit + +val get_int64 : bytes -> int -> int64 + +val get_int64_string : string -> int -> int64 + +val get_uint8 : bytes -> int -> int + +val get_uint8_string : string -> int -> int + +val set_uint8 : bytes -> int -> int -> unit + +val get_uint16 : bytes -> int -> int + +val get_uint16_string : string -> int -> int + +val set_uint16 : bytes -> int -> int -> unit diff --git a/src/lib_protocol_environment/sigs/v5/updater.mli b/src/lib_protocol_environment/sigs/v5/updater.mli new file mode 100644 index 0000000000..d1858539ba --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/updater.mli @@ -0,0 +1,295 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(** Tezos Protocol Environment - Protocol updater. *) + +(** Validation result: the record returned by the protocol + on the successful validation of a block. *) +type validation_result = { + context : Context.t; + (** The resulting context, it will be used for the next block. *) + fitness : Fitness.t; + (** The effective fitness of the block (to be compared with the one + 'announced' in the block header). *) + message : string option; + (** An optional informative message, akin to a 'git commit' message, + which can be attached to the [context] when it's being commited. *) + max_operations_ttl : int; + (** The "time-to-live" of operations for the next block: any + operation whose 'branch' is older than 'ttl' blocks in the past + cannot be included in the next block. *) + last_allowed_fork_level : Int32.t; + (** The level of the last block for which the node might consider an + alternate branch. The shell should consider as invalid any branch + whose fork point is older (has a lower level) than the + given value. *) +} + +type quota = { + max_size : int; + (** The maximum size (in bytes) of the serialized list of + operations. *) + max_op : int option; + (** The maximum number of operations in a block. + [None] means no limit. *) +} + +type rpc_context = { + block_hash : Block_hash.t; + block_header : Block_header.shell_header; + context : Context.t; +} + +(** This is the signature of a Tezos protocol implementation. It has + access to the standard library and the Environment module. *) +module type PROTOCOL = sig + (** The maximum size of a block header in bytes. *) + val max_block_length : int + + (** The maximum size of an {!operation} in bytes. This value is bigger than the size + of the bytes required for {!operation_data}, because this value accounts + for the shell header. *) + val max_operation_data_length : int + + (** Operations quota for each validation pass. The length of the + list denotes the number of validation passes. *) + val validation_passes : quota list + + (** The economic protocol-specific type of blocks. *) + type block_header_data + + (** Encoding for economic protocol-specific part of block headers. *) + val block_header_data_encoding : block_header_data Data_encoding.t + + (** A fully parsed block header. *) + type block_header = { + shell : Block_header.shell_header; + protocol_data : block_header_data; + } + + (** Economic protocol-specific side information computed by the + protocol during the validation of a block. Should not include + information about the evaluation of operations which is handled + separately by {!operation_metadata}. To be used as an execution + trace by tools (client, indexer). Not necessary for + validation. *) + type block_header_metadata + + (** Encoding for economic protocol-specific block metadata. *) + val block_header_metadata_encoding : block_header_metadata Data_encoding.t + + (** The economic protocol-specific type of operations. *) + type operation_data + + (** Economic protocol-specific side information computed by the + protocol during the validation of each operation, to be used + conjointly with {!block_header_metadata}. *) + type operation_receipt + + (** A fully parsed operation. *) + type operation = { + shell : Operation.shell_header; + protocol_data : operation_data; + } + + (** Encoding for economoic protocol-specific operation data. *) + val operation_data_encoding : operation_data Data_encoding.t + + (** Encoding for eonomic protocol-specific operation receipts. *) + val operation_receipt_encoding : operation_receipt Data_encoding.t + + (** Encoding that mixes an operation data and its receipt. *) + val operation_data_and_receipt_encoding : + (operation_data * operation_receipt) Data_encoding.t + + (** [acceptable_passes op] lists the validation passes in which the + input operation [op] can appear. For instance, it results in + [[0]] if [op] only belongs to the first pass. An answer of [[]] + means that the [op] is ill-formed and cannot be included at + all in a block. *) + val acceptable_passes : operation -> int list + + (** [relative_position_within_block op1 op2] provides a partial and + strict order of operations within a block. It is intended to be + used as an argument to {!List.sort} (and other sorting/ordering + functions) to arrange a set of operations into a sequence, the + order of which is valid for the protocol. + + A negative (respectively, positive) results means that [op1] + should appear before (and, respectively, after) [op2] in a + block. This function does not provide a total ordering on the + operations: a result of [0] entails that the protocol does not + impose any preferences to the order in which [op1] and [op2] + should be included in a block. + + {b Caveat Emptor!} [relative_position_within_block o1 o2 = 0] + does NOT imply that [o1] is equal to [o2] in any way. + Consequently, it {e MUST NOT} be used as a [compare] component of + an {!Stdlib.Map.OrderedType}, or any such collection which relies + on a total comparison function. *) + val relative_position_within_block : operation -> operation -> int + + (** A functional state that is transmitted through the steps of a + block validation sequence: it can be created by any of the + [begin_x] functions below, and its final value is produced by + {!finalize_block}. It must retain the current state of the store, + and it can also contain additional information that must be + remembered during the validation process. Said extra content must + however be immutable: validator or baker implementations are + allowed to pause, replay or backtrack throughout validation + steps. *) + type validation_state + + (** [begin_partial_application cid ctxt] checks that a block is + well-formed in a given context. This function should run quickly, + as its main use is to reject bad blocks from the chain as early + as possible. The input [ancestor_context] is expected to result + from the application of an ancestor block of the current head + with the same economic protocol. Said ancestor block is also + required to be more recent (i.e., it has a greater level), than + the current head's "last_allowed_fork_level". + + The resulting `validation_state` will be used for multi-pass + validation. *) + val begin_partial_application : + chain_id:Chain_id.t -> + ancestor_context:Context.t -> + predecessor_timestamp:Time.t -> + predecessor_fitness:Fitness.t -> + block_header -> + validation_state tzresult Lwt.t + + (** [begin_application chain_id ... bh] defines the first step in a + block validation sequence. It initializes a validation context + for validating a block, whose header is [bh]. *) + val begin_application : + chain_id:Chain_id.t -> + predecessor_context:Context.t -> + predecessor_timestamp:Time.t -> + predecessor_fitness:Fitness.t -> + block_header -> + validation_state tzresult Lwt.t + + (** [begin_construction] initializes a validation context for + constructing a new block, as opposed to validating an existing + block. + + This function can be used in two modes: with and without the + optional [protocol_data] argument. With the latter, it is used by + bakers to start the process for baking a new block. Without it, + is used by the Shell's prevalidator to construct a virtual block, + which carries the contents of the pre-applied operations of the + mempool. + + When [protocol_data] is provided, it is not expected to be the + final value of the field of the same name in the {!block_header} + of the block eventually being baked. Instead, it is expected to + construct a protocol-specific, good enough, "prototype" of its + final value. For instance, if the economic protocol specifies + that its block headers include a signature, [protocol_data] must + include a (faked) signature. + + Moreover, these prototypes should not be distinguishable after + the application of [begin_construction]: the function must + produce the exact same context regardless of being passed a + prototype, or an "equivalent-but-complete" header. *) + val begin_construction : + chain_id:Chain_id.t -> + predecessor_context:Context.t -> + predecessor_timestamp:Time.t -> + predecessor_level:Int32.t -> + predecessor_fitness:Fitness.t -> + predecessor:Block_hash.t -> + timestamp:Time.t -> + ?protocol_data:block_header_data -> + unit -> + validation_state tzresult Lwt.t + + (** [apply_operation vs op] applies the input operation [op] on top + of the given {!validation_state} [vs]. It must be called after + {!begin_application} or {!begin_construction}, and before + {!finalize_block}, for each operation in a block. On a successful + application, it returns a pair consisting of the resulting + [validation_state], and the corresponding [operation_receipt]. *) + val apply_operation : + validation_state -> + operation -> + (validation_state * operation_receipt) tzresult Lwt.t + + (** [finalize_block vs] finalizes the context resulting from the + application of the contents of the block being validated. + + If there is no protocol migration, i.e., if the block being + applied is not the last block of the current economic protocol, the + resulting context can be used in the future as input for the + validation of its successor blocks. *) + val finalize_block : + validation_state -> + Block_header.shell_header option -> + (validation_result * block_header_metadata) tzresult Lwt.t + + (** [rpc_services] provides the list of remote procedures exported + by this protocol implementation. *) + val rpc_services : rpc_context RPC_directory.t + + (** [init ctxt hd] initializes the context, or upgrades the context + after a protocol amendment. This function receives as arguments + the context [ctxt] resulting from the application of the block + that triggered the amendment, as well as its header [hd]. This + function should fail if the "protocol stitching", i.e., the + transition from a valid previous protocol to the one being + activated, has not been implemented. *) + val init : + Context.t -> Block_header.shell_header -> validation_result tzresult Lwt.t + + (** [value_of_key chain_id predecessor_context + predecessor_timestamp predecessor_level predecessor_fitness + predecessor timestamp] returns a function to build one value of + the cache from its key. + + This function is used to restore all or part of the cache, for + instance when booting a validator to preheat the cache, or when a + reorganization happens. This function should never fail, returned + errors are fatal. + + The generated function is passed to [Context.Cache.load_caches] + which will use it either immediately a cache-loading time or + on-demand, when a given cached value is accessed. *) + val value_of_key : + chain_id:Chain_id.t -> + predecessor_context:Context.t -> + predecessor_timestamp:Time.t -> + predecessor_level:Int32.t -> + predecessor_fitness:Fitness.t -> + predecessor:Block_hash.t -> + timestamp:Time.t -> + (Context.Cache.key -> Context.Cache.value tzresult Lwt.t) tzresult Lwt.t +end + +(** [activate ctxt ph] activates an economic protocol (given by its + hash [ph]) from the context [ctxt]. The resulting context is still + a context for the current economic protocol, and the migration is + not complete until [init] in invoked. *) +val activate : Context.t -> Protocol_hash.t -> Context.t Lwt.t diff --git a/src/lib_protocol_environment/sigs/v5/z.mli b/src/lib_protocol_environment/sigs/v5/z.mli new file mode 100644 index 0000000000..e04b459a7f --- /dev/null +++ b/src/lib_protocol_environment/sigs/v5/z.mli @@ -0,0 +1,468 @@ +(** + Integers. + + This modules provides arbitrary-precision integers. + Small integers internally use a regular OCaml [int]. + When numbers grow too large, we switch transparently to GMP numbers + ([mpn] numbers fully allocated on the OCaml heap). + + This interface is rather similar to that of [Int32] and [Int64], + with some additional functions provided natively by GMP + (GCD, square root, pop-count, etc.). + + + This file is part of the Zarith library + http://forge.ocamlcore.org/projects/zarith . + It is distributed under LGPL 2 licensing, with static linking exception. + See the LICENSE file included in the distribution. + + Copyright (c) 2010-2011 Antoine Miné, Abstraction project. + Abstraction is part of the LIENS (Laboratoire d'Informatique de l'ENS), + a joint laboratory by: + CNRS (Centre national de la recherche scientifique, France), + ENS (École normale supérieure, Paris, France), + INRIA Rocquencourt (Institut national de recherche en informatique, France). + + *) + + +(** {1 Toplevel} *) + +(** For an optimal experience with the [ocaml] interactive toplevel, + the magic commands are: + + {[ + #load "zarith.cma";; + #install_printer Z.pp_print;; + ]} + + Alternatively, using the new [Zarith_top] toplevel module, simply: + {[ + #require "zarith.top";; + ]} +*) + + + +(** {1 Types} *) + +type t +(** Type of integers of arbitrary length. *) + +exception Overflow +(** Raised by conversion functions when the value cannot be represented in + the destination type. + *) + +(** {1 Construction} *) + +val zero: t +(** The number 0. *) + +val one: t +(** The number 1. *) + +val minus_one: t +(** The number -1. *) + +external of_int: int -> t = "%identity" +(** Converts from a base integer. *) + +external of_int32: int32 -> t = "ml_z_of_int32" +(** Converts from a 32-bit integer. *) + +external of_int64: int64 -> t = "ml_z_of_int64" +(** Converts from a 64-bit integer. *) + +val of_string: string -> t +(** Converts a string to an integer. + An optional [-] prefix indicates a negative number, while a [+] + prefix is ignored. + An optional prefix [0x], [0o], or [0b] (following the optional [-] + or [+] prefix) indicates that the number is, + represented, in hexadecimal, octal, or binary, respectively. + Otherwise, base 10 is assumed. + (Unlike C, a lone [0] prefix does not denote octal.) + Raises an [Invalid_argument] exception if the string is not a + syntactically correct representation of an integer. + *) + +val of_substring : string -> pos:int -> len:int -> t +(** [of_substring s ~pos ~len] is the same as [of_string (String.sub s + pos len)] + *) + +val of_string_base: int -> string -> t +(** Parses a number represented as a string in the specified base, + with optional [-] or [+] prefix. + The base must be between 2 and 16. + *) + +external of_substring_base + : int -> string -> pos:int -> len:int -> t + = "ml_z_of_substring_base" +(** [of_substring_base base s ~pos ~len] is the same as [of_string_base + base (String.sub s pos len)] +*) + + +(** {1 Basic arithmetic operations} *) + +val succ: t -> t +(** Returns its argument plus one. *) + +val pred: t -> t +(** Returns its argument minus one. *) + +val abs: t -> t +(** Absolute value. *) + +val neg: t -> t +(** Unary negation. *) + +val add: t -> t -> t +(** Addition. *) + +val sub: t -> t -> t +(** Subtraction. *) + +val mul: t -> t -> t +(** Multiplication. *) + +val div: t -> t -> t +(** Integer division. The result is truncated towards zero + and obeys the rule of signs. + Raises [Division_by_zero] if the divisor (second argument) is 0. + *) + +val rem: t -> t -> t +(** Integer remainder. Can raise a [Division_by_zero]. + The result of [rem a b] has the sign of [a], and its absolute value is + strictly smaller than the absolute value of [b]. + The result satisfies the equality [a = b * div a b + rem a b]. + *) + +external div_rem: t -> t -> (t * t) = "ml_z_div_rem" +(** Computes both the integer quotient and the remainder. + [div_rem a b] is equal to [(div a b, rem a b)]. + Raises [Division_by_zero] if [b = 0]. + *) + +external cdiv: t -> t -> t = "ml_z_cdiv" +(** Integer division with rounding towards +oo (ceiling). + Can raise a [Division_by_zero]. + *) + +external fdiv: t -> t -> t = "ml_z_fdiv" +(** Integer division with rounding towards -oo (floor). + Can raise a [Division_by_zero]. + *) + +val ediv_rem: t -> t -> (t * t) +(** Euclidean division and remainder. [ediv_rem a b] returns a pair [(q, r)] + such that [a = b * q + r] and [0 <= r < |b|]. + Raises [Division_by_zero] if [b = 0]. + *) + +val ediv: t -> t -> t +(** Euclidean division. [ediv a b] is equal to [fst (ediv_rem a b)]. + The result satisfies [0 <= a - b * ediv a b < |b|]. + Raises [Division_by_zero] if [b = 0]. + *) + +val erem: t -> t -> t +(** Euclidean remainder. [erem a b] is equal to [snd (ediv_rem a b)]. + The result satisfies [0 <= erem a b < |b|] and + [a = b * ediv a b + erem a b]. Raises [Division_by_zero] if [b = 0]. + *) + +val divexact: t -> t -> t +(** [divexact a b] divides [a] by [b], only producing correct result when the + division is exact, i.e., when [b] evenly divides [a]. + It should be faster than general division. + Can raise a [Division_by_zero]. +*) + +external divisible: t -> t -> bool = "ml_z_divisible" +(** [divisible a b] returns [true] if [a] is exactly divisible by [b]. + Unlike the other division functions, [b = 0] is accepted + (only 0 is considered divisible by 0). +*) + +external congruent: t -> t -> t -> bool = "ml_z_congruent" +(** [congruent a b c] returns [true] if [a] is congruent to [b] modulo [c]. + Unlike the other division functions, [c = 0] is accepted + (only equal numbers are considered equal congruent 0). +*) + + + + +(** {1 Bit-level operations} *) + +(** For all bit-level operations, negative numbers are considered in 2's + complement representation, starting with a virtual infinite number of + 1s. + *) + +val logand: t -> t -> t +(** Bitwise logical and. *) + +val logor: t -> t -> t +(** Bitwise logical or. *) + +val logxor: t -> t -> t +(** Bitwise logical exclusive or. *) + +val lognot: t -> t +(** Bitwise logical negation. + The identity [lognot a]=[-a-1] always hold. + *) + +val shift_left: t -> int -> t +(** Shifts to the left. + Equivalent to a multiplication by a power of 2. + The second argument must be nonnegative. + *) + +val shift_right: t -> int -> t +(** Shifts to the right. + This is an arithmetic shift, + equivalent to a division by a power of 2 with rounding towards -oo. + The second argument must be nonnegative. + *) + +val shift_right_trunc: t -> int -> t +(** Shifts to the right, rounding towards 0. + This is equivalent to a division by a power of 2, with truncation. + The second argument must be nonnegative. + *) + +external numbits: t -> int = "ml_z_numbits" [@@noalloc] +(** Returns the number of significant bits in the given number. + If [x] is zero, [numbits x] returns 0. Otherwise, + [numbits x] returns a positive integer [n] such that + [2^{n-1} <= |x| < 2^n]. Note that [numbits] is defined + for negative arguments, and that [numbits (-x) = numbits x]. *) + +external trailing_zeros: t -> int = "ml_z_trailing_zeros" [@@noalloc] +(** Returns the number of trailing 0 bits in the given number. + If [x] is zero, [trailing_zeros x] returns [max_int]. + Otherwise, [trailing_zeros x] returns a nonnegative integer [n] + which is the largest [n] such that [2^n] divides [x] evenly. + Note that [trailing_zeros] is defined for negative arguments, + and that [trailing_zeros (-x) = trailing_zeros x]. *) + +val testbit: t -> int -> bool +(** [testbit x n] return the value of bit number [n] in [x]: + [true] if the bit is 1, [false] if the bit is 0. + Bits are numbered from 0. Raise [Invalid_argument] if [n] + is negative. *) + +external popcount: t -> int = "ml_z_popcount" +(** Counts the number of bits set. + Raises [Overflow] for negative arguments, as those have an infinite + number of bits set. + *) + +external hamdist: t -> t -> int = "ml_z_hamdist" +(** Counts the number of different bits. + Raises [Overflow] if the arguments have different signs + (in which case the distance is infinite). + *) + +(** {1 Conversions} *) + +(** Note that, when converting to an integer type that cannot represent the + converted value, an [Overflow] exception is raised. + *) + +val to_int: t -> int +(** Converts to a base integer. May raise an [Overflow]. *) + +external to_int32: t -> int32 = "ml_z_to_int32" +(** Converts to a 32-bit integer. May raise [Overflow]. *) + +external to_int64: t -> int64 = "ml_z_to_int64" +(** Converts to a 64-bit integer. May raise [Overflow]. *) + +val to_string: t -> string +(** Gives a human-readable, decimal string representation of the argument. *) + +external format: string -> t -> string = "ml_z_format" +(** Gives a string representation of the argument in the specified + printf-like format. + The general specification has the following form: + + [% \[flags\] \[width\] type] + + Where the type actually indicates the base: + + - [i], [d], [u]: decimal + - [b]: binary + - [o]: octal + - [x]: lowercase hexadecimal + - [X]: uppercase hexadecimal + + Supported flags are: + + - [+]: prefix positive numbers with a [+] sign + - space: prefix positive numbers with a space + - [-]: left-justify (default is right justification) + - [0]: pad with zeroes (instead of spaces) + - [#]: alternate formatting (actually, simply output a literal-like prefix: [0x], [0b], [0o]) + + Unlike the classic [printf], all numbers are signed (even hexadecimal ones), + there is no precision field, and characters that are not part of the format + are simply ignored (and not copied in the output). + *) + +external fits_int: t -> bool = "ml_z_fits_int" [@@noalloc] +(** Whether the argument fits in a regular [int]. *) + +external fits_int32: t -> bool = "ml_z_fits_int32" [@@noalloc] +(** Whether the argument fits in an [int32]. *) + +external fits_int64: t -> bool = "ml_z_fits_int64" [@@noalloc] +(** Whether the argument fits in an [int64]. *) + + +(** {1 Printing} *) + +val pp_print: Format.formatter -> t -> unit +(** Prints the argument on the specified formatter. + Can be used as [%a] format printer in [Format.printf] and as + argument to [#install_printer] in the top-level. + *) + + +(** {1 Ordering} *) + +external compare: t -> t -> int = "ml_z_compare" [@@noalloc] +(** Comparison. [compare x y] returns 0 if [x] equals [y], + -1 if [x] is smaller than [y], and 1 if [x] is greater than [y]. + + Note that Pervasive.compare can be used to compare reliably two integers + only on OCaml 3.12.1 and later versions. + *) + +external equal: t -> t -> bool = "ml_z_equal" [@@noalloc] +(** Equality test. *) + +val leq: t -> t -> bool +(** Less than or equal. *) + +val geq: t -> t -> bool +(** Greater than or equal. *) + +val lt: t -> t -> bool +(** Less than (and not equal). *) + +val gt: t -> t -> bool +(** Greater than (and not equal). *) + +external sign: t -> int = "ml_z_sign" [@@noalloc] +(** Returns -1, 0, or 1 when the argument is respectively negative, null, or + positive. + *) + +val min: t -> t -> t +(** Returns the minimum of its arguments. *) + +val max: t -> t -> t +(** Returns the maximum of its arguments. *) + +val is_even: t -> bool +(** Returns true if the argument is even (divisible by 2), false if odd. *) + +val is_odd: t -> bool +(** Returns true if the argument is odd, false if even. *) + +(** {1 Powers} *) + +external pow: t -> int -> t = "ml_z_pow" +(** [pow base exp] raises [base] to the [exp] power. + [exp] must be nonnegative. + Note that only exponents fitting in a machine integer are supported, as + larger exponents would surely make the result's size overflow the + address space. + *) + +external sqrt: t -> t = "ml_z_sqrt" +(** Returns the square root. The result is truncated (rounded down + to an integer). + Raises an [Invalid_argument] on negative arguments. + *) + +external sqrt_rem: t -> (t * t) = "ml_z_sqrt_rem" +(** Returns the square root truncated, and the remainder. + Raises an [Invalid_argument] on negative arguments. + *) + +external root: t -> int -> t = "ml_z_root" +(** [root x n] computes the [n]-th root of [x]. + [n] must be positive and, if [n] is even, then [x] must be nonnegative. + Otherwise, an [Invalid_argument] is raised. + *) + +external rootrem: t -> int -> t * t = "ml_z_rootrem" +(** [rootrem x n] computes the [n]-th root of [x] and the remainder + [x-root**n]. + [n] must be positive and, if [n] is even, then [x] must be nonnegative. + Otherwise, an [Invalid_argument] is raised. + *) + +external perfect_power: t -> bool = "ml_z_perfect_power" +(** True if the argument has the form [a^b], with [b>1] *) + +external perfect_square: t -> bool = "ml_z_perfect_square" +(** True if the argument has the form [a^2]. *) + +val log2: t -> int +(** Returns the base-2 logarithm of its argument, rounded down to + an integer. If [x] is positive, [log2 x] returns the largest [n] + such that [2^n <= x]. If [x] is negative or zero, [log2 x] raise + the [Invalid_argument] exception. *) + +val log2up: t -> int +(** Returns the base-2 logarithm of its argument, rounded up to + an integer. If [x] is positive, [log2up x] returns the smallest [n] + such that [x <= 2^n]. If [x] is negative or zero, [log2up x] raise + the [Invalid_argument] exception. *) + +(** {1 Representation} *) + +external size: t -> int = "ml_z_size" [@@noalloc] +(** Returns the number of machine words used to represent the number. *) + +external extract: t -> int -> int -> t = "ml_z_extract" +(** [extract a off len] returns a nonnegative number corresponding to bits + [off] to [off]+[len]-1 of [b]. + Negative [a] are considered in infinite-length 2's complement + representation. + *) + +val signed_extract: t -> int -> int -> t +(** [signed_extract a off len] extracts bits [off] to [off]+[len]-1 of [b], + as [extract] does, then sign-extends bit [len-1] of the result + (that is, bit [off + len - 1] of [a]). The result is between + [- 2{^[len]-1}] (included) and [2{^[len]-1}] (excluded), + and equal to [extract a off len] modulo [2{^len}]. + *) + +external to_bits: t -> string = "ml_z_to_bits" +(** Returns a binary representation of the argument. + The string result should be interpreted as a sequence of bytes, + corresponding to the binary representation of the absolute value of + the argument in little endian ordering. + The sign is not stored in the string. + *) + +external of_bits: string -> t = "ml_z_of_bits" +(** Constructs a number from a binary string representation. + The string is interpreted as a sequence of bytes in little endian order, + and the result is always positive. + We have the identity: [of_bits (to_bits x) = abs x]. + However, we can have [to_bits (of_bits s) <> s] due to the presence of + trailing zeros in s. + *) diff --git a/src/lib_protocol_environment/structs/v5.dune.inc b/src/lib_protocol_environment/structs/v5.dune.inc new file mode 100644 index 0000000000..d25c18e159 --- /dev/null +++ b/src/lib_protocol_environment/structs/v5.dune.inc @@ -0,0 +1,8 @@ +(rule + (targets v5.ml) + (deps + v4/hex.ml + ) + +(action (with-stdout-to %{targets} (chdir %{workspace_root}} + (run %{libexec:tezos-protocol-environment-packer:s_packer} "structs" %{deps}))))) diff --git a/src/lib_validation/block_validation.ml b/src/lib_validation/block_validation.ml index 22744e439a..97307ac3d0 100644 --- a/src/lib_validation/block_validation.ml +++ b/src/lib_validation/block_validation.ml @@ -564,7 +564,7 @@ module Make (Proto : Registered_protocol.T) = struct let*! (ops_metadata_hashes, block_metadata_hash) = match new_protocol_env_version with | Protocol.V0 -> Lwt.return (None, None) - | Protocol.V1 | Protocol.V2 | Protocol.V3 | Protocol.V4 -> + | Protocol.(V1 | V2 | V3 | V4 | V5) -> Lwt.return ( Some (List.map @@ -682,9 +682,10 @@ module Make (Proto : Registered_protocol.T) = struct testchain genesis block and activation block, even when they are using environment V1, they contain no operations. *) let is_from_genesis = predecessor_shell_header.validation_passes = 0 in - (match Proto.environment_version with - | Protocol.V0 -> false - | Protocol.V1 | Protocol.V2 | Protocol.V3 | Protocol.V4 -> true) + Protocol.( + match Proto.environment_version with + | V0 -> false + | V1 | V2 | V3 | V4 | V5 -> true) && not is_from_genesis in let* context = @@ -910,7 +911,7 @@ module Make (Proto : Registered_protocol.T) = struct let*! (ops_metadata_hashes, block_metadata_hash) = match new_protocol_env_version with | Protocol.V0 -> Lwt.return (None, None) - | Protocol.V1 | Protocol.V2 | Protocol.V3 | Protocol.V4 -> + | Protocol.(V1 | V2 | V3 | V4 | V5) -> Lwt.return ( Some (List.map From 890198763dbe586a3e68a339ad70e6a1d39c6eab Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Thu, 16 Dec 2021 16:20:04 +0100 Subject: [PATCH 0188/1220] env: activate v5 --- manifest/main.ml | 9 +++- src/lib_protocol_compiler/compiler.ml | 2 + src/lib_protocol_compiler/dune | 3 +- src/lib_protocol_compiler/embedded_cmis.mli | 2 + src/lib_protocol_compiler/registerer.ml | 5 ++ src/lib_protocol_compiler/registerer.mli | 5 ++ src/lib_protocol_environment/dune | 1 + .../environment_V5.ml | 8 ++- src/lib_protocol_environment/sigs/dune | 4 +- src/lib_protocol_environment/structs/dune | 4 +- .../structs/v5.dune.inc | 1 + .../tezos_protocol_environment.ml | 1 + .../tezos_protocol_environment.mli | 1 + .../registered_protocol.ml | 49 +++++++++++++++++++ .../registered_protocol.mli | 14 ++++++ 15 files changed, 103 insertions(+), 6 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index c8954e3d2a..14d9d9f468 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -1840,7 +1840,7 @@ let tezos_protocol_environment_sigs = tezos_protocol_environment_packer; ] ~nopervasives:true - ~modules:["V0"; "V1"; "V2"; "V3"; "V4"] + ~modules:["V0"; "V1"; "V2"; "V3"; "V4"; "V5"] ~dune: Dune. [ @@ -1849,6 +1849,7 @@ let tezos_protocol_environment_sigs = include_ "v2.dune.inc"; include_ "v3.dune.inc"; include_ "v4.dune.inc"; + include_ "v5.dune.inc"; ] let tezos_protocol_environment_structs = @@ -1871,7 +1872,7 @@ let tezos_protocol_environment_structs = it's from one of the .inc files. *) tezos_protocol_environment_packer; ] - ~modules:["V0"; "V1"; "V2"; "V3"; "V4"] + ~modules:["V0"; "V1"; "V2"; "V3"; "V4"; "V5"] ~dune: Dune. [ @@ -1880,6 +1881,7 @@ let tezos_protocol_environment_structs = include_ "v2.dune.inc"; include_ "v3.dune.inc"; include_ "v4.dune.inc"; + include_ "v5.dune.inc"; ] let tezos_protocol_environment = @@ -1912,6 +1914,7 @@ let tezos_protocol_environment = "Environment_V2"; "Environment_V3"; "Environment_V4"; + "Environment_V5"; "Environment_cache"; "Environment_context"; "Environment_context_intf"; @@ -1992,6 +1995,8 @@ let tezos_protocol_compiler_registerer = "%{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V3.cmi}"; S "%{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V4.cmi}"; + S + "%{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V5.cmi}"; ]; ]; ]; diff --git a/src/lib_protocol_compiler/compiler.ml b/src/lib_protocol_compiler/compiler.ml index 9f4ace49ee..c0ada4b1bc 100644 --- a/src/lib_protocol_compiler/compiler.ml +++ b/src/lib_protocol_compiler/compiler.ml @@ -104,6 +104,8 @@ let tezos_protocol_env = tezos_protocol_environment_sigs__V3_cmi ); ( "Tezos_protocol_environment_sigs__V4", tezos_protocol_environment_sigs__V4_cmi ); + ( "Tezos_protocol_environment_sigs__V5", + tezos_protocol_environment_sigs__V5_cmi ); ] let register_env = diff --git a/src/lib_protocol_compiler/dune b/src/lib_protocol_compiler/dune index 68c3cc5790..d57d68c397 100644 --- a/src/lib_protocol_compiler/dune +++ b/src/lib_protocol_compiler/dune @@ -23,7 +23,8 @@ %{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V1.cmi} %{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V2.cmi} %{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V3.cmi} - %{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V4.cmi}))) + %{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V4.cmi} + %{lib:tezos-protocol-environment-sigs:tezos_protocol_environment_sigs__V5.cmi}))) (library (name tezos_protocol_compiler) diff --git a/src/lib_protocol_compiler/embedded_cmis.mli b/src/lib_protocol_compiler/embedded_cmis.mli index 28a1e3fa04..89babd16e9 100644 --- a/src/lib_protocol_compiler/embedded_cmis.mli +++ b/src/lib_protocol_compiler/embedded_cmis.mli @@ -37,4 +37,6 @@ val tezos_protocol_environment_sigs__V3_cmi : string val tezos_protocol_environment_sigs__V4_cmi : string +val tezos_protocol_environment_sigs__V5_cmi : string + val tezos_protocol_registerer__Registerer_cmi : string diff --git a/src/lib_protocol_compiler/registerer.ml b/src/lib_protocol_compiler/registerer.ml index d6ae2a5252..7b041224de 100644 --- a/src/lib_protocol_compiler/registerer.ml +++ b/src/lib_protocol_compiler/registerer.ml @@ -43,6 +43,10 @@ module type PROTOCOL_V4 = functor (Env : Tezos_protocol_environment_sigs.V4.T) -> Env.Updater.PROTOCOL +module type PROTOCOL_V5 = functor + (Env : Tezos_protocol_environment_sigs.V5.T) + -> Env.Updater.PROTOCOL + module VersionTable = Protocol_hash.Table type proto_env = @@ -51,6 +55,7 @@ type proto_env = | V2 of (module PROTOCOL_V2) | V3 of (module PROTOCOL_V3) | V4 of (module PROTOCOL_V4) + | V5 of (module PROTOCOL_V5) let versions : proto_env VersionTable.t = VersionTable.create 20 diff --git a/src/lib_protocol_compiler/registerer.mli b/src/lib_protocol_compiler/registerer.mli index 8bd86bf7d8..0dfe56ba49 100644 --- a/src/lib_protocol_compiler/registerer.mli +++ b/src/lib_protocol_compiler/registerer.mli @@ -43,12 +43,17 @@ module type PROTOCOL_V4 = functor (Env : Tezos_protocol_environment_sigs.V4.T) -> Env.Updater.PROTOCOL +module type PROTOCOL_V5 = functor + (Env : Tezos_protocol_environment_sigs.V5.T) + -> Env.Updater.PROTOCOL + type proto_env = | V0 of (module PROTOCOL_V0) | V1 of (module PROTOCOL_V1) | V2 of (module PROTOCOL_V2) | V3 of (module PROTOCOL_V3) | V4 of (module PROTOCOL_V4) + | V5 of (module PROTOCOL_V5) val register : string -> proto_env -> unit diff --git a/src/lib_protocol_environment/dune b/src/lib_protocol_environment/dune index 5c7b2c0d70..89086b3b4e 100644 --- a/src/lib_protocol_environment/dune +++ b/src/lib_protocol_environment/dune @@ -25,6 +25,7 @@ Environment_V2 Environment_V3 Environment_V4 + Environment_V5 Environment_cache Environment_context Environment_context_intf diff --git a/src/lib_protocol_environment/environment_V5.ml b/src/lib_protocol_environment/environment_V5.ml index 7c4f8a13b4..823f7f61ce 100644 --- a/src/lib_protocol_environment/environment_V5.ml +++ b/src/lib_protocol_environment/environment_V5.ml @@ -179,7 +179,13 @@ struct module Compare = Compare module Seq = Tezos_error_monad.TzLwtreslib.Seq - module List = Tezos_error_monad.TzLwtreslib.List + + module List = struct + include Tezos_error_monad.TzLwtreslib.List + + include Tezos_protocol_environment_structs.V5.M.Lwtreslib_list_combine + end + module Char = Char module Bytes = Bytes module Hex = Hex diff --git a/src/lib_protocol_environment/sigs/dune b/src/lib_protocol_environment/sigs/dune index decf62efa5..ec511130b3 100644 --- a/src/lib_protocol_environment/sigs/dune +++ b/src/lib_protocol_environment/sigs/dune @@ -6,7 +6,7 @@ (public_name tezos-protocol-environment-sigs) (instrumentation (backend bisect_ppx)) (flags (:standard -nopervasives)) - (modules V0 V1 V2 V3 V4)) + (modules V0 V1 V2 V3 V4 V5)) (include v0.dune.inc) @@ -17,3 +17,5 @@ (include v3.dune.inc) (include v4.dune.inc) + +(include v5.dune.inc) diff --git a/src/lib_protocol_environment/structs/dune b/src/lib_protocol_environment/structs/dune index cce6091012..75dd5f8d9c 100644 --- a/src/lib_protocol_environment/structs/dune +++ b/src/lib_protocol_environment/structs/dune @@ -11,7 +11,7 @@ tezos-lwt-result-stdlib data-encoding bls12-381-legacy) - (modules V0 V1 V2 V3 V4)) + (modules V0 V1 V2 V3 V4 V5)) (include v0.dune.inc) @@ -22,3 +22,5 @@ (include v3.dune.inc) (include v4.dune.inc) + +(include v5.dune.inc) diff --git a/src/lib_protocol_environment/structs/v5.dune.inc b/src/lib_protocol_environment/structs/v5.dune.inc index d25c18e159..04d55d7107 100644 --- a/src/lib_protocol_environment/structs/v5.dune.inc +++ b/src/lib_protocol_environment/structs/v5.dune.inc @@ -2,6 +2,7 @@ (targets v5.ml) (deps v4/hex.ml + v3/lwtreslib_list_combine.ml ) (action (with-stdout-to %{targets} (chdir %{workspace_root}} diff --git a/src/lib_protocol_environment/tezos_protocol_environment.ml b/src/lib_protocol_environment/tezos_protocol_environment.ml index 5423ca6a7d..9e0343cada 100644 --- a/src/lib_protocol_environment/tezos_protocol_environment.ml +++ b/src/lib_protocol_environment/tezos_protocol_environment.ml @@ -31,3 +31,4 @@ include Environment_V1 include Environment_V2 include Environment_V3 include Environment_V4 +include Environment_V5 diff --git a/src/lib_protocol_environment/tezos_protocol_environment.mli b/src/lib_protocol_environment/tezos_protocol_environment.mli index a8b45ea7af..561062d95a 100644 --- a/src/lib_protocol_environment/tezos_protocol_environment.mli +++ b/src/lib_protocol_environment/tezos_protocol_environment.mli @@ -32,4 +32,5 @@ include module type of struct include Environment_V2 include Environment_V3 include Environment_V4 + include Environment_V5 end diff --git a/src/lib_protocol_updater/registered_protocol.ml b/src/lib_protocol_updater/registered_protocol.ml index e9b6a868bd..7ab308959f 100644 --- a/src/lib_protocol_updater/registered_protocol.ml +++ b/src/lib_protocol_updater/registered_protocol.ml @@ -141,6 +141,26 @@ let build hash = include P + let complete_b58prefix = Env.Context.complete + end : T) + | Some (V5 protocol) -> + let (module F) = protocol in + let module Name = struct + let name = Protocol_hash.to_b58check hash + end in + let module Env = Tezos_protocol_environment.MakeV5 (Name) () in + Some + (module struct + module Raw = F (Env) + + module P = struct + let hash = hash + + include Env.Lift (Raw) + end + + include P + let complete_b58prefix = Env.Context.complete end : T) @@ -343,3 +363,32 @@ struct include Self end + +module Register_embedded_V5 + (Env : Tezos_protocol_environment.V5) + (Proto : Env.Updater.PROTOCOL) + (Source : Source_sig) = +struct + let hash = + match Source.hash with + | None -> Protocol.hash Source.sources + | Some hash -> hash + + module Self = struct + module P = struct + let hash = hash + + include Env.Lift (Proto) + end + + include P + + let complete_b58prefix = Env.Context.complete + end + + let () = + VersionTable.add sources hash Source.sources ; + VersionTable.add versions hash (module Self : T) + + include Self +end diff --git a/src/lib_protocol_updater/registered_protocol.mli b/src/lib_protocol_updater/registered_protocol.mli index 30cab1b572..c1dac4a461 100644 --- a/src/lib_protocol_updater/registered_protocol.mli +++ b/src/lib_protocol_updater/registered_protocol.mli @@ -119,3 +119,17 @@ module Register_embedded_V4 and type P.operation = Proto.operation and type P.operation_receipt = Proto.operation_receipt and type P.validation_state = Proto.validation_state + +module Register_embedded_V5 + (Env : Tezos_protocol_environment.V5) + (Proto : Env.Updater.PROTOCOL) (Source : sig + val hash : Protocol_hash.t option + + val sources : Protocol.t + end) : + T + with type P.block_header_data = Proto.block_header_data + and type P.operation_data = Proto.operation_data + and type P.operation = Proto.operation + and type P.operation_receipt = Proto.operation_receipt + and type P.validation_state = Proto.validation_state From eedf15cb3f58097a3536e6a6b9a2122fabe1d957 Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Thu, 16 Dec 2021 16:20:57 +0100 Subject: [PATCH 0189/1220] proto: set alpha and demo_noops to use env V5 --- src/proto_alpha/lib_protocol/TEZOS_PROTOCOL | 2 +- src/proto_alpha/lib_protocol/dune.inc | 2 +- src/proto_demo_noops/lib_protocol/TEZOS_PROTOCOL | 2 +- src/proto_demo_noops/lib_protocol/dune.inc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL index a4ca3fb9c2..891c5f8c2b 100644 --- a/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL +++ b/src/proto_alpha/lib_protocol/TEZOS_PROTOCOL @@ -1,5 +1,5 @@ { - "expected_env_version": 4, + "expected_env_version": 5, "hash": "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK", "modules": [ "Misc", diff --git a/src/proto_alpha/lib_protocol/dune.inc b/src/proto_alpha/lib_protocol/dune.inc index 58f12aa7f9..77697924d7 100644 --- a/src/proto_alpha/lib_protocol/dune.inc +++ b/src/proto_alpha/lib_protocol/dune.inc @@ -21,7 +21,7 @@ (action (write-file %{targets} "module Name = struct let name = \"alpha\" end -include Tezos_protocol_environment.MakeV4(Name)() +include Tezos_protocol_environment.MakeV5(Name)() module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end "))) diff --git a/src/proto_demo_noops/lib_protocol/TEZOS_PROTOCOL b/src/proto_demo_noops/lib_protocol/TEZOS_PROTOCOL index 743e0cb60f..82548978a0 100644 --- a/src/proto_demo_noops/lib_protocol/TEZOS_PROTOCOL +++ b/src/proto_demo_noops/lib_protocol/TEZOS_PROTOCOL @@ -1,5 +1,5 @@ { - "expected_env_version": 4, + "expected_env_version": 5, "hash": "ProtoDemoNoopsDemoNoopsDemoNoopsDemoNoopsDemo6XBoYp", "modules": ["Main"] } diff --git a/src/proto_demo_noops/lib_protocol/dune.inc b/src/proto_demo_noops/lib_protocol/dune.inc index 88f9e0a0df..42503252f2 100644 --- a/src/proto_demo_noops/lib_protocol/dune.inc +++ b/src/proto_demo_noops/lib_protocol/dune.inc @@ -21,7 +21,7 @@ (action (write-file %{targets} "module Name = struct let name = \"demo-noops\" end -include Tezos_protocol_environment.MakeV4(Name)() +include Tezos_protocol_environment.MakeV5(Name)() module CamlinternalFormatBasics = struct include CamlinternalFormatBasics end "))) From f4c12b51a4aad7bea540e2b78c14ab1ea22b9f01 Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Fri, 17 Dec 2021 08:15:43 +0100 Subject: [PATCH 0190/1220] doc: update protocol environment upgrade with --- docs/developer/protocol_environment_upgrade.rst | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/developer/protocol_environment_upgrade.rst b/docs/developer/protocol_environment_upgrade.rst index 02bf8312c1..7dcd262390 100644 --- a/docs/developer/protocol_environment_upgrade.rst +++ b/docs/developer/protocol_environment_upgrade.rst @@ -13,7 +13,7 @@ This page details the process of creating a new environment by copying the lates Bootstrap --------- -The following steps are roughly the steps taken in the `V4 bootstrap MR `__ +The following steps are roughly the steps taken in the `V5 bootstrap MR `__ 1. Copy the existing environment files: @@ -35,11 +35,18 @@ The following steps are roughly the steps taken in the `V4 bootstrap MR .ml[i]`` to ``src/lib_protocol_environment/environment_V.ml[i]`` - * Copy ``environment_protocol_T_V.ml`` to ``environment_protocol_T_V.ml`` + * Change any reference from ``V`` to ``V`` in all those copied files the - * Change any reference from ``V`` to ``V`` in all those copied files +5. If the protocol signature is expected to change then copy and adapt it otherwise leave it as is: -5. Add references to the new environment version number in the rest of the code: + ``Environment_protocol_T_V`` is the current protocol signature and ```` is equal to the environment version that introduce it. + + * Copy ``src/lib_protocol_environment/environment_protocol_T_V.ml`` to ``src/lib_protocol_environment/environment_protocol_T_V.ml`` + + * Change ``Environment_protocol_T_V`` to ``Environment_protocol_T_V`` in ``src/lib_protocol_environment/environment_V.ml`` + + +6. Add references to the new environment version number in the rest of the code: * Add references to ``src/lib_base/protocol.ml[i]`` @@ -84,9 +91,11 @@ How to activate To activate the environment you will need to change the following files, adding references to ``V`` to match the references to ``V``: * ``src/lib_protocol_environment/tezos_protocol_environment.ml[i]`` +* ``src/lib_protocol_environment/dune`` * ``src/lib_protocol_updater/registered_protocol.ml[i]`` * ``src/lib_protocol_compiler/registerer.ml[i]`` * ``src/lib_protocol_compiler/embedded_cmis.mli`` +* ``src/lib_protocol_compiler/compiler.ml`` * ``src/lib_protocol_compiler/dune`` And finally, bump environment version in ``src/proto_alpha/lib_protocol/dune.inc`` and ``src/proto_alpha/lib_protocol/TEZOS_PROTOCOL``. From 98738d83202bea9f86d4cec3f210657a48f961e9 Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Fri, 17 Dec 2021 08:24:29 +0100 Subject: [PATCH 0191/1220] shell: add description to the protocol metadata --- src/lib_base/protocol.ml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib_base/protocol.ml b/src/lib_base/protocol.ml index 9e734572ed..f1acc97ab5 100644 --- a/src/lib_base/protocol.ml +++ b/src/lib_base/protocol.ml @@ -140,8 +140,11 @@ module Meta = struct let encoding = let open Data_encoding in - def "protocol.meta" - (* FIXME: add ~description argument *) + def + "protocol.meta" + ~description: + "Protocol metadata: the hash of the protocol, the expected environment \ + version and the list of modules comprising the protocol." @@ conv (fun {hash; expected_env_version; modules} -> (hash, expected_env_version, modules)) From a029c1636d8d55e35d8168547fd14e17d953dc9c Mon Sep 17 00:00:00 2001 From: Sventimir Date: Thu, 13 Jan 2022 11:57:23 +0100 Subject: [PATCH 0192/1220] Docs: document the contents of the tezos/tezos repository. --- docs/developer/repository.rst | 39 ++++++++++++++++++++++++++++++++++ docs/index.rst | 4 +++- docs/shell/the_big_picture.rst | 2 ++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 docs/developer/repository.rst diff --git a/docs/developer/repository.rst b/docs/developer/repository.rst new file mode 100644 index 0000000000..6e8e220c63 --- /dev/null +++ b/docs/developer/repository.rst @@ -0,0 +1,39 @@ +The Tezos/Tezos repository +=========================== + +The `Gitlab repository tezos/tezos `_ +contains the source code for Octez, as well as :ref:`the embedded +economic protocols ` for Tezos. It contains +libraries constituting integral parts of the project like ``lib_rpc`` +or ``lib_error_monad``. Some of these libraries are directly linked +to Tezos executables, while others, like ``lib_benchmark`` are used in +the development process as tools which allow the developers to make +the software better. + +Sometimes such helper projects are developed independently at first. +But during its development such a program becomes significantly +coupled to one or more libraries developed as part of the Octez project. +Maintaining such a tool is frustrating, because it often breaks due to +changes in the Tezos libraries it depends upon. A natural solution to +this problem would be to include the tool in ``tezos/tezos`` repository +and develop it together with Octez, which allows to discover breakages +more quickly and prevent or fix them immediately. + +However, the Tezos ecosystem is still growing and it's impossible to +develop everything within a single repository. Therefore it is necessary +to select which projects can be merged into Octez respository and which +cannot. The currently accepted rule is that to be merged into Octez, an +external project should fulfill *all* the following criteria: + +#. depend on internals of Octez libraries, as opposed to public APIs such as + inter-process communication like RPC. +#. the dependency mentioned above should be unavoidable. If there is + another way to build the project, for example by avoiding depending + on internals of Tezos; adding such an optional dependency won't qualify + a project to be included. +#. the dependency should be on a feature or part of the codebase that is + unstable enough that depending on released versions of Octez wouldn't + be enough. +#. be used regularly as a helper in developing Tezos (e.g. run in the + CI pipeline). + diff --git a/docs/index.rst b/docs/index.rst index 25ec9e3b1a..46fa07adc2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -3,7 +3,8 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -.. TODO tezos/tezos#2170: search shifted protocol name/number & adapt +.. TODO https://gitlab.com/tezos/tezos/-/issues/2170: + search shifted protocol name/number & adapt Welcome to the Tezos Developer Documentation! ============================================= @@ -201,6 +202,7 @@ in the :ref:`introduction `. developer/contributing developer/merge_team developer/guidelines + developer/repository developer/time_measurement_ppx README diff --git a/docs/shell/the_big_picture.rst b/docs/shell/the_big_picture.rst index 4b673558ff..2d9aa82a0c 100644 --- a/docs/shell/the_big_picture.rst +++ b/docs/shell/the_big_picture.rst @@ -211,6 +211,8 @@ protocol in an alternative environment possible. node. It also contains a module that registers the protocol in the node's protocol table. +.. _embedded_protocols: + The Embedded Economic Protocols ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 2f3974fc5c4da026d6201480861d5879eebb0089 Mon Sep 17 00:00:00 2001 From: Zaynah Dargaye Date: Wed, 1 Dec 2021 13:31:56 +0100 Subject: [PATCH 0193/1220] Doc: Make prevalidator into its own section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: François Thiré --- docs/index.rst | 1 + docs/shell/prevalidation.rst | 97 ++++++++++++++++++++++++++++++++++++ docs/shell/validation.rst | 52 ++++--------------- 3 files changed, 108 insertions(+), 42 deletions(-) create mode 100644 docs/shell/prevalidation.rst diff --git a/docs/index.rst b/docs/index.rst index 46fa07adc2..d59ddf7b2c 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -137,6 +137,7 @@ in the :ref:`introduction `. shell/the_big_picture shell/validation + shell/prevalidation shell/storage shell/sync shell/p2p diff --git a/docs/shell/prevalidation.rst b/docs/shell/prevalidation.rst new file mode 100644 index 0000000000..734f0aa834 --- /dev/null +++ b/docs/shell/prevalidation.rst @@ -0,0 +1,97 @@ +The Prevalidator +================ + +The *prevalidator* is responsible for determining which operations to +propagate over the gossip network. It uses the economic protocol to +classify each operation in order to decide whether the operation should +be propagated or not. + +The baker uses the prevalidator too, via the ``monitor_operations`` +RPC, for selecting operations that can be included in the block being +crafted (if any), and for observing consensus operations/quorums (in +particular for the Tenderbake protocol). + +The prevalidator maintains a set of operations with their associated +classifications. Each time the validation system switches to a new +head, operations' classification should be reconsidered, as the +previous ones may become invalid. This process is used for: + +- Rejecting invalid operations. +- Reclassifying an operation that was not propagated but that may + become valid after the arrival of a new valid block. +- Reclassifying a temporarily invalid operation. + +The prevalidator aims to protect the network against DDoS attacks. +Consequently, it has to decide which operations are broadcast, and +which ones are kept in its bounded memory. + + +Prevalidator filtering mechanisms +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The prevalidator implements several mechanisms to prevent DDoS +attacks. Some of them are protocol economic-dependent and are +implemented using filtering mechanisms that limit to some extent the +risk of flooding the network. The filtering can be done by looking at +the content of an operation, which the prevalidator cannot achieve +solely. So, it relies on filters defined in a :doc:`protocol-specific +plugin <../active/plugins>`. + +The prevalidator implements three filtering mechanisms: a +``prefilter``, the ``precheck`` filter (starting from Octez version +12.0), and a ``postfilter``. + +The ``prefilter`` is executed for each operation received from the +network and every time an operation needs to be reclassified (after +receiving a new block for example). This function should be quick to +execute and static: rejection is done solely based on the content of +the operation and already accepted operations, not taking into account +the state of the ledger. + +Starting from Octez version 12.0, the ``precheck`` filter can be used +instead of ``applying_operation`` to classify operations, as follows: +If ``precheck`` cannot decide the classification +of an operation, the prevalidator uses ``apply_operation`` instead. +If an operation passes the ``precheck`` filter, or otherwise it has been successfully +applied, then the operation is propagated over the gossip network. + +Currently, the ``precheck`` filter is only implemented for manager operations. +The prevalidator makes the assumption that it is faster to run than ``apply_operation``. +It can be disabled via the ``--disable-precheck`` node option. + +The ``postfilter`` is executed on applied operations and can +be used to reject some of them based on their respective (application) receipts. +Since ``precheck`` is lighter and does not return receipts, prechecked operations +cannot be postfiltered. + +A detailed description of the prevalidator filters is given in the dedicated plugin +page for the corresponding economic protocol (e.g., :doc:`../active/plugins` for the active protocol). + +.. _operation_classification: + +Operations classification +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Octez prevalidator classifies an operation depending on the outcome +of its validity in the prevalidator's current context: + +- ``Applied``: the operation was successfully applied on the current + context of the prevalidator. +- ``Prechecked``: the operation was successfully prechecked on the current + context of the prevalidator (so it can be propagated without being applied). +- ``Branch_delayed``: the operation could not be applied on the current + context, but could be in the future. +- ``Branch_refused``: the operation could not be applied on the current + context, but could be if a reorganisation happens. +- ``Outdated``: this operation will never be applicable in the future + but was valid in the past. +- ``Refused``: There is no block on the current economic protocol that + would accept this operation. + +The prevalidator maintains a context built on top of the current +head. This context is updated when an operation is classified as +``Applied``. When a node switches to a new head, its prevalidation +context is reset accordingly. + +Operations living in the prevalidator (already classified or not) can +be accessed via the ``pending_operations`` RPC. diff --git a/docs/shell/validation.rst b/docs/shell/validation.rst index dd7033948b..7a09d4645d 100644 --- a/docs/shell/validation.rst +++ b/docs/shell/validation.rst @@ -136,48 +136,16 @@ according to the protocol's decision. Prevalidator ------------ -To each chain validator is associated a *prevalidator* (this may become -an option in the future, to allow running nodes on machines with less -RAM), that is responsible for the transmission of operations for this -chain over the peer-to-peer network. - -To prevent spam, this prevalidator must select the set of operations -that it considers valid and the ones that it chooses to broadcast. -This is done by constantly baking a dummy block, floating over the -current head, and growing as new operations are received. - -Operations that get included can be broadcast unconditionally. - -Operations that are included are classified. Some (such as bad -signatures or garbage byte sequences) are dismissed. They are put in a -temporary bounded set for quick rejection, and the peer that sent it -is kicked. Some other operations are temporarily refused: they come -too soon or too late. For instance, in Alpha, contracts have counters, -and operations with counters in the future are classified as -temporarily refused. A malicious peer could easily flood the mempool -with such operations, so they are put in a bounded set. Another -bounded set is also kept for a third kind of non-inclusion: operations -that could be valid in another branch. - -As a complement to the built-in classification mechanism above, which rejects operations that could flood the network with useless messages, there is a filtering mechanism implemented as a :doc:`protocol plugin <../active/plugins>`, that can be customized for each protocol version. - -The prevalidator ensures that a given manager can only have one -Applied manager operation (e.g., transfers, contract calls) per block. -This restriction only exists in the prevalidator, e.g., a baker can -include more that one manager operation per manager in a block. -Operations with a given manager will be temporarily refused -(Branch Delayed) if the prevalidator has already classified as applied -an operation with the same manager. This limitation was already -present implicitely if you were using the `tezos-client` commands. -Batches of operations can be used to get around this restriction. - -To mitigate the limitation itself, a user can inject an operation with the same -manager and the same counter, but with a higher fee to replace an already existing -operation in the prevalidator. Only one of the two operations will be eventually -included in a block. To be able to replace the first operation, the fee and the -"fee/gas limit" ratio of the second one is supposed to be higher than the first's -by a factor (currently fixed to 5%). In case of successful replacement, the old -operation is re-classified as `\`Outdated`. +<<<<<<< HEAD +To each chain validator is associated a *prevalidator* that is +responsible for the transmission of operations for this chain over the +======= +Each chain validator is associated to a *prevalidator* that is +responsible for determining which operations to propagate for this chain over the +>>>>>>> 3fe52a95e8... fixup! Doc: Make prevalidator into its own section +peer-to-peer network. The page :doc:`./prevalidation` gives a detailed +description of the prevalidator component. + Distributed DB From 2477ea9e025951ba51291d35eee629cb35965905 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Tue, 7 Dec 2021 14:04:47 +0100 Subject: [PATCH 0194/1220] Doc: Modify the plugin document --- docs/alpha/plugins.rst | 175 ++++++++++++++++++++++++++++++++------ docs/shell/validation.rst | 5 -- 2 files changed, 148 insertions(+), 32 deletions(-) diff --git a/docs/alpha/plugins.rst b/docs/alpha/plugins.rst index 856a4ae935..8fc2e21463 100644 --- a/docs/alpha/plugins.rst +++ b/docs/alpha/plugins.rst @@ -1,37 +1,146 @@ -Protocol plugins +Protocol Plugins ================ -Protocol plugins implement extra APIs needed by the shell in order to interact with the economic protocol, beyond the one provided by the protocol environment. -This code is not strictly speaking part of the protocol code base, so this is not subject to on-chain governance (see :doc:`voting procedure `), but it is still protocol-dependent, which means that it may vary with different protocols. -For instance, the plugin code for protocol Alpha is located in file :src:`src/proto_alpha/lib_plugin/plugin.ml`. -Thus, a specific version is included in the Octez node for each protocol version (recall that a new release of Octez is usually delivered for each new protocol proposal, see :doc:`../releases/releases`) - -So what kind of features may a protocol plugin provide? -For instance, protocol plugins do not define the context, or restrict the validity of operations. +This document describes the protocol plugins implemented in Octez. + +Protocol-specific shell plugins, simply called protocol plugins, +implement extra APIs needed by the shell in order to interact with the +economic protocol, beyond the one provided by the :doc:`protocol +environment <../developer/protocol_environment>`. +This code is not strictly speaking part of the protocol +code base, so this is not subject to on-chain governance (see +:doc:`voting procedure `), but it is still protocol-dependent, +which means that it may vary with different protocols. For instance, +the plugin code for protocol Alpha is located in file +:src:`src/proto_alpha/lib_plugin/plugin.ml`. Thus, a specific version +is included in the Octez node for each protocol version (recall that a +new release of Octez is usually delivered for each new protocol +proposal, see :doc:`../releases/releases`) + +In contrast to the Octez code, plugins are protocol-specific and as +such, know how to read the content of an operation. + +So what kind of features may a protocol plugin provide? For instance, +protocol plugins do not define the context, or restrict the validity +of operations. In turn protocol plugins may, for example: -- be adjacent enough to the protocol code that it needs to have access to the protocol's internal representations for certain structures: e.g., it has some RPCs that can introspect on the protocol dependent content for certain operations; -- implement some common operations that are customized for each protocol (e.g., :ref:`prevalidator_filters`). +- perform protocol-dependent computations that require data not available + in the amendable part of the protocol like accessing the current time + to reason on timestamps (see :ref:`consensus_filter_alpha`); +- preserve the opacity/abstraction barrier of the protocol's internal data + by performing computations on internal data without revealing it: + e.g., there are some RPCs that can introspect the protocol-dependent + content for certain operations; +- implement some common operations that are customized for each + protocol (e.g., :ref:`prevalidator_filters_alpha`). .. _prevalidator_filters_alpha: Prevalidator filters -~~~~~~~~~~~~~~~~~~~~ +-------------------- + +**Prevalidator filters**, which are detailed in the rest of this page, enable the node to discard some +operations (that cannot be included in the next block) faster and +restrict the operations it propagates to the network. +Filters are implemented as a node plugin and a specific filter is +delivered with each protocol version. When the chain switches to a new +protocol, the node installs its corresponding filters, *in lieu of* +the filters of the previous protocol. Notice that prevalidator filters are not +mandatory, their absence does not break the Tezos blockchain protocol. + +The interface of the prevalidator plugin is described at the `mempool plugin API +`__ + +The different kinds of prevalidator filters are described below. + +.. _fees_filter_alpha: + +Fees filter +........... + +A very affordable technique for attackers is based on flooding the +network with, valid but useless, zero-fees operations. This is why the +prevalidator filter currently restricts operations based on their +associated fees, to reject "too cheap" or "zero-fees" operations. This +can be configured via the ``minimal_fees``, +``minimal_nanotez_per_gas_unit`` and ``minimal_nanotez_per_byte`` (see +:ref:`filter RPCs`) parameters of the filter +configuration of your node. + +This filtering strategy is implemented in the ``prefilter`` (see +:doc:`../shell/prevalidation`). + +.. _consensus_filter_alpha: + +Consensus filter +................ + +For technical reasons, the economic protocol cannot reject consensus +operations based on their timestamp. Consequently, many +consensus operations are declared as valid by the economic protocol +while being timestamped too early or too late. +The plugin filter aims to narrow down the number of consensus +operations declared as valid based on several heuristics. In +particular, the filter can use the current timestamp while the +protocol cannot. + +This filter classifies a consensus operation according to the current +block proposal as follows: + +- ``Outdated`` if it concerns a previous head at a previous level, +- ``Branch_refused`` if it concerns a previous head at the same level + but in the previous round, +- ``Branch_delayed`` if it concerns a round in the future. -The :ref:`prevalidator component ` of the shell is responsible for disseminating operations over the peer-to-peer network, that may be included in next blocks. -To prevent spam, the prevalidator implements built-in filtering mechanisms that limit to some extent the risk of flooding the network with invalid operations. -However, these selection mechanisms remain rather laxist to protect from DOS attacks. -In particular, a very affordable technique for attackers is based on flooding the network with, valid but useless, zero-fees operations. -This is why an additional and more flexible selection mechanism is included in the Octez node: *prevalidator filters*. -Prevalidator filters thus serve at further restricting the operations to propapate by the node to the network. -Filters are implemented as a node plugin and a specific filter is delivererd with each protocol version. -When the chain switches to a new protocol, the node installs its corresponding filter, *in lieu of* the filter of the previous protocol. +This filtering strategy is implemented in the ``prefilter`` (see +:doc:`../shell/prevalidation`). -The prevalidator filter is based on restricting operations based on their associated fees, to reject "too cheap" or "zero-fees" operations. -However, the filters could also be used to restrict the propagation of consensus operations (e.g. endorsements). -The filter is tunable by several parameters, whose values can be retrieved and changed by users via the following RPC calls, respectively: + +Prechecking of manager operations +................................. + +The aim of the ``precheck`` filter is to avoid fully executing manager operations +before deciding whether to gossip them to the network. + +The detailed description of this feature is given in +:doc:`./precheck`. For operations other than manager operations, the +``precheck`` filter is a no-op, which entails that these operations need to be +fully executed to decide their propagation (see :doc:`../shell/prevalidation`). + + +One operation manager per manager per block +........................................... + +The mempool filters, ``prefilter``, ``precheck`` and ``postfilter`` +also ensure that, since the last head update (the last valid block which +increased the chain's fitness), only one operation per manager is propagated. +All other received operations originating from the same manager will be classified +as ``Branch_delayed`` and will not be propagated. + +This criterion is used only by the prevalidator to decide the propagation of +operations. A baker can still include several operations originating from the same +manager in a single block, provided that it gets them in time (note that they can be +propagated by nodes using different versions or implementations). + +Alternatively, a user can inject an operation with the same +manager and the same counter, but with a higher fee to replace an already existing +operation in the prevalidator. Only one of the two operations will be eventually +included in a block. To be able to replace the first operation, the fee and the +"fee/gas limit" ratio of the second one is supposed to be higher than the first's +by a factor (currently fixed to 5%). In case of successful replacement, the old +operation is re-classified as ``Outdated``. + +.. _active_filter_rpc_alpha: + +Filters RPCs +~~~~~~~~~~~~ + +Filters are tunable by several parameters, whose values can be +retrieved and changed by users via the following RPC calls, +respectively: - ``rpc get /chains//mempool/filter`` - ``rpc post /chains//mempool/filter`` @@ -42,12 +151,24 @@ The following parameters can be thus inspected and modified: - ``minimal_nanotez_per_gas_unit``: type ``int``, default ``100`` - ``minimal_nanotez_per_byte``: type ``int``, default ``1000`` - ``allow_script_failure``: type ``bool``, default ``true`` +- ``clock_drift`` : type ``Period.t option``, default ``None`` -For example, the following command modifies the ``minimal_fees`` parameter (and resets all the other parameters to their default values):: +For example, the following command modifies the ``minimal_fees`` +parameter (and resets all the other parameters to their default +values):: tezos-client rpc post /chains/main/mempool/filter with '{ "minimal_fees": "42" }' -See also: - -- The `mempool plugin API `__ -- MR :gl:`!3118` show defaults in RPC get mempool/filter +Changing filters default configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Changing filters configuration may not have the expected outcome. +Because the configuration is only changed on your node, and not on all +the gossip network nodes, this will only impact how operations of your +nodes are propagated. For example, assuming there are three nodes +``A``, ``B`` and ``C`` such that ``A`` is connected to ``B`` and ``B`` +is connected to ``C``. Assume that ``A`` modifies its filter +configuration so that ``minimal_fees`` is now ``0``. Then ``A`` may +propagate an operation with ``0`` fee to ``B``. However, because ``B`` +has the default filter configuration, this operation will not be +propagated to ``C`` (so ``C`` may never see it). diff --git a/docs/shell/validation.rst b/docs/shell/validation.rst index 7a09d4645d..8d2b773cff 100644 --- a/docs/shell/validation.rst +++ b/docs/shell/validation.rst @@ -136,13 +136,8 @@ according to the protocol's decision. Prevalidator ------------ -<<<<<<< HEAD -To each chain validator is associated a *prevalidator* that is -responsible for the transmission of operations for this chain over the -======= Each chain validator is associated to a *prevalidator* that is responsible for determining which operations to propagate for this chain over the ->>>>>>> 3fe52a95e8... fixup! Doc: Make prevalidator into its own section peer-to-peer network. The page :doc:`./prevalidation` gives a detailed description of the prevalidator component. From 741a564adff422e221c36de196c6aeb93ad01ce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Tue, 7 Dec 2021 14:05:43 +0100 Subject: [PATCH 0195/1220] Doc: Add some details about precheck --- docs/alpha/precheck.rst | 104 ++++++++++++++++++++++++++++++++++++++++ docs/alpha/protocol.rst | 5 ++ 2 files changed, 109 insertions(+) create mode 100644 docs/alpha/precheck.rst diff --git a/docs/alpha/precheck.rst b/docs/alpha/precheck.rst new file mode 100644 index 0000000000..2a151158a1 --- /dev/null +++ b/docs/alpha/precheck.rst @@ -0,0 +1,104 @@ +Prechecking of manager operations +================================= + +The prevalidator of Octez prevents the propagation of non-valid +operations by trying to apply (or execute) them. +However, executing +manager operations (like complex smart contract calls) can be +time-consuming. +To ensure a high throughput of the Tezos protocol, the +propagation of operations should be as fast as possible. This calls +for a lighter approach. + +Prechecking manager operations implements such a lighter approach, by +discarding most invalid operations, without executing any of them. +This is possible because the validity of an operation (in the sense, +being able to include it in a block) +depends on its solvability (see below :ref:`solvability`). + +Fortunately, it turns out that deciding whether an operation is solvable can be achieved without +applying it. + +However, restricting the propagation to solvable operations is not enough to +ensure resilience against DDoS attacks. +It does not ensure their validity in a direct successor of the current +head. +For instance, given two manager operations from the same source and +with the same counter, these operations can be solvable in the same +Tezos context ``C``, but none of them is solvable in the context +resulting from the application of the other operation on ``C``. +To mitigate this situation, we further restrict the propagation of +manager operations to at most one manager operation per manager per +block. +Note however that one can still inject successive operations with the +same counter using the ``replace-by-fee`` feature. + + +.. _solvability: + +Solvable operations +------------------- + +The solvability of an operation depends on the content of the Tezos +context in which it is applied. + + +In the following, we consider the context kept by the prevalidator +(see :doc:`../shell/prevalidation`). +Checking operation solvability with this context is lighter than with +the contexts for block validation or block construction: it can be +decided without checking whether the gas announced by the operation +is below the remaining gas for the whole block. +Checking solvability consists in verifying that the +operation is well-formed and that fees can be paid: no execution +of operations (especially of smart-contract code) is done to determine +whether they would be applied in the next block with a success or a +fail status (as done by operation application). + +Roughly, a manager operation is solvable when the following conditions hold: + +- The manager can afford to pay the operation fees in the current prevalidator context; +- the operation's counter is the successor of the operation counter associated to + the manager in the current context; +- the gas limit announced is below the gas limit per operation as + defined by the economic protocol; +- for manager operations with Michelson parameters, the + gas cost of deserialisation is under the gas limit announced by the + operation; and +- the signature of the operation is valid. + + +Co-precheckable operations +-------------------------- + +Two manager operations are *compatible* if they correspond to distinct managers. + +Two manager operations are *co-precheckable* in a context if they are +compatible and solvable in this context. + +Considering two co-precheckable operations in a context, the +application of one of them preserves the solvability of the other. + +This property extends to a set of manager operations if every pair of +distinct operations is co-precheckable. +In this case, the operations could be included in the next block in +any order, modulo block limits (eg. maximum gas, block size limit, +etc). + +The precheck of a manger operation, with respect to a context and a +set of co-precheckable operations, consists in checking whether adding +the operation to the set preserves the operations of the set being +co-precheckable. + +The prevalidator (see :doc:`../shell/prevalidation`) aims at +propagating operations that could be included in a direct successor +block of the current head. +It will propagate co-precheckable operations after checking their +solvability. + +In conclusion, manager operation precheck is a simplification over the real +application of operations: the prevalidator checks whether each +manager operation would be valid in a direct successor of the +current head, as long as gas is available in that block. +In other terms, during prechecking of manager operations, they have no +effect on the prevalidator context. diff --git a/docs/alpha/protocol.rst b/docs/alpha/protocol.rst index 77780d92a0..c13da6adce 100644 --- a/docs/alpha/protocol.rst +++ b/docs/alpha/protocol.rst @@ -66,6 +66,11 @@ Sapling, etc), and some details about its implementation. plugins +.. toctree:: + :maxdepth: 2 + + precheck + .. toctree:: :maxdepth: 2 From e9f1c0735afe4be0c6ea85f654015d3d033a8a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Thu, 13 Jan 2022 10:27:28 +0100 Subject: [PATCH 0196/1220] doc: Add pages for Ithaca --- docs/012/plugins.rst | 175 +++++++++++++++++++++++++++++++++++------- docs/012/precheck.rst | 104 +++++++++++++++++++++++++ docs/012/protocol.rst | 6 ++ 3 files changed, 258 insertions(+), 27 deletions(-) create mode 100644 docs/012/precheck.rst diff --git a/docs/012/plugins.rst b/docs/012/plugins.rst index 770b75c55b..08f838730d 100644 --- a/docs/012/plugins.rst +++ b/docs/012/plugins.rst @@ -1,37 +1,146 @@ -Protocol plugins +Protocol Plugins ================ -Protocol plugins implement extra APIs needed by the shell in order to interact with the economic protocol, beyond the one provided by the protocol environment. -This code is not strictly speaking part of the protocol code base, so this is not subject to on-chain governance (see :doc:`voting procedure `), but it is still protocol-dependent, which means that it may vary with different protocols. -For instance, the plugin code for protocol Alpha is located in file :src:`src/proto_012_PsiThaCa/lib_plugin/plugin.ml`. -Thus, a specific version is included in the Octez node for each protocol version (recall that a new release of Octez is usually delivered for each new protocol proposal, see :doc:`../releases/releases`) - -So what kind of features may a protocol plugin provide? -For instance, protocol plugins do not define the context, or restrict the validity of operations. +This document describes the protocol plugins implemented in Octez. + +Protocol-specific shell plugins, simply called protocol plugins, +implement extra APIs needed by the shell in order to interact with the +economic protocol, beyond the one provided by the :doc:`protocol +environment <../developer/protocol_environment>`. +This code is not strictly speaking part of the protocol +code base, so this is not subject to on-chain governance (see +:doc:`voting procedure `), but it is still protocol-dependent, +which means that it may vary with different protocols. For instance, +the plugin code for protocol Alpha is located in file +:src:`src/proto_alpha/lib_plugin/plugin.ml`. Thus, a specific version +is included in the Octez node for each protocol version (recall that a +new release of Octez is usually delivered for each new protocol +proposal, see :doc:`../releases/releases`) + +In contrast to the Octez code, plugins are protocol-specific and as +such, know how to read the content of an operation. + +So what kind of features may a protocol plugin provide? For instance, +protocol plugins do not define the context, or restrict the validity +of operations. In turn protocol plugins may, for example: -- be adjacent enough to the protocol code that it needs to have access to the protocol's internal representations for certain structures: e.g., it has some RPCs that can introspect on the protocol dependent content for certain operations; -- implement some common operations that are customized for each protocol (e.g., :ref:`prevalidator_filters`). +- perform protocol-dependent computations that require data not available + in the amendable part of the protocol like accessing the current time + to reason on timestamps (see :ref:`consensus_filter_012`); +- preserve the opacity/abstraction barrier of the protocol's internal data + by performing computations on internal data without revealing it: + e.g., there are some RPCs that can introspect the protocol-dependent + content for certain operations; +- implement some common operations that are customized for each + protocol (e.g., :ref:`prevalidator_filters`). .. _prevalidator_filters_012: Prevalidator filters -~~~~~~~~~~~~~~~~~~~~ +-------------------- + +**Prevalidator filters**, which are detailed in the rest of this page, enable the node to discard some +operations (that cannot be included in the next block) faster and +restrict the operations it propagates to the network. +Filters are implemented as a node plugin and a specific filter is +delivered with each protocol version. When the chain switches to a new +protocol, the node installs its corresponding filters, *in lieu of* +the filters of the previous protocol. Notice that prevalidator filters are not +mandatory, their absence does not break the Tezos blockchain protocol. + +The interface of the prevalidator plugin is described at the `mempool plugin API +`__ + +The different kinds of prevalidator filters are described below. + +.. _fees_filter_012: + +Fees filter +........... + +A very affordable technique for attackers is based on flooding the +network with, valid but useless, zero-fees operations. This is why the +prevalidator filter currently restricts operations based on their +associated fees, to reject "too cheap" or "zero-fees" operations. This +can be configured via the ``minimal_fees``, +``minimal_nanotez_per_gas_unit`` and ``minimal_nanotez_per_byte`` (see +:ref:`filter RPCs`) parameters of the filter +configuration of your node. + +This filtering strategy is implemented in the ``prefilter`` (see +:doc:`../shell/prevalidation`). + +.. _consensus_filter_012: + +Consensus filter +................ + +For technical reasons, the economic protocol cannot reject consensus +operations based on their timestamp. Consequently, many +consensus operations are declared as valid by the economic protocol +while being timestamped too early or too late. +The plugin filter aims to narrow down the number of consensus +operations declared as valid based on several heuristics. In +particular, the filter can use the current timestamp while the +protocol cannot. + +This filter classifies a consensus operation according to the current +block proposal as follows: + +- ``Outdated`` if it concerns a previous head at a previous level, +- ``Branch_refused`` if it concerns a previous head at the same level + but in the previous round, +- ``Branch_delayed`` if it concerns a round in the future. -The :ref:`prevalidator component ` of the shell is responsible for disseminating operations over the peer-to-peer network, that may be included in next blocks. -To prevent spam, the prevalidator implements built-in filtering mechanisms that limit to some extent the risk of flooding the network with invalid operations. -However, these selection mechanisms remain rather laxist to protect from DOS attacks. -In particular, a very affordable technique for attackers is based on flooding the network with, valid but useless, zero-fees operations. -This is why an additional and more flexible selection mechanism is included in the Octez node: *prevalidator filters*. -Prevalidator filters thus serve at further restricting the operations to propapate by the node to the network. -Filters are implemented as a node plugin and a specific filter is delivererd with each protocol version. -When the chain switches to a new protocol, the node installs its corresponding filter, *in lieu of* the filter of the previous protocol. +This filtering strategy is implemented in the ``prefilter`` (see +:doc:`../shell/prevalidation`). -The prevalidator filter is based on restricting operations based on their associated fees, to reject "too cheap" or "zero-fees" operations. -However, the filters could also be used to restrict the propagation of consensus operations (e.g. endorsements). -The filter is tunable by several parameters, whose values can be retrieved and changed by users via the following RPC calls, respectively: + +Prechecking of manager operations +................................. + +The aim of the ``precheck`` filter is to avoid fully executing manager operations +before deciding whether to gossip them to the network. + +The detailed description of this feature is given in +:doc:`./precheck`. For operations other than manager operations, the +``precheck`` filter is a no-op, which entails that these operations need to be +fully executed to decide their propagation (see :doc:`../shell/prevalidation`). + + +One operation manager per manager per block +........................................... + +The mempool filters, ``prefilter``, ``precheck`` and ``postfilter`` +also ensure that, since the last head update (the last valid block which +increased the chain's fitness), only one operation per manager is propagated. +All other received operations originating from the same manager will be classified +as ``Branch_delayed`` and will not be propagated. + +This criterion is used only by the prevalidator to decide the propagation of +operations. A baker can still include several operations originating from the same +manager in a single block, provided that it gets them in time (note that they can be +propagated by nodes using different versions or implementations). + +Alternatively, a user can inject an operation with the same +manager and the same counter, but with a higher fee to replace an already existing +operation in the prevalidator. Only one of the two operations will be eventually +included in a block. To be able to replace the first operation, the fee and the +"fee/gas limit" ratio of the second one is supposed to be higher than the first's +by a factor (currently fixed to 5%). In case of successful replacement, the old +operation is re-classified as ``Outdated``. + +.. _active_filter_rpc_012: + +Filters RPCs +~~~~~~~~~~~~ + +Filters are tunable by several parameters, whose values can be +retrieved and changed by users via the following RPC calls, +respectively: - ``rpc get /chains//mempool/filter`` - ``rpc post /chains//mempool/filter`` @@ -42,12 +151,24 @@ The following parameters can be thus inspected and modified: - ``minimal_nanotez_per_gas_unit``: type ``int``, default ``100`` - ``minimal_nanotez_per_byte``: type ``int``, default ``1000`` - ``allow_script_failure``: type ``bool``, default ``true`` +- ``clock_drift`` : type ``Period.t option``, default ``None`` -For example, the following command modifies the ``minimal_fees`` parameter (and resets all the other parameters to their default values):: +For example, the following command modifies the ``minimal_fees`` +parameter (and resets all the other parameters to their default +values):: tezos-client rpc post /chains/main/mempool/filter with '{ "minimal_fees": "42" }' -See also: - -- The `mempool plugin API `__ -- MR :gl:`!3118` show defaults in RPC get mempool/filter +Changing filters default configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Changing filters configuration may not have the expected outcome. +Because the configuration is only changed on your node, and not on all +the gossip network nodes, this will only impact how operations of your +node are propagated. For example, assuming there are three nodes +``A``, ``B`` and ``C`` such that ``A`` is connected to ``B`` and ``B`` +is connected to ``C``. Assume that ``A`` modifies its filter +configuration so that ``minimal_fees`` is now ``0``. Then ``A`` may +propagate an operation with ``0`` fee to ``B``. However, because ``B`` +has the default filter configuration, this operation will not be +propagated to ``C`` (so ``C`` may never see it). diff --git a/docs/012/precheck.rst b/docs/012/precheck.rst new file mode 100644 index 0000000000..6d4715e5b6 --- /dev/null +++ b/docs/012/precheck.rst @@ -0,0 +1,104 @@ +Prechecking of manager operations +================================= + +The prevalidator of Octez prevents the propagation of non-valid +operations by trying to apply (or execute) them. +However, executing +manager operations (like complex smart contract calls) can be +time-consuming. +To ensure a high throughput of the Tezos protocol, the +propagation of operations should be as fast as possible. This calls +for a lighter approach. + +Prechecking manager operations implements such a lighter approach, by +discarding most invalid operations, without executing any of them. +This is possible because the validity of an operation (in the sense, +being able to include it in a block) +depends on its solvability (see below :ref:`solvability_012`). + +Fortunately, it turns out that deciding whether an operation is solvable can be achieved without +applying it. + +However, restricting the propagation to solvable operations is not enough to +ensure resilience against DDoS attacks. +It does not ensure their validity in a direct successor of the current +head. +For instance, given two manager operations from the same source and +with the same counter, these operations can be solvable in the same +Tezos context ``C``, but none of them is solvable in the context +resulting from the application of the other operation on ``C``. +To mitigate this situation, we further restrict the propagation of +manager operations to at most one manager operation per manager per +block. +Note however that one can still inject successive operations with the +same counter using the ``replace-by-fee`` feature. + + +.. _solvability_012: + +Solvable operations +------------------- + +The solvability of an operation depends on the content of the Tezos +context in which it is applied. + + +In the following, we consider the context kept by the prevalidator +(see :doc:`../shell/prevalidation`). +Checking operation solvability with this context is lighter than with +the contexts for block validation or block construction: it can be +decided without checking whether the gas announced by the operation +is below the remaining gas for the whole block. +Checking solvability consists in verifying that the +operation is well-formed and that fees can be paid: no execution +of operations (especially of smart-contract code) is done to determine +whether they would be applied in the next block with a success or a +fail status (as done by operation application). + +Roughly, a manager operation is solvable when the following conditions hold: + +- The manager can afford to pay the operation fees in the current prevalidator context; +- the operation's counter is the successor of the operation counter associated to + the manager in the current context; +- the gas limit announced is below the gas limit per operation as + defined by the economic protocol; +- for manager operations with Michelson parameters, the + gas cost of deserialisation is under the gas limit announced by the + operation; and +- the signature of the operation is valid. + + +Co-precheckable operations +-------------------------- + +Two manager operations are *compatible* if they correspond to distinct managers. + +Two manager operations are *co-precheckable* in a context if they are +compatible and solvable in this context. + +Considering two co-precheckable operations in a context, the +application of one of them preserves the solvability of the other. + +This property extends to a set of manager operations if every pair of +distinct operations is co-precheckable. +In this case, the operations could be included in the next block in +any order, modulo block limits (eg. maximum gas, block size limit, +etc). + +The precheck of a manager operation, with respect to a context and a +set of co-precheckable operations, consists in checking whether adding +the operation to the set preserves the operations of the set being +co-precheckable. + +The prevalidator (see :doc:`../shell/prevalidation`) aims at +propagating operations that could be included in a direct successor +block of the current head. +It will propagate co-precheckable operations after checking their +solvability. + +In conclusion, manager operation precheck is a simplification over the real +application of operations: the prevalidator checks whether each +manager operation would be valid in a direct successor of the +current head, as long as gas is available in that block. +In other terms, during prechecking of manager operations, they have no +effect on the prevalidator context. diff --git a/docs/012/protocol.rst b/docs/012/protocol.rst index b32130d791..fa4099a85c 100644 --- a/docs/012/protocol.rst +++ b/docs/012/protocol.rst @@ -65,3 +65,9 @@ Sapling, etc), and some details about its implementation. :maxdepth: 2 plugins + +.. toctree:: + :maxdepth: 2 + + precheck + From 686a154abfa0245b52248659a422d87b08413ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Thu, 6 Jan 2022 18:16:48 +0100 Subject: [PATCH 0197/1220] Protocol: Put the cache limits as parametric constants --- src/proto_alpha/lib_client/mockup.ml | 56 ++++++++++--- src/proto_alpha/lib_client/proxy.ml | 28 ++++++- .../lib_parameters/default_parameters.ml | 8 ++ .../lib_protocol/alpha_context.mli | 7 +- src/proto_alpha/lib_protocol/apply.ml | 2 - src/proto_alpha/lib_protocol/apply.mli | 5 -- src/proto_alpha/lib_protocol/cache_repr.ml | 2 +- src/proto_alpha/lib_protocol/cache_repr.mli | 12 --- .../lib_protocol/constants_repr.ml | 80 ++++++++++--------- .../lib_protocol/constants_repr.mli | 23 +++++- src/proto_alpha/lib_protocol/init_storage.ml | 6 ++ src/proto_alpha/lib_protocol/main.ml | 7 -- src/proto_alpha/lib_protocol/main.mli | 2 - src/proto_alpha/lib_protocol/raw_context.ml | 3 + .../lib_protocol/test/helpers/block.ml | 1 - .../michelson/test_script_cache.ml | 4 +- tests_python/tests_alpha/test_mockup.py | 5 ++ tezt/_regressions/rpc/alpha.client.others.out | 10 +-- tezt/_regressions/rpc/alpha.light.others.out | 10 +-- tezt/_regressions/rpc/alpha.proxy.others.out | 10 +-- .../rpc/alpha.proxy_server.others.out | 10 +-- 21 files changed, 183 insertions(+), 108 deletions(-) diff --git a/src/proto_alpha/lib_client/mockup.ml b/src/proto_alpha/lib_client/mockup.ml index 0351135e7b..bc26306666 100644 --- a/src/proto_alpha/lib_client/mockup.ml +++ b/src/proto_alpha/lib_client/mockup.ml @@ -68,6 +68,9 @@ module Protocol_constants_overrides = struct double_baking_punishment : Tez.t option; ratio_of_frozen_deposits_slashed_per_double_endorsement : Constants.ratio option; + cache_script_size : int option; + cache_stake_distribution_cycles : int option; + cache_sampler_state_cycles : int option; tx_rollup_enable : bool option; tx_rollup_origination_size : int option; sc_rollup_enable : bool option; @@ -118,8 +121,12 @@ module Protocol_constants_overrides = struct c.chain_id, c.timestamp, c.initial_seed ), - ( (c.tx_rollup_enable, c.tx_rollup_origination_size), - (c.sc_rollup_enable, c.sc_rollup_origination_size) ) ) ) ) )) + ( ( c.cache_script_size, + c.cache_stake_distribution_cycles, + c.cache_sampler_state_cycles ), + ( (c.tx_rollup_enable, c.tx_rollup_origination_size), + (c.sc_rollup_enable, c.sc_rollup_origination_size) ) ) ) ) + ) )) (fun ( ( preserved_cycles, blocks_per_cycle, blocks_per_commitment, @@ -155,8 +162,12 @@ module Protocol_constants_overrides = struct chain_id, timestamp, initial_seed ), - ( (tx_rollup_enable, tx_rollup_origination_size), - (sc_rollup_enable, sc_rollup_origination_size) ) ) ) ) ) -> + ( ( cache_script_size, + cache_stake_distribution_cycles, + cache_sampler_state_cycles ), + ( (tx_rollup_enable, tx_rollup_origination_size), + (sc_rollup_enable, sc_rollup_origination_size) ) ) ) ) ) + ) -> { preserved_cycles; blocks_per_cycle; @@ -190,6 +201,9 @@ module Protocol_constants_overrides = struct consensus_threshold; double_baking_punishment; ratio_of_frozen_deposits_slashed_per_double_endorsement; + cache_script_size; + cache_stake_distribution_cycles; + cache_sampler_state_cycles; tx_rollup_enable; tx_rollup_origination_size; sc_rollup_enable; @@ -246,12 +260,17 @@ module Protocol_constants_overrides = struct (opt "initial_timestamp" Time.Protocol.encoding) (opt "initial_seed" (option State_hash.encoding))) (merge_objs - (obj2 - (opt "tx_rollup_enable" Data_encoding.bool) - (opt "tx_rollup_origination_size" int31)) - (obj2 - (opt "sc_rollup_enable" bool) - (opt "sc_rollup_origination_size" int31))))))) + (obj3 + (opt "cache_script_size" int31) + (opt "cache_stake_distribution_cycles" int8) + (opt "cache_sampler_state_cycles" int8)) + (merge_objs + (obj2 + (opt "tx_rollup_enable" Data_encoding.bool) + (opt "tx_rollup_origination_size" int31)) + (obj2 + (opt "sc_rollup_enable" bool) + (opt "sc_rollup_origination_size" int31)))))))) let default_value (cctxt : Tezos_client_base.Client_context.full) : t tzresult Lwt.t = @@ -310,6 +329,10 @@ module Protocol_constants_overrides = struct ratio_of_frozen_deposits_slashed_per_double_endorsement = Some parametric.ratio_of_frozen_deposits_slashed_per_double_endorsement; + cache_script_size = Some parametric.cache_script_size; + cache_stake_distribution_cycles = + Some parametric.cache_stake_distribution_cycles; + cache_sampler_state_cycles = Some parametric.cache_sampler_state_cycles; tx_rollup_enable = Some parametric.tx_rollup_enable; tx_rollup_origination_size = Some parametric.tx_rollup_origination_size; sc_rollup_enable = Some parametric.sc_rollup_enable; @@ -356,6 +379,9 @@ module Protocol_constants_overrides = struct frozen_deposits_percentage = None; double_baking_punishment = None; ratio_of_frozen_deposits_slashed_per_double_endorsement = None; + cache_script_size = None; + cache_stake_distribution_cycles = None; + cache_sampler_state_cycles = None; tx_rollup_enable = None; tx_rollup_origination_size = None; sc_rollup_enable = None; @@ -724,6 +750,16 @@ module Protocol_constants_overrides = struct o.ratio_of_frozen_deposits_slashed_per_double_endorsement; (* Notice that the chain_id and the timestamp are not used here as they are not protocol constants... *) + cache_script_size = + Option.value ~default:c.cache_script_size o.cache_script_size; + cache_stake_distribution_cycles = + Option.value + ~default:c.cache_stake_distribution_cycles + o.cache_stake_distribution_cycles; + cache_sampler_state_cycles = + Option.value + ~default:c.cache_sampler_state_cycles + o.cache_sampler_state_cycles; tx_rollup_enable = Option.value ~default:c.tx_rollup_enable o.tx_rollup_enable; tx_rollup_origination_size = diff --git a/src/proto_alpha/lib_client/proxy.ml b/src/proto_alpha/lib_client/proxy.ml index 077ac21391..98434d3423 100644 --- a/src/proto_alpha/lib_client/proxy.ml +++ b/src/proto_alpha/lib_client/proxy.ml @@ -134,12 +134,34 @@ let initial_context let proxy_mem = M.proxy_mem pgi end in let empty = Proxy_context.empty @@ Some (module N) in - let version_value = "alpha_current" in Tezos_protocol_environment.Context.add empty ["version"] - (Bytes.of_string version_value) - >>= fun ctxt -> Protocol.Main.init_cache ctxt + (Bytes.of_string "alpha_current") + >>= fun ctxt -> + (* There is something fundamentally strange here. The purpose of the + proxy mode is to fetch pieces of data that are missing. Hence, + there is no need to initialize the context properly. It is + sufficient that the proxy client is connected to a node with a + valid context. However, this makes the assumption that any + interaction with the context is pure: Only the Irmin context can + be modified. The cache breaks this since initializing the cache + changes the Irmin context but also loads values into memory. If + the cache is not initialized, then any cache access will fail. + Hence, the initialization is done here. This means that the + caller needs to maintain a cache on its own. But I suspect this + is not wanted: The cache of the proxied node should be used + instead. *) + let cache_layout = + (* The order matters, be careful to maintain it correctly. *) + Default_parameters. + [ + constants_mainnet.cache_script_size; + constants_mainnet.cache_stake_distribution_cycles; + constants_mainnet.cache_sampler_state_cycles; + ] + in + Tezos_protocol_environment.Context.Cache.set_cache_layout ctxt cache_layout let round_durations (rpc_context : RPC_context.generic) (chain : Tezos_shell_services.Block_services.chain) diff --git a/src/proto_alpha/lib_parameters/default_parameters.ml b/src/proto_alpha/lib_parameters/default_parameters.ml index 3d77c69fcb..a92e97ad5d 100644 --- a/src/proto_alpha/lib_parameters/default_parameters.ml +++ b/src/proto_alpha/lib_parameters/default_parameters.ml @@ -88,6 +88,14 @@ let constants_mainnet = ratio_of_frozen_deposits_slashed_per_double_endorsement = {numerator = 1; denominator = 2}; initial_seed = None; + (* A cache for contract source code and storage. Its size has been + chosen not too exceed 100 000 000 bytes. *) + cache_script_size = 100_000_000; + (* A cache for the stake distribution for all cycles stored at any + moment: preserved_cycles + max_slashing_period + 1 = 8 currently. *) + cache_stake_distribution_cycles = 8; + (* One for the sampler state for all cycles stored at any moment (as above). *) + cache_sampler_state_cycles = 8; tx_rollup_enable = false; (* TODO: https://gitlab.com/tezos/tezos/-/issues/2152 *) tx_rollup_origination_size = 60_000; diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index ef48af0e05..d20312b446 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -767,6 +767,9 @@ module Constants : sig double_baking_punishment : Tez.t; ratio_of_frozen_deposits_slashed_per_double_endorsement : ratio; initial_seed : State_hash.t option; + cache_script_size : int; + cache_stake_distribution_cycles : int; + cache_sampler_state_cycles : int; tx_rollup_enable : bool; tx_rollup_origination_size : int; sc_rollup_enable : bool; @@ -977,12 +980,8 @@ module Cache : sig val pp : Format.formatter -> context -> unit - val set_cache_layout : context -> size list -> context Lwt.t - val sync : context -> cache_nonce:Bytes.t -> context Lwt.t - val clear : context -> context - val future_cache_expectation : context -> time_in_blocks:int -> context val cache_size : context -> cache_index:int -> size option diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index ef57bcc9c9..189948f906 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -814,8 +814,6 @@ open Apply_results let assert_sc_rollup_feature_enabled ctxt = fail_unless (Constants.sc_rollup_enable ctxt) Sc_rollup_feature_disabled -let cache_layout = Constants_repr.cache_layout - (** Retrieving the source code of a contract from its address is costly diff --git a/src/proto_alpha/lib_protocol/apply.mli b/src/proto_alpha/lib_protocol/apply.mli index be55532b01..25997166d8 100644 --- a/src/proto_alpha/lib_protocol/apply.mli +++ b/src/proto_alpha/lib_protocol/apply.mli @@ -253,11 +253,6 @@ val precheck_manager_contents_list : so that it can be put into the cache. *) val value_of_key : t -> Context.Cache.key -> Context.Cache.value tzresult Lwt.t -(** [cache_layout] describes how the caches needed by the protocol. - The length of the list defines the number of caches while each - element of this list corresponds to the size limit of each cache. *) -val cache_layout : int list - (** Check if endorsements are required for a given level. *) val are_endorsements_required : t -> level:Raw_level.t -> bool tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/cache_repr.ml b/src/proto_alpha/lib_protocol/cache_repr.ml index 6aeada3338..6f6929c6ba 100644 --- a/src/proto_alpha/lib_protocol/cache_repr.ml +++ b/src/proto_alpha/lib_protocol/cache_repr.ml @@ -184,7 +184,7 @@ let register_exn (type cvalue) (module INTERFACE with type cached_value = cvalue) = if Compare.Int.(C.cache_index < 0) - || Compare.List_length_with.(Constants_repr.cache_layout <= C.cache_index) + || Compare.Int.(Constants_repr.cache_layout_size <= C.cache_index) then invalid_arg "Cache index is invalid" ; let mk = make_key ~cache_index:C.cache_index ~namespace:C.namespace in (module struct diff --git a/src/proto_alpha/lib_protocol/cache_repr.mli b/src/proto_alpha/lib_protocol/cache_repr.mli index 357b808c58..6480a57786 100644 --- a/src/proto_alpha/lib_protocol/cache_repr.mli +++ b/src/proto_alpha/lib_protocol/cache_repr.mli @@ -75,15 +75,6 @@ module Admin : sig (** [pp fmt ctxt] is a pretty printter for the [cache] of [ctxt]. *) val pp : Format.formatter -> Raw_context.t -> unit - (** [set_cache_layout ctxt layout] sets the caches of [ctxt] to - comply with given [layout]. If there was already a cache in - [ctxt], it is erased by the new layout. - - In that case, a fresh collection of empty caches is reconstructed - from the new [layout]. Notice that cache [key]s are invalidated - in that case, i.e. [find t k] will return [None]. *) - val set_cache_layout : Raw_context.t -> size list -> Raw_context.t Lwt.t - (** [sync ctxt ~cache_nonce] updates the context with the domain of the cache computed so far. Such function is expected to be called at the end of the validation of a block, when there is no more @@ -98,9 +89,6 @@ module Admin : sig computation is delegated to the economic protocol. *) val sync : Raw_context.t -> cache_nonce:Bytes.t -> Raw_context.t Lwt.t - (** [clear ctxt] removes all cache entries. *) - val clear : Raw_context.t -> Raw_context.t - (** {3 Cache helpers for RPCs} *) (** [future_cache_expectation ctxt ~time_in_blocks] returns [ctxt] except diff --git a/src/proto_alpha/lib_protocol/constants_repr.ml b/src/proto_alpha/lib_protocol/constants_repr.ml index 3b239e150a..dd0b0b9884 100644 --- a/src/proto_alpha/lib_protocol/constants_repr.ml +++ b/src/proto_alpha/lib_protocol/constants_repr.ml @@ -46,18 +46,6 @@ let max_micheline_bytes_limit = 50_000 let max_allowed_global_constant_depth = 10_000 -(* In this version of the protocol, there are the following subcaches: - - * One for contract source code and storage. Its size has been - chosen not too exceed 100 000 000 bytes. - - * One for the stake distribution for all cycles stored at any - moment (* preserved_cycles + max_slashing_period + 1 = 8 currently. *) - - * One for the sampler state for all cycles stored at any moment (as above). *) - -let cache_layout = [100_000_000; 8 (* cycles *); 8 (* cycles *)] - (* In previous versions of the protocol, this [michelson_maximum_type_size] limit was set to 1000 but the contract input types (pair ) @@ -66,6 +54,10 @@ let cache_layout = [100_000_000; 8 (* cycles *); 8 (* cycles *)] types as big as 2001. *) let michelson_maximum_type_size = 2001 +(* This constant declares the number of subcaches used by the cache + mechanism (see {Context.Cache}). *) +let cache_layout_size = 3 + type fixed = unit type ratio = {numerator : int; denominator : int} @@ -84,17 +76,6 @@ let pp_ratio fmt {numerator; denominator} = let fixed_encoding = let open Data_encoding in - let uint62 = - let max_int_int64 = Int64.of_int max_int in - conv_with_guard - (fun int -> Int64.of_int int) - (fun int64 -> - if Compare.Int64.(int64 < 0L) then Error "Negative integer" - else if Compare.Int64.(int64 > max_int_int64) then - Error "Integer does not fit in 62 bits" - else ok @@ Int64.to_int int64) - int64 - in conv (fun () -> ( proof_of_work_nonce_size, @@ -105,7 +86,7 @@ let fixed_encoding = max_micheline_node_count, max_micheline_bytes_limit, max_allowed_global_constant_depth, - cache_layout, + cache_layout_size, michelson_maximum_type_size )) (fun ( _proof_of_work_nonce_size, _nonce_length, @@ -115,7 +96,7 @@ let fixed_encoding = _max_micheline_node_count, _max_micheline_bytes_limit, _max_allowed_global_constant_depth, - _cache_layout, + _cache_layout_size, _michelson_maximum_type_size ) -> ()) (obj10 (req "proof_of_work_nonce_size" uint8) @@ -126,7 +107,7 @@ let fixed_encoding = (req "max_micheline_node_count" int31) (req "max_micheline_bytes_limit" int31) (req "max_allowed_global_constants_depth" int31) - (req "cache_layout" (list uint62)) + (req "cache_layout_size" uint8) (req "michelson_maximum_type_size" uint16)) let fixed = () @@ -172,6 +153,11 @@ type parametric = { double_baking_punishment : Tez_repr.t; ratio_of_frozen_deposits_slashed_per_double_endorsement : ratio; initial_seed : State_hash.t option; + (* If a new cache is added, please also modify the + [cache_layout_size] value. *) + cache_script_size : int; + cache_stake_distribution_cycles : int; + cache_sampler_state_cycles : int; tx_rollup_enable : bool; tx_rollup_origination_size : int; sc_rollup_enable : bool; @@ -215,8 +201,12 @@ let parametric_encoding = c.double_baking_punishment, c.ratio_of_frozen_deposits_slashed_per_double_endorsement, c.initial_seed ), - ( (c.tx_rollup_enable, c.tx_rollup_origination_size), - (c.sc_rollup_enable, c.sc_rollup_origination_size) ) ) ) ) )) + ( ( c.cache_script_size, + c.cache_stake_distribution_cycles, + c.cache_sampler_state_cycles ), + ( (c.tx_rollup_enable, c.tx_rollup_origination_size), + (c.sc_rollup_enable, c.sc_rollup_origination_size) ) ) ) ) ) + )) (fun ( ( preserved_cycles, blocks_per_cycle, blocks_per_commitment, @@ -250,8 +240,11 @@ let parametric_encoding = double_baking_punishment, ratio_of_frozen_deposits_slashed_per_double_endorsement, initial_seed ), - ( (tx_rollup_enable, tx_rollup_origination_size), - (sc_rollup_enable, sc_rollup_origination_size) ) ) ) ) ) -> + ( ( cache_script_size, + cache_stake_distribution_cycles, + cache_sampler_state_cycles ), + ( (tx_rollup_enable, tx_rollup_origination_size), + (sc_rollup_enable, sc_rollup_origination_size) ) ) ) ) ) ) -> { preserved_cycles; blocks_per_cycle; @@ -286,6 +279,9 @@ let parametric_encoding = double_baking_punishment; ratio_of_frozen_deposits_slashed_per_double_endorsement; initial_seed; + cache_script_size; + cache_stake_distribution_cycles; + cache_sampler_state_cycles; tx_rollup_enable; tx_rollup_origination_size; sc_rollup_enable; @@ -339,12 +335,17 @@ let parametric_encoding = ratio_encoding) (opt "initial_seed" State_hash.encoding)) (merge_objs - (obj2 - (req "tx_rollup_enable" bool) - (req "tx_rollup_origination_size" int31)) - (obj2 - (req "sc_rollup_enable" bool) - (req "sc_rollup_origination_size" int31))))))) + (obj3 + (req "cache_script_size" int31) + (req "cache_stake_distribution_cycles" int8) + (req "cache_sampler_state_cycles" int8)) + (merge_objs + (obj2 + (req "tx_rollup_enable" bool) + (req "tx_rollup_origination_size" int31)) + (obj2 + (req "sc_rollup_enable" bool) + (req "sc_rollup_origination_size" int31)))))))) type t = {fixed : fixed; parametric : parametric} @@ -630,3 +631,10 @@ module Proto_previous = struct (req "liquidity_baking_sunset_level" int32) (req "liquidity_baking_escape_ema_threshold" int32)))) end + +let cache_layout p = + [ + p.cache_script_size; + p.cache_stake_distribution_cycles; + p.cache_sampler_state_cycles; + ] diff --git a/src/proto_alpha/lib_protocol/constants_repr.mli b/src/proto_alpha/lib_protocol/constants_repr.mli index 83aef81ec1..c7657bcacd 100644 --- a/src/proto_alpha/lib_protocol/constants_repr.mli +++ b/src/proto_alpha/lib_protocol/constants_repr.mli @@ -64,10 +64,6 @@ val max_micheline_bytes_limit : int in [Script_ir_translator]. *) val max_allowed_global_constant_depth : int -(** Each protocol defines the number of subcaches and their respective - limit size using [cache_layout]. *) -val cache_layout : int list - val michelson_maximum_type_size : int type fixed @@ -119,6 +115,12 @@ type parametric = { double_baking_punishment : Tez_repr.t; ratio_of_frozen_deposits_slashed_per_double_endorsement : ratio; initial_seed : State_hash.t option; + cache_script_size : int; + (* in bytes *) + cache_stake_distribution_cycles : int; + (* in cycles *) + cache_sampler_state_cycles : int; + (* in cycles *) tx_rollup_enable : bool; tx_rollup_origination_size : int; sc_rollup_enable : bool; @@ -185,3 +187,16 @@ module Proto_previous : sig val parametric_encoding : parametric Data_encoding.encoding end + +(** For each subcache, a size limit needs to be declared once. However, + depending how the protocol will be instantiated (sandboxed mode, + test network, ...) we may want to change this limit. For each + subcache, a parametric constant can be used to change the limit + (see {parametric}). + + The number of subcaches and the limits for all those subcaches form + together what is called the [cache_layout]. *) +val cache_layout_size : int + +(** The [cache_layout] depends on parametric constants. *) +val cache_layout : parametric -> int list diff --git a/src/proto_alpha/lib_protocol/init_storage.ml b/src/proto_alpha/lib_protocol/init_storage.ml index 87ac64c967..ce1cdd7904 100644 --- a/src/proto_alpha/lib_protocol/init_storage.ml +++ b/src/proto_alpha/lib_protocol/init_storage.ml @@ -117,6 +117,12 @@ let migrate_nonces ctxt migration_cycle = let prepare_first_block ctxt ~typecheck ~level ~timestamp = Raw_context.prepare_first_block ~level ~timestamp ctxt >>=? fun (previous_protocol, ctxt) -> + let parametric = Raw_context.constants ctxt in + ( Raw_context.Cache.set_cache_layout + ctxt + (Constants_repr.cache_layout parametric) + >|= fun ctxt -> Raw_context.Cache.clear ctxt ) + >>= fun ctxt -> let cycle = (Raw_context.current_level ctxt).cycle in (match previous_protocol with | Genesis param -> diff --git a/src/proto_alpha/lib_protocol/main.ml b/src/proto_alpha/lib_protocol/main.ml index 5a4fb2c32a..415ad280df 100644 --- a/src/proto_alpha/lib_protocol/main.ml +++ b/src/proto_alpha/lib_protocol/main.ml @@ -137,8 +137,6 @@ type validation_state = { Apply_results.packed_successful_manager_operation_result list; } -let cache_layout = Apply.cache_layout - let begin_partial_application ~chain_id ~ancestor_context:ctxt ~predecessor_timestamp ~(predecessor_fitness : Fitness.t) (block_header : Alpha_context.Block_header.t) = @@ -730,10 +728,6 @@ let relative_position_within_block op1 op2 = | (Cons (Manager_operation op1, _), Cons (Manager_operation op2, _)) -> Z.compare op1.counter op2.counter -let init_cache ctxt = - Context.Cache.set_cache_layout ctxt cache_layout >>= fun ctxt -> - Lwt.return (Context.Cache.clear ctxt) - let init ctxt block_header = let level = block_header.Block_header.level in let timestamp = block_header.timestamp in @@ -779,7 +773,6 @@ let init ctxt block_header = ~round:Alpha_context.Round.zero ~predecessor_round:Alpha_context.Round.zero in - init_cache ctxt >>= fun ctxt -> Alpha_context.prepare_first_block ~typecheck ~level ~timestamp ctxt >>=? fun ctxt -> let cache_nonce = diff --git a/src/proto_alpha/lib_protocol/main.mli b/src/proto_alpha/lib_protocol/main.mli index ee6fb2dd66..4d5e885952 100644 --- a/src/proto_alpha/lib_protocol/main.mli +++ b/src/proto_alpha/lib_protocol/main.mli @@ -94,8 +94,6 @@ type operation = Alpha_context.packed_operation = { protocol_data : operation_data; } -val init_cache : Context.t -> Context.t Lwt.t - (** [check_manager_signature validation_state op raw_operation] The function starts by retrieving the public key hash [pkh] of the manager operation. In case the operation is batched, the function also checks that diff --git a/src/proto_alpha/lib_protocol/raw_context.ml b/src/proto_alpha/lib_protocol/raw_context.ml index e4b318e6b5..45a0eb8310 100644 --- a/src/proto_alpha/lib_protocol/raw_context.ml +++ b/src/proto_alpha/lib_protocol/raw_context.ml @@ -910,6 +910,9 @@ let prepare_first_block ~level ~timestamp ctxt = ratio_of_frozen_deposits_slashed_per_double_endorsement = {numerator = 1; denominator = 2}; initial_seed = None; + cache_script_size = 100_000_000; + cache_stake_distribution_cycles = 8; + cache_sampler_state_cycles = 8; tx_rollup_enable = false; (* TODO: https://gitlab.com/tezos/tezos/-/issues/2152 *) tx_rollup_origination_size = 60_000; diff --git a/src/proto_alpha/lib_protocol/test/helpers/block.ml b/src/proto_alpha/lib_protocol/test/helpers/block.ml index 9fa55faa4b..c8da5456e3 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/block.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/block.ml @@ -342,7 +342,6 @@ let initial_alpha_context ?(commitments = []) constants in (({script with storage}, lazy_storage_diff), ctxt) in - Main.init_cache ctxt >>= fun ctxt -> Alpha_context.prepare_first_block ~typecheck ~level ~timestamp ctxt >|= Environment.wrap_tzresult diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml index c2360c1e3d..1ab7e06a7c 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_script_cache.ml @@ -304,7 +304,9 @@ let test_size_adds_entries_sizes () = [test_size_limit] is the value found in [Constants_repr.cache_layout]. *) -let defined_size_limit = Stdlib.List.hd Constants_repr.cache_layout +let defined_size_limit = + Tezos_protocol_alpha_parameters.Default_parameters.constants_mainnet + .cache_script_size let test_size_limit_is_in_constants_repr () = init () >>=? fun (block, _baker, _src, _) -> diff --git a/tests_python/tests_alpha/test_mockup.py b/tests_python/tests_alpha/test_mockup.py index 42499f3722..f883800bde 100644 --- a/tests_python/tests_alpha/test_mockup.py +++ b/tests_python/tests_alpha/test_mockup.py @@ -601,6 +601,8 @@ def _test_create_mockup_init_show_roundtrip( @pytest.mark.parametrize( 'initial_bootstrap_accounts', [None, json.dumps(_create_accounts_list())] ) +# The following values should be different from the default ones in +# order to check loading of the parameters. @pytest.mark.parametrize( 'protocol_constants', [ @@ -650,6 +652,9 @@ def _test_create_mockup_init_show_roundtrip( 'denominator': 2, }, "double_baking_punishment": "640000001", + "cache_script_size": 100000001, + "cache_stake_distribution_cycles": 10, + "cache_sampler_state_cycles": 10, "tx_rollup_enable": False, # TODO: https://gitlab.com/tezos/tezos/-/issues/2152 "tx_rollup_origination_size": 60_000, diff --git a/tezt/_regressions/rpc/alpha.client.others.out b/tezt/_regressions/rpc/alpha.client.others.out index 919134333d..0be9774c36 100644 --- a/tezt/_regressions/rpc/alpha.client.others.out +++ b/tezt/_regressions/rpc/alpha.client.others.out @@ -5,8 +5,7 @@ tezt/_regressions/rpc/alpha.client.others.out "max_anon_ops_per_block": 132, "max_operation_data_length": 32768, "max_proposals_per_delegate": 20, "max_micheline_node_count": 50000, "max_micheline_bytes_limit": 50000, - "max_allowed_global_constants_depth": 10000, - "cache_layout": [ "100000000", "8", "8" ], + "max_allowed_global_constants_depth": 10000, "cache_layout_size": 3, "michelson_maximum_type_size": 2001, "preserved_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "blocks_per_stake_snapshot": 4, "blocks_per_voting_period": 64, @@ -28,9 +27,10 @@ tezt/_regressions/rpc/alpha.client.others.out "max_slashing_period": 2, "frozen_deposits_percentage": 5, "double_baking_punishment": "640000000", "ratio_of_frozen_deposits_slashed_per_double_endorsement": - { "numerator": 1, "denominator": 2 }, "tx_rollup_enable": false, - "tx_rollup_origination_size": 60000, "sc_rollup_enable": false, - "sc_rollup_origination_size": 6314 } + { "numerator": 1, "denominator": 2 }, "cache_script_size": 100000000, + "cache_stake_distribution_cycles": 8, "cache_sampler_state_cycles": 8, + "tx_rollup_enable": false, "tx_rollup_origination_size": 60000, + "sc_rollup_enable": false, "sc_rollup_origination_size": 6314 } ./tezos-client rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 2, "delegate": "[PUBLIC_KEY_HASH]", diff --git a/tezt/_regressions/rpc/alpha.light.others.out b/tezt/_regressions/rpc/alpha.light.others.out index 8ec3ed2ed9..a5768c1f4f 100644 --- a/tezt/_regressions/rpc/alpha.light.others.out +++ b/tezt/_regressions/rpc/alpha.light.others.out @@ -6,8 +6,7 @@ protocol of light mode unspecified, using the node's protocol: ProtoGenesisGenes "max_anon_ops_per_block": 132, "max_operation_data_length": 32768, "max_proposals_per_delegate": 20, "max_micheline_node_count": 50000, "max_micheline_bytes_limit": 50000, - "max_allowed_global_constants_depth": 10000, - "cache_layout": [ "100000000", "8", "8" ], + "max_allowed_global_constants_depth": 10000, "cache_layout_size": 3, "michelson_maximum_type_size": 2001, "preserved_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "blocks_per_stake_snapshot": 4, "blocks_per_voting_period": 64, @@ -29,9 +28,10 @@ protocol of light mode unspecified, using the node's protocol: ProtoGenesisGenes "max_slashing_period": 2, "frozen_deposits_percentage": 5, "double_baking_punishment": "640000000", "ratio_of_frozen_deposits_slashed_per_double_endorsement": - { "numerator": 1, "denominator": 2 }, "tx_rollup_enable": false, - "tx_rollup_origination_size": 60000, "sc_rollup_enable": false, - "sc_rollup_origination_size": 6314 } + { "numerator": 1, "denominator": 2 }, "cache_script_size": 100000000, + "cache_stake_distribution_cycles": 8, "cache_sampler_state_cycles": 8, + "tx_rollup_enable": false, "tx_rollup_origination_size": 60000, + "sc_rollup_enable": false, "sc_rollup_origination_size": 6314 } ./tezos-client --mode light rpc get /chains/main/blocks/head/helpers/baking_rights protocol of light mode unspecified, using the node's protocol: ProtoGenesisGenesisGenesisGenesisGenesisGenesk612im diff --git a/tezt/_regressions/rpc/alpha.proxy.others.out b/tezt/_regressions/rpc/alpha.proxy.others.out index 28ea8f4fc8..b20fb4fdff 100644 --- a/tezt/_regressions/rpc/alpha.proxy.others.out +++ b/tezt/_regressions/rpc/alpha.proxy.others.out @@ -6,8 +6,7 @@ protocol of proxy unspecified, using the node's protocol: ProtoGenesisGenesisGen "max_anon_ops_per_block": 132, "max_operation_data_length": 32768, "max_proposals_per_delegate": 20, "max_micheline_node_count": 50000, "max_micheline_bytes_limit": 50000, - "max_allowed_global_constants_depth": 10000, - "cache_layout": [ "100000000", "8", "8" ], + "max_allowed_global_constants_depth": 10000, "cache_layout_size": 3, "michelson_maximum_type_size": 2001, "preserved_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "blocks_per_stake_snapshot": 4, "blocks_per_voting_period": 64, @@ -29,9 +28,10 @@ protocol of proxy unspecified, using the node's protocol: ProtoGenesisGenesisGen "max_slashing_period": 2, "frozen_deposits_percentage": 5, "double_baking_punishment": "640000000", "ratio_of_frozen_deposits_slashed_per_double_endorsement": - { "numerator": 1, "denominator": 2 }, "tx_rollup_enable": false, - "tx_rollup_origination_size": 60000, "sc_rollup_enable": false, - "sc_rollup_origination_size": 6314 } + { "numerator": 1, "denominator": 2 }, "cache_script_size": 100000000, + "cache_stake_distribution_cycles": 8, "cache_sampler_state_cycles": 8, + "tx_rollup_enable": false, "tx_rollup_origination_size": 60000, + "sc_rollup_enable": false, "sc_rollup_origination_size": 6314 } ./tezos-client --mode proxy rpc get /chains/main/blocks/head/helpers/baking_rights protocol of proxy unspecified, using the node's protocol: ProtoGenesisGenesisGenesisGenesisGenesisGenesk612im diff --git a/tezt/_regressions/rpc/alpha.proxy_server.others.out b/tezt/_regressions/rpc/alpha.proxy_server.others.out index f1ae83d6ba..932e01825c 100644 --- a/tezt/_regressions/rpc/alpha.proxy_server.others.out +++ b/tezt/_regressions/rpc/alpha.proxy_server.others.out @@ -5,8 +5,7 @@ tezt/_regressions/rpc/alpha.proxy_server.others.out "max_anon_ops_per_block": 132, "max_operation_data_length": 32768, "max_proposals_per_delegate": 20, "max_micheline_node_count": 50000, "max_micheline_bytes_limit": 50000, - "max_allowed_global_constants_depth": 10000, - "cache_layout": [ "100000000", "8", "8" ], + "max_allowed_global_constants_depth": 10000, "cache_layout_size": 3, "michelson_maximum_type_size": 2001, "preserved_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "blocks_per_stake_snapshot": 4, "blocks_per_voting_period": 64, @@ -28,9 +27,10 @@ tezt/_regressions/rpc/alpha.proxy_server.others.out "max_slashing_period": 2, "frozen_deposits_percentage": 5, "double_baking_punishment": "640000000", "ratio_of_frozen_deposits_slashed_per_double_endorsement": - { "numerator": 1, "denominator": 2 }, "tx_rollup_enable": false, - "tx_rollup_origination_size": 60000, "sc_rollup_enable": false, - "sc_rollup_origination_size": 6314 } + { "numerator": 1, "denominator": 2 }, "cache_script_size": 100000000, + "cache_stake_distribution_cycles": 8, "cache_sampler_state_cycles": 8, + "tx_rollup_enable": false, "tx_rollup_origination_size": 60000, + "sc_rollup_enable": false, "sc_rollup_origination_size": 6314 } ./tezos-client rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 3, "delegate": "[PUBLIC_KEY_HASH]", From aea74275c1ad854076884d3baeec15e72c814f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Wed, 5 Jan 2022 10:45:07 +0100 Subject: [PATCH 0198/1220] prevalidator: add a new generator --- src/lib_shell/test/generators_tree.ml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/lib_shell/test/generators_tree.ml b/src/lib_shell/test/generators_tree.ml index 488fb7a15e..60571d0964 100644 --- a/src/lib_shell/test/generators_tree.ml +++ b/src/lib_shell/test/generators_tree.ml @@ -320,6 +320,21 @@ let unique_nonempty_block_gen = let+ block = block_gen and+ l = unique_block_gen () in Block.Set.add block l +(** [unique_block_gen n] returns sets of {!Block.t} such that: + - all blocks are different + - the cardinal of returned sets is equal or greater than [n] *) +let unique_block_gen_gt ~(n : int) : Block.Set.t QCheck2.Gen.t = + assert (n >= 0) ; + let open QCheck2.Gen in + let list_gen = list_size (return n) in + let rec go generated = + if Block.Set.cardinal generated >= n then return generated + else + let* new_blocks = unique_block_gen ~list_gen () in + go (Block.Set.union generated new_blocks) + in + go Block.Set.empty + (** A tree generator. Written in a slightly unusual style because it generates all values beforehand, to make sure they are all different. This is a property we want for trees of blocks. To do so, From bc2f9a847fde7683c239102a8ea00ac1882c14dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Mon, 10 Jan 2022 14:44:51 +0100 Subject: [PATCH 0199/1220] prevalidator: benign renaming in generators Rename [string_gen] to [proto_gen] and only use it when generating protocol bytes of operations (previously it was used for block hashes too). This makes it clearer that this generator is protocol dependent. --- src/lib_shell/test/generators.ml | 44 +++++++++++----------- src/lib_shell/test/test_prevalidation_t.ml | 4 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/lib_shell/test/generators.ml b/src/lib_shell/test/generators.ml index 2d81ad7217..3cf76cd66d 100644 --- a/src/lib_shell/test/generators.ml +++ b/src/lib_shell/test/generators.ml @@ -29,33 +29,35 @@ let add_if_not_present classification op t = Prevalidator_classification.( if is_in_mempool op.Prevalidation.hash t = None then add classification op t) -let string_gen = QCheck2.Gen.small_string ?gen:None +(** A generator for the protocol bytes of an operation. *) +let operation_proto_gen = QCheck2.Gen.small_string ?gen:None let block_hash_gen : Block_hash.t QCheck2.Gen.t = let open QCheck2.Gen in + let string_gen = QCheck2.Gen.small_string ?gen:None in let+ key = opt (string_size (0 -- 64)) and+ path = list_size (0 -- 10) string_gen in Block_hash.hash_string ?key path (** A generator of operations. - - [string_gen] is the generator for protocol bytes. By default, it is - {!string_gen} above. This default is fine for cases where having + - [proto_gen] is the generator for protocol bytes. By default, it is + {!proto_gen} above. This default is fine for cases where having valid proto bytes doesn't matter (for example for {!Prevalidator_classification}). - [block_hash_t] is an optional generator for the branch. If omitted {!block_hash_gen} is used. *) -let operation_gen ?(string_gen = string_gen) ?block_hash_t () : +let operation_gen ?(proto_gen = operation_proto_gen) ?block_hash_t () : Operation.t QCheck2.Gen.t = let open QCheck2.Gen in let prod_block_hash_gen = Option.value ~default:block_hash_gen block_hash_t in let+ branch = prod_block_hash_gen - and+ proto = string_gen >|= Bytes.of_string in + and+ proto = proto_gen >|= Bytes.of_string in Operation.{shell = {branch}; proto} (** Like {!operation_gen} with a hash. *) -let raw_operation_with_hash_gen ?string_gen ?block_hash_t () : +let raw_operation_with_hash_gen ?proto_gen ?block_hash_t () : (Operation_hash.t * Operation.t) QCheck2.Gen.t = let open QCheck2.Gen in - let+ op = operation_gen ?string_gen ?block_hash_t () in + let+ op = operation_gen ?proto_gen ?block_hash_t () in let hash = Operation.hash op in (hash, op) @@ -75,41 +77,39 @@ let priority_gen () : Prevalidator_pending_operations.priority QCheck2.Gen.t = let+ weights = small_list (q_in_0_1 ()) in `Low weights -let operation_with_hash_gen ?string_gen ?block_hash_t () : +let operation_with_hash_gen ?proto_gen ?block_hash_t () : unit Prevalidation.operation QCheck2.Gen.t = let open QCheck2.Gen in - let+ (oph, op) = raw_operation_with_hash_gen ?string_gen ?block_hash_t () in + let+ (oph, op) = raw_operation_with_hash_gen ?proto_gen ?block_hash_t () in Prevalidation.Internal_for_tests.make_operation op oph () -let operation_with_hash_and_priority_gen ?string_gen ?block_hash_t () : +let operation_with_hash_and_priority_gen ?proto_gen ?block_hash_t () : (unit Prevalidation.operation * Prevalidator_pending_operations.priority) QCheck2.Gen.t = let open QCheck2.Gen in - let* op = operation_with_hash_gen ?string_gen ?block_hash_t () in + let* op = operation_with_hash_gen ?proto_gen ?block_hash_t () in let* priority = priority_gen () in return (op, priority) -let raw_op_map_gen ?string_gen ?block_hash_t () : +let raw_op_map_gen ?proto_gen ?block_hash_t () : Operation.t Operation_hash.Map.t QCheck2.Gen.t = let open QCheck2.Gen in let+ ops = - small_list (raw_operation_with_hash_gen ?string_gen ?block_hash_t ()) + small_list (raw_operation_with_hash_gen ?proto_gen ?block_hash_t ()) in List.to_seq ops |> Operation_hash.Map.of_seq (** A generator of maps of operations and their hashes. Parameters are: - - [string_gen] is an optional generator for the protocol bytes. + - [?proto_gen] is an optional generator for the protocol bytes. - [?block_hash_t] is an optional generator for the branch of operations. Because it returns a map, this generator guarantees that all returned operations are distinct (because their hashes differ). *) -let op_map_gen ?string_gen ?block_hash_t () : +let op_map_gen ?proto_gen ?block_hash_t () : unit Prevalidation.operation Operation_hash.Map.t QCheck2.Gen.t = let open QCheck2.Gen in - let+ ops = - small_list (operation_with_hash_gen ?string_gen ?block_hash_t ()) - in + let+ ops = small_list (operation_with_hash_gen ?proto_gen ?block_hash_t ()) in List.to_seq ops |> Seq.map (fun op -> (op.Prevalidation.hash, op)) |> Operation_hash.Map.of_seq @@ -119,7 +119,7 @@ let op_map_gen ?string_gen ?block_hash_t () : a custom function (as opposed to using a QCheck2 function for lists of fixed lengths) because we *need* to return maps, because we need the properties that all operations hashes are different. *) -let raw_op_map_gen_n ?string_gen ?block_hash_t (n : int) : +let raw_op_map_gen_n ?proto_gen ?block_hash_t (n : int) : Operation.t Operation_hash.Map.t QCheck2.Gen.t = let open QCheck2.Gen in let map_take_n n m = @@ -133,7 +133,7 @@ let raw_op_map_gen_n ?string_gen ?block_hash_t (n : int) : return (map_take_n n ops) else (* Not enough operations yet, generate more *) - let* new_ops = raw_op_map_gen ?string_gen ?block_hash_t () in + let* new_ops = raw_op_map_gen ?proto_gen ?block_hash_t () in go (Operation_hash.Map.union merge ops new_ops) in go Operation_hash.Map.empty @@ -143,7 +143,7 @@ let raw_op_map_gen_n ?string_gen ?block_hash_t (n : int) : a custom function (as opposed to using a QCheck2 function for lists of fixed lengths) because we *need* to return maps, because we need the properties that all operations hashes are different. *) -let op_map_gen_n ?string_gen ?block_hash_t (n : int) : +let op_map_gen_n ?proto_gen ?block_hash_t (n : int) : unit Prevalidation.operation Operation_hash.Map.t QCheck2.Gen.t = let open QCheck2.Gen in let map_take_n n m = @@ -157,7 +157,7 @@ let op_map_gen_n ?string_gen ?block_hash_t (n : int) : return (map_take_n n ops) else (* Not enough operations yet, generate more *) - let* new_ops = op_map_gen ?string_gen ?block_hash_t () in + let* new_ops = op_map_gen ?proto_gen ?block_hash_t () in go (Operation_hash.Map.union merge ops new_ops) in go Operation_hash.Map.empty diff --git a/src/lib_shell/test/test_prevalidation_t.ml b/src/lib_shell/test/test_prevalidation_t.ml index b111b54891..0b529e05db 100644 --- a/src/lib_shell/test/test_prevalidation_t.ml +++ b/src/lib_shell/test/test_prevalidation_t.ml @@ -142,9 +142,9 @@ let prevalidation_operations_gen (type a) (* We need to specify the protocol bytes generator to always generate the empty string, otherwise the call to [P.parse] will fail with the bytes being too long (hereby looking like an attack). *) - let string_gen : string QCheck2.Gen.t = QCheck2.Gen.return "" in + let proto_gen : string QCheck2.Gen.t = QCheck2.Gen.return "" in let+ (ops : Operation.t Operation_hash.Map.t) = - Generators.raw_op_map_gen_n ~string_gen ?block_hash_t:None n + Generators.raw_op_map_gen_n ~proto_gen ?block_hash_t:None n in List.map mk_operation (Operation_hash.Map.bindings ops) From 1d8b34592c84609c9b56fde92b8df26d515f36fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Fri, 14 Jan 2022 09:36:54 +0100 Subject: [PATCH 0200/1220] prevalidator: generators: add documentation --- src/lib_shell/test/generators.ml | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/lib_shell/test/generators.ml b/src/lib_shell/test/generators.ml index 3cf76cd66d..db6532b35b 100644 --- a/src/lib_shell/test/generators.ml +++ b/src/lib_shell/test/generators.ml @@ -44,7 +44,11 @@ let block_hash_gen : Block_hash.t QCheck2.Gen.t = {!proto_gen} above. This default is fine for cases where having valid proto bytes doesn't matter (for example for {!Prevalidator_classification}). - [block_hash_t] is an optional generator for the branch. - If omitted {!block_hash_gen} is used. *) + If omitted {!block_hash_gen} is used. + + This function should be renamed to [raw_operation_gen] at some point, + because it returns {!Operation.t} (the [op] prefix is for functions + returning {!Prevalidation.operation} values). *) let operation_gen ?(proto_gen = operation_proto_gen) ?block_hash_t () : Operation.t QCheck2.Gen.t = let open QCheck2.Gen in @@ -77,6 +81,24 @@ let priority_gen () : Prevalidator_pending_operations.priority QCheck2.Gen.t = let+ weights = small_list (q_in_0_1 ()) in `Low weights +(** [operation_with_hash_gen ?proto_gen ?block_hash_t ()] is a generator + for parsable operations, i.e. values of type {!Prevalidation.operation}. + + In production, this type guarantees that the underlying operation + has been successfully parsed. This is NOT the case with this generator. + This is a weakness of this function that can only be solved by + clearly making the difference between proto-dependent tests and + proto-independent tests. + + By default, [?proto_gen] is [operation_proto_gen] which + generates random bytes, making generated operations unparsable generally + speaking. One can make sure that this generator generates + parsable operations by assuming a protocol and using a custom [proto_gen]. + As an example this is the case when using + {!Environment_protocol_T_test.Internal_for_tests.Mock_all_unit} as the + protocol and specifying [proto_gen] to be [string_size (return 0)] i.e. + to have both [operation_data = unit] and strings generated for + [operation_data] always empty. *) let operation_with_hash_gen ?proto_gen ?block_hash_t () : unit Prevalidation.operation QCheck2.Gen.t = let open QCheck2.Gen in From d03a0b4c6ec639dc09d1a3cf058705d1fd51629d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Mon, 10 Jan 2022 15:01:05 +0100 Subject: [PATCH 0201/1220] prevalidator: make operation proto bytes generator tunable in more places --- src/lib_shell/test/generators_tree.ml | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/lib_shell/test/generators_tree.ml b/src/lib_shell/test/generators_tree.ml index 60571d0964..b6e761719e 100644 --- a/src/lib_shell/test/generators_tree.ml +++ b/src/lib_shell/test/generators_tree.ml @@ -289,8 +289,9 @@ end module External_generators = Generators -(** [QCheck2] generators used in tests below *) -let block_gen : Block.t QCheck2.Gen.t = +(** [block_gen ?proto_gen ()] generates a block. [proto_gen] is used + to generate protocol bytes of operations. *) +let block_gen ?proto_gen () : Block.t QCheck2.Gen.t = let open QCheck2.Gen in let* ops = let ops_list_gen = @@ -298,7 +299,7 @@ let block_gen : Block.t QCheck2.Gen.t = In addition it slows everything down. *) list_size (int_range 0 10) - (External_generators.operation_with_hash_gen ()) + (External_generators.operation_with_hash_gen ?proto_gen ()) in (* In production these lists are exactly of size 4, being more general *) ops_list_gen |> list_size (int_range 0 8) @@ -308,29 +309,32 @@ let block_gen : Block.t QCheck2.Gen.t = (* A generator of sets of {!Block.t} where all elements are guaranteed to be different. [list_gen] is an optional list generator. If omitted - it is defaulted to {!QCheck2.Gen.small_list}. *) -let unique_block_gen ?(list_gen = QCheck2.Gen.small_list) () : + it is defaulted to {!QCheck2.Gen.small_list}. [?proto_gen] is an + optional generator for protocol bytes of operations. *) +let unique_block_gen ?(list_gen = QCheck2.Gen.small_list) ?proto_gen () : Block.Set.t QCheck2.Gen.t = - QCheck2.Gen.(list_gen block_gen >|= Block.Set.of_list) + QCheck2.Gen.(list_gen (block_gen ?proto_gen ()) >|= Block.Set.of_list) (* A generator of sets of {!Block.t} where all elements are guaranteed to be different and returned sets are guaranteed to be non empty. *) let unique_nonempty_block_gen = let open QCheck2.Gen in - let+ block = block_gen and+ l = unique_block_gen () in + let+ block = block_gen () and+ l = unique_block_gen () in Block.Set.add block l (** [unique_block_gen n] returns sets of {!Block.t} such that: - all blocks are different - - the cardinal of returned sets is equal or greater than [n] *) -let unique_block_gen_gt ~(n : int) : Block.Set.t QCheck2.Gen.t = + - the cardinal of returned sets is equal or greater than [n]. + + [?proto_gen] is an optional generator for protocol bytes of operations. *) +let unique_block_gen_gt ?proto_gen ~(n : int) () : Block.Set.t QCheck2.Gen.t = assert (n >= 0) ; let open QCheck2.Gen in let list_gen = list_size (return n) in let rec go generated = if Block.Set.cardinal generated >= n then return generated else - let* new_blocks = unique_block_gen ~list_gen () in + let* new_blocks = unique_block_gen ?proto_gen ~list_gen () in go (Block.Set.union generated new_blocks) in go Block.Set.empty From d9ad281657a64dbe84acc9cb53ddfe0ff7eae29e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Hurlin?= Date: Mon, 10 Jan 2022 14:46:38 +0100 Subject: [PATCH 0202/1220] prevalidator: add a generators for operation protocol bytes, when proto is mocked --- src/lib_shell/test/generators.ml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib_shell/test/generators.ml b/src/lib_shell/test/generators.ml index db6532b35b..6e98aed04e 100644 --- a/src/lib_shell/test/generators.ml +++ b/src/lib_shell/test/generators.ml @@ -32,6 +32,14 @@ let add_if_not_present classification op t = (** A generator for the protocol bytes of an operation. *) let operation_proto_gen = QCheck2.Gen.small_string ?gen:None +(** A generator for the protocol bytes of an operation, when the protocol + being used has [type operation_data = unit]. *) +let operation_mock_proto_gen = + let open QCheck2.Gen in + (* 9/10 generates the right size (empty), 1/10 generates too long. *) + let* len_gen = frequencya [|(9, return 0); (1, 0 -- 31)|] in + string_size ?gen:None len_gen + let block_hash_gen : Block_hash.t QCheck2.Gen.t = let open QCheck2.Gen in let string_gen = QCheck2.Gen.small_string ?gen:None in From bad5666029f26014947b8b45ad6c32e7e040d496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Wed, 12 Jan 2022 23:08:32 +0100 Subject: [PATCH 0203/1220] Client: add a --force option to tezos-client transfer This option makes the client inject the transfer operation even if the simulation fails. --- src/lib_clic/clic.ml | 62 +++++++++++++++++++ src/lib_clic/clic.mli | 41 ++++++++++++ .../lib_client/client_proto_context.ml | 12 ++-- .../lib_client/client_proto_context.mli | 1 + src/proto_alpha/lib_client/injection.ml | 18 ++++-- src/proto_alpha/lib_client/injection.mli | 6 +- .../lib_client/managed_contract.ml | 10 +-- .../lib_client/managed_contract.mli | 1 + .../client_proto_context_commands.ml | 19 +++++- 9 files changed, 153 insertions(+), 17 deletions(-) diff --git a/src/lib_clic/clic.ml b/src/lib_clic/clic.ml index 3513194c7f..693b6bdc15 100644 --- a/src/lib_clic/clic.ml +++ b/src/lib_clic/clic.ml @@ -1366,6 +1366,68 @@ let args17 spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 spec10 spec11 spec17 )); } +let args18 spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 spec10 spec11 + spec12 spec13 spec14 spec15 spec16 spec17 spec18 = + Argument + { + spec = + spec1 + >> (spec2 + >> (spec3 + >> (spec4 + >> (spec5 + >> (spec6 + >> (spec7 + >> (spec8 + >> (spec9 + >> (spec10 + >> (spec11 + >> (spec12 + >> (spec13 + >> (spec14 + >> (spec15 + >> (spec16 + >> (spec17 + >> (spec18 >> NoArgs)))) + ))))))))))))); + converter = + (fun ( arg1, + ( arg2, + ( arg3, + ( arg4, + ( arg5, + ( spec6, + ( spec7, + ( spec8, + ( spec9, + ( spec10, + ( spec11, + ( spec12, + ( spec13, + ( spec14, + ( spec15, + (spec16, (spec17, (spec18, ()))) ) ) + ) ) ) ) ) ) ) ) ) ) ) ) ) -> + ( arg1, + arg2, + arg3, + arg4, + arg5, + spec6, + spec7, + spec8, + spec9, + spec10, + spec11, + spec12, + spec13, + spec14, + spec15, + spec16, + spec17, + spec18 )); + } + (* Some combinators for writing commands concisely. *) let param ~name ~desc kind next = Param (name, desc, kind, next) diff --git a/src/lib_clic/clic.mli b/src/lib_clic/clic.mli index 677f1795b5..c15840d82b 100644 --- a/src/lib_clic/clic.mli +++ b/src/lib_clic/clic.mli @@ -359,6 +359,47 @@ val args17 : 'ctx ) options +(** Include 18 optional parameters *) +val args18 : + ('a, 'ctx) arg -> + ('b, 'ctx) arg -> + ('c, 'ctx) arg -> + ('d, 'ctx) arg -> + ('e, 'ctx) arg -> + ('f, 'ctx) arg -> + ('g, 'ctx) arg -> + ('h, 'ctx) arg -> + ('i, 'ctx) arg -> + ('j, 'ctx) arg -> + ('k, 'ctx) arg -> + ('l, 'ctx) arg -> + ('m, 'ctx) arg -> + ('n, 'ctx) arg -> + ('o, 'ctx) arg -> + ('p, 'ctx) arg -> + ('q, 'ctx) arg -> + ('r, 'ctx) arg -> + ( 'a + * 'b + * 'c + * 'd + * 'e + * 'f + * 'g + * 'h + * 'i + * 'j + * 'k + * 'l + * 'm + * 'n + * 'o + * 'p + * 'q + * 'r, + 'ctx ) + options + (** {2 Parameter based command lines} *) (** Type of parameters for a command *) diff --git a/src/proto_alpha/lib_client/client_proto_context.ml b/src/proto_alpha/lib_client/client_proto_context.ml index ae75c1f8e3..5b65d975b9 100644 --- a/src/proto_alpha/lib_client/client_proto_context.ml +++ b/src/proto_alpha/lib_client/client_proto_context.ml @@ -105,9 +105,9 @@ let build_transaction_operation ~amount ~parameters operation let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run - ?verbose_signing ?simulation ?branch ~source ~src_pk ~src_sk ~destination - ?(entrypoint = Entrypoint.default) ?arg ~amount ?fee ?gas_limit - ?storage_limit ?counter ~fee_parameter ?replace_by_fees () = + ?verbose_signing ?simulation ?(force = false) ?branch ~source ~src_pk + ~src_sk ~destination ?(entrypoint = Entrypoint.default) ?arg ~amount ?fee + ?gas_limit ?storage_limit ?counter ~fee_parameter ?replace_by_fees () = parse_arg_transfer arg >>=? fun parameters -> let contents = build_transaction_operation @@ -128,6 +128,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ~force ?branch ~source ~fee:(Limit.of_option fee) @@ -140,7 +141,8 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ~fee_parameter contents >>=? fun (oph, op, result) -> - Lwt.return (Injection.originated_contracts result) >>=? fun contracts -> + Lwt.return (Injection.originated_contracts ~force result) + >>=? fun contracts -> match Apply_results.pack_contents_list op result with | Apply_results.Single_and_result ((Manager_operation _ as op), result) -> return ((oph, op, result), contracts) @@ -376,7 +378,7 @@ let originate_contract (cctxt : #full) ~chain ~block ?confirmations ?dry_run | Apply_results.Single_and_result ((Manager_operation _ as op), result) -> return (oph, op, result)) >>=? fun res -> - Lwt.return (Injection.originated_contracts result) >>=? function + Lwt.return (Injection.originated_contracts ~force:false result) >>=? function | [contract] -> return (res, contract) | contracts -> failwith diff --git a/src/proto_alpha/lib_client/client_proto_context.mli b/src/proto_alpha/lib_client/client_proto_context.mli index 6fdbc4e621..f3fef84057 100644 --- a/src/proto_alpha/lib_client/client_proto_context.mli +++ b/src/proto_alpha/lib_client/client_proto_context.mli @@ -208,6 +208,7 @@ val transfer : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> ?branch:int -> source:public_key_hash -> src_pk:public_key -> diff --git a/src/proto_alpha/lib_client/injection.ml b/src/proto_alpha/lib_client/injection.ml index 1aa906a326..942ef9d0e6 100644 --- a/src/proto_alpha/lib_client/injection.ml +++ b/src/proto_alpha/lib_client/injection.ml @@ -432,6 +432,11 @@ let rec originated_contracts : type kind. kind contents_result_list -> _ = originated_contracts rest >>? fun contracts2 -> Ok (List.rev_append contracts1 contracts2) +(* When --force is used, we don't want [originated_contracts] to fail as + it would stop the client before the injection of the operation. *) +let originated_contracts ~force results = + match originated_contracts results with Error _ when force -> Ok [] | e -> e + let detect_script_failure : type kind. kind operation_metadata -> _ = let rec detect_script_failure : type kind. kind contents_result_list -> _ = let detect_script_failure_single (type kind) @@ -833,8 +838,8 @@ let tenderbake_adjust_confirmations (cctxt : #Client_context.full) = function were tenderbake_finality_confirmations. *) let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations - ?(dry_run = false) ?(simulation = false) ?branch ?src_sk ?verbose_signing - ~fee_parameter (contents : kind contents_list) = + ?(dry_run = false) ?(simulation = false) ?(force = false) ?branch ?src_sk + ?verbose_signing ~fee_parameter (contents : kind contents_list) = (if simulation then simulate cctxt ~chain ~block ?branch contents else preapply @@ -854,7 +859,7 @@ let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations "@[This simulation failed:@,%a@]" Operation_result.pp_operation_result (op.protocol_data.contents, result.contents) - >>= fun () -> Lwt.return res) + >>= fun () -> if force then return_unit else Lwt.return res) >>=? fun () -> let bytes = Data_encoding.Binary.to_bytes_exn Operation.encoding (Operation.pack op) @@ -926,7 +931,8 @@ let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations Operation_result.pp_operation_result (op.protocol_data.contents, result.contents) >>= fun () -> - Lwt.return (originated_contracts result.contents) >>=? fun contracts -> + Lwt.return (originated_contracts result.contents ~force) + >>=? fun contracts -> List.iter_s (fun c -> cctxt#message "New contract %a originated." Contract.pp c) contracts @@ -1165,7 +1171,7 @@ let may_replace_operation (type kind) (cctxt : #full) chain from Lwt.return_ok contents let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run - ?verbose_signing ?simulation ~source ~src_pk ~src_sk ~fee ~gas_limit + ?verbose_signing ?simulation ?force ~source ~src_pk ~src_sk ~fee ~gas_limit ~storage_limit ?counter ?(replace_by_fees = false) ~fee_parameter (type kind) (operations : kind Annotated_manager_operation.annotated_list) : (Operation_hash.t @@ -1244,6 +1250,7 @@ let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run ?confirmations ?dry_run ?simulation + ?force ~fee_parameter ?verbose_signing ?branch @@ -1275,6 +1282,7 @@ let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ?force ~fee_parameter ?branch ~src_sk diff --git a/src/proto_alpha/lib_client/injection.mli b/src/proto_alpha/lib_client/injection.mli index 1fba94f4a0..21b1301e09 100644 --- a/src/proto_alpha/lib_client/injection.mli +++ b/src/proto_alpha/lib_client/injection.mli @@ -90,6 +90,7 @@ val inject_manager_operation : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> source:Signature.Public_key_hash.t -> src_pk:Signature.public_key -> src_sk:Client_keys.sk_uri -> @@ -102,5 +103,8 @@ val inject_manager_operation : 'kind Annotated_manager_operation.annotated_list -> 'kind Kind.manager result_list tzresult Lwt.t +(** Collects the addresses of all contracts originated by a batch of operations + by looking at the operation results. Fails if an operation in the batch is + failed unless [force] is given. *) val originated_contracts : - 'kind contents_result_list -> Contract.t list tzresult + force:bool -> 'kind contents_result_list -> Contract.t list tzresult diff --git a/src/proto_alpha/lib_client/managed_contract.ml b/src/proto_alpha/lib_client/managed_contract.ml index 676a7d95b0..3fb1045608 100644 --- a/src/proto_alpha/lib_client/managed_contract.ml +++ b/src/proto_alpha/lib_client/managed_contract.ml @@ -285,9 +285,9 @@ let build_transaction_operation (cctxt : #full) ~chain ~block ~contract contract) let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run - ?verbose_signing ?simulation ?branch ~source ~src_pk ~src_sk ~contract - ~destination ?(entrypoint = Entrypoint.default) ?arg ~amount ?fee ?gas_limit - ?storage_limit ?counter ~fee_parameter () : + ?verbose_signing ?simulation ?(force = false) ?branch ~source ~src_pk + ~src_sk ~contract ~destination ?(entrypoint = Entrypoint.default) ?arg + ~amount ?fee ?gas_limit ?storage_limit ?counter ~fee_parameter () : (Kind.transaction Kind.manager Injection.result * Contract.t list) tzresult Lwt.t = build_transaction_operation @@ -313,6 +313,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ~force ?branch ~source ~fee:(Limit.of_option fee) @@ -324,6 +325,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ~fee_parameter operation >>=? fun (oph, op, result) -> - Lwt.return (Injection.originated_contracts result) >>=? fun contracts -> + Lwt.return (Injection.originated_contracts ~force result) + >>=? fun contracts -> return_single_manager_result (oph, op, result) >>=? fun res -> return (res, contracts) diff --git a/src/proto_alpha/lib_client/managed_contract.mli b/src/proto_alpha/lib_client/managed_contract.mli index e272420913..cc40c9caa8 100644 --- a/src/proto_alpha/lib_client/managed_contract.mli +++ b/src/proto_alpha/lib_client/managed_contract.mli @@ -93,6 +93,7 @@ val transfer : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> ?branch:int -> source:public_key_hash -> src_pk:public_key -> diff --git a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml index 591df1d6ea..9712bf3da6 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml @@ -640,11 +640,18 @@ let simulate_switch = "Simulate the execution of the command, without needing any signatures." () +let force_switch = + Clic.switch + ~long:"force" + ~doc:"Inject the operation even if the simulation results in a failure." + () + let transfer_command amount source destination cctxt ( fee, dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -681,6 +688,7 @@ let transfer_command amount source destination cctxt ~dry_run ~verbose_signing ~simulation + ~force ~fee_parameter ?fee ~contract @@ -704,6 +712,7 @@ let transfer_command amount source destination cctxt ?confirmations:cctxt#confirmations ~dry_run ~simulation + ~force ~verbose_signing ~fee_parameter ~source @@ -1277,11 +1286,12 @@ let commands_rw () = command ~group ~desc:"Transfer tokens / call a smart contract." - (args17 + (args18 fee_arg dry_run_switch verbose_signing_switch simulate_switch + force_switch gas_limit_arg storage_limit_arg counter_arg @@ -1310,6 +1320,7 @@ let commands_rw () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1336,6 +1347,7 @@ let commands_rw () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1433,11 +1445,12 @@ let commands_rw () = command ~group ~desc:"Call a smart contract (same as 'transfer 0')." - (args17 + (args18 fee_arg dry_run_switch verbose_signing_switch simulate_switch + force_switch gas_limit_arg storage_limit_arg counter_arg @@ -1464,6 +1477,7 @@ let commands_rw () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1490,6 +1504,7 @@ let commands_rw () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, From f165734e1151ca42921d5362d5b62ebc61e571cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Thu, 13 Jan 2022 16:03:43 +0100 Subject: [PATCH 0204/1220] Client/Hangzhou+Ithaca: backport the --force option --- .../lib_client/client_proto_context.ml | 12 +++++++----- .../lib_client/client_proto_context.mli | 1 + .../lib_client/injection.ml | 18 +++++++++++++----- .../lib_client/injection.mli | 6 +++++- .../lib_client/managed_contract.ml | 10 ++++++---- .../lib_client/managed_contract.mli | 1 + .../client_proto_context_commands.ml | 19 +++++++++++++++++-- .../lib_client/client_proto_context.ml | 12 +++++++----- .../lib_client/client_proto_context.mli | 1 + .../lib_client/injection.ml | 18 +++++++++++++----- .../lib_client/injection.mli | 6 +++++- .../lib_client/managed_contract.ml | 10 ++++++---- .../lib_client/managed_contract.mli | 1 + .../client_proto_context_commands.ml | 19 +++++++++++++++++-- 14 files changed, 100 insertions(+), 34 deletions(-) diff --git a/src/proto_011_PtHangz2/lib_client/client_proto_context.ml b/src/proto_011_PtHangz2/lib_client/client_proto_context.ml index 459fcc41da..e53f8948ec 100644 --- a/src/proto_011_PtHangz2/lib_client/client_proto_context.ml +++ b/src/proto_011_PtHangz2/lib_client/client_proto_context.ml @@ -101,9 +101,9 @@ let build_transaction_operation ~amount ~parameters ?(entrypoint = "default") operation let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run - ?verbose_signing ?simulation ?branch ~source ~src_pk ~src_sk ~destination - ?(entrypoint = "default") ?arg ~amount ?fee ?gas_limit ?storage_limit - ?counter ~fee_parameter () = + ?verbose_signing ?simulation ?(force = false) ?branch ~source ~src_pk + ~src_sk ~destination ?(entrypoint = "default") ?arg ~amount ?fee ?gas_limit + ?storage_limit ?counter ~fee_parameter () = parse_arg_transfer arg >>=? fun parameters -> let contents = build_transaction_operation @@ -124,6 +124,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ~force ?branch ~source ~fee:(Limit.of_option fee) @@ -135,7 +136,8 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ~fee_parameter contents >>=? fun (oph, op, result) -> - Lwt.return (Injection.originated_contracts result) >>=? fun contracts -> + Lwt.return (Injection.originated_contracts ~force result) + >>=? fun contracts -> match Apply_results.pack_contents_list op result with | Apply_results.Single_and_result ((Manager_operation _ as op), result) -> return ((oph, op, result), contracts) @@ -338,7 +340,7 @@ let originate_contract (cctxt : #full) ~chain ~block ?confirmations ?dry_run | Apply_results.Single_and_result ((Manager_operation _ as op), result) -> return (oph, op, result)) >>=? fun res -> - Lwt.return (Injection.originated_contracts result) >>=? function + Lwt.return (Injection.originated_contracts ~force:false result) >>=? function | [contract] -> return (res, contract) | contracts -> failwith diff --git a/src/proto_011_PtHangz2/lib_client/client_proto_context.mli b/src/proto_011_PtHangz2/lib_client/client_proto_context.mli index c5dc30b57e..ba5306132e 100644 --- a/src/proto_011_PtHangz2/lib_client/client_proto_context.mli +++ b/src/proto_011_PtHangz2/lib_client/client_proto_context.mli @@ -185,6 +185,7 @@ val transfer : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> ?branch:int -> source:public_key_hash -> src_pk:public_key -> diff --git a/src/proto_011_PtHangz2/lib_client/injection.ml b/src/proto_011_PtHangz2/lib_client/injection.ml index 9d68cdd144..d9712d7867 100644 --- a/src/proto_011_PtHangz2/lib_client/injection.ml +++ b/src/proto_011_PtHangz2/lib_client/injection.ml @@ -407,6 +407,11 @@ let rec originated_contracts : type kind. kind contents_result_list -> _ = originated_contracts rest >>? fun contracts2 -> Ok (List.rev_append contracts1 contracts2) +(* When --force is used, we don't want [originated_contracts] to fail as + it would stop the client before the injection of the operation. *) +let originated_contracts ~force results = + match originated_contracts results with Error _ when force -> Ok [] | e -> e + let detect_script_failure : type kind. kind operation_metadata -> _ = let rec detect_script_failure : type kind. kind contents_result_list -> _ = let detect_script_failure_single (type kind) @@ -780,8 +785,8 @@ let may_patch_limits (type kind) (cctxt : #Protocol_client_context.full) annotated_contents) let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations - ?(dry_run = false) ?(simulation = false) ?branch ?src_sk ?verbose_signing - ~fee_parameter (contents : kind contents_list) = + ?(dry_run = false) ?(simulation = false) ?(force = false) ?branch ?src_sk + ?verbose_signing ~fee_parameter (contents : kind contents_list) = (if simulation then simulate cctxt ~chain ~block ?branch contents else preapply @@ -801,7 +806,7 @@ let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations "@[This simulation failed:@,%a@]" Operation_result.pp_operation_result (op.protocol_data.contents, result.contents) - >>= fun () -> Lwt.return res) + >>= fun () -> if force then return_unit else Lwt.return res) >>=? fun () -> let bytes = Data_encoding.Binary.to_bytes_exn Operation.encoding (Operation.pack op) @@ -871,7 +876,8 @@ let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations Operation_result.pp_operation_result (op.protocol_data.contents, result.contents) >>= fun () -> - Lwt.return (originated_contracts result.contents) >>=? fun contracts -> + Lwt.return (originated_contracts result.contents ~force) + >>=? fun contracts -> List.iter_s (fun c -> cctxt#message "New contract %a originated." Contract.pp c) contracts @@ -937,7 +943,7 @@ let reveal_error (cctxt : #Protocol_client_context.full) = cctxt#error "%s" reveal_error_message let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run - ?verbose_signing ?simulation ~source ~src_pk ~src_sk ~fee ~gas_limit + ?verbose_signing ?simulation ?force ~source ~src_pk ~src_sk ~fee ~gas_limit ~storage_limit ?counter ~fee_parameter (type kind) (operations : kind Annotated_manager_operation.annotated_list) : (Operation_hash.t @@ -1010,6 +1016,7 @@ let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run ?confirmations ?dry_run ?simulation + ?force ~fee_parameter ?verbose_signing ?branch @@ -1035,6 +1042,7 @@ let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ?force ~fee_parameter ?branch ~src_sk diff --git a/src/proto_011_PtHangz2/lib_client/injection.mli b/src/proto_011_PtHangz2/lib_client/injection.mli index d8f99d6205..50da92f06c 100644 --- a/src/proto_011_PtHangz2/lib_client/injection.mli +++ b/src/proto_011_PtHangz2/lib_client/injection.mli @@ -90,6 +90,7 @@ val inject_manager_operation : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> source:Signature.Public_key_hash.t -> src_pk:Signature.public_key -> src_sk:Client_keys.sk_uri -> @@ -101,5 +102,8 @@ val inject_manager_operation : 'kind Annotated_manager_operation.annotated_list -> 'kind Kind.manager result_list tzresult Lwt.t +(** Collects the addresses of all contracts originated by a batch of operations + by looking at the operation results. Fails if an operation in the batch is + failed unless [force] is given. *) val originated_contracts : - 'kind contents_result_list -> Contract.t list tzresult + force:bool -> 'kind contents_result_list -> Contract.t list tzresult diff --git a/src/proto_011_PtHangz2/lib_client/managed_contract.ml b/src/proto_011_PtHangz2/lib_client/managed_contract.ml index 29bb3d976b..cbc1db16a4 100644 --- a/src/proto_011_PtHangz2/lib_client/managed_contract.ml +++ b/src/proto_011_PtHangz2/lib_client/managed_contract.ml @@ -277,9 +277,9 @@ let build_transaction_operation (cctxt : #full) ~chain ~block ~contract contract) let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run - ?verbose_signing ?simulation ?branch ~source ~src_pk ~src_sk ~contract - ~destination ?(entrypoint = "default") ?arg ~amount ?fee ?gas_limit - ?storage_limit ?counter ~fee_parameter () : + ?verbose_signing ?simulation ?(force = false) ?branch ~source ~src_pk + ~src_sk ~contract ~destination ?(entrypoint = "default") ?arg ~amount ?fee + ?gas_limit ?storage_limit ?counter ~fee_parameter () : (Kind.transaction Kind.manager Injection.result * Contract.t list) tzresult Lwt.t = build_transaction_operation @@ -305,6 +305,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ~force ?branch ~source ~fee:(Limit.of_option fee) @@ -316,6 +317,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ~fee_parameter operation >>=? fun (oph, op, result) -> - Lwt.return (Injection.originated_contracts result) >>=? fun contracts -> + Lwt.return (Injection.originated_contracts ~force result) + >>=? fun contracts -> return_single_manager_result (oph, op, result) >>=? fun res -> return (res, contracts) diff --git a/src/proto_011_PtHangz2/lib_client/managed_contract.mli b/src/proto_011_PtHangz2/lib_client/managed_contract.mli index ae532c9869..bb467b5482 100644 --- a/src/proto_011_PtHangz2/lib_client/managed_contract.mli +++ b/src/proto_011_PtHangz2/lib_client/managed_contract.mli @@ -93,6 +93,7 @@ val transfer : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> ?branch:int -> source:public_key_hash -> src_pk:public_key -> diff --git a/src/proto_011_PtHangz2/lib_client_commands/client_proto_context_commands.ml b/src/proto_011_PtHangz2/lib_client_commands/client_proto_context_commands.ml index bad29a4fde..184ee03b50 100644 --- a/src/proto_011_PtHangz2/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_011_PtHangz2/lib_client_commands/client_proto_context_commands.ml @@ -56,6 +56,12 @@ let simulate_switch = "Simulate the execution of the command, without needing any signatures." () +let force_switch = + Clic.switch + ~long:"force" + ~doc:"Inject the operation even if the simulation results in a failure." + () + let report_michelson_errors ?(no_print_source = false) ~msg (cctxt : #Client_context.printer) = function | Error errs -> @@ -109,6 +115,7 @@ let transfer_command amount source destination cctxt dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -144,6 +151,7 @@ let transfer_command amount source destination cctxt ~dry_run ~verbose_signing ~simulation + ~force ~fee_parameter ?fee ~contract @@ -167,6 +175,7 @@ let transfer_command amount source destination cctxt ?confirmations:cctxt#confirmations ~dry_run ~simulation + ~force ~verbose_signing ~fee_parameter ~source @@ -948,11 +957,12 @@ let commands network () = command ~group ~desc:"Transfer tokens / call a smart contract." - (args16 + (args17 fee_arg dry_run_switch verbose_signing_switch simulate_switch + force_switch gas_limit_arg storage_limit_arg counter_arg @@ -980,6 +990,7 @@ let commands network () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1005,6 +1016,7 @@ let commands network () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1101,11 +1113,12 @@ let commands network () = command ~group ~desc:"Call a smart contract (same as 'transfer 0')." - (args16 + (args17 fee_arg dry_run_switch verbose_signing_switch simulate_switch + force_switch gas_limit_arg storage_limit_arg counter_arg @@ -1131,6 +1144,7 @@ let commands network () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1156,6 +1170,7 @@ let commands network () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, diff --git a/src/proto_012_PsiThaCa/lib_client/client_proto_context.ml b/src/proto_012_PsiThaCa/lib_client/client_proto_context.ml index d55e8eb9f3..718ca408e4 100644 --- a/src/proto_012_PsiThaCa/lib_client/client_proto_context.ml +++ b/src/proto_012_PsiThaCa/lib_client/client_proto_context.ml @@ -104,9 +104,9 @@ let build_transaction_operation ~amount ~parameters ?(entrypoint = "default") operation let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run - ?verbose_signing ?simulation ?branch ~source ~src_pk ~src_sk ~destination - ?(entrypoint = "default") ?arg ~amount ?fee ?gas_limit ?storage_limit - ?counter ~fee_parameter () = + ?verbose_signing ?simulation ?(force = false) ?branch ~source ~src_pk + ~src_sk ~destination ?(entrypoint = "default") ?arg ~amount ?fee ?gas_limit + ?storage_limit ?counter ~fee_parameter () = parse_arg_transfer arg >>=? fun parameters -> let contents = build_transaction_operation @@ -127,6 +127,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ~force ?branch ~source ~fee:(Limit.of_option fee) @@ -138,7 +139,8 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ~fee_parameter contents >>=? fun (oph, op, result) -> - Lwt.return (Injection.originated_contracts result) >>=? fun contracts -> + Lwt.return (Injection.originated_contracts ~force result) + >>=? fun contracts -> match Apply_results.pack_contents_list op result with | Apply_results.Single_and_result ((Manager_operation _ as op), result) -> return ((oph, op, result), contracts) @@ -374,7 +376,7 @@ let originate_contract (cctxt : #full) ~chain ~block ?confirmations ?dry_run | Apply_results.Single_and_result ((Manager_operation _ as op), result) -> return (oph, op, result)) >>=? fun res -> - Lwt.return (Injection.originated_contracts result) >>=? function + Lwt.return (Injection.originated_contracts ~force:false result) >>=? function | [contract] -> return (res, contract) | contracts -> failwith diff --git a/src/proto_012_PsiThaCa/lib_client/client_proto_context.mli b/src/proto_012_PsiThaCa/lib_client/client_proto_context.mli index 05d01ac753..5cf83c93f1 100644 --- a/src/proto_012_PsiThaCa/lib_client/client_proto_context.mli +++ b/src/proto_012_PsiThaCa/lib_client/client_proto_context.mli @@ -208,6 +208,7 @@ val transfer : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> ?branch:int -> source:public_key_hash -> src_pk:public_key -> diff --git a/src/proto_012_PsiThaCa/lib_client/injection.ml b/src/proto_012_PsiThaCa/lib_client/injection.ml index a60dddcb4f..862e9f7839 100644 --- a/src/proto_012_PsiThaCa/lib_client/injection.ml +++ b/src/proto_012_PsiThaCa/lib_client/injection.ml @@ -414,6 +414,11 @@ let rec originated_contracts : type kind. kind contents_result_list -> _ = originated_contracts rest >>? fun contracts2 -> Ok (List.rev_append contracts1 contracts2) +(* When --force is used, we don't want [originated_contracts] to fail as + it would stop the client before the injection of the operation. *) +let originated_contracts ~force results = + match originated_contracts results with Error _ when force -> Ok [] | e -> e + let detect_script_failure : type kind. kind operation_metadata -> _ = let rec detect_script_failure : type kind. kind contents_result_list -> _ = let detect_script_failure_single (type kind) @@ -808,8 +813,8 @@ let tenderbake_adjust_confirmations (cctxt : #Client_context.full) = function were tenderbake_finality_confirmations. *) let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations - ?(dry_run = false) ?(simulation = false) ?branch ?src_sk ?verbose_signing - ~fee_parameter (contents : kind contents_list) = + ?(dry_run = false) ?(simulation = false) ?(force = false) ?branch ?src_sk + ?verbose_signing ~fee_parameter (contents : kind contents_list) = (if simulation then simulate cctxt ~chain ~block ?branch contents else preapply @@ -829,7 +834,7 @@ let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations "@[This simulation failed:@,%a@]" Operation_result.pp_operation_result (op.protocol_data.contents, result.contents) - >>= fun () -> Lwt.return res) + >>= fun () -> if force then return_unit else Lwt.return res) >>=? fun () -> let bytes = Data_encoding.Binary.to_bytes_exn Operation.encoding (Operation.pack op) @@ -901,7 +906,8 @@ let inject_operation_internal (type kind) cctxt ~chain ~block ?confirmations Operation_result.pp_operation_result (op.protocol_data.contents, result.contents) >>= fun () -> - Lwt.return (originated_contracts result.contents) >>=? fun contracts -> + Lwt.return (originated_contracts result.contents ~force) + >>=? fun contracts -> List.iter_s (fun c -> cctxt#message "New contract %a originated." Contract.pp c) contracts @@ -967,7 +973,7 @@ let reveal_error (cctxt : #Protocol_client_context.full) = cctxt#error "%s" reveal_error_message let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run - ?verbose_signing ?simulation ~source ~src_pk ~src_sk ~fee ~gas_limit + ?verbose_signing ?simulation ?force ~source ~src_pk ~src_sk ~fee ~gas_limit ~storage_limit ?counter ~fee_parameter (type kind) (operations : kind Annotated_manager_operation.annotated_list) : (Operation_hash.t @@ -1040,6 +1046,7 @@ let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run ?confirmations ?dry_run ?simulation + ?force ~fee_parameter ?verbose_signing ?branch @@ -1065,6 +1072,7 @@ let inject_manager_operation cctxt ~chain ~block ?branch ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ?force ~fee_parameter ?branch ~src_sk diff --git a/src/proto_012_PsiThaCa/lib_client/injection.mli b/src/proto_012_PsiThaCa/lib_client/injection.mli index d8f99d6205..50da92f06c 100644 --- a/src/proto_012_PsiThaCa/lib_client/injection.mli +++ b/src/proto_012_PsiThaCa/lib_client/injection.mli @@ -90,6 +90,7 @@ val inject_manager_operation : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> source:Signature.Public_key_hash.t -> src_pk:Signature.public_key -> src_sk:Client_keys.sk_uri -> @@ -101,5 +102,8 @@ val inject_manager_operation : 'kind Annotated_manager_operation.annotated_list -> 'kind Kind.manager result_list tzresult Lwt.t +(** Collects the addresses of all contracts originated by a batch of operations + by looking at the operation results. Fails if an operation in the batch is + failed unless [force] is given. *) val originated_contracts : - 'kind contents_result_list -> Contract.t list tzresult + force:bool -> 'kind contents_result_list -> Contract.t list tzresult diff --git a/src/proto_012_PsiThaCa/lib_client/managed_contract.ml b/src/proto_012_PsiThaCa/lib_client/managed_contract.ml index 29bb3d976b..cbc1db16a4 100644 --- a/src/proto_012_PsiThaCa/lib_client/managed_contract.ml +++ b/src/proto_012_PsiThaCa/lib_client/managed_contract.ml @@ -277,9 +277,9 @@ let build_transaction_operation (cctxt : #full) ~chain ~block ~contract contract) let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run - ?verbose_signing ?simulation ?branch ~source ~src_pk ~src_sk ~contract - ~destination ?(entrypoint = "default") ?arg ~amount ?fee ?gas_limit - ?storage_limit ?counter ~fee_parameter () : + ?verbose_signing ?simulation ?(force = false) ?branch ~source ~src_pk + ~src_sk ~contract ~destination ?(entrypoint = "default") ?arg ~amount ?fee + ?gas_limit ?storage_limit ?counter ~fee_parameter () : (Kind.transaction Kind.manager Injection.result * Contract.t list) tzresult Lwt.t = build_transaction_operation @@ -305,6 +305,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ?dry_run ?verbose_signing ?simulation + ~force ?branch ~source ~fee:(Limit.of_option fee) @@ -316,6 +317,7 @@ let transfer (cctxt : #full) ~chain ~block ?confirmations ?dry_run ~fee_parameter operation >>=? fun (oph, op, result) -> - Lwt.return (Injection.originated_contracts result) >>=? fun contracts -> + Lwt.return (Injection.originated_contracts ~force result) + >>=? fun contracts -> return_single_manager_result (oph, op, result) >>=? fun res -> return (res, contracts) diff --git a/src/proto_012_PsiThaCa/lib_client/managed_contract.mli b/src/proto_012_PsiThaCa/lib_client/managed_contract.mli index ae532c9869..bb467b5482 100644 --- a/src/proto_012_PsiThaCa/lib_client/managed_contract.mli +++ b/src/proto_012_PsiThaCa/lib_client/managed_contract.mli @@ -93,6 +93,7 @@ val transfer : ?dry_run:bool -> ?verbose_signing:bool -> ?simulation:bool -> + ?force:bool -> ?branch:int -> source:public_key_hash -> src_pk:public_key -> diff --git a/src/proto_012_PsiThaCa/lib_client_commands/client_proto_context_commands.ml b/src/proto_012_PsiThaCa/lib_client_commands/client_proto_context_commands.ml index 077fadc50d..df43f2952c 100644 --- a/src/proto_012_PsiThaCa/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_012_PsiThaCa/lib_client_commands/client_proto_context_commands.ml @@ -584,11 +584,18 @@ let simulate_switch = "Simulate the execution of the command, without needing any signatures." () +let force_switch = + Clic.switch + ~long:"force" + ~doc:"Inject the operation even if the simulation results in a failure." + () + let transfer_command amount source destination cctxt ( fee, dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -624,6 +631,7 @@ let transfer_command amount source destination cctxt ~dry_run ~verbose_signing ~simulation + ~force ~fee_parameter ?fee ~contract @@ -647,6 +655,7 @@ let transfer_command amount source destination cctxt ?confirmations:cctxt#confirmations ~dry_run ~simulation + ~force ~verbose_signing ~fee_parameter ~source @@ -1216,11 +1225,12 @@ let commands_rw () = command ~group ~desc:"Transfer tokens / call a smart contract." - (args16 + (args17 fee_arg dry_run_switch verbose_signing_switch simulate_switch + force_switch gas_limit_arg storage_limit_arg counter_arg @@ -1248,6 +1258,7 @@ let commands_rw () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1273,6 +1284,7 @@ let commands_rw () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1369,11 +1381,12 @@ let commands_rw () = command ~group ~desc:"Call a smart contract (same as 'transfer 0')." - (args16 + (args17 fee_arg dry_run_switch verbose_signing_switch simulate_switch + force_switch gas_limit_arg storage_limit_arg counter_arg @@ -1399,6 +1412,7 @@ let commands_rw () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, @@ -1424,6 +1438,7 @@ let commands_rw () = dry_run, verbose_signing, simulation, + force, gas_limit, storage_limit, counter, From 01dea0d24669b90969161111545673f8071479fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Wed, 12 Jan 2022 23:09:46 +0100 Subject: [PATCH 0205/1220] Tezt: add support for the --force option of tezos-client transfer --- tezt/lib_tezos/client.ml | 9 ++++++--- tezt/lib_tezos/client.mli | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/tezt/lib_tezos/client.ml b/tezt/lib_tezos/client.ml index ad7ca13760..46f02e10e1 100644 --- a/tezt/lib_tezos/client.ml +++ b/tezt/lib_tezos/client.ml @@ -566,7 +566,8 @@ let gen_and_show_keys ?alias client = show_address ~alias client let spawn_transfer ?hooks ?endpoint ?(wait = "none") ?burn_cap ?fee ?gas_limit - ?storage_limit ?counter ?arg ~amount ~giver ~receiver client = + ?storage_limit ?counter ?arg ?(force = false) ~amount ~giver ~receiver + client = spawn_command ?endpoint ?hooks @@ -593,10 +594,11 @@ let spawn_transfer ?hooks ?endpoint ?(wait = "none") ?burn_cap ?fee ?gas_limit ~none:[] ~some:(fun s -> ["--counter"; string_of_int s]) counter - @ Option.fold ~none:[] ~some:(fun p -> ["--arg"; p]) arg) + @ Option.fold ~none:[] ~some:(fun p -> ["--arg"; p]) arg + @ if force then ["--force"] else []) let transfer ?hooks ?endpoint ?wait ?burn_cap ?fee ?gas_limit ?storage_limit - ?counter ?arg ~amount ~giver ~receiver client = + ?counter ?arg ?force ~amount ~giver ~receiver client = spawn_transfer ?endpoint ?hooks @@ -607,6 +609,7 @@ let transfer ?hooks ?endpoint ?wait ?burn_cap ?fee ?gas_limit ?storage_limit ?storage_limit ?counter ?arg + ?force ~amount ~giver ~receiver diff --git a/tezt/lib_tezos/client.mli b/tezt/lib_tezos/client.mli index a2ac462dc5..0664566483 100644 --- a/tezt/lib_tezos/client.mli +++ b/tezt/lib_tezos/client.mli @@ -422,6 +422,7 @@ val transfer : ?storage_limit:int -> ?counter:int -> ?arg:string -> + ?force:bool -> amount:Tez.t -> giver:string -> receiver:string -> @@ -439,6 +440,7 @@ val spawn_transfer : ?storage_limit:int -> ?counter:int -> ?arg:string -> + ?force:bool -> amount:Tez.t -> giver:string -> receiver:string -> From 6a2380e768512b1efe7dd18dc4ac16ece40aba4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Thu, 13 Jan 2022 15:30:56 +0100 Subject: [PATCH 0206/1220] Tests/Integration: tezt test for `tezos-client transfer --force` --- .../contracts/proto_alpha/always_fails.tz | 3 + tezt/tests/main.ml | 1 + tezt/tests/runtime_script_failure.ml | 83 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 tezt/tests/contracts/proto_alpha/always_fails.tz create mode 100644 tezt/tests/runtime_script_failure.ml diff --git a/tezt/tests/contracts/proto_alpha/always_fails.tz b/tezt/tests/contracts/proto_alpha/always_fails.tz new file mode 100644 index 0000000000..54014f8267 --- /dev/null +++ b/tezt/tests/contracts/proto_alpha/always_fails.tz @@ -0,0 +1,3 @@ +parameter string; +storage unit; +code FAILWITH diff --git a/tezt/tests/main.ml b/tezt/tests/main.ml index 792fd66ccb..f29f347d27 100644 --- a/tezt/tests/main.ml +++ b/tezt/tests/main.ml @@ -109,5 +109,6 @@ let () = Replace_by_fees.register ~protocols:[Alpha] ; Sc_rollup.register ~protocols:[Alpha] ; Views.register ~protocols:[Alpha] () ; + Runtime_script_failure.register ~protocols ; (* Test.run () should be the last statement, don't register afterwards! *) Test.run () diff --git a/tezt/tests/runtime_script_failure.ml b/tezt/tests/runtime_script_failure.ml new file mode 100644 index 0000000000..815df7e297 --- /dev/null +++ b/tezt/tests/runtime_script_failure.ml @@ -0,0 +1,83 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Nomadic Labs *) +(* *) +(* Permission is hereby granted, free of charge, to any person obtaining a *) +(* copy of this software and associated documentation files (the "Software"),*) +(* to deal in the Software without restriction, including without limitation *) +(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) +(* and/or sell copies of the Software, and to permit persons to whom the *) +(* Software is furnished to do so, subject to the following conditions: *) +(* *) +(* The above copyright notice and this permission notice shall be included *) +(* in all copies or substantial portions of the Software. *) +(* *) +(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) +(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) +(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) +(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) +(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) +(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) +(* DEALINGS IN THE SOFTWARE. *) +(* *) +(*****************************************************************************) + +(* Testing + ------- + Components: Client + Invocation: dune exec tezt/tests/main.exe -- runtime_script_failure + Subject: Test that the --force option of the transfer command can be used + to include an invalid operation in a block +*) + +let check_client_force = + Protocol.register_test + ~__FILE__ + ~title:"Runtime Script Failure: client force" + ~tags:["runtime_script_failure"] + @@ fun protocol -> + let* node = Node.init [Synchronisation_threshold 0; Connections 0] in + let* client = Client.init ~endpoint:(Node node) () in + let* () = Client.activate_protocol ~protocol client in + let* _ = Node.wait_for_level node 1 in + let* contract_id = + Client.originate_contract + ~alias:"always_fails" + ~amount:Tez.zero + ~src:"bootstrap1" + ~prg:"file:./tezt/tests/contracts/proto_alpha/always_fails.tz" + ~init:"Unit" + ~burn_cap:Tez.(of_int 1) + client + in + let* () = Client.bake_for client in + let* () = + Client.transfer + ~gas_limit:100_000 + ~fee:Tez.one + ~amount:Tez.zero + ~burn_cap:Tez.zero + ~storage_limit:10000 + ~giver:"bootstrap1" + ~receiver:contract_id + ~arg:"20" + ~force:true + client + in + let* () = Client.bake_for client in + let* first_manager_operation = + Client.rpc + Client.GET + ["chains"; "main"; "blocks"; "head"; "operations"; "3"; "0"] + client + in + let first_result = + JSON.( + first_manager_operation |-> "contents" |=> 0 |-> "metadata" + |-> "operation_result" |-> "status" |> as_string) + in + assert (first_result = "failed") ; + return () + +let register ~protocols = check_client_force ~protocols From 0b0c044ae4a58bedd461ae9691ce0e5299fdc066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Thu, 13 Jan 2022 18:31:22 +0100 Subject: [PATCH 0207/1220] Changes: add a mention on `tezos-client transfer --force` --- CHANGES.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index b874566e6f..406692137e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -30,6 +30,10 @@ Node Client ------ +- A new ``--force`` option was added to the ``transfer`` command. It + makes the client inject the transaction in a node even if the + simulation of the transaction fails. + Baker / Endorser / Accuser -------------------------- From 1f91409f30d4fd70e3e062b02ab2b63d88b9454a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Fri, 14 Jan 2022 16:27:01 +0100 Subject: [PATCH 0208/1220] Client/Alpha: `tezos-client transfer --force` requires 3 options `tezos-client transfer --force` requires `--gas-limit`, `--storage-limit`, and `--fee`. --- .../client_proto_context_commands.ml | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml index 9712bf3da6..72b4f1df59 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml @@ -643,10 +643,12 @@ let simulate_switch = let force_switch = Clic.switch ~long:"force" - ~doc:"Inject the operation even if the simulation results in a failure." + ~doc: + "Inject the operation even if the simulation results in a failure. This \ + switch requires --gas-limit, --storage-limit, and --fee." () -let transfer_command amount source destination cctxt +let transfer_command amount source destination (cctxt : #Client_context.printer) ( fee, dry_run, verbose_signing, @@ -675,6 +677,22 @@ let transfer_command amount source destination cctxt burn_cap; } in + (* When --force is used we want to inject the transfer even if it fails. + In that case we cannot rely on simulation to compute limits and fees + so we require the corresponding options to be set. *) + let check_force_dependency name = function + | None -> + cctxt#error + "When the --force switch is used, the %s option is required." + name + | _ -> Lwt.return_unit + in + (if force then + check_force_dependency "--gas-limit" gas_limit >>= fun () -> + check_force_dependency "--storage-limit" storage_limit >>= fun () -> + check_force_dependency "--fee" fee + else Lwt.return_unit) + >>= fun () -> (match Contract.is_implicit source with | None -> let contract = source in From 89cc5412b80eb69da44e727eb2e0d0b746f5749f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Fri, 14 Jan 2022 16:34:12 +0100 Subject: [PATCH 0209/1220] Client/Hangzhou+Ithaca: backport change of previous commit --- .../client_proto_context_commands.ml | 22 +++++++++++++++++-- .../client_proto_context_commands.ml | 22 +++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/proto_011_PtHangz2/lib_client_commands/client_proto_context_commands.ml b/src/proto_011_PtHangz2/lib_client_commands/client_proto_context_commands.ml index 184ee03b50..9885bc0090 100644 --- a/src/proto_011_PtHangz2/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_011_PtHangz2/lib_client_commands/client_proto_context_commands.ml @@ -59,7 +59,9 @@ let simulate_switch = let force_switch = Clic.switch ~long:"force" - ~doc:"Inject the operation even if the simulation results in a failure." + ~doc: + "Inject the operation even if the simulation results in a failure. This \ + switch requires --gas-limit, --storage-limit, and --fee." () let report_michelson_errors ?(no_print_source = false) ~msg @@ -110,7 +112,7 @@ let alphanet = {Clic.name = "alphanet"; title = "Alphanet only commands"} let binary_description = {Clic.name = "description"; title = "Binary Description"} -let transfer_command amount source destination cctxt +let transfer_command amount source destination (cctxt : #Client_context.printer) ( fee, dry_run, verbose_signing, @@ -138,6 +140,22 @@ let transfer_command amount source destination cctxt burn_cap; } in + (* When --force is used we want to inject the transfer even if it fails. + In that case we cannot rely on simulation to compute limits and fees + so we require the corresponding options to be set. *) + let check_force_dependency name = function + | None -> + cctxt#error + "When the --force switch is used, the %s option is required." + name + | _ -> Lwt.return_unit + in + (if force then + check_force_dependency "--gas-limit" gas_limit >>= fun () -> + check_force_dependency "--storage-limit" storage_limit >>= fun () -> + check_force_dependency "--fee" fee + else Lwt.return_unit) + >>= fun () -> (match Contract.is_implicit source with | None -> let contract = source in diff --git a/src/proto_012_PsiThaCa/lib_client_commands/client_proto_context_commands.ml b/src/proto_012_PsiThaCa/lib_client_commands/client_proto_context_commands.ml index df43f2952c..65729e330f 100644 --- a/src/proto_012_PsiThaCa/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_012_PsiThaCa/lib_client_commands/client_proto_context_commands.ml @@ -587,10 +587,12 @@ let simulate_switch = let force_switch = Clic.switch ~long:"force" - ~doc:"Inject the operation even if the simulation results in a failure." + ~doc: + "Inject the operation even if the simulation results in a failure. This \ + switch requires --gas-limit, --storage-limit, and --fee." () -let transfer_command amount source destination cctxt +let transfer_command amount source destination (cctxt : #Client_context.printer) ( fee, dry_run, verbose_signing, @@ -618,6 +620,22 @@ let transfer_command amount source destination cctxt burn_cap; } in + (* When --force is used we want to inject the transfer even if it fails. + In that case we cannot rely on simulation to compute limits and fees + so we require the corresponding options to be set. *) + let check_force_dependency name = function + | None -> + cctxt#error + "When the --force switch is used, the %s option is required." + name + | _ -> Lwt.return_unit + in + (if force then + check_force_dependency "--gas-limit" gas_limit >>= fun () -> + check_force_dependency "--storage-limit" storage_limit >>= fun () -> + check_force_dependency "--fee" fee + else Lwt.return_unit) + >>= fun () -> (match Contract.is_implicit source with | None -> let contract = source in From 01fa37d7fe928a548009e468a18de26abdd7bf5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Thu, 13 Jan 2022 17:26:21 +0100 Subject: [PATCH 0210/1220] Client/Michelson/Error reporting: ignore the script part of runtime errors --- .../lib_client/client_proto_programs.ml | 12 ++++- .../lib_client/client_proto_programs.mli | 14 ++--- .../lib_client/michelson_v1_error_reporter.ml | 52 ++++++++++++++++--- .../michelson_v1_error_reporter.mli | 8 +++ .../client_proto_context_commands.ml | 9 +++- 5 files changed, 79 insertions(+), 16 deletions(-) diff --git a/src/proto_alpha/lib_client/client_proto_programs.ml b/src/proto_alpha/lib_client/client_proto_programs.ml index a9c72dfe1d..3d099a41cb 100644 --- a/src/proto_alpha/lib_client/client_proto_programs.ml +++ b/src/proto_alpha/lib_client/client_proto_programs.ml @@ -51,7 +51,15 @@ module Program = Client_aliases.Alias (struct let name = "script" end) -let print_errors ?parsed (cctxt : #Client_context.printer) errs ~show_source = +let print_errors ?parsed (cctxt : #Protocol_client_context.full) errs + ~show_source = + Michelson_v1_error_reporter.enrich_runtime_errors + cctxt + ~chain:cctxt#chain + ~block:cctxt#block + ~parsed + errs + >>= fun errs -> cctxt#warning "%a" (Michelson_v1_error_reporter.report_errors @@ -62,7 +70,7 @@ let print_errors ?parsed (cctxt : #Client_context.printer) errs ~show_source = >>= fun () -> cctxt#error "error running script" >>= fun () -> return_unit -let print_view_result (cctxt : #Client_context.printer) = function +let print_view_result (cctxt : #Protocol_client_context.full) = function | Ok expr -> cctxt#message "%a" print_expr expr >>= fun () -> return_unit | Error errs -> print_errors cctxt ~show_source:false errs diff --git a/src/proto_alpha/lib_client/client_proto_programs.mli b/src/proto_alpha/lib_client/client_proto_programs.mli index dd17e04ae6..118a167a54 100644 --- a/src/proto_alpha/lib_client/client_proto_programs.mli +++ b/src/proto_alpha/lib_client/client_proto_programs.mli @@ -89,10 +89,12 @@ val trace : Lwt.t val print_view_result : - #Client_context.printer -> Script_repr.expr tzresult -> unit tzresult Lwt.t + #Protocol_client_context.full -> + Script_repr.expr tzresult -> + unit tzresult Lwt.t val print_run_result : - #Client_context.printer -> + #Protocol_client_context.full -> show_source:bool -> parsed:Michelson_v1_parser.parsed -> (Script_repr.expr @@ -102,7 +104,7 @@ val print_run_result : unit tzresult Lwt.t val print_trace_result : - #Client_context.printer -> + #Protocol_client_context.full -> show_source:bool -> parsed:Michelson_v1_parser.parsed -> (Script_repr.expr @@ -162,7 +164,7 @@ val entrypoint_type : Script.expr option tzresult Lwt.t val print_entrypoint_type : - #Client_context.printer -> + #Protocol_client_context.full -> emacs:bool -> ?script_name:string -> show_source:bool -> @@ -179,7 +181,7 @@ val list_entrypoints : (string * Script.expr) list tzresult Lwt.t val print_entrypoints_list : - #Client_context.printer -> + #Protocol_client_context.full -> emacs:bool -> ?script_name:string -> show_source:bool -> @@ -195,7 +197,7 @@ val list_unreachables : Michelson_v1_primitives.prim list list tzresult Lwt.t val print_unreachables : - #Client_context.printer -> + #Protocol_client_context.full -> emacs:bool -> ?script_name:string -> show_source:bool -> diff --git a/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml b/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml index 1376f983a9..5676ab594c 100644 --- a/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml +++ b/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml @@ -117,6 +117,42 @@ let string_of_context_desc = function | Script_tc_errors.Lambda -> "lambda" | Script_tc_errors.View -> "view" +(* Error raised while fetching the script of a contract for error reporting when the script is not found. *) +type error += Fetch_script_not_found_meta_error of Contract.t + +(* Errors raised while fetching the script of a contract for error reporting. *) +type error += Fetch_script_meta_error of error trace + +let fetch_script (cctxt : #Protocol_client_context.rpc_context) ~chain ~block + contract = + Plugin.RPC.Contract.get_script_normalized + cctxt + (chain, block) + ~unparsing_mode:Readable + ~contract + >>=? function + | None -> fail (Fetch_script_not_found_meta_error contract) + | Some {code; storage = _} -> + Lwt.return @@ Environment.wrap_tzresult @@ Script_repr.force_decode code + +type error += + | Rich_runtime_contract_error of Contract.t * Michelson_v1_parser.parsed + +let enrich_runtime_errors cctxt ~chain ~block ~parsed = + List.map_s (function + | Environment.Ecoproto_error (Runtime_contract_error (contract, _)) -> ( + (* If we know the script already, we don't fetch it *) + match parsed with + | Some parsed -> + Lwt.return @@ Rich_runtime_contract_error (contract, parsed) + | None -> ( + fetch_script cctxt ~chain ~block contract >|= function + | Ok script -> + let parsed = Michelson_v1_printer.unparse_toplevel script in + Rich_runtime_contract_error (contract, parsed) + | Error err -> Fetch_script_meta_error err)) + | e -> Lwt.return e) + let report_errors ~details ~show_source ?parsed ppf errs = let rec print_trace locations errs = let print_loc ppf loc = @@ -323,14 +359,16 @@ let report_errors ~details ~show_source ?parsed ppf errs = loc ; if rest <> [] then Format.fprintf ppf "@," ; print_trace locations rest - | Environment.Ecoproto_error (Runtime_contract_error (contract, expr)) + | Environment.Ecoproto_error (Runtime_contract_error (contract, _script)) :: rest -> - let parsed = - match parsed with - | Some parsed when expr = parsed.Michelson_v1_parser.expanded -> - parsed - | Some _ | None -> Michelson_v1_printer.unparse_toplevel expr - in + Format.fprintf + ppf + "@[Runtime error in unknown contract %a@]" + Contract.pp + contract ; + if rest <> [] then Format.fprintf ppf "@," ; + print_trace locations rest + | Rich_runtime_contract_error (contract, parsed) :: rest -> let hilights = collect_error_locations rest in Format.fprintf ppf diff --git a/src/proto_alpha/lib_client/michelson_v1_error_reporter.mli b/src/proto_alpha/lib_client/michelson_v1_error_reporter.mli index e1bbea6eb1..1d3df5de4b 100644 --- a/src/proto_alpha/lib_client/michelson_v1_error_reporter.mli +++ b/src/proto_alpha/lib_client/michelson_v1_error_reporter.mli @@ -23,6 +23,14 @@ (* *) (*****************************************************************************) +val enrich_runtime_errors : + #Protocol_client_context.rpc_context -> + chain:Shell_services.chain -> + block:Shell_services.block -> + parsed:Michelson_v1_parser.parsed option -> + Error_monad.error list -> + Error_monad.error list Lwt.t + val report_errors : details:bool -> show_source:bool -> diff --git a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml index 72b4f1df59..e2cf2d00cf 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml @@ -35,8 +35,15 @@ let encrypted_switch = Clic.switch ~long:"encrypted" ~doc:"encrypt the key on-disk" () let report_michelson_errors ?(no_print_source = false) ~msg - (cctxt : #Client_context.printer) = function + (cctxt : #Client_context.full) = function | Error errs -> + Michelson_v1_error_reporter.enrich_runtime_errors + cctxt + ~chain:cctxt#chain + ~block:cctxt#block + ~parsed:None + errs + >>= fun errs -> cctxt#warning "%a" (Michelson_v1_error_reporter.report_errors From 8cee92435832a7904129126e67eaf2990f476b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Thu, 13 Jan 2022 16:25:47 +0100 Subject: [PATCH 0211/1220] Proto/Michelson: remove the script from the error message for runtime error When a runtime error occurs during the interpretation of a Michelson script, we don't need to pass the script in the error message because it can be found in context. This commit removes it to make block metadata lighter. --- .../lib_client/michelson_v1_error_reporter.ml | 8 +++----- .../lib_protocol/script_interpreter.ml | 17 +++++------------ .../lib_protocol/script_interpreter.mli | 2 +- .../michelson/test_interpretation.ml | 3 +-- 4 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml b/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml index 5676ab594c..fac74b20f7 100644 --- a/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml +++ b/src/proto_alpha/lib_client/michelson_v1_error_reporter.ml @@ -69,8 +69,7 @@ let collect_error_locations errs = | Environment.Ecoproto_error ( Ill_formed_type (_, _, _) | No_such_entrypoint _ | Duplicate_entrypoint _ - | Unreachable_entrypoint _ - | Runtime_contract_error (_, _) + | Unreachable_entrypoint _ | Runtime_contract_error _ | Michelson_v1_primitives.Invalid_primitive_name (_, _) | Ill_typed_data (_, _, _) | Ill_typed_contract (_, _) ) @@ -140,7 +139,7 @@ type error += let enrich_runtime_errors cctxt ~chain ~block ~parsed = List.map_s (function - | Environment.Ecoproto_error (Runtime_contract_error (contract, _)) -> ( + | Environment.Ecoproto_error (Runtime_contract_error contract) -> ( (* If we know the script already, we don't fetch it *) match parsed with | Some parsed -> @@ -359,8 +358,7 @@ let report_errors ~details ~show_source ?parsed ppf errs = loc ; if rest <> [] then Format.fprintf ppf "@," ; print_trace locations rest - | Environment.Ecoproto_error (Runtime_contract_error (contract, _script)) - :: rest -> + | Environment.Ecoproto_error (Runtime_contract_error contract) :: rest -> Format.fprintf ppf "@[Runtime error in unknown contract %a@]" diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index a8a9e8d476..54abe192fa 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -83,7 +83,6 @@ *) open Alpha_context -open Script open Script_typed_ir open Script_ir_translator open Local_gas_counter @@ -107,7 +106,7 @@ type error += Reject of Script.location * Script.expr * execution_trace option type error += Overflow of Script.location * execution_trace option -type error += Runtime_contract_error : Contract.t * Script.expr -> error +type error += Runtime_contract_error of Contract.t type error += Bad_contract_parameter of Contract.t (* `Permanent *) @@ -158,11 +157,10 @@ let () = ~description:"Toplevel error for all runtime script errors" (obj2 (req "contract_handle" Contract.encoding) - (req "contract_code" Script.expr_encoding)) + (req "contract_code" (constant "Deprecated"))) (function - | Runtime_contract_error (contract, expr) -> Some (contract, expr) - | _ -> None) - (fun (contract, expr) -> Runtime_contract_error (contract, expr)) ; + | Runtime_contract_error contract -> Some (contract, ()) | _ -> None) + (fun (contract, ()) -> Runtime_contract_error contract) ; (* Bad contract parameter *) register_error_kind `Permanent @@ -1701,17 +1699,12 @@ let execute logger ctxt mode step_constants ~entrypoint ~internal (Bad_contract_parameter step_constants.self) (parse_data ctxt ~legacy:false ~allow_forged:internal arg_type (box arg)) >>=? fun (arg, ctxt) -> - Script.force_decode_in_context - ~consume_deserialization_gas:When_needed - ctxt - unparsed_script.code - >>?= fun (script_code, ctxt) -> Script_ir_translator.collect_lazy_storage ctxt arg_type arg >>?= fun (to_duplicate, ctxt) -> Script_ir_translator.collect_lazy_storage ctxt storage_type storage >>?= fun (to_update, ctxt) -> trace - (Runtime_contract_error (step_constants.self, script_code)) + (Runtime_contract_error step_constants.self) (interp logger (ctxt, step_constants) code (arg, storage)) >>=? fun ((ops, storage), ctxt) -> Script_ir_translator.extract_lazy_storage_diff diff --git a/src/proto_alpha/lib_protocol/script_interpreter.mli b/src/proto_alpha/lib_protocol/script_interpreter.mli index 1d03e3cb79..cde579644f 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.mli +++ b/src/proto_alpha/lib_protocol/script_interpreter.mli @@ -40,7 +40,7 @@ type error += Reject of Script.location * Script.expr * execution_trace option type error += Overflow of Script.location * execution_trace option -type error += Runtime_contract_error : Contract.t * Script.expr -> error +type error += Runtime_contract_error of Contract.t type error += Bad_contract_parameter of Contract.t (* `Permanent *) diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_interpretation.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_interpretation.ml index 5a959042e1..2c48604f14 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/test_interpretation.ml +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_interpretation.ml @@ -202,8 +202,7 @@ let error_encoding_tests = [ ("Reject", Reject (0, script_expr_int, None)); ("Overflow", Overflow (0, None)); - ( "Runtime_contract_error", - Runtime_contract_error (contract_zero, script_expr_int) ); + ("Runtime_contract_error", Runtime_contract_error contract_zero); ("Bad_contract_parameter", Bad_contract_parameter contract_zero); ("Cannot_serialize_failure", Cannot_serialize_failure); ("Cannot_serialize_storage", Cannot_serialize_storage); From 23d587e5effde3bbe0c850edea3c334eb5fc50e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Mon, 17 Jan 2022 21:45:14 +0100 Subject: [PATCH 0212/1220] Changelog/Proto: document deprecation of the contract_code field in Michelson runtime errors --- docs/protocols/alpha.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/protocols/alpha.rst b/docs/protocols/alpha.rst index d1110e8e07..8ff175cdda 100644 --- a/docs/protocols/alpha.rst +++ b/docs/protocols/alpha.rst @@ -28,6 +28,13 @@ Minor Changes participate in consensus and in governance, or do not have such a minimal stake, respectively. (MR :gl:`!3951`) +- In the ``michelson_v1.runtime_error`` error, which appears in the + error trace of operations failing because of runtime errors (such as + interpreting the ``FAILWITH`` instruction) during the execution of a + smart contract, the ``contract_code`` field is deprecated. The + failed script can still be fetched from the address returned in the + ``contract_handle`` field. + Michelson --------- From daa384ee0256b34c72d2143ef7f5c51169628850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Tue, 18 Jan 2022 09:34:04 +0100 Subject: [PATCH 0213/1220] Test/Integration: update the runtime error tezt test --- tezt/tests/runtime_script_failure.ml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tezt/tests/runtime_script_failure.ml b/tezt/tests/runtime_script_failure.ml index 815df7e297..6a0e9b21f3 100644 --- a/tezt/tests/runtime_script_failure.ml +++ b/tezt/tests/runtime_script_failure.ml @@ -61,7 +61,7 @@ let check_client_force = ~storage_limit:10000 ~giver:"bootstrap1" ~receiver:contract_id - ~arg:"20" + ~arg:"\"saucisse\"" ~force:true client in @@ -72,12 +72,23 @@ let check_client_force = ["chains"; "main"; "blocks"; "head"; "operations"; "3"; "0"] client in - let first_result = + let first_operation_result = JSON.( first_manager_operation |-> "contents" |=> 0 |-> "metadata" - |-> "operation_result" |-> "status" |> as_string) + |-> "operation_result") in - assert (first_result = "failed") ; + assert (JSON.(first_operation_result |-> "status" |> as_string = "failed")) ; + let first_failed_script = + JSON.(first_operation_result |-> "errors" |=> 0 |-> "contract_code") + in + (match protocol with + | Alpha -> + (* In Alpha this field is deprecated *) + assert (JSON.(first_failed_script |> as_string = "Deprecated")) + | Hangzhou | Ithaca -> + (* In Hangzhou and Ithaca, this field contains the failed script, it + is a sequence of length 3 (parameter, storage, and code). *) + assert (JSON.(first_failed_script |> as_list |> List.length = 3))) ; return () let register ~protocols = check_client_force ~protocols From dc00408497d9d5a3eda2e381b44fb2660fb4c9c7 Mon Sep 17 00:00:00 2001 From: Eugen Zalinescu Date: Mon, 17 Jan 2022 10:16:14 +0100 Subject: [PATCH 0214/1220] Proto: use dedicated error for duplicate ballots --- src/proto_alpha/lib_protocol/amendment.ml | 13 ++++++++++++- src/proto_alpha/lib_protocol/amendment.mli | 6 +++++- .../test/integration/operations/test_voting.ml | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/proto_alpha/lib_protocol/amendment.ml b/src/proto_alpha/lib_protocol/amendment.ml index ae8b50212a..59bbe860f0 100644 --- a/src/proto_alpha/lib_protocol/amendment.ml +++ b/src/proto_alpha/lib_protocol/amendment.ml @@ -143,6 +143,7 @@ type error += | Empty_proposal | Unexpected_ballot | Unauthorized_ballot + | Duplicate_ballot let () = let open Data_encoding in @@ -198,6 +199,16 @@ let () = empty (function Unauthorized_ballot -> Some () | _ -> None) (fun () -> Unauthorized_ballot) ; + (* Duplicate ballot *) + register_error_kind + `Branch + ~id:"duplicate_ballot" + ~title:"Duplicate ballot" + ~description:"The delegate has already submitted a ballot." + ~pp:(fun ppf () -> Format.fprintf ppf "Duplicate ballot") + empty + (function Duplicate_ballot -> Some () | _ -> None) + (fun () -> Duplicate_ballot) ; (* Too many proposals *) register_error_kind `Branch @@ -255,7 +266,7 @@ let record_ballot ctxt delegate proposal ballot = Invalid_proposal >>?= fun () -> Vote.has_recorded_ballot ctxt delegate >>= fun has_ballot -> - error_when has_ballot Unauthorized_ballot >>?= fun () -> + error_when has_ballot Duplicate_ballot >>?= fun () -> Vote.in_listings ctxt delegate >>= fun in_listings -> if in_listings then Vote.record_ballot ctxt delegate ballot else fail Unauthorized_ballot diff --git a/src/proto_alpha/lib_protocol/amendment.mli b/src/proto_alpha/lib_protocol/amendment.mli index 200019bd03..5ae88c6b86 100644 --- a/src/proto_alpha/lib_protocol/amendment.mli +++ b/src/proto_alpha/lib_protocol/amendment.mli @@ -71,7 +71,11 @@ type error += val record_proposals : context -> public_key_hash -> Protocol_hash.t list -> context tzresult Lwt.t -type error += Invalid_proposal | Unexpected_ballot | Unauthorized_ballot +type error += + | Invalid_proposal + | Unexpected_ballot + | Unauthorized_ballot + | Duplicate_ballot val record_ballot : context -> diff --git a/src/proto_alpha/lib_protocol/test/integration/operations/test_voting.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_voting.ml index 358c641d59..54000ff907 100644 --- a/src/proto_alpha/lib_protocol/test/integration/operations/test_voting.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_voting.ml @@ -338,7 +338,7 @@ let test_successful_vote num_delegates () = Op.ballot (B b) del1 Protocol_hash.zero Vote.Nay >>=? fun op -> Block.bake ~operations:[op] b >>= fun res -> Assert.proto_error ~loc:__LOC__ res (function - | Amendment.Unauthorized_ballot -> true + | Amendment.Duplicate_ballot -> true | _ -> false) >>=? fun () -> (* Allocate votes from weight (rolls) of active delegates *) From 4f9208f39c4b22d4613b919a5639419456cc35c1 Mon Sep 17 00:00:00 2001 From: Killian Delarue Date: Mon, 17 Jan 2022 16:04:08 +0100 Subject: [PATCH 0215/1220] lib_rpc_http: add Command_line module to Media_type --- src/bin_proxy_server/main_proxy_server.ml | 2 +- src/bin_signer/main_signer.ml | 2 +- src/lib_client_base_unix/client_config.ml | 18 +++++++-------- .../client_context_unix.ml | 4 ++-- src/lib_client_base_unix/client_main_run.ml | 4 ++-- src/lib_client_base_unix/client_main_run.mli | 2 +- src/lib_client_base_unix/daemon_config.ml | 2 +- src/lib_rpc_http/RPC_client.ml | 14 +++++++---- src/lib_rpc_http/RPC_client.mli | 2 +- src/lib_rpc_http/media_type.ml | 23 +++++++++++++++++++ src/lib_rpc_http/media_type.mli | 15 +++++++++++- 11 files changed, 63 insertions(+), 25 deletions(-) diff --git a/src/bin_proxy_server/main_proxy_server.ml b/src/bin_proxy_server/main_proxy_server.ml index 1fe71543fc..cc472be301 100644 --- a/src/bin_proxy_server/main_proxy_server.ml +++ b/src/bin_proxy_server/main_proxy_server.ml @@ -128,7 +128,7 @@ let main_promise (config_file : string option) else RPC_client_unix.null_logger in let rpc_config : RPC_client_unix.config = - {media_type = Media_type.all_media_types; endpoint; logger} + {media_type = Media_type.Command_line.Any; endpoint; logger} in let printer = let logger channel msg : unit Lwt.t = diff --git a/src/bin_signer/main_signer.ml b/src/bin_signer/main_signer.ml index 9514ef51d4..94881d9b7f 100644 --- a/src/bin_signer/main_signer.ml +++ b/src/bin_signer/main_signer.ml @@ -363,7 +363,7 @@ module Signer_config = struct let default_base_dir = default_base_dir - let default_media_type = [Media_type.octet_stream] + let default_media_type = Media_type.Command_line.Json let other_registrations = None diff --git a/src/lib_client_base_unix/client_config.ml b/src/lib_client_base_unix/client_config.ml index 5feb4ed9dc..e2cb27a558 100644 --- a/src/lib_client_base_unix/client_config.ml +++ b/src/lib_client_base_unix/client_config.ml @@ -199,7 +199,7 @@ let default_block = `Head 0 let default_endpoint = Uri.of_string "http://localhost:8732" -let default_media_type = Media_type.all_media_types +let default_media_type = Media_type.Command_line.Any open Filename.Infix @@ -212,7 +212,7 @@ module Cfg_file = struct node_addr : string option; node_port : int option; tls : bool option; - media_type : Media_type.t list option; + media_type : Media_type.Command_line.t option; endpoint : Uri.t option; web_port : int; remote_signer : Uri.t option; @@ -288,7 +288,7 @@ module Cfg_file = struct (opt "node_addr" string) (opt "node_port" uint16) (opt "tls" bool) - (opt "media_type" (list Media_type.encoding)) + (opt "media_type" Media_type.Command_line.encoding) (opt "endpoint" RPC_encoding.uri_encoding) (opt "web_port" uint16) (opt "remote_signer" RPC_encoding.uri_encoding) @@ -325,13 +325,11 @@ let string_parameter () : (string, #Client_context.full) parameter = parameter (fun _ x -> return x) let media_type_parameter () : - (Media_type.t list, #Client_context.full) parameter = + (Media_type.Command_line.t, #Client_context.full) parameter = parameter (fun _ x -> - match x with - | "json" -> return Media_type.[json; bson] - | "binary" -> return Media_type.[octet_stream] - | "any" -> return Media_type.all_media_types - | _ -> fail (Invalid_media_type_arg x)) + match Media_type.Command_line.parse_cli_parameter x with + | Some v -> return v + | None -> fail (Invalid_media_type_arg x)) let endpoint_parameter () = parameter (fun _ x -> @@ -1154,7 +1152,7 @@ type t = * string option * int option * bool - * Media_type.t list option + * Media_type.Command_line.t option * Uri.t option * Tezos_proxy.Light.sources_config option * Uri.t option diff --git a/src/lib_client_base_unix/client_context_unix.ml b/src/lib_client_base_unix/client_context_unix.ml index 3d11e285b4..06c3bf2bfb 100644 --- a/src/lib_client_base_unix/client_context_unix.ml +++ b/src/lib_client_base_unix/client_context_unix.ml @@ -183,7 +183,7 @@ class unix_full ~base_dir ~chain ~block ~confirmations ~password_filename inherit Tezos_rpc_http_client_unix.RPC_client_unix.http_ctxt rpc_config - rpc_config.media_type + (Media_type.Command_line.of_command_line rpc_config.media_type) inherit unix_ui @@ -235,7 +235,7 @@ class unix_proxy ~base_dir ~chain ~block ~confirmations ~password_filename (new unix_logger ~base_dir) (new Tezos_rpc_http_client_unix.RPC_client_unix.http_ctxt rpc_config - rpc_config.media_type) + (Media_type.Command_line.of_command_line rpc_config.media_type)) mode proxy_env diff --git a/src/lib_client_base_unix/client_main_run.ml b/src/lib_client_base_unix/client_main_run.ml index eb93b95a2b..bd9766f06f 100644 --- a/src/lib_client_base_unix/client_main_run.ml +++ b/src/lib_client_base_unix/client_main_run.ml @@ -58,7 +58,7 @@ module type M = sig val default_base_dir : string - val default_media_type : Media_type.t list + val default_media_type : Media_type.Command_line.t val other_registrations : (Client_config.Cfg_file.t -> (module Client_config.Remote_params) -> unit) @@ -209,7 +209,7 @@ let setup_default_proxy_client_config parsed_args base_dir rpc_config mode = let rpc_builder endpoint = (new Tezos_rpc_http_client_unix.RPC_client_unix.http_ctxt {rpc_config with endpoint} - rpc_config.media_type + (Media_type.Command_line.of_command_line rpc_config.media_type) :> RPC_context.simple) in let sources = diff --git a/src/lib_client_base_unix/client_main_run.mli b/src/lib_client_base_unix/client_main_run.mli index edb9174432..183dd2853a 100644 --- a/src/lib_client_base_unix/client_main_run.mli +++ b/src/lib_client_base_unix/client_main_run.mli @@ -52,7 +52,7 @@ sig define your own one. *) string - val default_media_type : Media_type.t list + val default_media_type : Media_type.Command_line.t val other_registrations : (* You may give an **optional** function that will work on the diff --git a/src/lib_client_base_unix/daemon_config.ml b/src/lib_client_base_unix/daemon_config.ml index 65fee7a290..0d35aabeb5 100644 --- a/src/lib_client_base_unix/daemon_config.ml +++ b/src/lib_client_base_unix/daemon_config.ml @@ -29,4 +29,4 @@ include Client_config (* The daemons RPC communications defaults to binary. This may be overriden using the --media-type command-line argument. *) -let default_media_type = Media_type.[octet_stream] +let default_media_type = Media_type.Command_line.Json diff --git a/src/lib_rpc_http/RPC_client.ml b/src/lib_rpc_http/RPC_client.ml index 9333c0b9de..b55a551e0f 100644 --- a/src/lib_rpc_http/RPC_client.ml +++ b/src/lib_rpc_http/RPC_client.ml @@ -55,7 +55,7 @@ module type S = sig val full_logger : Format.formatter -> logger type config = { - media_type : Media_type.t list; + media_type : Media_type.Command_line.t; endpoint : Uri.t; logger : logger; } @@ -405,7 +405,7 @@ module Make (Client : Resto_cohttp_client.Client.CALL) = struct >>= fun ans -> handle accept ans type config = { - media_type : Media_type.t list; + media_type : Media_type.Command_line.t; endpoint : Uri.t; logger : logger; } @@ -417,12 +417,12 @@ module Make (Client : Resto_cohttp_client.Client.CALL) = struct (fun (media_type, endpoint) -> {media_type; endpoint; logger = null_logger}) (obj2 - (req "media-type" (list Media_type.encoding)) + (req "media-type" Media_type.Command_line.encoding) (req "endpoint" RPC_encoding.uri_encoding)) let default_config = { - media_type = Media_type.all_media_types; + media_type = Media_type.Command_line.Any; endpoint = Uri.of_string "http://localhost:8732"; logger = null_logger; } @@ -437,7 +437,11 @@ module Make (Client : Resto_cohttp_client.Client.CALL) = struct let prefixed_path = if prefix = "" then path else prefix ^ "/" ^ path in let uri = Uri.with_path base prefixed_path in let uri = Uri.with_query uri query in - generic_media_type_call ?body ~accept:config.media_type meth uri + generic_media_type_call + ?body + ~accept:(Media_type.Command_line.of_command_line config.media_type) + meth + uri method call_service : 'm 'p 'q 'i 'o. diff --git a/src/lib_rpc_http/RPC_client.mli b/src/lib_rpc_http/RPC_client.mli index 8e0cdc5b43..12b7b50419 100644 --- a/src/lib_rpc_http/RPC_client.mli +++ b/src/lib_rpc_http/RPC_client.mli @@ -55,7 +55,7 @@ module type S = sig val full_logger : Format.formatter -> logger type config = { - media_type : Media_type.t list; + media_type : Media_type.Command_line.t; endpoint : Uri.t; logger : logger; } diff --git a/src/lib_rpc_http/media_type.ml b/src/lib_rpc_http/media_type.ml index d702bc5d70..1c3dc97d14 100644 --- a/src/lib_rpc_http/media_type.ml +++ b/src/lib_rpc_http/media_type.ml @@ -205,3 +205,26 @@ let of_content_type c = else if c = Content_type.bson then Some bson else if c = Content_type.octet_stream then Some octet_stream else None + +module Command_line = struct + type t = Any | Json | Binary + + let parse_cli_parameter = function + | "json" -> Some Json + | "binary" -> Some Binary + | "any" -> Some Any + | _ -> None + + let of_command_line = function + | Any -> all_media_types + | Binary -> [octet_stream] + | Json -> [json; bson] + + let pp_parameter ppf = function + | Any -> Format.fprintf ppf "any" + | Binary -> Format.fprintf ppf "json" + | Json -> Format.fprintf ppf "any" + + let encoding = + Data_encoding.string_enum [("json", Json); ("binary", Binary); ("any", Any)] +end diff --git a/src/lib_rpc_http/media_type.mli b/src/lib_rpc_http/media_type.mli index d5711307b4..80a94f8fdc 100644 --- a/src/lib_rpc_http/media_type.mli +++ b/src/lib_rpc_http/media_type.mli @@ -46,7 +46,7 @@ val accept_header : t list -> string val first_complete_media : t list -> ((string * string) * t) option -val encoding : t RPC_encoding.t +val encoding : t Data_encoding.t module Content_type : sig type t = string * string @@ -61,3 +61,16 @@ module Content_type : sig end val of_content_type : Content_type.t -> t option + +module Command_line : sig + type t = Any | Json | Binary + + val parse_cli_parameter : string -> t option + + val pp_parameter : Format.formatter -> t -> unit + + val of_command_line : + t -> Resto_cohttp.Media_type.Make(Tezos_rpc__RPC_encoding).t list + + val encoding : t Data_encoding.encoding +end From f3dd74381e20afe37ac90f788452b70a7f024634 Mon Sep 17 00:00:00 2001 From: Killian Delarue Date: Mon, 17 Jan 2022 15:46:07 +0100 Subject: [PATCH 0216/1220] bin_node: add media_type parameter to node --- CHANGES.rst | 5 +++++ src/bin_node/node_config_file.ml | 31 ++++++++++++++++++++++++------- src/bin_node/node_config_file.mli | 2 ++ src/bin_node/node_run_command.ml | 10 ++++++---- src/bin_node/node_shared_arg.ml | 22 ++++++++++++++++++++-- src/bin_node/node_shared_arg.mli | 1 + 6 files changed, 58 insertions(+), 13 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 406692137e..d3ccc2d1ce 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -27,6 +27,11 @@ Node output unparsable operations anymore. Previously, they were in the ``Refused`` field with a parsing error. +- Added an optional parameter ``media-type``. + It defines which format of data serialisation must be used for RPC requests to the node. + The value can be ``json``, ``binary`` or ``any``. By default, the value is set to ``any``. + + Client ------ diff --git a/src/bin_node/node_config_file.ml b/src/bin_node/node_config_file.ml index 8f765b050a..fb8408820b 100644 --- a/src/bin_node/node_config_file.ml +++ b/src/bin_node/node_config_file.ml @@ -368,6 +368,7 @@ and rpc = { cors_headers : string list; tls : tls option; acl : RPC_server.Acl.policy; + media_type : Media_type.Command_line.t; } and tls = {cert : string; key : string} @@ -432,6 +433,7 @@ let default_rpc = cors_headers = []; tls = None; acl = RPC_server.Acl.empty_policy; + media_type = Media_type.Command_line.Any; } let default_shell = @@ -792,20 +794,28 @@ let p2p = let rpc : rpc Data_encoding.t = let open Data_encoding in conv - (fun {cors_origins; cors_headers; listen_addrs; tls; acl} -> + (fun {cors_origins; cors_headers; listen_addrs; tls; acl; media_type} -> let (cert, key) = match tls with | None -> (None, None) | Some {cert; key} -> (Some cert, Some key) in - (Some listen_addrs, None, cors_origins, cors_headers, cert, key, acl)) + ( Some listen_addrs, + None, + cors_origins, + cors_headers, + cert, + key, + acl, + media_type )) (fun ( listen_addrs, legacy_listen_addr, cors_origins, cors_headers, cert, key, - acl ) -> + acl, + media_type ) -> let tls = match (cert, key) with | (None, _) | (_, None) -> None @@ -821,8 +831,8 @@ let rpc : rpc Data_encoding.t = "Config file: Use only \"listen-addrs\" and not (legacy) \ \"listen-addr\"." in - {listen_addrs; cors_origins; cors_headers; tls; acl}) - (obj7 + {listen_addrs; cors_origins; cors_headers; tls; acl; media_type}) + (obj8 (opt "listen-addrs" ~description: @@ -853,7 +863,12 @@ let rpc : rpc Data_encoding.t = "acl" ~description:"A list of RPC ACLs for specific listening addresses." RPC_server.Acl.policy_encoding - RPC_server.Acl.empty_policy)) + default_rpc.acl) + (dft + "media-type" + ~description:"The media types supported by the server." + Media_type.Command_line.encoding + default_rpc.media_type)) let timeout_encoding = Time.System.Span.encoding @@ -1231,7 +1246,8 @@ let update ?(disable_config_validation = false) ?data_dir ?min_connections ?expected_connections ?max_connections ?max_download_speed ?max_upload_speed ?binary_chunks_size ?peer_table_size ?expected_pow ?bootstrap_peers ?listen_addr ?advertised_net_port ?discovery_addr ?(rpc_listen_addrs = []) - ?(allow_all_rpc = []) ?(private_mode = false) ?(disable_mempool = false) + ?(allow_all_rpc = []) ?(media_type = Media_type.Command_line.Any) + ?(private_mode = false) ?(disable_mempool = false) ?(disable_mempool_precheck = default_shell.prevalidator_limits.disable_precheck) ?(enable_testchain = false) ?(cors_origins = []) ?(cors_headers = []) @@ -1302,6 +1318,7 @@ let update ?(disable_config_validation = false) ?data_dir ?min_connections cors_headers = unopt_list ~default:cfg.rpc.cors_headers cors_headers; tls = Option.either rpc_tls cfg.rpc.tls; acl; + media_type; } and log : Lwt_log_sink_unix.cfg = {cfg.log with output = Option.value ~default:cfg.log.output log_output} diff --git a/src/bin_node/node_config_file.mli b/src/bin_node/node_config_file.mli index bfa334c5f7..550bfd40b7 100644 --- a/src/bin_node/node_config_file.mli +++ b/src/bin_node/node_config_file.mli @@ -76,6 +76,7 @@ and rpc = { cors_headers : string list; tls : tls option; acl : RPC_server.Acl.policy; + media_type : Media_type.Command_line.t; } and tls = {cert : string; key : string} @@ -121,6 +122,7 @@ val update : ?discovery_addr:string -> ?rpc_listen_addrs:string list -> ?allow_all_rpc:P2p_point.Id.addr_port_id list -> + ?media_type:Media_type.Command_line.t -> ?private_mode:bool -> ?disable_mempool:bool -> ?disable_mempool_precheck:bool -> diff --git a/src/bin_node/node_run_command.ml b/src/bin_node/node_run_command.ml index a9ba9d797f..9ab8054ef7 100644 --- a/src/bin_node/node_run_command.ml +++ b/src/bin_node/node_run_command.ml @@ -346,8 +346,8 @@ let sanitize_cors_headers ~default headers = |> String.Set.(union (of_list default)) |> String.Set.elements -let launch_rpc_server ~acl_policy (config : Node_config_file.t) node (addr, port) - = +let launch_rpc_server ~acl_policy ~media_types (config : Node_config_file.t) + node (addr, port) = let open Lwt_tzresult_syntax in let rpc_config = config.rpc in let host = Ipaddr.V6.to_string addr in @@ -383,7 +383,7 @@ let launch_rpc_server ~acl_policy (config : Node_config_file.t) node (addr, port mode dir ~acl - ~media_types:Media_type.all_media_types + ~media_types:(Media_type.Command_line.of_command_line media_types) ~cors: { allowed_origins = rpc_config.cors_origins; @@ -401,6 +401,7 @@ let launch_rpc_server ~acl_policy (config : Node_config_file.t) node (addr, port let init_rpc (config : Node_config_file.t) node = let open Lwt_tzresult_syntax in + let media_types = config.rpc.media_type in List.concat_map_es (fun addr -> let* addrs = Node_config_file.resolve_rpc_listening_addrs addr in @@ -411,7 +412,8 @@ let init_rpc (config : Node_config_file.t) node = RPC_server.Acl.resolve_domain_names config.rpc.acl in List.map_es - (fun addr -> launch_rpc_server ~acl_policy config node addr) + (fun addr -> + launch_rpc_server ~acl_policy ~media_types config node addr) addrs) config.rpc.listen_addrs diff --git a/src/bin_node/node_shared_arg.ml b/src/bin_node/node_shared_arg.ml index 8ab4fb0518..c3924031f7 100644 --- a/src/bin_node/node_shared_arg.ml +++ b/src/bin_node/node_shared_arg.ml @@ -62,6 +62,7 @@ type t = { synchronisation_threshold : int option; latency : int option; allow_all_rpc : P2p_point.Id.addr_port_id list; + media_type : Media_type.Command_line.t; } type error += @@ -146,7 +147,7 @@ let wrap data_dir config_file network connections max_download_speed bootstrap_threshold private_mode disable_mempool disable_mempool_precheck enable_testchain expected_pow rpc_listen_addrs rpc_tls cors_origins cors_headers log_output history_mode synchronisation_threshold latency - disable_config_validation allow_all_rpc = + disable_config_validation allow_all_rpc media_type = let actual_data_dir = Option.value ~default:Node_config_file.default_data_dir data_dir in @@ -188,6 +189,7 @@ let wrap data_dir config_file network connections max_download_speed synchronisation_threshold; latency; allow_all_rpc; + media_type; } module Manpage = struct @@ -584,6 +586,20 @@ module Term = struct & opt_all (addr_port_id, P2p_point.Id.pp_addr_port_id) [] & info ~docs ~doc ~docv:"ADDR:PORT" ["allow-all-rpc"]) + let media_type = + let media_type str = + match Media_type.Command_line.parse_cli_parameter str with + | Some media_type -> `Ok media_type + | None -> `Error "media-type parameter must be `json`, `binary`, or `any`" + in + let doc = "Set the media-types supported by the server." in + Arg.( + value + & opt + (media_type, Media_type.Command_line.pp_parameter) + Media_type.Command_line.Any + & info ~docs ~doc ~docv:"MEDIATYPE" ["media-type"]) + (* Args. *) let args = @@ -595,7 +611,7 @@ module Term = struct $ disable_mempool $ disable_mempool_precheck $ enable_testchain $ expected_pow $ rpc_listen_addrs $ rpc_tls $ cors_origins $ cors_headers $ log_output $ history_mode $ synchronisation_threshold $ latency - $ disable_config_validation $ allow_all_rpc + $ disable_config_validation $ allow_all_rpc $ media_type end let read_config_file args = @@ -712,6 +728,7 @@ let read_and_patch_config_file ?(may_override_network = false) synchronisation_threshold; latency; allow_all_rpc; + media_type; } = args in @@ -843,6 +860,7 @@ let read_and_patch_config_file ?(may_override_network = false) ?discovery_addr ~rpc_listen_addrs ~allow_all_rpc + ~media_type ~private_mode ~disable_mempool ~disable_mempool_precheck diff --git a/src/bin_node/node_shared_arg.mli b/src/bin_node/node_shared_arg.mli index d5446e861c..99f9138d8f 100644 --- a/src/bin_node/node_shared_arg.mli +++ b/src/bin_node/node_shared_arg.mli @@ -73,6 +73,7 @@ type t = { allow_all_rpc : P2p_point.Id.addr_port_id list; (** a list of RPC listening addresses for which a full access should be granted *) + media_type : Media_type.Command_line.t; } module Term : sig From 15cc83d676929d2ca7c3f965c0fda58e8fd6319d Mon Sep 17 00:00:00 2001 From: Killian Delarue Date: Mon, 17 Jan 2022 14:30:30 +0100 Subject: [PATCH 0217/1220] tezt: add media-type parameter to node creation --- tezt/lib_tezos/node.ml | 20 +++++++++++++++++--- tezt/lib_tezos/node.mli | 5 +++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/tezt/lib_tezos/node.ml b/tezt/lib_tezos/node.ml index 77891e9c79..809a353423 100644 --- a/tezt/lib_tezos/node.ml +++ b/tezt/lib_tezos/node.ml @@ -25,6 +25,13 @@ type history_mode = Archive | Full of int option | Rolling of int option +type media_type = Json | Binary | Any + +let string_of_media_type = function + | Any -> "any" + | Binary -> "binary" + | Json -> "json" + type argument = | Network of string | History_mode of history_mode @@ -69,6 +76,7 @@ module Parameters = struct advertised_net_port : int option; rpc_host : string; rpc_port : int; + media_type : media_type; default_expected_pow : int; mutable arguments : argument list; mutable pending_ready : unit option Lwt.u list; @@ -405,7 +413,7 @@ let wait_for_request ~request node = let create ?runner ?(path = Constant.tezos_node) ?name ?color ?data_dir ?event_pipe ?net_port ?advertised_net_port ?(rpc_host = "localhost") - ?rpc_port arguments = + ?rpc_port ?(media_type = Any) arguments = let name = match name with None -> fresh_name () | Some name -> name in let data_dir = match data_dir with None -> Temp.dir ?runner name | Some dir -> dir @@ -439,6 +447,7 @@ let create ?runner ?(path = Constant.tezos_node) ?name ?color ?data_dir advertised_net_port; rpc_host; rpc_port; + media_type; arguments; default_expected_pow; runner; @@ -511,7 +520,11 @@ let runlike_command_arguments node command arguments = (net_addr ^ string_of_int node.persistent_state.net_port) :: "--rpc-addr" - :: (rpc_addr ^ string_of_int node.persistent_state.rpc_port) :: command_args + :: + (rpc_addr ^ string_of_int node.persistent_state.rpc_port) + :: + "--media-type" + :: string_of_media_type node.persistent_state.media_type :: command_args let do_runlike_command ?(on_terminate = fun _ -> ()) ?event_level ?event_sections_levels node arguments = @@ -562,7 +575,7 @@ let replay ?on_terminate ?event_level ?event_sections_levels let init ?runner ?path ?name ?color ?data_dir ?event_pipe ?net_port ?advertised_net_port ?rpc_host ?rpc_port ?event_level ?event_sections_levels - arguments = + ?media_type arguments = let node = create ?runner @@ -575,6 +588,7 @@ let init ?runner ?path ?name ?color ?data_dir ?event_pipe ?net_port ?advertised_net_port ?rpc_host ?rpc_port + ?media_type arguments in let* () = identity_generate node in diff --git a/tezt/lib_tezos/node.mli b/tezt/lib_tezos/node.mli index 75dc3f81d4..0926243cd5 100644 --- a/tezt/lib_tezos/node.mli +++ b/tezt/lib_tezos/node.mli @@ -56,6 +56,9 @@ parameters). *) type history_mode = Archive | Full of int option | Rolling of int option +(** Values that can be passed to the node's [--media-type] argument *) +type media_type = Json | Binary | Any + (** Tezos node command-line arguments. Not all arguments are available here. @@ -119,6 +122,7 @@ val create : ?advertised_net_port:int -> ?rpc_host:string -> ?rpc_port:int -> + ?media_type:media_type -> argument list -> t @@ -449,6 +453,7 @@ val init : ?rpc_port:int -> ?event_level:Daemon.Level.default_level -> ?event_sections_levels:(string * Daemon.Level.level) list -> + ?media_type:media_type -> argument list -> t Lwt.t From dae0c9eb6c2863d70e5583790cbb37daf33f92cb Mon Sep 17 00:00:00 2001 From: Killian Delarue Date: Mon, 17 Jan 2022 14:31:59 +0100 Subject: [PATCH 0218/1220] tezt: add binary node test --- tezt/tests/RPC_test.ml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tezt/tests/RPC_test.ml b/tezt/tests/RPC_test.ml index 45e5b9babb..6f8a9e0489 100644 --- a/tezt/tests/RPC_test.ml +++ b/tezt/tests/RPC_test.ml @@ -968,6 +968,16 @@ let binary_regression_test () = then Lwt.return_unit else Test.fail "Unexpected binary answer" +let test_node_binary_mode address () = + let node = Node.create ~media_type:Binary ~rpc_host:address [] in + let endpoint = Client.(Node node) in + let* () = Node.config_init node [] in + let* () = Node.identity_generate node in + let* () = Node.run node [] in + let* client = Client.init ~endpoint ~media_type:Json () in + Client.spawn_rpc GET ["chains"; "main"; "blocks"] client + |> Process.check_error ~exit_code:1 + let test_no_service_at_valid_prefix address () = let node = Node.create ~rpc_host:address [] in let endpoint = Client.(Node node) in @@ -1096,5 +1106,10 @@ let register () = ~__FILE__ ~title:(mk_title "no_service_at_valid_prefix" addr) ~tags:["rpc"] - (test_no_service_at_valid_prefix addr)) + (test_no_service_at_valid_prefix addr) ; + Test.register + ~__FILE__ + ~title:(mk_title "node_binary_mode" addr) + ~tags:["rpc"; "binary"] + (test_node_binary_mode addr)) addresses From bac2d7dcfc3168a254856900d2d853674d9bc276 Mon Sep 17 00:00:00 2001 From: Valentin Chaboche Date: Mon, 17 Jan 2022 10:28:34 +0100 Subject: [PATCH 0219/1220] lib_proxy/shell_services: upgrade qcheck to qcheck2 --- src/lib_proxy/test/test_fuzzing_light.ml | 168 ++++++++++-------- .../test/test_fuzzing_proxy_getter.ml | 20 ++- .../shell_services_test_helpers.ml | 157 +++++++--------- .../shell_services_test_helpers.mli | 18 +- .../test_helpers/test/test_block_services.ml | 6 +- 5 files changed, 181 insertions(+), 188 deletions(-) diff --git a/src/lib_proxy/test/test_fuzzing_light.ml b/src/lib_proxy/test/test_fuzzing_light.ml index 512b142a89..12ebf797e7 100644 --- a/src/lib_proxy/test/test_fuzzing_light.ml +++ b/src/lib_proxy/test/test_fuzzing_light.ml @@ -37,56 +37,46 @@ module Internal = Tezos_proxy.Light_internal module Merkle = Internal.Merkle module Store = Tezos_proxy.Local_context -open Lib_test.Qcheck_helpers +open Lib_test.Qcheck2_helpers open Tezos_shell_services_test_helpers.Shell_services_test_helpers -(** [list1_arb arb] generates non-empty lists using [arb]. *) -let list1_arb arb = - QCheck.( - list_of_size Gen.(1 -- 100) arb |> add_shrink_invariant (fun l -> l <> [])) +(** [list1_gen gen] generates non-empty lists using [gen]. *) +let list1_gen gen = + QCheck2.Gen.( + list_size (1 -- 20) gen |> add_shrink_invariant (fun l -> l <> [])) -let irmin_tree_arb = +let irmin_tree_gen = let module StringList = struct type t = string list let compare = Stdlib.compare end in let module StringListMap = Stdlib.Map.Make (StringList) in - let open MakeMapArb (StringListMap) in - let open QCheck in - map - ~rev:(fun tree -> - Store.Tree.fold - tree - [] - ~order:`Sorted - ~init:[] - ~f:(fun path sub_tree acc -> - Store.Tree.to_value sub_tree >|= function - | None -> acc - | Some bytes -> (path, bytes) :: acc) - |> Lwt_main.run) - (fun entries -> - List.fold_left_s - (fun built_tree (path, bytes) -> Store.Tree.add built_tree path bytes) - (Store.Tree.empty Store.empty) - entries - |> Lwt_main.run) - (small_list (pair (small_list string) bytes_arb)) - -let get_ok = function Ok x -> x | Error s -> QCheck.Test.fail_report s + let open MakeMapGen (StringListMap) in + let open QCheck2.Gen in + let+ entries = small_list (pair (small_list string) bytes_gen) in + List.fold_left_s + (fun built_tree (path, bytes) -> Store.Tree.add built_tree path bytes) + (Store.Tree.empty Store.empty) + entries + |> Lwt_main.run + +let print_tree = Format.asprintf "%a" Store.Tree.pp + +let get_ok = function Ok x -> x | Error s -> QCheck2.Test.fail_report s (** Test that [merkle_tree_to_irmin_tree] preserves the tree's structure by checking that it yields the same [simple_tree] as when using [merkle_tree_to_simple_tree] *) let test_merkle_tree_to_irmin_tree_preserves_simple_tree = - QCheck.Test.make + QCheck2.Test.make ~name: "merkle_tree_to_irmin_tree mtree |> irmin_tree_to_simple_tree = \ merkle_tree_to_simple_tree mtree" - merkle_tree_arb + ~print:print_merkle_tree + merkle_tree_gen @@ fun mtree -> let repo = Lwt_main.run (Store.Tree.make_repo ()) in let merkle_irmin_tree = @@ -128,9 +118,10 @@ and remove_data_in_tree mtree = an Irmin tree that is included in the original [merkle_tree]. This function specifically tests function [merkle_tree_to_irmin_tree]. *) let test_contains_merkle_tree = - QCheck.Test.make + QCheck2.Test.make ~name:"contains_merkle_tree (merkle_tree_to_irmin_tree mtree) mtree = true" - merkle_tree_arb + ~print:print_merkle_tree + merkle_tree_gen @@ fun mtree -> (* Because contains_merkle_tree doesn't support Data nodes, we need to remove them. That's because contains_merkle_tree is only called @@ -146,16 +137,17 @@ let test_contains_merkle_tree = in match contains_res with | Ok _ -> true - | Error msg -> QCheck.Test.fail_report msg + | Error msg -> QCheck2.Test.fail_report msg (** Test that unioning an empty irmin tree and a merkle tree should yield the same irmin tree as if it was built directly from the merkle tree *) let test_union_irmin_empty = - QCheck.Test.make + QCheck2.Test.make ~name: "union_irmin_tree_merkle_tree empty mtree = merkle_tree_to_irmin_tree \ mtree" - merkle_tree_arb + ~print:print_merkle_tree + merkle_tree_gen @@ fun mtree -> let repo = Lwt_main.run (Store.Tree.make_repo ()) in let direct_tree = @@ -173,11 +165,12 @@ let test_union_irmin_empty = Tests both [Merkle.merkle_tree_to_irmin_tree] and [Merkle.union_irmin_tree_merkle_tree] *) let test_union_translation = - QCheck.Test.make + QCheck2.Test.make ~name: "union_irmin_tree_merkle_tree (merkle_tree_to_irmin_tree mtree) mtree = \ merkle_tree_to_irmin_tree mtree" - merkle_tree_arb + ~print:print_merkle_tree + merkle_tree_gen @@ fun mtree -> let repo = Lwt_main.run (Store.Tree.make_repo ()) in let direct_tree = @@ -225,16 +218,18 @@ and union_merkle_tree t1 t2 = added in two steps, the second call to [union_irmin_tree_merkle_tree] fails. *) let _test_union_direct = - QCheck.Test.make + let open QCheck2 in + Test.make ~name: "union_irmin_tree_merkle_tree (merkle_tree_to_irmin_tree mtree) mtree = \ merkle_tree_to_irmin_tree mtree" - (QCheck.pair merkle_tree_arb merkle_tree_arb) + ~print:(Print.pair print_merkle_tree print_merkle_tree) + (Gen.pair merkle_tree_gen merkle_tree_gen) @@ fun (mtree1, mtree2) -> match union_merkle_tree mtree1 mtree2 with | None -> (* trees are incompatible *) - QCheck.assume_fail () + assume_fail () | Some merkle_union -> let repo = Lwt_main.run (Store.Tree.make_repo ()) in let irmin_union1 = @@ -263,17 +258,19 @@ let _test_union_direct = Commented out for similar reasons as [test_union_direct] above: we cannot build trees that correspond to valid merkle trees in two steps. *) let _test_union_commutation = - QCheck.Test.make + let open QCheck2 in + Test.make ~name: "union_irmin_tree_merkle_tree (union_irmin_tree_merkle_tree empty \ mtree1) mtree2 = union_irmin_tree_merkle_tree \ (union_irmin_tree_merkle_tree empty mtree2) mtree1" - (QCheck.pair merkle_tree_arb merkle_tree_arb) + ~print:(Print.pair print_merkle_tree print_merkle_tree) + (Gen.pair merkle_tree_gen merkle_tree_gen) @@ fun (mtree1, mtree2) -> match union_merkle_tree mtree1 mtree2 with | None -> (* rule out incompatible trees *) - QCheck.assume_fail () + assume_fail () | Some _ -> let repo = Lwt_main.run (Store.Tree.make_repo ()) in let union2 t1 t2 = @@ -295,9 +292,9 @@ let _test_union_commutation = (** Test that unioning an irmin tree with an empty merkle tree yield the input irmin tree *) let test_union_merkle_empty = - QCheck.Test.make + QCheck2.Test.make ~name:"union_irmin_tree_merkle_tree tree empty = tree" - irmin_tree_arb + irmin_tree_gen @@ fun tree -> let repo = Lwt_main.run (Store.Tree.make_repo ()) in let res = @@ -309,15 +306,19 @@ let test_union_merkle_empty = (** Test that comparing the tree shape correctly ignores the key *) let test_shape_ignores_key = - QCheck.Test.make + let open QCheck2 in + Test.make ~name:"trees_shape_match ignores the key" - QCheck.(quad merkle_tree_arb (list string) merkle_node_arb merkle_node_arb) + ~print: + Print.( + quad print_merkle_tree (list string) print_merkle_node print_merkle_node) + Gen.(quad merkle_tree_gen (list string) merkle_node_gen merkle_node_gen) @@ fun (tree, key, node1, node2) -> let open Tezos_shell_services.Block_services in let is_continue = function Continue _ -> true | _ -> false in (* If both are [Continue] then they are trees with child nodes, hence shape comparison will fail. *) - QCheck.assume @@ not (is_continue node1 && is_continue node2) ; + assume @@ not (is_continue node1 && is_continue node2) ; let rec deep_add current_key value mtree = match current_key with | [last_fragment] -> TzString.Map.add last_fragment value mtree @@ -381,13 +382,13 @@ module HashStability = struct Randomization of shallowing is sub-par (based on tree hash) because otherwise it would be very difficult to provide shrinking. Note that this will no be a problem once QCheck provides integrated shrinking. *) - let tree_and_shallow_arb = - let open QCheck in + let tree_and_shallow_gen = + let open QCheck2.Gen in let repo = Lwt_main.run (Store.Tree.make_repo ()) in - map_keep_input - ~print:(Format.asprintf "%a" Store.Tree.pp) - (fun tree -> Lwt_main.run (make_partial_shallow_tree repo tree)) - irmin_tree_arb + let+ tree = irmin_tree_gen in + (tree, Lwt_main.run (make_partial_shallow_tree repo tree)) + + let print_tree_and_shallow = QCheck2.Print.pair print_tree print_tree (** Test that replacing Irmin subtrees by their [Store.Tree.shallow] value leaves the top-level [Store.Tree.hash] unchanged. @@ -395,15 +396,17 @@ module HashStability = struct This test was also proposed to Irmin in https://github.com/mirage/irmin/pull/1291 *) let test_hash_stability = - QCheck.Test.make + let open QCheck2 in + Test.make ~name:"Shallowing trees does not change their top-level hash" - tree_and_shallow_arb + ~print:print_tree_and_shallow + tree_and_shallow_gen @@ fun (tree, shallow_tree) -> let hash = Store.Tree.hash tree in let shallow_hash = Store.Tree.hash shallow_tree in if Context_hash.equal hash shallow_hash then true else - QCheck.Test.fail_reportf + Test.fail_reportf "@[Equality check failed!@,\ expected:@,\ %a@,\ @@ -431,15 +434,19 @@ module AddTree = struct This test was also proposed to Irmin in https://github.com/mirage/irmin/pull/1291 *) let test_add_tree = - let open QCheck in + let open QCheck2 in Test.make ~name: "let tree' = Store.Tree.add_tree tree key at_key in \ Store.Tree.find_tree tree' key = at_key" - (triple - HashStability.tree_and_shallow_arb - (list1_arb string) - irmin_tree_arb) + ~print: + Print.( + triple HashStability.print_tree_and_shallow (list string) print_tree) + Gen.( + triple + HashStability.tree_and_shallow_gen + (list1_gen string) + irmin_tree_gen) (fun ( ((_, tree) : _ * Store.tree), (key : Store.key), (added : Store.tree) ) -> @@ -474,8 +481,8 @@ module Consensus = struct let rec gen_rec ~rand attempts_left = if attempts_left = 0 then Error "mk_rogue_tree: giving up" else - let gen = QCheck.(gen merkle_tree_arb) in - let generated = QCheck.Gen.generate1 ~rand gen in + let gen = merkle_tree_gen in + let generated = QCheck2.Gen.generate1 ~rand gen in if merkle_tree_eq mtree generated then gen_rec ~rand (attempts_left - 1) else Ok generated in @@ -498,7 +505,7 @@ module Consensus = struct if is_rogue then match mk_rogue_tree mtree seed with | Ok rogue_mtree -> rogue_mtree - | _ -> QCheck.assume_fail () + | _ -> QCheck2.assume_fail () else mtree) |> return end : Tezos_proxy.Light_proto.PROTO_RPCS) @@ -571,7 +578,7 @@ module Consensus = struct end let add_test_consensus (min_agreement, honest, rogue, consensus_expected) = - let open QCheck in + let open QCheck2 in (* Because the node providing data always agrees, [honest] must be > 0 *) assert (honest > 0) ; (* Because we test consensus, to which the node providing data @@ -585,7 +592,12 @@ let add_test_consensus (min_agreement, honest, rogue, consensus_expected) = honest rogue consensus_expected) - (triple merkle_tree_arb (list string) (list int)) + ~print:Print.(triple print_merkle_tree (list string) (list int)) + Gen.( + triple + merkle_tree_gen + (small_list (small_string ?gen:None)) + (small_list int)) @@ fun (mtree, key, randoms) -> Consensus.test_consensus min_agreement @@ -598,18 +610,24 @@ let add_test_consensus (min_agreement, honest, rogue, consensus_expected) = |> Lwt_main.run let test_consensus_spec = - let open QCheck in - let min_agreement_arb = 0 -- 100 in - let honest_arb = 1 -- 1000 in - let rogue_arb = 0 -- 1000 in - let key_arb = list string in + let open QCheck2 in + let open Gen in + let min_agreement_gen = 0 -- 100 in + let honest_gen = 1 -- 1000 in + let rogue_gen = 0 -- 1000 in + let key_gen = small_list (small_string ?gen:None) in Test.make ~name: "test_consensus min_agreement honest rogue ... = min_agreeing_endpoints \ min_agreement (honest + rogue + 1) <= honest" + ~print: + Print.( + pair + (quad int int int (list string)) + (pair print_merkle_tree (list int))) (pair - (quad min_agreement_arb honest_arb rogue_arb key_arb) - (pair merkle_tree_arb (list int))) + (quad min_agreement_gen honest_gen rogue_gen key_gen) + (pair merkle_tree_gen (small_list int))) @@ fun ((min_agreement_int, honest, rogue, key), (mtree, seed)) -> assert (0 <= min_agreement_int && min_agreement_int <= 100) ; let min_agreement = Float.of_int min_agreement_int /. 100. in diff --git a/src/lib_proxy/test/test_fuzzing_proxy_getter.ml b/src/lib_proxy/test/test_fuzzing_proxy_getter.ml index 3567c50eb4..bdfe16d4a3 100644 --- a/src/lib_proxy/test/test_fuzzing_proxy_getter.ml +++ b/src/lib_proxy/test/test_fuzzing_proxy_getter.ml @@ -33,16 +33,18 @@ module Local = Tezos_proxy.Local_context module Proxy_getter = Tezos_proxy.Proxy_getter module Tree = Proxy_getter.Internal.Tree -open Lib_test.Qcheck_helpers +open Lib_test.Qcheck2_helpers open Tezos_shell_services_test_helpers.Shell_services_test_helpers -let key_arb = +let key_gen = (* Using small_list, otherwise the test takes considerably longer. This test is quite slow already *) - QCheck.(small_list string) + QCheck2.Gen.(small_list (small_string ?gen:None)) -let tree_arb = +let print_key = QCheck2.Print.(list string) + +let tree_gen = let open Lwt_syntax in let rec mk_tree acc sets = match sets with @@ -54,19 +56,21 @@ let tree_arb = | Tezos_proxy.Proxy.Value acc' -> (mk_tree [@ocaml.tailcall]) acc' tl) in let mk_tree acc sets = Lwt_main.run @@ mk_tree acc sets in - QCheck.(map (mk_tree Tree.empty) (list (pair key_arb raw_context_arb))) + QCheck2.Gen.(map (mk_tree Tree.empty) (list (pair key_gen raw_context_gen))) (** [Tree.set_leaf] then [Tree.get] should return the inserted data *) let test_set_leaf_get = - QCheck.Test.make + QCheck2.Test.make ~name:"Tree.get (Tree.set_leaf t k v) k = v" - QCheck.(triple tree_arb key_arb raw_context_arb) + ~print: + (QCheck2.Print.triple (fun _ -> "") print_key print_raw_context) + QCheck2.Gen.(triple tree_gen key_gen raw_context_gen) @@ fun (tree, key, value) -> let expected = Lwt_main.run @@ Proxy_getter.Internal.raw_context_to_tree value in (* We need to make sure that we are actually setting something: *) - QCheck.assume @@ Option.is_some expected ; + QCheck2.assume @@ Option.is_some expected ; let tree' = Lwt_main.run @@ Tree.set_leaf tree key value in let tree' = match tree' with diff --git a/src/lib_shell_services/test_helpers/shell_services_test_helpers.ml b/src/lib_shell_services/test_helpers/shell_services_test_helpers.ml index bb6b29c3f2..c999e917b3 100644 --- a/src/lib_shell_services/test_helpers/shell_services_test_helpers.ml +++ b/src/lib_shell_services/test_helpers/shell_services_test_helpers.ml @@ -23,51 +23,33 @@ (* *) (*****************************************************************************) -open Lib_test.Qcheck_helpers +open Lib_test.Qcheck2_helpers -let raw_context_arb = +let raw_context_gen = let open Tezos_shell_services.Block_services in - let module MapArb = MakeMapArb (TzString.Map) in - let open QCheck in - let {gen = bytes_gen; shrink = bytes_shrink_opt; _} = bytes_arb in - let gen = - let open Gen in - (* Factor used to limit the depth of the tree. *) - let max_depth_factor = 10 in - fix - (fun self current_depth_factor -> - frequency - [ - (max_depth_factor, map (fun b -> Key b) bytes_gen); - (max_depth_factor, pure Cut); - ( current_depth_factor, - map - (fun d -> Dir d) - (MapArb.gen_of_size - (0 -- 10) - string - (self (current_depth_factor / 2))) ); - ]) - max_depth_factor - in - let rec shrink = - let open Iter in - function - | Cut -> empty - | Key bigger_bytes -> - shrink Cut - <+> ( of_option_shrink bytes_shrink_opt bigger_bytes - >|= fun smaller_bytes -> Key smaller_bytes ) - | Dir bigger_raw_context_map -> - shrink Cut <+> shrink (Key Bytes.empty) - <+> ( MapArb.shrink - ~key:Shrink.string - ~value:shrink - bigger_raw_context_map - >|= fun smaller_dir -> Dir smaller_dir ) - in - let print = Format.asprintf "%a" pp_raw_context in - make ~print ~shrink gen + let module MapGen = MakeMapGen (TzString.Map) in + let open QCheck2 in + let open Gen in + (* Factor used to limit the depth of the tree. *) + let max_depth_factor = 10 in + fix + (fun self current_depth_factor -> + frequency + [ + (max_depth_factor, map (fun b -> Key b) bytes_gen); + (max_depth_factor, pure Cut); + ( current_depth_factor, + map + (fun d -> Dir d) + (MapGen.gen_of_size + (0 -- 10) + string + (self (current_depth_factor / 2))) ); + ]) + max_depth_factor + +let print_raw_context = + Format.asprintf "%a" Tezos_shell_services.Block_services.pp_raw_context (** Strings that are valid Irmin hashes. Taken from the output of: @@ -89,59 +71,42 @@ let irmin_hashes = "CoVnWzSVjbYHCQLD53JGJfWRSjUBrkbtCrNMgmsXX6bMhy7CE7E6"; ] -let irmin_hash_arb = QCheck.oneofl ~print:Fun.id irmin_hashes +let irmin_hash_gen = QCheck2.Gen.oneofl irmin_hashes -let merkle_node_arb = +let merkle_node_gen = let open Tezos_shell_services.Block_services in - let module MapArb = MakeMapArb (TzString.Map) in - let open QCheck in - let open Gen in - let {gen = raw_context_gen; shrink = raw_context_shrink_opt; _} = - raw_context_arb - in - let {gen = irmin_hash_gen; _} = irmin_hash_arb in - let gen = - let max_depth_factor = 4 in - fix - (fun self current_depth_factor -> - frequency - [ - ( max_depth_factor, - map - (fun (kind, hash) -> Hash (kind, hash)) - (pair (oneofl [Contents; Node]) irmin_hash_gen) ); - ( max_depth_factor, - map (fun raw_context -> Data raw_context) raw_context_gen ); - ( current_depth_factor, - map - (fun merkle_node_map -> Continue merkle_node_map) - (MapArb.gen_of_size - (0 -- 10) - string - (self (current_depth_factor / 2))) ); - ]) - max_depth_factor - in - let first_irmin_hash = - List.hd irmin_hashes |> function None -> assert false | Some hash -> hash - in - let rec shrink = - let open Iter in - function - | Hash _ -> empty - | Data bigger_raw_context -> - shrink (Hash (Contents, first_irmin_hash)) - <+> ( of_option_shrink raw_context_shrink_opt bigger_raw_context - >|= fun smaller_raw_context -> Data smaller_raw_context ) - | Continue bigger_mnode -> - shrink (Hash (Contents, first_irmin_hash)) - <+> shrink (Data Cut) - <+> ( MapArb.shrink ~key:Shrink.string ~value:shrink bigger_mnode - >|= fun smaller_mnode -> Continue smaller_mnode ) - in - let print = Format.asprintf "%a" pp_merkle_node in - make ~print ~shrink gen + let module MapGen = MakeMapGen (TzString.Map) in + let open QCheck2.Gen in + let max_depth_factor = 4 in + fix + (fun self current_depth_factor -> + frequency + [ + ( max_depth_factor, + map + (fun (kind, hash) -> Hash (kind, hash)) + (pair (oneofl [Contents; Node]) irmin_hash_gen) ); + ( max_depth_factor, + map (fun raw_context -> Data raw_context) raw_context_gen ); + ( current_depth_factor, + map + (fun merkle_node_map -> Continue merkle_node_map) + (MapGen.gen_of_size + (0 -- 5) + (small_string ?gen:None) + (self (current_depth_factor / 2))) ); + ]) + max_depth_factor + +let print_merkle_node = + Format.asprintf "%a" Tezos_shell_services.Block_services.pp_merkle_node + +let merkle_tree_gen = + let open MakeMapGen (TzString.Map) in + gen_of_size + QCheck2.Gen.(0 -- 5) + (QCheck2.Gen.small_string ?gen:None) + merkle_node_gen -let merkle_tree_arb = - let open MakeMapArb (TzString.Map) in - arb_of_size QCheck.Gen.(0 -- 10) QCheck.string merkle_node_arb +let print_merkle_tree = + Format.asprintf "%a" Tezos_shell_services.Block_services.pp_merkle_tree diff --git a/src/lib_shell_services/test_helpers/shell_services_test_helpers.mli b/src/lib_shell_services/test_helpers/shell_services_test_helpers.mli index 72fa271c56..a031254cfb 100644 --- a/src/lib_shell_services/test_helpers/shell_services_test_helpers.mli +++ b/src/lib_shell_services/test_helpers/shell_services_test_helpers.mli @@ -25,11 +25,17 @@ open Tezos_shell_services -(** [raw_context_arb] is a {!QCheck.arbitrary} for [raw_context]. *) -val raw_context_arb : Block_services.raw_context QCheck.arbitrary +(** [raw_context_gen] is a {!QCheck2.Gen.t} for [raw_context]. *) +val raw_context_gen : Block_services.raw_context QCheck2.Gen.t -(** [merkle_node_arb] is a {!QCheck.arbitrary} for [merkle_node]. *) -val merkle_node_arb : Block_services.merkle_node QCheck.arbitrary +val print_raw_context : Block_services.raw_context -> string -(** [merkle_tree_arb] is a {!QCheck.arbitrary} for [merkle_tree]. *) -val merkle_tree_arb : Block_services.merkle_tree QCheck.arbitrary +(** [merkle_node_gen] is a {!QCheck2.Gen.t} for [merkle_node]. *) +val merkle_node_gen : Block_services.merkle_node QCheck2.Gen.t + +val print_merkle_node : Block_services.merkle_node -> string + +(** [merkle_tree_gen] is a {!QCheck2.Gen.t} for [merkle_tree]. *) +val merkle_tree_gen : Block_services.merkle_tree QCheck2.Gen.t + +val print_merkle_tree : Block_services.merkle_tree -> string diff --git a/src/lib_shell_services/test_helpers/test/test_block_services.ml b/src/lib_shell_services/test_helpers/test/test_block_services.ml index 20fdc880dd..697e319a3a 100644 --- a/src/lib_shell_services/test_helpers/test/test_block_services.ml +++ b/src/lib_shell_services/test_helpers/test/test_block_services.ml @@ -30,7 +30,7 @@ Subject: Fuzzing tests of equalities *) -open Lib_test.Qcheck_helpers +open Lib_test.Qcheck2_helpers open Tezos_shell_services_test_helpers.Shell_services_test_helpers @@ -39,13 +39,13 @@ open Tezos_shell_services.Block_services let raw_context_eq_tests = qcheck_eq_tests ~eq:raw_context_eq - ~arb:raw_context_arb + ~gen:raw_context_gen ~eq_name:"raw_context_eq" let merkle_tree_eq_tests = qcheck_eq_tests ~eq:merkle_tree_eq - ~arb:merkle_tree_arb + ~gen:merkle_tree_gen ~eq_name:"merkle_tree_eq" let () = From 9204b86bf5927e9ff420fd8b05e0a89ccd84102b Mon Sep 17 00:00:00 2001 From: Nic Volanschi Date: Wed, 5 Jan 2022 15:22:12 +0100 Subject: [PATCH 0220/1220] doc: delete unsatisfied forward reference to anti-replay counter --- docs/introduction/howtouse.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/introduction/howtouse.rst b/docs/introduction/howtouse.rst index 243589aae3..5c96205e6d 100644 --- a/docs/introduction/howtouse.rst +++ b/docs/introduction/howtouse.rst @@ -441,8 +441,7 @@ In the rare case when an operation is lost, how can we be sure that it will not be included in any future block, and then we may re-emit it? After 60 blocks a transaction is considered invalid and can't be included anymore in a block. -Furthermore each operation has a counter (explained in more detail -later) that prevents replays so it is usually safe to re-emit an +Furthermore each operation has a counter that prevents replays so it is usually safe to re-emit an operation that seems lost. From b13eaded86346f86153077e5f2b9a5ed01bd8895 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Wed, 5 Jan 2022 15:55:00 +0100 Subject: [PATCH 0221/1220] doc: typos in error_monad.rst --- docs/developer/error_monad.rst | 36 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/developer/error_monad.rst b/docs/developer/error_monad.rst index 868b991c70..d45a77eb8d 100644 --- a/docs/developer/error_monad.rst +++ b/docs/developer/error_monad.rst @@ -261,7 +261,7 @@ are the same (``'e``): val ( let* ) : ('a, 'e) result -> ('a -> ('b, 'e) result) -> ('b, 'e) result When you need to mix those function, you have to either handle the -errors of each idependently (see the section above about recovering from +errors of each independently (see the section above about recovering from errors) or you need to convert the errors so they have the same type. You should use ``Result.map_error`` to do that. @@ -768,7 +768,7 @@ dedicated to binding Result-only expressions. .. sidebar:: Mnemonic The ``let*?`` binding operator uses the question mark (``?``) to represent - the uncertainty of the ``result``. Is it a sucess? Is it a failure? + the uncertainty of the ``result``. Is it a success? Is it a failure? From Lwt-only into Lwt-``result`` @@ -786,10 +786,10 @@ dedicated to binding Lwt-only expressions. .. sidebar:: Mnemonic The ``let*!`` binding operator uses the exclamation mark (``!``) to represent - the impossibilty of errors: Thou shall not fail! + the impossibility of errors: Thou shall not fail! -Wait! there is too much! what module am I supposed to open locally and what operators should I use? +Wait! There is too much! What module am I supposed to open locally and what operators should I use? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you are feeling overwhelmed by the different syntax modules, here are @@ -993,10 +993,10 @@ the errors to a common type. You can also use the ``Result.map_error`` and ``lwt_map_error`` functions introduced in previous sections. -Wait! it was supposed to be “one single uniform way of dealing with errors”! what is this? +Wait! It was supposed to be “one single uniform way of dealing with errors”! What is this? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The error management in Octez is through a unified way (syntax modules +The error management in Octez is a unified way (syntax modules with regular, predictable interfaces) of handling different types of errors. @@ -1098,7 +1098,7 @@ They do not even require the syntax modules to be open. in retry original_limit f - You can use all the formating percent-escapes from the `Format + You can use all the formatting percent-escapes from the `Format module `__. However, you should generally keep the message on a single line so that it can be printed nicely in logs. @@ -1216,7 +1216,7 @@ in the shell, just use :literal:`\`Temporary`. - ``description``: a longer human readable string. - ``pp``: a pretty-printing function carrying enough information for a full error message for the user. Note that the function does not receive the error, - instead it receives the *projected payload of the error* (here a 3-uple + instead it receives the *projected payload of the error* (here a 3-tuple ``(expected, got, line)``. - encoding: an encoding for the projected payload of the error. - projection: a partial function that matches the specific error @@ -2144,9 +2144,9 @@ E.g., Haskell relies heavily on monads and has the dedicated let add x y = let ( let* ) = OptionMonad.bind in - let* x = int_of_strin_opt x in - let* y = int_of_strin_opt y in - Some (strin_of_int (x + y)) + let* x = int_of_string_opt x in + let* y = int_of_string_opt y in + Some (string_of_int (x + y)) - `infix operators `__ @@ -2155,9 +2155,9 @@ E.g., Haskell relies heavily on monads and has the dedicated let add x y = let ( >>= ) = OptionMonad.bind in - int_of_strin_opt x >>= fun x -> - int_of_strin_opt y >>= fun y -> - Some (strin_of_int (x + y)) + int_of_string_opt x >>= fun x -> + int_of_string_opt y >>= fun y -> + Some (string_of_int (x + y)) Note that mixing multiple infix operators is not always easy because of precedence and associativity. @@ -2167,9 +2167,9 @@ E.g., Haskell relies heavily on monads and has the dedicated :: let add x y = - OptionMonad.bind (int_of_strin_opt x) @@ fun x -> - OptionMonad.bind (int_of_strin_opt y) @@ fun y -> - Some (strin_of_int (x + y)) + OptionMonad.bind (int_of_string_opt x) @@ fun x -> + OptionMonad.bind (int_of_string_opt y) @@ fun y -> + Some (string_of_int (x + y)) This is useful for the occasional application: you do not need to declare a dedicated operator nor open a dedicated syntax module. @@ -2181,7 +2181,7 @@ In depth discussion: ``Error_monad``, ``src/lib_error_monad/``, ``Tezos_base__Tz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The different parts of the error monad (syntax modules, extended stdlib, -tracing promitives, etc.) are defined in separate files. Yet, they are +tracing primitives, etc.) are defined in separate files. Yet, they are all available to you directly. This section explains where each part is defined and how it reaches the scope of your code. From 4577d197e23a7262191847f3f6e31d97f52a9e43 Mon Sep 17 00:00:00 2001 From: Arvid Jakobsson Date: Wed, 5 Jan 2022 15:56:39 +0100 Subject: [PATCH 0222/1220] doc: typos in time_measurement_ppx.rst --- docs/developer/time_measurement_ppx.rst | 44 ++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/developer/time_measurement_ppx.rst b/docs/developer/time_measurement_ppx.rst index c5086f87ea..7690ec1fd4 100644 --- a/docs/developer/time_measurement_ppx.rst +++ b/docs/developer/time_measurement_ppx.rst @@ -1,17 +1,17 @@ Time measurement PPX ==================== -The time measurement PPX is an Ocaml preprocessing tool that intends to -embed generated benchmark tooling into specific pieces of Ocaml code. +The time measurement PPX is an OCaml preprocessing tool that intends to +embed generated benchmark tooling into specific pieces of OCaml code. -It is able to measure the time spent in the execution of annotated Ocaml +It is able to measure the time spent in the execution of annotated OCaml expressions and to log these measurements when desired. Since it uses ``Tezos_event_logging`` for the logging part, this PPX can easily be used together with ``Tezt`` framework to perform the benchmarking of specific parts of Tezos node. **This PPX is only intended to be used for tests. As the current runtime -implemetation performs memory allocation, an unwise usage could mess with +implementation performs memory allocation, an unwise usage could mess with the garbage collector or blow up your memory.** **PLEASE, MAKE SURE THAT IT IS NOT ACTIVATED WHEN COMPILING CODE FOR @@ -21,9 +21,9 @@ Getting started --------------- Suppose we want to measure the performance of some specific parts of -the following Ocaml function inside the module ``lib_my_module``: +the following OCaml function inside the module ``lib_my_module``: -.. code-block:: Ocaml +.. code-block:: OCaml let my_function () = let a = f () in @@ -40,10 +40,10 @@ Suppose also that module ``lib_my_module`` contains the following dune file: (libraries lwt) (flags (:standard -open Lwt))) -We can mesure the execution time of ``f ()`` and ``g ()`` and log them by -adding the following Ocaml attributes: +We can measure the execution time of ``f ()`` and ``g ()`` and log them by +adding the following OCaml attributes: -.. code-block:: Ocaml +.. code-block:: OCaml let my_function () = let a = f () [@time.duration f_time] in @@ -51,13 +51,13 @@ adding the following Ocaml attributes: h () >>= fun c -> foo a b c [@time.flush] -``[@time.duration]`` will be used to mesure the time of ``f ()`` and ``g ()`` +``[@time.duration]`` will be used to measure the time of ``f ()`` and ``g ()`` expressions execution and to name them respectively ``f_time`` and ``g_time``. ``[@time.flush]`` will then be used to log these measurements. -When the preprocessig will occur, the code will be transform as follows: +When the preprocessing will occur, the code will be transformed as follows: -.. code-block:: Ocaml +.. code-block:: OCaml let my_function () = let a = Tezos_time_measurement_runtime.Default.Time_measurement.duration @@ -81,7 +81,7 @@ The resulting thunk is passed to the function ``Time_measurement.duration`` from the module ``Tezos_time_measurement_runtime.Default`` along with the argument ``("f_time", [])``. -``Time_measurement.duration`` mesures the current time before and after executing +``Time_measurement.duration`` measures the current time before and after executing the given thunk in order to compute the span between the two timestamps. The resulting measurement is then bufferized in memory and, at last, the function evaluates in the result of the thunk so that we can respect the invariants of the initial program. @@ -110,11 +110,11 @@ and also removes them from memory. The flushing promise is then bounded again to return ``__flush__id__0`` value to preserve the program invariants as well. -That's great, but since Ocaml attributes are ignored by default, +That's great, but since OCaml attributes are ignored by default, we still need to update the dune stanza of ``lib_my_module`` so that it can take effect: -.. code-block:: Ocaml +.. code-block:: OCaml (library (name tezos_my_module) @@ -124,11 +124,11 @@ it can take effect: This update adds the ``tezos-time-measurement`` instrumentation backend, which, if set using ``--instrument-with tezos-time-measurement`` on ``dune build`` -command line, will preprocess our Ocaml code using the PPX. +command line, will preprocess our OCaml code using the PPX. This is useful to prevent our code from embedding benchmarking tooling in production by mistake: If no backend is specified for the compilation, added -attributes will just be ignored by the Ocaml compiler and that's it! +attributes will just be ignored by the OCaml compiler and that's it! We can now compile our ready-to-benchmark code::: @@ -146,18 +146,18 @@ is displayed on standard output. For example: Aug 23 17:52:58.593 - benchmarking: time measurements: Aug 23 17:52:58.593 - benchmarking: [(f_time, 0.000177); (g_time, 0.005658)] -Compatible Ocaml Attributes +Compatible OCaml Attributes --------------------------- The PPX provides the handling of three attributes: - ``[@time.duration