diff --git a/contrib/kaitai-struct-files/alpha__constants.ksy b/contrib/kaitai-struct-files/alpha__constants.ksy index 17a7f40f97204b9219a88ea19e3ada5f1c09e369..37d8ba3bbf310796724f11df2822584ec51b852b 100644 --- a/contrib/kaitai-struct-files/alpha__constants.ksy +++ b/contrib/kaitai-struct-files/alpha__constants.ksy @@ -326,3 +326,6 @@ seq: - id: autostaking_enable type: u1 enum: bool +- id: direct_ticket_spending_enable + type: u1 + enum: bool diff --git a/contrib/kaitai-struct-files/alpha__constants__parametric.ksy b/contrib/kaitai-struct-files/alpha__constants__parametric.ksy index a3efb3738a8f9ae3569f2a9e4e88f5e1b2a1a1fc..ccb5557bd22c45742573522a6770354157239f05 100644 --- a/contrib/kaitai-struct-files/alpha__constants__parametric.ksy +++ b/contrib/kaitai-struct-files/alpha__constants__parametric.ksy @@ -298,3 +298,6 @@ seq: - id: autostaking_enable type: u1 enum: bool +- id: direct_ticket_spending_enable + type: u1 + enum: bool diff --git a/contrib/kaitai-struct-files/alpha__parameters.ksy b/contrib/kaitai-struct-files/alpha__parameters.ksy index eeedc9bac4bba46f3988deec733e9cbe825c2b4c..51082561cb829233817e009a28688827b4c10148 100644 --- a/contrib/kaitai-struct-files/alpha__parameters.ksy +++ b/contrib/kaitai-struct-files/alpha__parameters.ksy @@ -576,3 +576,6 @@ seq: - id: autostaking_enable type: u1 enum: bool +- id: direct_ticket_spending_enable + type: u1 + enum: bool diff --git a/manifest/main.ml b/manifest/main.ml index ac438b127c5c19a7e3168216dc9746360d62bd07..5f9b6ffddf260fec43dac056ce6c18ae87dc3080 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -5146,6 +5146,7 @@ end = struct ("test_ticket_operations_diff", true); ("test_ticket_scanner", true); ("test_ticket_storage", true); + ("test_ticket_direct_spending", N.(number >= 019)); ("test_typechecking", true); ("test_lambda_normalization", N.(number >= 016)); ] diff --git a/michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz b/michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz new file mode 100644 index 0000000000000000000000000000000000000000..8d0e90e7232cb17507522dbfdcd91d77445510ee --- /dev/null +++ b/michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz @@ -0,0 +1,28 @@ +# Contract for sending ticket transfer from implicit to originated. +# Has two entrypoints: +# - mint_and_send content: +# Mints a string ticket with the given content and amount +# then sends the ticket to the given contract address. +# - store: +# Stores the given tickets to storage. The parameter of this +# entrypoint is deliberately made complex by including garbage values +# for testing purpose. +{ parameter + (or (pair %mint_and_send string nat (contract (ticket string))) + (pair %store int (list (pair string (ticket string))))) ; + storage (list (ticket string)) ; + code { UNPAIR ; + IF_LEFT + { UNPAIR 3 ; + TICKET ; + IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; + SWAP ; + PUSH mutez 0 ; + DIG 2 ; + TRANSFER_TOKENS ; + SWAP ; + NIL operation ; + DIG 2 ; + CONS } + { CDR ; ITER { CDR ; CONS } ; NIL operation } ; + PAIR } } diff --git a/src/proto_alpha/lib_parameters/default_parameters.ml b/src/proto_alpha/lib_parameters/default_parameters.ml index 0d7e0e96476d396eb66cc93c912db8110df52c37..74ff1dbb57220d86f8ee2119e256946d422c4537 100644 --- a/src/proto_alpha/lib_parameters/default_parameters.ml +++ b/src/proto_alpha/lib_parameters/default_parameters.ml @@ -278,6 +278,11 @@ let constants_mainnet = activation_vote_enable = false; autostaking_enable = true; }; + (* TODO: https://gitlab.com/tezos/tezos/-/issues/6668 + Enable once at least the following is done: + - Split [allow_forged] into [allow_tickets] and [allow_lazy_storage_id]: #2964 + - Introduce a new Ticket constructor in Michelson: #6643 *) + direct_ticket_spending_enable = false; } (* Sandbox and test networks's Dal cryptobox are computed by this function: diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index d11214eb94aaa326e10f51a04c7705a1503728c6..24f4369e803fd6ee306f24f93d9c5a757cd369da 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -922,6 +922,7 @@ module Constants : sig sc_rollup : sc_rollup; zk_rollup : zk_rollup; adaptive_issuance : adaptive_issuance; + direct_ticket_spending_enable : bool; } val encoding : t Data_encoding.t @@ -1036,6 +1037,8 @@ module Constants : sig val zk_rollup_max_ticket_payload_size : context -> int + val direct_ticket_spending_enable : context -> bool + (** All constants: fixed and parametric *) type t = private {fixed : fixed; parametric : Parametric.t} diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 9339f2fe58c0e6e8b0e14daa2045284635d15bae..4fefec8ed73c49d5d2bbf820ae8a09874b271ad6 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -4,6 +4,7 @@ (* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. *) (* Copyright (c) 2019-2022 Nomadic Labs *) (* Copyright (c) 2022 Trili Tech, *) +(* Copyright (c) 2023 Marigold, *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) @@ -568,118 +569,108 @@ let apply_transaction_to_implicit_with_ticket ~sender ~destination ~ty ~ticket [] ) let apply_transaction_to_smart_contract ~ctxt ~sender ~contract_hash ~amount - ~entrypoint ~before_operation ~payer ~chain_id ~internal ~parameter = + ~entrypoint ~before_operation ~payer ~chain_id ~internal ~parameter ~script + ~script_ir ~cache_key ?(paid_storage_diff_acc = Z.zero) + ?(ticket_receipt_acc = []) () = let open Lwt_result_syntax in let contract = Contract.Originated contract_hash in - (* Since the contract is originated, nothing will be allocated or this - transfer of tokens will fail. [Token.transfer] will succeed even on - non-existing contracts, if the amount is zero. Then if the destination - does not exist, [Script_cache.find] will signal that by returning [None] - and we'll fail. - *) + (* We can assume the destination contract is already allocated at this point. + If the destination contract does not exist, [Script_cache.find], + which is called earlier, would have failed. *) let* ctxt, balance_updates = transfer_from_any_address ctxt sender contract amount in - let* ctxt, cache_key, script = Script_cache.find ctxt contract_hash in - match script with - | None -> tzfail (Contract.Non_existing_contract contract) - | Some (script, script_ir) -> - (* Token.transfer which is being called before already loads this value into - the Irmin cache, so no need to burn gas for it. *) - let* balance = Contract.get_balance ctxt contract in - let now = Script_timestamp.now ctxt in - let level = - (Level.current ctxt).level |> Raw_level.to_int32 |> Script_int.of_int32 - |> Script_int.abs - in - let step_constants = - let open Script_interpreter in - { - sender; - payer; - self = contract_hash; - amount; - chain_id; - balance; - now; - level; - } - in - let execute = - match parameter with - | Untyped_arg parameter -> Script_interpreter.execute ~parameter - | Typed_arg (location, parameter_ty, parameter) -> - Script_interpreter.execute_with_typed_parameter - ~location - ~parameter_ty - ~parameter - in - let cached_script = Some script_ir in - let* ( { - script = updated_cached_script; - code_size = updated_size; - storage; - lazy_storage_diff; - operations; - ticket_diffs; - ticket_receipt; - }, - ctxt ) = - execute - ctxt - ~cached_script - Optimized - step_constants - ~script - ~entrypoint - ~internal - in - let* ticket_table_size_diff, ctxt = - update_script_storage_and_ticket_balances - ctxt - ~self_contract:contract_hash - storage - lazy_storage_diff - ticket_diffs - operations - in - let* ticket_paid_storage_diff, ctxt = - Ticket_balance.adjust_storage_space - ctxt - ~storage_diff:ticket_table_size_diff - in - let* ctxt, new_size, contract_paid_storage_size_diff = - Fees.record_paid_storage_space ctxt contract_hash - in - let* originated_contracts = - Contract.originated_from_current_nonce - ~since:before_operation - ~until:ctxt - in - let*? ctxt = - Script_cache.update - ctxt - cache_key - ( {script with storage = Script.lazy_expr storage}, - updated_cached_script ) - updated_size - in - let result = - Transaction_to_contract_result - { - storage = Some storage; - lazy_storage_diff; - balance_updates; - ticket_receipt; - originated_contracts; - consumed_gas = Gas.consumed ~since:before_operation ~until:ctxt; - storage_size = new_size; - paid_storage_size_diff = - Z.add contract_paid_storage_size_diff ticket_paid_storage_diff; - allocated_destination_contract = false; - } - in - return (ctxt, result, operations) + (* [Token.transfer], which is being called before, already loads this value into + the Irmin cache, so no need to burn gas for it. *) + let* balance = Contract.get_balance ctxt contract in + let now = Script_timestamp.now ctxt in + let level = + (Level.current ctxt).level |> Raw_level.to_int32 |> Script_int.of_int32 + |> Script_int.abs + in + let step_constants = + let open Script_interpreter in + {sender; payer; self = contract_hash; amount; chain_id; balance; now; level} + in + let execute = + match parameter with + | Untyped_arg parameter -> Script_interpreter.execute ~parameter + | Typed_arg (location, parameter_ty, parameter) -> + Script_interpreter.execute_with_typed_parameter + ~location + ~parameter_ty + ~parameter + in + let cached_script = Some script_ir in + let* ( { + script = updated_cached_script; + code_size = updated_size; + storage; + lazy_storage_diff; + operations; + ticket_diffs; + ticket_receipt; + }, + ctxt ) = + execute + ctxt + ~cached_script + Optimized + step_constants + ~script + ~entrypoint + ~internal + in + let* ticket_table_size_diff, ctxt = + update_script_storage_and_ticket_balances + ctxt + ~self_contract:contract_hash + storage + lazy_storage_diff + ticket_diffs + operations + in + let* ticket_paid_storage_diff, ctxt = + Ticket_balance.adjust_storage_space + ctxt + ~storage_diff:ticket_table_size_diff + in + let* ctxt, new_size, contract_paid_storage_size_diff = + Fees.record_paid_storage_space ctxt contract_hash + in + let* originated_contracts = + Contract.originated_from_current_nonce ~since:before_operation ~until:ctxt + in + let*? ctxt = + Script_cache.update + ctxt + cache_key + ({script with storage = Script.lazy_expr storage}, updated_cached_script) + updated_size + in + let result = + Transaction_to_contract_result + { + storage = Some storage; + lazy_storage_diff; + balance_updates; + (* TODO: https://gitlab.com/tezos/tezos/-/issues/6639 + Currently, if both [ticket_receipt_acc] and [ticket_receipt] contain updates + for the same ticket token, the token will appear in a non-optimal, but not wrong, + way in the ticket receipt. See description of #6639 for an example. *) + ticket_receipt = ticket_receipt_acc @ ticket_receipt; + originated_contracts; + consumed_gas = Gas.consumed ~since:before_operation ~until:ctxt; + storage_size = new_size; + paid_storage_size_diff = + Z.( + add + paid_storage_diff_acc + (add contract_paid_storage_size_diff ticket_paid_storage_diff)); + allocated_destination_contract = false; + } + in + return (ctxt, result, operations) let apply_origination ~ctxt ~storage_type ~storage ~unparsed_code ~contract:contract_hash ~delegate ~sender ~credit ~before_operation = @@ -760,6 +751,13 @@ let assert_sender_is_contract = | Destination.Contract sender -> return sender | sender -> tzfail (Invalid_sender sender) +let find_contract_from_cache ctxt contract_hash = + let open Lwt_result_syntax in + let* ctxt, cache_key, script = Script_cache.find ctxt contract_hash in + match script with + | None -> tzfail (Contract.Non_existing_contract (Originated contract_hash)) + | Some (script, script_ir) -> return (ctxt, (cache_key, script, script_ir)) + let apply_internal_operation_contents : type kind. context -> @@ -828,6 +826,9 @@ let apply_internal_operation_contents : parameters = typed_parameters; unparsed_parameters = _; } -> + let* ctxt, (cache_key, script, script_ir) = + find_contract_from_cache ctxt contract_hash + in let+ ctxt, res, ops = apply_transaction_to_smart_contract ~ctxt @@ -840,6 +841,10 @@ let apply_internal_operation_contents : ~chain_id ~internal:true ~parameter:(Typed_arg (location, parameters_ty, typed_parameters)) + ~script + ~script_ir + ~cache_key + () in (ctxt, ITransaction_result res, ops) | Transaction_to_sc_rollup @@ -1111,18 +1116,78 @@ let apply_manager_operation : ctxt parameters in + let* ctxt, (cache_key, script, script_ir) = + find_contract_from_cache ctxt contract_hash + in let+ ctxt, res, ops = - apply_transaction_to_smart_contract - ~ctxt - ~sender:(Destination.Contract source_contract) - ~contract_hash - ~amount - ~entrypoint - ~before_operation:ctxt_before_op - ~payer:source - ~chain_id - ~internal:false - ~parameter:(Untyped_arg parameters) + if not @@ Constants.direct_ticket_spending_enable ctxt then + apply_transaction_to_smart_contract + ~ctxt + ~sender:(Destination.Contract source_contract) + ~contract_hash + ~amount + ~entrypoint + ~before_operation:ctxt_before_op + ~payer:source + ~chain_id + ~internal:false + ~parameter:(Untyped_arg parameters) + ~script + ~script_ir + ~cache_key + () + else + let (Ex_script (Script {arg_type; entrypoints; _})) = script_ir in + let*? res, ctxt = + Gas_monad.run + ctxt + (Script_ir_translator.find_entrypoint + ~error_details:(Informative ()) + arg_type + entrypoints + entrypoint) + in + let*? (Ex_ty_cstr {ty = parameters_ty; _}) = res in + let* typed_arg, ctxt = + Script_ir_translator.parse_data + ctxt + ~elab_conf:Script_ir_translator_config.(make ~legacy:false ()) + (* FIXME: https://gitlab.com/tezos/tezos/-/issues/2964 + + Setting [allow_forged] to [true] would also enable placing + lazy storage ids in the parameter, which is something we should avoid. + To prevent this, we should split [allow_forged] into something like + [allow_tickets] and [allow_lazy_storage_id]. *) + ~allow_forged:true + parameters_ty + (Micheline.root parameters) + in + let* ctxt, ticket_receipt, paid_storage_diff = + Ticket_transfer.transfer_tickets_in_parameters + ctxt + typed_arg + parameters_ty + ~source:(Contract source_contract) + ~dst:(Contract (Originated contract_hash)) + in + apply_transaction_to_smart_contract + ~ctxt + ~sender:(Destination.Contract source_contract) + ~contract_hash + ~amount + ~entrypoint + ~before_operation:ctxt_before_op + ~payer:source + ~chain_id + ~internal:false + ~parameter: + (Typed_arg (Micheline.dummy_location, parameters_ty, typed_arg)) + ~script + ~script_ir + ~cache_key + ~ticket_receipt_acc:ticket_receipt + ~paid_storage_diff_acc:paid_storage_diff + () in (ctxt, Transaction_result res, ops) | Transfer_ticket {contents; ty; ticketer; amount; destination; entrypoint} diff --git a/src/proto_alpha/lib_protocol/constants_parametric_repr.ml b/src/proto_alpha/lib_protocol/constants_parametric_repr.ml index 0536a4c715408ddab1a73826273914b8c20b5f7c..22fc08cc237c911333938be4325fd50359e02360 100644 --- a/src/proto_alpha/lib_protocol/constants_parametric_repr.ml +++ b/src/proto_alpha/lib_protocol/constants_parametric_repr.ml @@ -207,6 +207,7 @@ type t = { sc_rollup : sc_rollup; zk_rollup : zk_rollup; adaptive_issuance : adaptive_issuance; + direct_ticket_spending_enable : bool; } let sc_rollup_encoding = @@ -515,8 +516,10 @@ let encoding = ( ( c.cache_script_size, c.cache_stake_distribution_cycles, c.cache_sampler_state_cycles ), - (c.dal, ((c.sc_rollup, c.zk_rollup), c.adaptive_issuance)) ) ) - ) ) )) + ( c.dal, + ( (c.sc_rollup, c.zk_rollup), + (c.adaptive_issuance, c.direct_ticket_spending_enable) ) ) + ) ) ) ) )) (fun ( ( preserved_cycles, blocks_per_cycle, blocks_per_commitment, @@ -551,7 +554,10 @@ let encoding = ( ( cache_script_size, cache_stake_distribution_cycles, cache_sampler_state_cycles ), - (dal, ((sc_rollup, zk_rollup), adaptive_issuance)) ) ) ) ) ) -> + ( dal, + ( (sc_rollup, zk_rollup), + (adaptive_issuance, direct_ticket_spending_enable) ) ) ) + ) ) ) ) -> { preserved_cycles; blocks_per_cycle; @@ -591,6 +597,7 @@ let encoding = sc_rollup; zk_rollup; adaptive_issuance; + direct_ticket_spending_enable; }) (merge_objs (obj10 @@ -648,4 +655,6 @@ let encoding = (obj1 (req "dal_parametric" dal_encoding)) (merge_objs (merge_objs sc_rollup_encoding zk_rollup_encoding) - adaptive_issuance_encoding))))))) + (merge_objs + adaptive_issuance_encoding + (obj1 (req "direct_ticket_spending_enable" bool)))))))))) diff --git a/src/proto_alpha/lib_protocol/constants_parametric_repr.mli b/src/proto_alpha/lib_protocol/constants_parametric_repr.mli index ac561e744ed280247e0bb3c509e82be37bd18d94..8ca5465acdf808638c0b7db6185a9ed4833d4691 100644 --- a/src/proto_alpha/lib_protocol/constants_parametric_repr.mli +++ b/src/proto_alpha/lib_protocol/constants_parametric_repr.mli @@ -199,6 +199,7 @@ type t = { sc_rollup : sc_rollup; zk_rollup : zk_rollup; adaptive_issuance : adaptive_issuance; + direct_ticket_spending_enable : bool; } val encoding : t Data_encoding.encoding diff --git a/src/proto_alpha/lib_protocol/constants_storage.ml b/src/proto_alpha/lib_protocol/constants_storage.ml index 2206970b6ecf4018a9e2701138e42714f3e4e984..310e948c075730dd37e46d2f76cd13851c8c19e3 100644 --- a/src/proto_alpha/lib_protocol/constants_storage.ml +++ b/src/proto_alpha/lib_protocol/constants_storage.ml @@ -245,3 +245,6 @@ let adaptive_issuance_activation_vote_enable c = let adaptive_issuance_autostaking_enable c = (adaptive_issuance c).autostaking_enable + +let direct_ticket_spending_enable c = + (Raw_context.constants c).direct_ticket_spending_enable diff --git a/src/proto_alpha/lib_protocol/constants_storage.mli b/src/proto_alpha/lib_protocol/constants_storage.mli index e8a5a0b66479502be7e24983dd51f7ab22dd14a6..790e0ce5fd67c1996db004bb4aecadc06e52623c 100644 --- a/src/proto_alpha/lib_protocol/constants_storage.mli +++ b/src/proto_alpha/lib_protocol/constants_storage.mli @@ -150,3 +150,5 @@ val adaptive_issuance_rewards_params : Raw_context.t -> Constants_parametric_repr.adaptive_rewards_params val adaptive_issuance_autostaking_enable : Raw_context.t -> bool + +val direct_ticket_spending_enable : Raw_context.t -> bool diff --git a/src/proto_alpha/lib_protocol/raw_context.ml b/src/proto_alpha/lib_protocol/raw_context.ml index a5b74587b9666aa99dbeb64e4e04cfdf8f4fb340..8fdb18edd1b142a811222ffe16dc7c4690e63212 100644 --- a/src/proto_alpha/lib_protocol/raw_context.ml +++ b/src/proto_alpha/lib_protocol/raw_context.ml @@ -1111,6 +1111,9 @@ let prepare_first_block ~level ~timestamp chain_id ctxt = Tez_repr.( div_exn c.minimal_stake (limit_of_delegation_over_baking + 1)) in + + let direct_ticket_spending_enable = false in + let constants = Constants_parametric_repr. { @@ -1156,6 +1159,7 @@ let prepare_first_block ~level ~timestamp chain_id ctxt = sc_rollup; zk_rollup; adaptive_issuance; + direct_ticket_spending_enable; } in let*! ctxt = add_constants ctxt constants in diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/dune b/src/proto_alpha/lib_protocol/test/integration/michelson/dune index e30eacc1c5204e9c348ccbd9ef32c6c74a44382b..18fdd0d034c82d8ff71c34427784980af490466e 100644 --- a/src/proto_alpha/lib_protocol/test/integration/michelson/dune +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/dune @@ -54,6 +54,7 @@ test_ticket_operations_diff test_ticket_scanner test_ticket_storage + test_ticket_direct_spending test_typechecking test_lambda_normalization)) diff --git a/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_direct_spending.ml b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_direct_spending.ml new file mode 100644 index 0000000000000000000000000000000000000000..045e6f86fd3c089212d406bc3b3aeed2167d9e41 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/integration/michelson/test_ticket_direct_spending.ml @@ -0,0 +1,177 @@ +(*****************************************************************************) +(* *) +(* SPDX-License-Identifier: MIT *) +(* Copyright (c) 2023 Nomadic Labs *) +(* Copyright (c) 2023 Marigold *) +(* *) +(*****************************************************************************) + +(** Testing + ------- + Component: Tickets, direct spending from implicit accounts + Invocation: dune exec src/proto_alpha/lib_protocol/test/integration/michelson/main.exe \ + -- --file test_ticket_direct_spending.ml + Subject: Test direct spending of tickets from implicit accounts +*) + +open Protocol +open Alpha_context + +let originate_contract ~code ~storage originator block = + let open Lwt_result_syntax in + let storage = Script.lazy_expr (Expr.from_string storage) in + let code = Script.lazy_expr (Expr.toplevel_from_string code) in + let script = Script.{code; storage} in + let* operation, contract_address = + Op.contract_origination ~script (B block) originator + in + let* block = Block.bake ~operation block in + return (contract_address, block) + +let call_contract ~source ~contract ?entrypoint ~arg block = + let open Lwt_result_syntax in + let arg = Script.lazy_expr (Expr.from_string arg) in + let* operation = + Op.transaction + ~parameters:arg + ?entrypoint + (B block) + source + contract + Tez.zero + in + Block.bake ~operation block + +let assert_ticket_balance ~loc ~ticketer ~expected_balance owner block = + let open Lwt_result_wrap_syntax in + let* incr = Incremental.begin_construction block in + let ctxt = Incremental.alpha_ctxt incr in + let token = + Ticket_token.Ex_token + {ticketer; contents_type = Script_typed_ir.unit_t; contents = ()} + in + let*@ key_hash, ctxt = Ticket_balance_key.of_ex_token ctxt ~owner token in + let*@ balance_opt, _ctxt = Ticket_balance.get_balance ctxt key_hash in + let balance = Option.value ~default:Z.zero balance_opt in + Assert.equal_z ~loc balance (Z.of_int expected_balance) + +let ticket_boomerang_script = + {| +# This contract sends back a unit ticket of amount 1 to its sender +parameter unit; +storage unit; +code + { + DROP; + NIL operation; + SENDER; CONTRACT (ticket unit); ASSERT_SOME; + PUSH mutez 0; + PUSH nat 1; UNIT; TICKET; ASSERT_SOME; + TRANSFER_TOKENS; + CONS; + UNIT; SWAP; PAIR + } + |} + +let ticket_consumer_script = + {| +# This contract consumes a unit ticket +parameter (ticket unit); +storage unit; +code + { + CDR; + NIL operation; + PAIR + } +|} + +(** This test validates the transfer of tickets from implicit accounts to originated accounts + using the [Transaction] manager operation. It performs the following steps: + + 1. Deposit a ticket into an implicit account using [ticket_boomerang_script]. + 2. The implicit account then transfers the ticket to [ticket_consumer_script] + using [Transaction]. + 3. The outcome depends [direct_ticket_spending_enable] feature flag: + - If enabled: The ticket transfer should be successful, + resulting in an updated balance in the ticket table. + - If disabled: The transfer attempt should fail, + triggering a [Bad_contract_parameter] error. *) +let test_spending ~direct_ticket_spending_enable () = + let open Lwt_result_syntax in + let constants = + let default_constants = + Tezos_protocol_alpha_parameters.Default_parameters.constants_test + in + { + default_constants with + consensus_threshold = 0; + direct_ticket_spending_enable; + } + in + let* block, (delegate, implicit) = Context.init_with_constants2 constants in + (* Originate a contract sending tickets to whoever ask for them. *) + let* boomerang, block = + originate_contract + ~code:ticket_boomerang_script + ~storage:"Unit" + delegate + block + in + let boomerang_str = Format.asprintf "%a" Contract.pp boomerang in + let* consumer, block = + originate_contract + ~code:ticket_consumer_script + ~storage:"Unit" + delegate + block + in + let* () = + assert_ticket_balance + ~loc:__LOC__ + ~ticketer:boomerang + ~expected_balance:0 + (Destination.Contract implicit) + block + in + let* block = + call_contract ~source:implicit ~contract:boomerang ~arg:"Unit" block + in + let* () = + assert_ticket_balance + ~loc:__LOC__ + ~ticketer:boomerang + ~expected_balance:1 + (Destination.Contract implicit) + block + in + let arg = sf "Pair %S Unit 1" boomerang_str in + if direct_ticket_spending_enable then + let* block = call_contract ~source:implicit ~contract:consumer ~arg block in + assert_ticket_balance + ~loc:__LOC__ + ~ticketer:boomerang + ~expected_balance:0 + (Destination.Contract implicit) + block + else + let*! res = call_contract ~source:implicit ~contract:consumer ~arg block in + Assert.proto_error ~loc:__LOC__ res (function + | Script_interpreter.Bad_contract_parameter _ -> true + | _ -> false) + +let tests = + [ + Tztest.tztest + "Test ticket spending from implicit accounts (feature enabled)" + `Quick + (test_spending ~direct_ticket_spending_enable:true); + Tztest.tztest + "Test ticket spending from implicit accounts (feature disabled)" + `Quick + (test_spending ~direct_ticket_spending_enable:false); + ] + +let () = + Alcotest_lwt.run ~__FILE__ Protocol.name [("ticket direct spending", tests)] + |> Lwt_main.run diff --git a/src/proto_alpha/lib_protocol/ticket_transfer.ml b/src/proto_alpha/lib_protocol/ticket_transfer.ml index 068ccaecbaa16843c2c35080f45cde5f24e9cbdc..2c4ecd3578461cfe2956375541bf072e527d816d 100644 --- a/src/proto_alpha/lib_protocol/ticket_transfer.ml +++ b/src/proto_alpha/lib_protocol/ticket_transfer.ml @@ -108,3 +108,45 @@ let transfer_ticket ctxt ~sender ~dst ex_token qty = Ticket_balance_key.of_ex_token ctxt ~owner:dst ex_token in transfer_ticket_with_hashes ctxt ~sender_hash ~dst_hash qty + +let transfer_tickets_in_parameters ctxt parameter parameter_ty ~source ~dst = + let open Lwt_result_syntax in + let*? has_tickets, ctxt = Ticket_scanner.type_has_tickets ctxt parameter_ty in + let* tickets, ctxt = + Ticket_scanner.tickets_of_value + ~include_lazy:true + ctxt + has_tickets + parameter + in + let* ctxt, ticket_receipt, paid_storage_diff = + List.fold_left_es + (fun (ctxt, ticket_receipt_acc, paid_storage_diff_acc) ticket -> + let ticket_token, amount = + Ticket_scanner.ex_token_and_amount_of_ex_ticket ticket + in + let* ctxt, paid_storage_diff = + transfer_ticket ctxt ~sender:source ~dst ticket_token amount + in + let* ticket_token, ctxt = + Ticket_token_unparser.unparse ctxt ticket_token + in + let amount = Script_int.(to_zint (amount :> n num)) in + let ticket_receipt_item = + Ticket_receipt. + { + ticket_token; + updates = [{account = source; amount = Z.neg amount}]; + (* We only handle negation from the [source] in this receipt. + The addition to [dst] will be taken into account in the receipts + generated from the subsequent contract execution. *) + } + in + return + ( ctxt, + ticket_receipt_item :: ticket_receipt_acc, + Z.add paid_storage_diff_acc paid_storage_diff )) + (ctxt, [], Z.zero) + tickets + in + return (ctxt, ticket_receipt, paid_storage_diff) diff --git a/src/proto_alpha/lib_protocol/ticket_transfer.mli b/src/proto_alpha/lib_protocol/ticket_transfer.mli index f80dd154bb5fdaac7bff00df4a96d2e233ae8246..09f10cfce59eaa489163be6135d1cbfea78b7b43 100644 --- a/src/proto_alpha/lib_protocol/ticket_transfer.mli +++ b/src/proto_alpha/lib_protocol/ticket_transfer.mli @@ -88,3 +88,16 @@ val transfer_ticket : Ticket_token.ex_token -> Ticket_amount.t -> (context * Z.t, error trace) result Lwt.t + +(** [transfer_tickets_in_parameters ctxt param param_ty ~source ~dst] + Scans the [param] for tickets and transfers ownership of those tickets + from [source] to [dst] by updating the ticket table. The function returns + the updated context, the ticket receipt, and the number of newly allocated + bytes for the ticket table. *) +val transfer_tickets_in_parameters : + context -> + 'a -> + ('a, 'b) Script_typed_ir.ty -> + source:Destination.t -> + dst:Destination.t -> + (context * Ticket_receipt.t * Z.t, error trace) result Lwt.t diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode client) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode client) RPC regression tests- misc_protocol.out index 64d6621e330eecd178ef88ac186beaccfc7740f7..b54b3e662958c58e0826aa6d4c707e522792ba76 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode client) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode client) RPC regression tests- misc_protocol.out @@ -67,7 +67,7 @@ "center_dz": { "numerator": "1", "denominator": "2" }, "radius_dz": { "numerator": "1", "denominator": "50" } }, "adaptive_issuance_activation_vote_enable": false, - "autostaking_enable": true } + "autostaking_enable": true, "direct_ticket_spending_enable": false } ./octez-client rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 2, "delegate": "[PUBLIC_KEY_HASH]", diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode light) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode light) RPC regression tests- misc_protocol.out index b593ffc0aae52d368d413f87ad786a02bb112285..5ea2c80b08fba4597e8481e128818a3affd6f86c 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode light) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode light) RPC regression tests- misc_protocol.out @@ -67,7 +67,7 @@ "center_dz": { "numerator": "1", "denominator": "2" }, "radius_dz": { "numerator": "1", "denominator": "50" } }, "adaptive_issuance_activation_vote_enable": false, - "autostaking_enable": true } + "autostaking_enable": true, "direct_ticket_spending_enable": false } ./octez-client --mode light rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 2, "delegate": "[PUBLIC_KEY_HASH]", diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy) RPC regression tests- misc_protocol.out index 67cab2a344269575ec3354649019b57a28d0cd7b..350a7bb0a3683b05f5dce51bce3eb64e45a0a20a 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy) RPC regression tests- misc_protocol.out @@ -67,7 +67,7 @@ "center_dz": { "numerator": "1", "denominator": "2" }, "radius_dz": { "numerator": "1", "denominator": "50" } }, "adaptive_issuance_activation_vote_enable": false, - "autostaking_enable": true } + "autostaking_enable": true, "direct_ticket_spending_enable": false } ./octez-client --mode proxy rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 2, "delegate": "[PUBLIC_KEY_HASH]", diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_data_dir) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_data_dir) RPC regression tests- misc_protocol.out index 30cfa92687c13d56093f8604e4bfdec658ee5613..67f9cff99c96b8d0e5b2b14fb86eea45fd47807f 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_data_dir) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_data_dir) RPC regression tests- misc_protocol.out @@ -67,7 +67,7 @@ "center_dz": { "numerator": "1", "denominator": "2" }, "radius_dz": { "numerator": "1", "denominator": "50" } }, "adaptive_issuance_activation_vote_enable": false, - "autostaking_enable": true } + "autostaking_enable": true, "direct_ticket_spending_enable": false } ./octez-client rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 3, "delegate": "[PUBLIC_KEY_HASH]", diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_rpc) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_rpc) RPC regression tests- misc_protocol.out index 30cfa92687c13d56093f8604e4bfdec658ee5613..67f9cff99c96b8d0e5b2b14fb86eea45fd47807f 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_rpc) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_rpc) RPC regression tests- misc_protocol.out @@ -67,7 +67,7 @@ "center_dz": { "numerator": "1", "denominator": "2" }, "radius_dz": { "numerator": "1", "denominator": "50" } }, "adaptive_issuance_activation_vote_enable": false, - "autostaking_enable": true } + "autostaking_enable": true, "direct_ticket_spending_enable": false } ./octez-client rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 3, "delegate": "[PUBLIC_KEY_HASH]", diff --git a/tezt/tests/expected/contract_typecheck_regression.ml/Alpha- Tc scripts.out b/tezt/tests/expected/contract_typecheck_regression.ml/Alpha- Tc scripts.out index d13631f84ea6a8b4a061673be0e39893e9e994ca..2e50248456b9028bb1d217a3ca215249786c9d88 100644 --- a/tezt/tests/expected/contract_typecheck_regression.ml/Alpha- Tc scripts.out +++ b/tezt/tests/expected/contract_typecheck_regression.ml/Alpha- Tc scripts.out @@ -1,5 +1,5 @@ -./octez-client --protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK --mode mockup --no-base-dir-warnings typecheck script michelson_test_scripts/attic/accounts.tz michelson_test_scripts/attic/add1.tz michelson_test_scripts/attic/add1_list.tz michelson_test_scripts/attic/after_strategy.tz michelson_test_scripts/attic/always.tz michelson_test_scripts/attic/append.tz michelson_test_scripts/attic/at_least.tz michelson_test_scripts/attic/auction.tz michelson_test_scripts/attic/bad_lockup.tz michelson_test_scripts/attic/big_map_union.tz michelson_test_scripts/attic/cadr_annotation.tz michelson_test_scripts/attic/concat.tz michelson_test_scripts/attic/conditionals.tz michelson_test_scripts/attic/cons_twice.tz michelson_test_scripts/attic/cps_fact.tz michelson_test_scripts/attic/create_add1_lists.tz michelson_test_scripts/attic/data_publisher.tz michelson_test_scripts/attic/dispatch.tz michelson_test_scripts/attic/empty.tz michelson_test_scripts/attic/fail_amount.tz michelson_test_scripts/attic/faucet.tz michelson_test_scripts/attic/forward.tz michelson_test_scripts/attic/id.tz michelson_test_scripts/attic/infinite_loop.tz michelson_test_scripts/attic/insertion_sort.tz michelson_test_scripts/attic/int_publisher.tz michelson_test_scripts/attic/king_of_tez.tz michelson_test_scripts/attic/list_of_transactions.tz michelson_test_scripts/attic/queue.tz michelson_test_scripts/attic/reduce_map.tz michelson_test_scripts/attic/reentrancy.tz michelson_test_scripts/attic/reservoir.tz michelson_test_scripts/attic/scrutable_reservoir.tz michelson_test_scripts/attic/spawn_identities.tz michelson_test_scripts/entrypoints/big_map_entrypoints.tz michelson_test_scripts/entrypoints/delegatable_target.tz michelson_test_scripts/entrypoints/manager.tz michelson_test_scripts/entrypoints/no_default_target.tz michelson_test_scripts/entrypoints/no_entrypoint_target.tz michelson_test_scripts/entrypoints/rooted_target.tz michelson_test_scripts/entrypoints/simple_entrypoints.tz michelson_test_scripts/macros/assert.tz michelson_test_scripts/macros/assert_cmpeq.tz michelson_test_scripts/macros/assert_cmpge.tz michelson_test_scripts/macros/assert_cmpgt.tz michelson_test_scripts/macros/assert_cmple.tz michelson_test_scripts/macros/assert_cmplt.tz michelson_test_scripts/macros/assert_cmpneq.tz michelson_test_scripts/macros/assert_eq.tz michelson_test_scripts/macros/assert_ge.tz michelson_test_scripts/macros/assert_gt.tz michelson_test_scripts/macros/assert_le.tz michelson_test_scripts/macros/assert_lt.tz michelson_test_scripts/macros/assert_neq.tz michelson_test_scripts/macros/big_map_get_add.tz michelson_test_scripts/macros/big_map_mem.tz michelson_test_scripts/macros/build_list.tz michelson_test_scripts/macros/carn_and_cdrn.tz michelson_test_scripts/macros/compare.tz michelson_test_scripts/macros/compare_bytes.tz michelson_test_scripts/macros/fail.tz michelson_test_scripts/macros/guestbook.tz michelson_test_scripts/macros/macro_annotations.tz michelson_test_scripts/macros/map_caddaadr.tz michelson_test_scripts/macros/max_in_list.tz michelson_test_scripts/macros/min.tz michelson_test_scripts/macros/pair_macro.tz michelson_test_scripts/macros/set_caddaadr.tz michelson_test_scripts/macros/take_my_money.tz michelson_test_scripts/macros/unpair_macro.tz michelson_test_scripts/mini_scenarios/999_constant.tz michelson_test_scripts/mini_scenarios/add_clear_tickets_015.tz michelson_test_scripts/mini_scenarios/always_fails.tz michelson_test_scripts/mini_scenarios/authentication.tz michelson_test_scripts/mini_scenarios/big_map_all.tz michelson_test_scripts/mini_scenarios/big_map_entrypoints.tz michelson_test_scripts/mini_scenarios/big_map_magic.tz michelson_test_scripts/mini_scenarios/big_map_read.tz michelson_test_scripts/mini_scenarios/big_map_store.tz michelson_test_scripts/mini_scenarios/big_map_write.tz michelson_test_scripts/mini_scenarios/cache_consistency.tz michelson_test_scripts/mini_scenarios/check_signature.tz michelson_test_scripts/mini_scenarios/constant_entrypoints.tz michelson_test_scripts/mini_scenarios/constant_unit.tz michelson_test_scripts/mini_scenarios/create_contract.tz michelson_test_scripts/mini_scenarios/create_contract_simple.tz michelson_test_scripts/mini_scenarios/default_account.tz michelson_test_scripts/mini_scenarios/emit_events.tz michelson_test_scripts/mini_scenarios/execution_order_appender.tz michelson_test_scripts/mini_scenarios/execution_order_caller.tz michelson_test_scripts/mini_scenarios/execution_order_storer.tz michelson_test_scripts/mini_scenarios/fa12_reference.tz michelson_test_scripts/mini_scenarios/fail_on_false.tz michelson_test_scripts/mini_scenarios/generic_multisig.tz michelson_test_scripts/mini_scenarios/groth16.tz michelson_test_scripts/mini_scenarios/hardlimit.tz michelson_test_scripts/mini_scenarios/large_error.tz michelson_test_scripts/mini_scenarios/large_flat_contract.tz michelson_test_scripts/mini_scenarios/large_str_id.tz michelson_test_scripts/mini_scenarios/legacy_multisig.tz michelson_test_scripts/mini_scenarios/lockup.tz michelson_test_scripts/mini_scenarios/loop.tz michelson_test_scripts/mini_scenarios/lqt_fa12.mligo.tz michelson_test_scripts/mini_scenarios/multiple_en2.tz michelson_test_scripts/mini_scenarios/multiple_entrypoints_counter.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint_arg.tz michelson_test_scripts/mini_scenarios/nat_id.tz michelson_test_scripts/mini_scenarios/noop_bytes.tz michelson_test_scripts/mini_scenarios/originate_contract.tz michelson_test_scripts/mini_scenarios/parameterized_multisig.tz michelson_test_scripts/mini_scenarios/parsable_contract.tz michelson_test_scripts/mini_scenarios/receive_tickets_in_big_map.tz michelson_test_scripts/mini_scenarios/replay.tz michelson_test_scripts/mini_scenarios/reveal_signed_preimage.tz michelson_test_scripts/mini_scenarios/sc_rollup_forward.tz michelson_test_scripts/mini_scenarios/sc_rollup_mint_and_forward.tz michelson_test_scripts/mini_scenarios/self_address_receiver.tz michelson_test_scripts/mini_scenarios/self_address_sender.tz michelson_test_scripts/mini_scenarios/send_ticket_list_016.tz michelson_test_scripts/mini_scenarios/send_ticket_list_multiple_016.tz michelson_test_scripts/mini_scenarios/send_tickets_from_storage_016.tz michelson_test_scripts/mini_scenarios/send_tickets_in_big_map_015.tz michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz michelson_test_scripts/mini_scenarios/str_id.tz michelson_test_scripts/mini_scenarios/ticket_builder_fungible.tz michelson_test_scripts/mini_scenarios/ticket_builder_non_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_non_fungible.tz michelson_test_scripts/mini_scenarios/tickets_015.tz michelson_test_scripts/mini_scenarios/tickets_bag_016.tz michelson_test_scripts/mini_scenarios/tickets_bag_implicit_016.tz michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz michelson_test_scripts/mini_scenarios/tickets_send_016.tz michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz michelson_test_scripts/mini_scenarios/tickets_store_fst_and_rely_snd.tz michelson_test_scripts/mini_scenarios/tzip4_view.tz michelson_test_scripts/mini_scenarios/very_small.tz michelson_test_scripts/mini_scenarios/view_check_caller.tz michelson_test_scripts/mini_scenarios/view_registers_callers.tz michelson_test_scripts/mini_scenarios/viewable.tz michelson_test_scripts/mini_scenarios/vote_for_delegate.tz michelson_test_scripts/mini_scenarios/weather_insurance.tz michelson_test_scripts/mini_scenarios/xcat.tz michelson_test_scripts/mini_scenarios/xcat_dapp.tz michelson_test_scripts/non_regression/262_bug.tz michelson_test_scripts/non_regression/843_bug.tz michelson_test_scripts/non_regression/bad_annot_contract.tz michelson_test_scripts/non_regression/pairk_annot.tz michelson_test_scripts/opcodes/abs.tz michelson_test_scripts/opcodes/add.tz michelson_test_scripts/opcodes/add_bls12_381_fr.tz michelson_test_scripts/opcodes/add_bls12_381_g1.tz michelson_test_scripts/opcodes/add_bls12_381_g2.tz michelson_test_scripts/opcodes/add_delta_timestamp.tz michelson_test_scripts/opcodes/add_timestamp_delta.tz michelson_test_scripts/opcodes/address.tz michelson_test_scripts/opcodes/amount_after_fib_view.tz michelson_test_scripts/opcodes/amount_after_nonexistent_view.tz michelson_test_scripts/opcodes/amount_after_view.tz michelson_test_scripts/opcodes/and.tz michelson_test_scripts/opcodes/and_binary.tz michelson_test_scripts/opcodes/and_bytes_016.tz michelson_test_scripts/opcodes/and_logical_1.tz michelson_test_scripts/opcodes/balance.tz michelson_test_scripts/opcodes/balance_after_fib_view.tz michelson_test_scripts/opcodes/balance_after_nonexistent_view.tz michelson_test_scripts/opcodes/balance_after_view.tz michelson_test_scripts/opcodes/big_map_mem_nat.tz michelson_test_scripts/opcodes/big_map_mem_string.tz michelson_test_scripts/opcodes/big_map_to_self.tz michelson_test_scripts/opcodes/bls12_381_fr_push_bytes_not_padded.tz michelson_test_scripts/opcodes/bls12_381_fr_push_nat.tz michelson_test_scripts/opcodes/bls12_381_fr_to_int.tz michelson_test_scripts/opcodes/bls12_381_fr_to_mutez.tz michelson_test_scripts/opcodes/bls12_381_fr_z_int.tz michelson_test_scripts/opcodes/bls12_381_fr_z_nat.tz michelson_test_scripts/opcodes/bls12_381_z_fr_int.tz michelson_test_scripts/opcodes/bls12_381_z_fr_nat.tz michelson_test_scripts/opcodes/bytes.tz michelson_test_scripts/opcodes/bytes_of_int_016.tz michelson_test_scripts/opcodes/bytes_of_nat_016.tz michelson_test_scripts/opcodes/car.tz michelson_test_scripts/opcodes/cdr.tz michelson_test_scripts/opcodes/chain_id.tz michelson_test_scripts/opcodes/chain_id_store.tz michelson_test_scripts/opcodes/check_signature.tz michelson_test_scripts/opcodes/comb.tz michelson_test_scripts/opcodes/comb-get.tz michelson_test_scripts/opcodes/comb-literals.tz michelson_test_scripts/opcodes/comb-set.tz michelson_test_scripts/opcodes/comb-set-2.tz michelson_test_scripts/opcodes/compare.tz michelson_test_scripts/opcodes/compare_big_type.tz michelson_test_scripts/opcodes/compare_big_type2.tz michelson_test_scripts/opcodes/comparisons.tz michelson_test_scripts/opcodes/concat_hello.tz michelson_test_scripts/opcodes/concat_hello_bytes.tz michelson_test_scripts/opcodes/concat_list.tz michelson_test_scripts/opcodes/cons.tz michelson_test_scripts/opcodes/contains_all.tz michelson_test_scripts/opcodes/contract.tz michelson_test_scripts/opcodes/create_contract.tz michelson_test_scripts/opcodes/create_contract_rootname.tz michelson_test_scripts/opcodes/create_contract_rootname_alt.tz michelson_test_scripts/opcodes/create_contract_with_view.tz michelson_test_scripts/opcodes/diff_timestamps.tz michelson_test_scripts/opcodes/dig_eq.tz michelson_test_scripts/opcodes/dign.tz michelson_test_scripts/opcodes/dip.tz michelson_test_scripts/opcodes/dipn.tz michelson_test_scripts/opcodes/dropn.tz michelson_test_scripts/opcodes/dugn.tz michelson_test_scripts/opcodes/dup-n.tz michelson_test_scripts/opcodes/ediv.tz michelson_test_scripts/opcodes/ediv_mutez.tz michelson_test_scripts/opcodes/emit.tz michelson_test_scripts/opcodes/empty_map.tz michelson_test_scripts/opcodes/exec_concat.tz michelson_test_scripts/opcodes/fact.tz michelson_test_scripts/opcodes/first.tz michelson_test_scripts/opcodes/get_and_update_big_map.tz michelson_test_scripts/opcodes/get_and_update_map.tz michelson_test_scripts/opcodes/get_big_map_value.tz michelson_test_scripts/opcodes/get_map_value.tz michelson_test_scripts/opcodes/hash_consistency_checker.tz michelson_test_scripts/opcodes/hash_key.tz michelson_test_scripts/opcodes/hash_string.tz michelson_test_scripts/opcodes/if.tz michelson_test_scripts/opcodes/if_some.tz michelson_test_scripts/opcodes/int.tz michelson_test_scripts/opcodes/iter_fail.tz michelson_test_scripts/opcodes/keccak.tz michelson_test_scripts/opcodes/left_right.tz michelson_test_scripts/opcodes/level.tz michelson_test_scripts/opcodes/list_concat.tz michelson_test_scripts/opcodes/list_concat_bytes.tz michelson_test_scripts/opcodes/list_id.tz michelson_test_scripts/opcodes/list_id_map.tz michelson_test_scripts/opcodes/list_iter.tz michelson_test_scripts/opcodes/list_map_block.tz michelson_test_scripts/opcodes/list_size.tz michelson_test_scripts/opcodes/loop_failwith.tz michelson_test_scripts/opcodes/loop_left.tz michelson_test_scripts/opcodes/loop_left_failwith.tz michelson_test_scripts/opcodes/lsl_bytes_016.tz michelson_test_scripts/opcodes/lsr_bytes_016.tz michelson_test_scripts/opcodes/map_car.tz michelson_test_scripts/opcodes/map_id.tz michelson_test_scripts/opcodes/map_iter.tz michelson_test_scripts/opcodes/map_map.tz michelson_test_scripts/opcodes/map_map_sideeffect.tz michelson_test_scripts/opcodes/map_mem_nat.tz michelson_test_scripts/opcodes/map_mem_string.tz michelson_test_scripts/opcodes/map_size.tz michelson_test_scripts/opcodes/merge_comparable_pairs.tz michelson_test_scripts/opcodes/mul.tz michelson_test_scripts/opcodes/mul_bls12_381_fr.tz michelson_test_scripts/opcodes/mul_bls12_381_g1.tz michelson_test_scripts/opcodes/mul_bls12_381_g2.tz michelson_test_scripts/opcodes/mul_overflow.tz michelson_test_scripts/opcodes/munch.tz michelson_test_scripts/opcodes/mutez_to_bls12_381_fr.tz michelson_test_scripts/opcodes/neg.tz michelson_test_scripts/opcodes/neg_bls12_381_fr.tz michelson_test_scripts/opcodes/neg_bls12_381_g1.tz michelson_test_scripts/opcodes/neg_bls12_381_g2.tz michelson_test_scripts/opcodes/none.tz michelson_test_scripts/opcodes/noop.tz michelson_test_scripts/opcodes/not.tz michelson_test_scripts/opcodes/not_binary.tz michelson_test_scripts/opcodes/not_bytes_016.tz michelson_test_scripts/opcodes/or.tz michelson_test_scripts/opcodes/or_binary.tz michelson_test_scripts/opcodes/or_bytes_016.tz michelson_test_scripts/opcodes/originate_big_map.tz michelson_test_scripts/opcodes/packunpack.tz michelson_test_scripts/opcodes/packunpack_rev.tz michelson_test_scripts/opcodes/packunpack_rev_cty.tz michelson_test_scripts/opcodes/pair_id.tz michelson_test_scripts/opcodes/pairing_check.tz michelson_test_scripts/opcodes/pexec.tz michelson_test_scripts/opcodes/pexec_2.tz michelson_test_scripts/opcodes/proxy.tz michelson_test_scripts/opcodes/ret_int.tz michelson_test_scripts/opcodes/reverse.tz michelson_test_scripts/opcodes/reverse_loop.tz michelson_test_scripts/opcodes/sapling_empty_state.tz michelson_test_scripts/opcodes/self.tz michelson_test_scripts/opcodes/self_address.tz michelson_test_scripts/opcodes/self_address_after_fib_view.tz michelson_test_scripts/opcodes/self_address_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_address_after_view.tz michelson_test_scripts/opcodes/self_after_fib_view.tz michelson_test_scripts/opcodes/self_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_after_view.tz michelson_test_scripts/opcodes/self_with_default_entrypoint.tz michelson_test_scripts/opcodes/self_with_entrypoint.tz michelson_test_scripts/opcodes/sender.tz michelson_test_scripts/opcodes/sender_after_fib_view.tz michelson_test_scripts/opcodes/sender_after_nonexistent_view.tz michelson_test_scripts/opcodes/sender_after_view.tz michelson_test_scripts/opcodes/set_car.tz michelson_test_scripts/opcodes/set_cdr.tz michelson_test_scripts/opcodes/set_delegate.tz michelson_test_scripts/opcodes/set_id.tz michelson_test_scripts/opcodes/set_iter.tz michelson_test_scripts/opcodes/set_member.tz michelson_test_scripts/opcodes/set_size.tz michelson_test_scripts/opcodes/sets.tz michelson_test_scripts/opcodes/sha3.tz michelson_test_scripts/opcodes/shifts.tz michelson_test_scripts/opcodes/slice.tz michelson_test_scripts/opcodes/slice_bytes.tz michelson_test_scripts/opcodes/slices.tz michelson_test_scripts/opcodes/source.tz michelson_test_scripts/opcodes/split_bytes.tz michelson_test_scripts/opcodes/split_string.tz michelson_test_scripts/opcodes/store_bls12_381_fr.tz michelson_test_scripts/opcodes/store_bls12_381_g1.tz michelson_test_scripts/opcodes/store_bls12_381_g2.tz michelson_test_scripts/opcodes/store_input.tz michelson_test_scripts/opcodes/store_now.tz michelson_test_scripts/opcodes/str_id.tz michelson_test_scripts/opcodes/sub_timestamp_delta.tz michelson_test_scripts/opcodes/subset.tz michelson_test_scripts/opcodes/tez_add_sub.tz michelson_test_scripts/opcodes/ticket_bad.tz michelson_test_scripts/opcodes/ticket_big_store.tz michelson_test_scripts/opcodes/ticket_join.tz michelson_test_scripts/opcodes/ticket_read.tz michelson_test_scripts/opcodes/ticket_split.tz michelson_test_scripts/opcodes/ticket_store.tz michelson_test_scripts/opcodes/ticket_store-2.tz michelson_test_scripts/opcodes/ticketer.tz michelson_test_scripts/opcodes/ticketer-2.tz michelson_test_scripts/opcodes/transfer_amount.tz michelson_test_scripts/opcodes/transfer_tokens.tz michelson_test_scripts/opcodes/uncomb.tz michelson_test_scripts/opcodes/unpair.tz michelson_test_scripts/opcodes/unpair_field_annotation_mismatch.tz michelson_test_scripts/opcodes/update_big_map.tz michelson_test_scripts/opcodes/utxo_read.tz michelson_test_scripts/opcodes/utxor.tz michelson_test_scripts/opcodes/view_fib.tz michelson_test_scripts/opcodes/view_mutual_recursion.tz michelson_test_scripts/opcodes/view_op_add.tz michelson_test_scripts/opcodes/view_op_constant.tz michelson_test_scripts/opcodes/view_op_id.tz michelson_test_scripts/opcodes/view_op_nonexistent_addr.tz michelson_test_scripts/opcodes/view_op_nonexistent_func.tz michelson_test_scripts/opcodes/view_op_test_step_contants.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_input_type.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_output_type.tz michelson_test_scripts/opcodes/view_rec.tz michelson_test_scripts/opcodes/view_toplevel_lib.tz michelson_test_scripts/opcodes/voting_power.tz michelson_test_scripts/opcodes/xor.tz michelson_test_scripts/opcodes/xor_bytes_016.tz --details --display-names +./octez-client --protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK --mode mockup --no-base-dir-warnings typecheck script michelson_test_scripts/attic/accounts.tz michelson_test_scripts/attic/add1.tz michelson_test_scripts/attic/add1_list.tz michelson_test_scripts/attic/after_strategy.tz michelson_test_scripts/attic/always.tz michelson_test_scripts/attic/append.tz michelson_test_scripts/attic/at_least.tz michelson_test_scripts/attic/auction.tz michelson_test_scripts/attic/bad_lockup.tz michelson_test_scripts/attic/big_map_union.tz michelson_test_scripts/attic/cadr_annotation.tz michelson_test_scripts/attic/concat.tz michelson_test_scripts/attic/conditionals.tz michelson_test_scripts/attic/cons_twice.tz michelson_test_scripts/attic/cps_fact.tz michelson_test_scripts/attic/create_add1_lists.tz michelson_test_scripts/attic/data_publisher.tz michelson_test_scripts/attic/dispatch.tz michelson_test_scripts/attic/empty.tz michelson_test_scripts/attic/fail_amount.tz michelson_test_scripts/attic/faucet.tz michelson_test_scripts/attic/forward.tz michelson_test_scripts/attic/id.tz michelson_test_scripts/attic/infinite_loop.tz michelson_test_scripts/attic/insertion_sort.tz michelson_test_scripts/attic/int_publisher.tz michelson_test_scripts/attic/king_of_tez.tz michelson_test_scripts/attic/list_of_transactions.tz michelson_test_scripts/attic/queue.tz michelson_test_scripts/attic/reduce_map.tz michelson_test_scripts/attic/reentrancy.tz michelson_test_scripts/attic/reservoir.tz michelson_test_scripts/attic/scrutable_reservoir.tz michelson_test_scripts/attic/spawn_identities.tz michelson_test_scripts/entrypoints/big_map_entrypoints.tz michelson_test_scripts/entrypoints/delegatable_target.tz michelson_test_scripts/entrypoints/manager.tz michelson_test_scripts/entrypoints/no_default_target.tz michelson_test_scripts/entrypoints/no_entrypoint_target.tz michelson_test_scripts/entrypoints/rooted_target.tz michelson_test_scripts/entrypoints/simple_entrypoints.tz michelson_test_scripts/macros/assert.tz michelson_test_scripts/macros/assert_cmpeq.tz michelson_test_scripts/macros/assert_cmpge.tz michelson_test_scripts/macros/assert_cmpgt.tz michelson_test_scripts/macros/assert_cmple.tz michelson_test_scripts/macros/assert_cmplt.tz michelson_test_scripts/macros/assert_cmpneq.tz michelson_test_scripts/macros/assert_eq.tz michelson_test_scripts/macros/assert_ge.tz michelson_test_scripts/macros/assert_gt.tz michelson_test_scripts/macros/assert_le.tz michelson_test_scripts/macros/assert_lt.tz michelson_test_scripts/macros/assert_neq.tz michelson_test_scripts/macros/big_map_get_add.tz michelson_test_scripts/macros/big_map_mem.tz michelson_test_scripts/macros/build_list.tz michelson_test_scripts/macros/carn_and_cdrn.tz michelson_test_scripts/macros/compare.tz michelson_test_scripts/macros/compare_bytes.tz michelson_test_scripts/macros/fail.tz michelson_test_scripts/macros/guestbook.tz michelson_test_scripts/macros/macro_annotations.tz michelson_test_scripts/macros/map_caddaadr.tz michelson_test_scripts/macros/max_in_list.tz michelson_test_scripts/macros/min.tz michelson_test_scripts/macros/pair_macro.tz michelson_test_scripts/macros/set_caddaadr.tz michelson_test_scripts/macros/take_my_money.tz michelson_test_scripts/macros/unpair_macro.tz michelson_test_scripts/mini_scenarios/999_constant.tz michelson_test_scripts/mini_scenarios/add_clear_tickets_015.tz michelson_test_scripts/mini_scenarios/always_fails.tz michelson_test_scripts/mini_scenarios/authentication.tz michelson_test_scripts/mini_scenarios/big_map_all.tz michelson_test_scripts/mini_scenarios/big_map_entrypoints.tz michelson_test_scripts/mini_scenarios/big_map_magic.tz michelson_test_scripts/mini_scenarios/big_map_read.tz michelson_test_scripts/mini_scenarios/big_map_store.tz michelson_test_scripts/mini_scenarios/big_map_write.tz michelson_test_scripts/mini_scenarios/cache_consistency.tz michelson_test_scripts/mini_scenarios/check_signature.tz michelson_test_scripts/mini_scenarios/constant_entrypoints.tz michelson_test_scripts/mini_scenarios/constant_unit.tz michelson_test_scripts/mini_scenarios/create_contract.tz michelson_test_scripts/mini_scenarios/create_contract_simple.tz michelson_test_scripts/mini_scenarios/default_account.tz michelson_test_scripts/mini_scenarios/emit_events.tz michelson_test_scripts/mini_scenarios/execution_order_appender.tz michelson_test_scripts/mini_scenarios/execution_order_caller.tz michelson_test_scripts/mini_scenarios/execution_order_storer.tz michelson_test_scripts/mini_scenarios/fa12_reference.tz michelson_test_scripts/mini_scenarios/fail_on_false.tz michelson_test_scripts/mini_scenarios/generic_multisig.tz michelson_test_scripts/mini_scenarios/groth16.tz michelson_test_scripts/mini_scenarios/hardlimit.tz michelson_test_scripts/mini_scenarios/large_error.tz michelson_test_scripts/mini_scenarios/large_flat_contract.tz michelson_test_scripts/mini_scenarios/large_str_id.tz michelson_test_scripts/mini_scenarios/legacy_multisig.tz michelson_test_scripts/mini_scenarios/lockup.tz michelson_test_scripts/mini_scenarios/loop.tz michelson_test_scripts/mini_scenarios/lqt_fa12.mligo.tz michelson_test_scripts/mini_scenarios/multiple_en2.tz michelson_test_scripts/mini_scenarios/multiple_entrypoints_counter.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint_arg.tz michelson_test_scripts/mini_scenarios/nat_id.tz michelson_test_scripts/mini_scenarios/noop_bytes.tz michelson_test_scripts/mini_scenarios/originate_contract.tz michelson_test_scripts/mini_scenarios/parameterized_multisig.tz michelson_test_scripts/mini_scenarios/parsable_contract.tz michelson_test_scripts/mini_scenarios/receive_tickets_in_big_map.tz michelson_test_scripts/mini_scenarios/replay.tz michelson_test_scripts/mini_scenarios/reveal_signed_preimage.tz michelson_test_scripts/mini_scenarios/sc_rollup_forward.tz michelson_test_scripts/mini_scenarios/sc_rollup_mint_and_forward.tz michelson_test_scripts/mini_scenarios/self_address_receiver.tz michelson_test_scripts/mini_scenarios/self_address_sender.tz michelson_test_scripts/mini_scenarios/send_ticket_list_016.tz michelson_test_scripts/mini_scenarios/send_ticket_list_multiple_016.tz michelson_test_scripts/mini_scenarios/send_tickets_from_storage_016.tz michelson_test_scripts/mini_scenarios/send_tickets_in_big_map_015.tz michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz michelson_test_scripts/mini_scenarios/str_id.tz michelson_test_scripts/mini_scenarios/ticket_builder_fungible.tz michelson_test_scripts/mini_scenarios/ticket_builder_non_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_non_fungible.tz michelson_test_scripts/mini_scenarios/tickets_015.tz michelson_test_scripts/mini_scenarios/tickets_bag_016.tz michelson_test_scripts/mini_scenarios/tickets_bag_implicit_016.tz michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz michelson_test_scripts/mini_scenarios/tickets_send_016.tz michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz michelson_test_scripts/mini_scenarios/tickets_store_fst_and_rely_snd.tz michelson_test_scripts/mini_scenarios/tzip4_view.tz michelson_test_scripts/mini_scenarios/very_small.tz michelson_test_scripts/mini_scenarios/view_check_caller.tz michelson_test_scripts/mini_scenarios/view_registers_callers.tz michelson_test_scripts/mini_scenarios/viewable.tz michelson_test_scripts/mini_scenarios/vote_for_delegate.tz michelson_test_scripts/mini_scenarios/weather_insurance.tz michelson_test_scripts/mini_scenarios/xcat.tz michelson_test_scripts/mini_scenarios/xcat_dapp.tz michelson_test_scripts/non_regression/262_bug.tz michelson_test_scripts/non_regression/843_bug.tz michelson_test_scripts/non_regression/bad_annot_contract.tz michelson_test_scripts/non_regression/pairk_annot.tz michelson_test_scripts/opcodes/abs.tz michelson_test_scripts/opcodes/add.tz michelson_test_scripts/opcodes/add_bls12_381_fr.tz michelson_test_scripts/opcodes/add_bls12_381_g1.tz michelson_test_scripts/opcodes/add_bls12_381_g2.tz michelson_test_scripts/opcodes/add_delta_timestamp.tz michelson_test_scripts/opcodes/add_timestamp_delta.tz michelson_test_scripts/opcodes/address.tz michelson_test_scripts/opcodes/amount_after_fib_view.tz michelson_test_scripts/opcodes/amount_after_nonexistent_view.tz michelson_test_scripts/opcodes/amount_after_view.tz michelson_test_scripts/opcodes/and.tz michelson_test_scripts/opcodes/and_binary.tz michelson_test_scripts/opcodes/and_bytes_016.tz michelson_test_scripts/opcodes/and_logical_1.tz michelson_test_scripts/opcodes/balance.tz michelson_test_scripts/opcodes/balance_after_fib_view.tz michelson_test_scripts/opcodes/balance_after_nonexistent_view.tz michelson_test_scripts/opcodes/balance_after_view.tz michelson_test_scripts/opcodes/big_map_mem_nat.tz michelson_test_scripts/opcodes/big_map_mem_string.tz michelson_test_scripts/opcodes/big_map_to_self.tz michelson_test_scripts/opcodes/bls12_381_fr_push_bytes_not_padded.tz michelson_test_scripts/opcodes/bls12_381_fr_push_nat.tz michelson_test_scripts/opcodes/bls12_381_fr_to_int.tz michelson_test_scripts/opcodes/bls12_381_fr_to_mutez.tz michelson_test_scripts/opcodes/bls12_381_fr_z_int.tz michelson_test_scripts/opcodes/bls12_381_fr_z_nat.tz michelson_test_scripts/opcodes/bls12_381_z_fr_int.tz michelson_test_scripts/opcodes/bls12_381_z_fr_nat.tz michelson_test_scripts/opcodes/bytes.tz michelson_test_scripts/opcodes/bytes_of_int_016.tz michelson_test_scripts/opcodes/bytes_of_nat_016.tz michelson_test_scripts/opcodes/car.tz michelson_test_scripts/opcodes/cdr.tz michelson_test_scripts/opcodes/chain_id.tz michelson_test_scripts/opcodes/chain_id_store.tz michelson_test_scripts/opcodes/check_signature.tz michelson_test_scripts/opcodes/comb.tz michelson_test_scripts/opcodes/comb-get.tz michelson_test_scripts/opcodes/comb-literals.tz michelson_test_scripts/opcodes/comb-set.tz michelson_test_scripts/opcodes/comb-set-2.tz michelson_test_scripts/opcodes/compare.tz michelson_test_scripts/opcodes/compare_big_type.tz michelson_test_scripts/opcodes/compare_big_type2.tz michelson_test_scripts/opcodes/comparisons.tz michelson_test_scripts/opcodes/concat_hello.tz michelson_test_scripts/opcodes/concat_hello_bytes.tz michelson_test_scripts/opcodes/concat_list.tz michelson_test_scripts/opcodes/cons.tz michelson_test_scripts/opcodes/contains_all.tz michelson_test_scripts/opcodes/contract.tz michelson_test_scripts/opcodes/create_contract.tz michelson_test_scripts/opcodes/create_contract_rootname.tz michelson_test_scripts/opcodes/create_contract_rootname_alt.tz michelson_test_scripts/opcodes/create_contract_with_view.tz michelson_test_scripts/opcodes/diff_timestamps.tz michelson_test_scripts/opcodes/dig_eq.tz michelson_test_scripts/opcodes/dign.tz michelson_test_scripts/opcodes/dip.tz michelson_test_scripts/opcodes/dipn.tz michelson_test_scripts/opcodes/dropn.tz michelson_test_scripts/opcodes/dugn.tz michelson_test_scripts/opcodes/dup-n.tz michelson_test_scripts/opcodes/ediv.tz michelson_test_scripts/opcodes/ediv_mutez.tz michelson_test_scripts/opcodes/emit.tz michelson_test_scripts/opcodes/empty_map.tz michelson_test_scripts/opcodes/exec_concat.tz michelson_test_scripts/opcodes/fact.tz michelson_test_scripts/opcodes/first.tz michelson_test_scripts/opcodes/get_and_update_big_map.tz michelson_test_scripts/opcodes/get_and_update_map.tz michelson_test_scripts/opcodes/get_big_map_value.tz michelson_test_scripts/opcodes/get_map_value.tz michelson_test_scripts/opcodes/hash_consistency_checker.tz michelson_test_scripts/opcodes/hash_key.tz michelson_test_scripts/opcodes/hash_string.tz michelson_test_scripts/opcodes/if.tz michelson_test_scripts/opcodes/if_some.tz michelson_test_scripts/opcodes/int.tz michelson_test_scripts/opcodes/iter_fail.tz michelson_test_scripts/opcodes/keccak.tz michelson_test_scripts/opcodes/left_right.tz michelson_test_scripts/opcodes/level.tz michelson_test_scripts/opcodes/list_concat.tz michelson_test_scripts/opcodes/list_concat_bytes.tz michelson_test_scripts/opcodes/list_id.tz michelson_test_scripts/opcodes/list_id_map.tz michelson_test_scripts/opcodes/list_iter.tz michelson_test_scripts/opcodes/list_map_block.tz michelson_test_scripts/opcodes/list_size.tz michelson_test_scripts/opcodes/loop_failwith.tz michelson_test_scripts/opcodes/loop_left.tz michelson_test_scripts/opcodes/loop_left_failwith.tz michelson_test_scripts/opcodes/lsl_bytes_016.tz michelson_test_scripts/opcodes/lsr_bytes_016.tz michelson_test_scripts/opcodes/map_car.tz michelson_test_scripts/opcodes/map_id.tz michelson_test_scripts/opcodes/map_iter.tz michelson_test_scripts/opcodes/map_map.tz michelson_test_scripts/opcodes/map_map_sideeffect.tz michelson_test_scripts/opcodes/map_mem_nat.tz michelson_test_scripts/opcodes/map_mem_string.tz michelson_test_scripts/opcodes/map_size.tz michelson_test_scripts/opcodes/merge_comparable_pairs.tz michelson_test_scripts/opcodes/mul.tz michelson_test_scripts/opcodes/mul_bls12_381_fr.tz michelson_test_scripts/opcodes/mul_bls12_381_g1.tz michelson_test_scripts/opcodes/mul_bls12_381_g2.tz michelson_test_scripts/opcodes/mul_overflow.tz michelson_test_scripts/opcodes/munch.tz michelson_test_scripts/opcodes/mutez_to_bls12_381_fr.tz michelson_test_scripts/opcodes/neg.tz michelson_test_scripts/opcodes/neg_bls12_381_fr.tz michelson_test_scripts/opcodes/neg_bls12_381_g1.tz michelson_test_scripts/opcodes/neg_bls12_381_g2.tz michelson_test_scripts/opcodes/none.tz michelson_test_scripts/opcodes/noop.tz michelson_test_scripts/opcodes/not.tz michelson_test_scripts/opcodes/not_binary.tz michelson_test_scripts/opcodes/not_bytes_016.tz michelson_test_scripts/opcodes/or.tz michelson_test_scripts/opcodes/or_binary.tz michelson_test_scripts/opcodes/or_bytes_016.tz michelson_test_scripts/opcodes/originate_big_map.tz michelson_test_scripts/opcodes/packunpack.tz michelson_test_scripts/opcodes/packunpack_rev.tz michelson_test_scripts/opcodes/packunpack_rev_cty.tz michelson_test_scripts/opcodes/pair_id.tz michelson_test_scripts/opcodes/pairing_check.tz michelson_test_scripts/opcodes/pexec.tz michelson_test_scripts/opcodes/pexec_2.tz michelson_test_scripts/opcodes/proxy.tz michelson_test_scripts/opcodes/ret_int.tz michelson_test_scripts/opcodes/reverse.tz michelson_test_scripts/opcodes/reverse_loop.tz michelson_test_scripts/opcodes/sapling_empty_state.tz michelson_test_scripts/opcodes/self.tz michelson_test_scripts/opcodes/self_address.tz michelson_test_scripts/opcodes/self_address_after_fib_view.tz michelson_test_scripts/opcodes/self_address_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_address_after_view.tz michelson_test_scripts/opcodes/self_after_fib_view.tz michelson_test_scripts/opcodes/self_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_after_view.tz michelson_test_scripts/opcodes/self_with_default_entrypoint.tz michelson_test_scripts/opcodes/self_with_entrypoint.tz michelson_test_scripts/opcodes/sender.tz michelson_test_scripts/opcodes/sender_after_fib_view.tz michelson_test_scripts/opcodes/sender_after_nonexistent_view.tz michelson_test_scripts/opcodes/sender_after_view.tz michelson_test_scripts/opcodes/set_car.tz michelson_test_scripts/opcodes/set_cdr.tz michelson_test_scripts/opcodes/set_delegate.tz michelson_test_scripts/opcodes/set_id.tz michelson_test_scripts/opcodes/set_iter.tz michelson_test_scripts/opcodes/set_member.tz michelson_test_scripts/opcodes/set_size.tz michelson_test_scripts/opcodes/sets.tz michelson_test_scripts/opcodes/sha3.tz michelson_test_scripts/opcodes/shifts.tz michelson_test_scripts/opcodes/slice.tz michelson_test_scripts/opcodes/slice_bytes.tz michelson_test_scripts/opcodes/slices.tz michelson_test_scripts/opcodes/source.tz michelson_test_scripts/opcodes/split_bytes.tz michelson_test_scripts/opcodes/split_string.tz michelson_test_scripts/opcodes/store_bls12_381_fr.tz michelson_test_scripts/opcodes/store_bls12_381_g1.tz michelson_test_scripts/opcodes/store_bls12_381_g2.tz michelson_test_scripts/opcodes/store_input.tz michelson_test_scripts/opcodes/store_now.tz michelson_test_scripts/opcodes/str_id.tz michelson_test_scripts/opcodes/sub_timestamp_delta.tz michelson_test_scripts/opcodes/subset.tz michelson_test_scripts/opcodes/tez_add_sub.tz michelson_test_scripts/opcodes/ticket_bad.tz michelson_test_scripts/opcodes/ticket_big_store.tz michelson_test_scripts/opcodes/ticket_join.tz michelson_test_scripts/opcodes/ticket_read.tz michelson_test_scripts/opcodes/ticket_split.tz michelson_test_scripts/opcodes/ticket_store.tz michelson_test_scripts/opcodes/ticket_store-2.tz michelson_test_scripts/opcodes/ticketer.tz michelson_test_scripts/opcodes/ticketer-2.tz michelson_test_scripts/opcodes/transfer_amount.tz michelson_test_scripts/opcodes/transfer_tokens.tz michelson_test_scripts/opcodes/uncomb.tz michelson_test_scripts/opcodes/unpair.tz michelson_test_scripts/opcodes/unpair_field_annotation_mismatch.tz michelson_test_scripts/opcodes/update_big_map.tz michelson_test_scripts/opcodes/utxo_read.tz michelson_test_scripts/opcodes/utxor.tz michelson_test_scripts/opcodes/view_fib.tz michelson_test_scripts/opcodes/view_mutual_recursion.tz michelson_test_scripts/opcodes/view_op_add.tz michelson_test_scripts/opcodes/view_op_constant.tz michelson_test_scripts/opcodes/view_op_id.tz michelson_test_scripts/opcodes/view_op_nonexistent_addr.tz michelson_test_scripts/opcodes/view_op_nonexistent_func.tz michelson_test_scripts/opcodes/view_op_test_step_contants.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_input_type.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_output_type.tz michelson_test_scripts/opcodes/view_rec.tz michelson_test_scripts/opcodes/view_toplevel_lib.tz michelson_test_scripts/opcodes/voting_power.tz michelson_test_scripts/opcodes/xor.tz michelson_test_scripts/opcodes/xor_bytes_016.tz --details --display-names Well typed (Gas remaining: 1039933.430 units remaining) michelson_test_scripts/attic/accounts.tz { parameter (or (key_hash %Initialize) @@ -35175,6 +35175,54 @@ Well typed (Gas remaining: 1039997.849 units remaining) michelson_test_scripts/m /* [ list operation : unit ] */ ; PAIR /* [ pair (list operation) unit ] */ } } +Well typed (Gas remaining: 1039985.858 units remaining) michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz +{ parameter + (or (pair %mint_and_send string nat (contract (ticket string))) + (pair %store int (list (pair string (ticket string))))) ; + storage (list (ticket string)) ; + code { UNPAIR + /* [ or (pair string nat (contract (ticket string))) + (pair int (list (pair string (ticket string)))) : list (ticket string) ] */ ; + IF_LEFT + { UNPAIR 3 + /* [ string : nat : contract (ticket string) : list (ticket string) ] */ ; + TICKET + /* [ option (ticket string) : contract (ticket string) : list (ticket string) ] */ ; + IF_NONE + { PUSH string + "option is None" + /* [ string : contract (ticket string) : list (ticket string) ] */ ; + FAILWITH + /* [] */ } + { /* [ ticket string : contract (ticket string) : list (ticket string) ] */ } ; + SWAP + /* [ contract (ticket string) : ticket string : list (ticket string) ] */ ; + PUSH mutez + 0 + /* [ mutez : contract (ticket string) : ticket string : list (ticket string) ] */ ; + DIG 2 + /* [ ticket string : mutez : contract (ticket string) : list (ticket string) ] */ ; + TRANSFER_TOKENS + /* [ operation : list (ticket string) ] */ ; + SWAP + /* [ list (ticket string) : operation ] */ ; + NIL operation + /* [ list operation : list (ticket string) : operation ] */ ; + DIG 2 + /* [ operation : list operation : list (ticket string) ] */ ; + CONS + /* [ list operation : list (ticket string) ] */ } + { CDR + /* [ list (pair string (ticket string)) : list (ticket string) ] */ ; + ITER { CDR + /* [ ticket string : list (ticket string) ] */ ; + CONS + /* [ list (ticket string) ] */ } + /* [ list (ticket string) ] */ ; + NIL operation + /* [ list operation : list (ticket string) ] */ } ; + PAIR + /* [ pair (list operation) (list (ticket string)) ] */ } } Well typed (Gas remaining: 1039997.186 units remaining) michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz { parameter (ticket string) ; storage (option (ticket string)) ; diff --git a/tezt/tests/expected/contract_typecheck_regression.ml/Nairobi- Tc scripts.out b/tezt/tests/expected/contract_typecheck_regression.ml/Nairobi- Tc scripts.out index 5ff2c2a6fb103c084895bfac07485dbc9a62cbdb..0220335906d6346818ce8467e74ba4eae89d6842 100644 --- a/tezt/tests/expected/contract_typecheck_regression.ml/Nairobi- Tc scripts.out +++ b/tezt/tests/expected/contract_typecheck_regression.ml/Nairobi- Tc scripts.out @@ -1,5 +1,5 @@ -./octez-client --protocol PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf --mode mockup --no-base-dir-warnings typecheck script michelson_test_scripts/attic/accounts.tz michelson_test_scripts/attic/add1.tz michelson_test_scripts/attic/add1_list.tz michelson_test_scripts/attic/after_strategy.tz michelson_test_scripts/attic/always.tz michelson_test_scripts/attic/append.tz michelson_test_scripts/attic/at_least.tz michelson_test_scripts/attic/auction.tz michelson_test_scripts/attic/bad_lockup.tz michelson_test_scripts/attic/big_map_union.tz michelson_test_scripts/attic/cadr_annotation.tz michelson_test_scripts/attic/concat.tz michelson_test_scripts/attic/conditionals.tz michelson_test_scripts/attic/cons_twice.tz michelson_test_scripts/attic/cps_fact.tz michelson_test_scripts/attic/create_add1_lists.tz michelson_test_scripts/attic/data_publisher.tz michelson_test_scripts/attic/dispatch.tz michelson_test_scripts/attic/empty.tz michelson_test_scripts/attic/fail_amount.tz michelson_test_scripts/attic/faucet.tz michelson_test_scripts/attic/forward.tz michelson_test_scripts/attic/id.tz michelson_test_scripts/attic/infinite_loop.tz michelson_test_scripts/attic/insertion_sort.tz michelson_test_scripts/attic/int_publisher.tz michelson_test_scripts/attic/king_of_tez.tz michelson_test_scripts/attic/list_of_transactions.tz michelson_test_scripts/attic/queue.tz michelson_test_scripts/attic/reduce_map.tz michelson_test_scripts/attic/reentrancy.tz michelson_test_scripts/attic/reservoir.tz michelson_test_scripts/attic/scrutable_reservoir.tz michelson_test_scripts/attic/spawn_identities.tz michelson_test_scripts/entrypoints/big_map_entrypoints.tz michelson_test_scripts/entrypoints/delegatable_target.tz michelson_test_scripts/entrypoints/manager.tz michelson_test_scripts/entrypoints/no_default_target.tz michelson_test_scripts/entrypoints/no_entrypoint_target.tz michelson_test_scripts/entrypoints/rooted_target.tz michelson_test_scripts/entrypoints/simple_entrypoints.tz michelson_test_scripts/macros/assert.tz michelson_test_scripts/macros/assert_cmpeq.tz michelson_test_scripts/macros/assert_cmpge.tz michelson_test_scripts/macros/assert_cmpgt.tz michelson_test_scripts/macros/assert_cmple.tz michelson_test_scripts/macros/assert_cmplt.tz michelson_test_scripts/macros/assert_cmpneq.tz michelson_test_scripts/macros/assert_eq.tz michelson_test_scripts/macros/assert_ge.tz michelson_test_scripts/macros/assert_gt.tz michelson_test_scripts/macros/assert_le.tz michelson_test_scripts/macros/assert_lt.tz michelson_test_scripts/macros/assert_neq.tz michelson_test_scripts/macros/big_map_get_add.tz michelson_test_scripts/macros/big_map_mem.tz michelson_test_scripts/macros/build_list.tz michelson_test_scripts/macros/carn_and_cdrn.tz michelson_test_scripts/macros/compare.tz michelson_test_scripts/macros/compare_bytes.tz michelson_test_scripts/macros/fail.tz michelson_test_scripts/macros/guestbook.tz michelson_test_scripts/macros/macro_annotations.tz michelson_test_scripts/macros/map_caddaadr.tz michelson_test_scripts/macros/max_in_list.tz michelson_test_scripts/macros/min.tz michelson_test_scripts/macros/pair_macro.tz michelson_test_scripts/macros/set_caddaadr.tz michelson_test_scripts/macros/take_my_money.tz michelson_test_scripts/macros/unpair_macro.tz michelson_test_scripts/mini_scenarios/999_constant.tz michelson_test_scripts/mini_scenarios/add_clear_tickets_015.tz michelson_test_scripts/mini_scenarios/always_fails.tz michelson_test_scripts/mini_scenarios/authentication.tz michelson_test_scripts/mini_scenarios/big_map_all.tz michelson_test_scripts/mini_scenarios/big_map_entrypoints.tz michelson_test_scripts/mini_scenarios/big_map_magic.tz michelson_test_scripts/mini_scenarios/big_map_read.tz michelson_test_scripts/mini_scenarios/big_map_store.tz michelson_test_scripts/mini_scenarios/big_map_write.tz michelson_test_scripts/mini_scenarios/cache_consistency.tz michelson_test_scripts/mini_scenarios/check_signature.tz michelson_test_scripts/mini_scenarios/constant_entrypoints.tz michelson_test_scripts/mini_scenarios/constant_unit.tz michelson_test_scripts/mini_scenarios/create_contract.tz michelson_test_scripts/mini_scenarios/create_contract_simple.tz michelson_test_scripts/mini_scenarios/default_account.tz michelson_test_scripts/mini_scenarios/emit_events.tz michelson_test_scripts/mini_scenarios/execution_order_appender.tz michelson_test_scripts/mini_scenarios/execution_order_caller.tz michelson_test_scripts/mini_scenarios/execution_order_storer.tz michelson_test_scripts/mini_scenarios/fa12_reference.tz michelson_test_scripts/mini_scenarios/fail_on_false.tz michelson_test_scripts/mini_scenarios/generic_multisig.tz michelson_test_scripts/mini_scenarios/groth16.tz michelson_test_scripts/mini_scenarios/hardlimit.tz michelson_test_scripts/mini_scenarios/large_error.tz michelson_test_scripts/mini_scenarios/large_flat_contract.tz michelson_test_scripts/mini_scenarios/large_str_id.tz michelson_test_scripts/mini_scenarios/legacy_multisig.tz michelson_test_scripts/mini_scenarios/lockup.tz michelson_test_scripts/mini_scenarios/loop.tz michelson_test_scripts/mini_scenarios/lqt_fa12.mligo.tz michelson_test_scripts/mini_scenarios/multiple_en2.tz michelson_test_scripts/mini_scenarios/multiple_entrypoints_counter.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint_arg.tz michelson_test_scripts/mini_scenarios/nat_id.tz michelson_test_scripts/mini_scenarios/noop_bytes.tz michelson_test_scripts/mini_scenarios/originate_contract.tz michelson_test_scripts/mini_scenarios/parameterized_multisig.tz michelson_test_scripts/mini_scenarios/parsable_contract.tz michelson_test_scripts/mini_scenarios/receive_tickets_in_big_map.tz michelson_test_scripts/mini_scenarios/replay.tz michelson_test_scripts/mini_scenarios/reveal_signed_preimage.tz michelson_test_scripts/mini_scenarios/sc_rollup_forward.tz michelson_test_scripts/mini_scenarios/sc_rollup_mint_and_forward.tz michelson_test_scripts/mini_scenarios/self_address_receiver.tz michelson_test_scripts/mini_scenarios/self_address_sender.tz michelson_test_scripts/mini_scenarios/send_ticket_list_016.tz michelson_test_scripts/mini_scenarios/send_ticket_list_multiple_016.tz michelson_test_scripts/mini_scenarios/send_tickets_from_storage_016.tz michelson_test_scripts/mini_scenarios/send_tickets_in_big_map_015.tz michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz michelson_test_scripts/mini_scenarios/str_id.tz michelson_test_scripts/mini_scenarios/ticket_builder_fungible.tz michelson_test_scripts/mini_scenarios/ticket_builder_non_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_non_fungible.tz michelson_test_scripts/mini_scenarios/tickets_015.tz michelson_test_scripts/mini_scenarios/tickets_bag_016.tz michelson_test_scripts/mini_scenarios/tickets_bag_implicit_016.tz michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz michelson_test_scripts/mini_scenarios/tickets_send_016.tz michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz michelson_test_scripts/mini_scenarios/tickets_store_fst_and_rely_snd.tz michelson_test_scripts/mini_scenarios/tzip4_view.tz michelson_test_scripts/mini_scenarios/very_small.tz michelson_test_scripts/mini_scenarios/view_check_caller.tz michelson_test_scripts/mini_scenarios/view_registers_callers.tz michelson_test_scripts/mini_scenarios/viewable.tz michelson_test_scripts/mini_scenarios/vote_for_delegate.tz michelson_test_scripts/mini_scenarios/weather_insurance.tz michelson_test_scripts/mini_scenarios/xcat.tz michelson_test_scripts/mini_scenarios/xcat_dapp.tz michelson_test_scripts/non_regression/262_bug.tz michelson_test_scripts/non_regression/843_bug.tz michelson_test_scripts/non_regression/bad_annot_contract.tz michelson_test_scripts/non_regression/pairk_annot.tz michelson_test_scripts/opcodes/abs.tz michelson_test_scripts/opcodes/add.tz michelson_test_scripts/opcodes/add_bls12_381_fr.tz michelson_test_scripts/opcodes/add_bls12_381_g1.tz michelson_test_scripts/opcodes/add_bls12_381_g2.tz michelson_test_scripts/opcodes/add_delta_timestamp.tz michelson_test_scripts/opcodes/add_timestamp_delta.tz michelson_test_scripts/opcodes/address.tz michelson_test_scripts/opcodes/amount_after_fib_view.tz michelson_test_scripts/opcodes/amount_after_nonexistent_view.tz michelson_test_scripts/opcodes/amount_after_view.tz michelson_test_scripts/opcodes/and.tz michelson_test_scripts/opcodes/and_binary.tz michelson_test_scripts/opcodes/and_bytes_016.tz michelson_test_scripts/opcodes/and_logical_1.tz michelson_test_scripts/opcodes/balance.tz michelson_test_scripts/opcodes/balance_after_fib_view.tz michelson_test_scripts/opcodes/balance_after_nonexistent_view.tz michelson_test_scripts/opcodes/balance_after_view.tz michelson_test_scripts/opcodes/big_map_mem_nat.tz michelson_test_scripts/opcodes/big_map_mem_string.tz michelson_test_scripts/opcodes/big_map_to_self.tz michelson_test_scripts/opcodes/bls12_381_fr_push_bytes_not_padded.tz michelson_test_scripts/opcodes/bls12_381_fr_push_nat.tz michelson_test_scripts/opcodes/bls12_381_fr_to_int.tz michelson_test_scripts/opcodes/bls12_381_fr_to_mutez.tz michelson_test_scripts/opcodes/bls12_381_fr_z_int.tz michelson_test_scripts/opcodes/bls12_381_fr_z_nat.tz michelson_test_scripts/opcodes/bls12_381_z_fr_int.tz michelson_test_scripts/opcodes/bls12_381_z_fr_nat.tz michelson_test_scripts/opcodes/bytes.tz michelson_test_scripts/opcodes/bytes_of_int_016.tz michelson_test_scripts/opcodes/bytes_of_nat_016.tz michelson_test_scripts/opcodes/car.tz michelson_test_scripts/opcodes/cdr.tz michelson_test_scripts/opcodes/chain_id.tz michelson_test_scripts/opcodes/chain_id_store.tz michelson_test_scripts/opcodes/check_signature.tz michelson_test_scripts/opcodes/comb.tz michelson_test_scripts/opcodes/comb-get.tz michelson_test_scripts/opcodes/comb-literals.tz michelson_test_scripts/opcodes/comb-set.tz michelson_test_scripts/opcodes/comb-set-2.tz michelson_test_scripts/opcodes/compare.tz michelson_test_scripts/opcodes/compare_big_type.tz michelson_test_scripts/opcodes/compare_big_type2.tz michelson_test_scripts/opcodes/comparisons.tz michelson_test_scripts/opcodes/concat_hello.tz michelson_test_scripts/opcodes/concat_hello_bytes.tz michelson_test_scripts/opcodes/concat_list.tz michelson_test_scripts/opcodes/cons.tz michelson_test_scripts/opcodes/contains_all.tz michelson_test_scripts/opcodes/contract.tz michelson_test_scripts/opcodes/create_contract.tz michelson_test_scripts/opcodes/create_contract_rootname.tz michelson_test_scripts/opcodes/create_contract_rootname_alt.tz michelson_test_scripts/opcodes/create_contract_with_view.tz michelson_test_scripts/opcodes/diff_timestamps.tz michelson_test_scripts/opcodes/dig_eq.tz michelson_test_scripts/opcodes/dign.tz michelson_test_scripts/opcodes/dip.tz michelson_test_scripts/opcodes/dipn.tz michelson_test_scripts/opcodes/dropn.tz michelson_test_scripts/opcodes/dugn.tz michelson_test_scripts/opcodes/dup-n.tz michelson_test_scripts/opcodes/ediv.tz michelson_test_scripts/opcodes/ediv_mutez.tz michelson_test_scripts/opcodes/emit.tz michelson_test_scripts/opcodes/empty_map.tz michelson_test_scripts/opcodes/exec_concat.tz michelson_test_scripts/opcodes/fact.tz michelson_test_scripts/opcodes/first.tz michelson_test_scripts/opcodes/get_and_update_big_map.tz michelson_test_scripts/opcodes/get_and_update_map.tz michelson_test_scripts/opcodes/get_big_map_value.tz michelson_test_scripts/opcodes/get_map_value.tz michelson_test_scripts/opcodes/hash_consistency_checker.tz michelson_test_scripts/opcodes/hash_key.tz michelson_test_scripts/opcodes/hash_string.tz michelson_test_scripts/opcodes/if.tz michelson_test_scripts/opcodes/if_some.tz michelson_test_scripts/opcodes/int.tz michelson_test_scripts/opcodes/iter_fail.tz michelson_test_scripts/opcodes/keccak.tz michelson_test_scripts/opcodes/left_right.tz michelson_test_scripts/opcodes/level.tz michelson_test_scripts/opcodes/list_concat.tz michelson_test_scripts/opcodes/list_concat_bytes.tz michelson_test_scripts/opcodes/list_id.tz michelson_test_scripts/opcodes/list_id_map.tz michelson_test_scripts/opcodes/list_iter.tz michelson_test_scripts/opcodes/list_map_block.tz michelson_test_scripts/opcodes/list_size.tz michelson_test_scripts/opcodes/loop_failwith.tz michelson_test_scripts/opcodes/loop_left.tz michelson_test_scripts/opcodes/loop_left_failwith.tz michelson_test_scripts/opcodes/lsl_bytes_016.tz michelson_test_scripts/opcodes/lsr_bytes_016.tz michelson_test_scripts/opcodes/map_car.tz michelson_test_scripts/opcodes/map_id.tz michelson_test_scripts/opcodes/map_iter.tz michelson_test_scripts/opcodes/map_map.tz michelson_test_scripts/opcodes/map_map_sideeffect.tz michelson_test_scripts/opcodes/map_mem_nat.tz michelson_test_scripts/opcodes/map_mem_string.tz michelson_test_scripts/opcodes/map_size.tz michelson_test_scripts/opcodes/merge_comparable_pairs.tz michelson_test_scripts/opcodes/mul.tz michelson_test_scripts/opcodes/mul_bls12_381_fr.tz michelson_test_scripts/opcodes/mul_bls12_381_g1.tz michelson_test_scripts/opcodes/mul_bls12_381_g2.tz michelson_test_scripts/opcodes/mul_overflow.tz michelson_test_scripts/opcodes/munch.tz michelson_test_scripts/opcodes/mutez_to_bls12_381_fr.tz michelson_test_scripts/opcodes/neg.tz michelson_test_scripts/opcodes/neg_bls12_381_fr.tz michelson_test_scripts/opcodes/neg_bls12_381_g1.tz michelson_test_scripts/opcodes/neg_bls12_381_g2.tz michelson_test_scripts/opcodes/none.tz michelson_test_scripts/opcodes/noop.tz michelson_test_scripts/opcodes/not.tz michelson_test_scripts/opcodes/not_binary.tz michelson_test_scripts/opcodes/not_bytes_016.tz michelson_test_scripts/opcodes/or.tz michelson_test_scripts/opcodes/or_binary.tz michelson_test_scripts/opcodes/or_bytes_016.tz michelson_test_scripts/opcodes/originate_big_map.tz michelson_test_scripts/opcodes/packunpack.tz michelson_test_scripts/opcodes/packunpack_rev.tz michelson_test_scripts/opcodes/packunpack_rev_cty.tz michelson_test_scripts/opcodes/pair_id.tz michelson_test_scripts/opcodes/pairing_check.tz michelson_test_scripts/opcodes/pexec.tz michelson_test_scripts/opcodes/pexec_2.tz michelson_test_scripts/opcodes/proxy.tz michelson_test_scripts/opcodes/ret_int.tz michelson_test_scripts/opcodes/reverse.tz michelson_test_scripts/opcodes/reverse_loop.tz michelson_test_scripts/opcodes/sapling_empty_state.tz michelson_test_scripts/opcodes/self.tz michelson_test_scripts/opcodes/self_address.tz michelson_test_scripts/opcodes/self_address_after_fib_view.tz michelson_test_scripts/opcodes/self_address_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_address_after_view.tz michelson_test_scripts/opcodes/self_after_fib_view.tz michelson_test_scripts/opcodes/self_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_after_view.tz michelson_test_scripts/opcodes/self_with_default_entrypoint.tz michelson_test_scripts/opcodes/self_with_entrypoint.tz michelson_test_scripts/opcodes/sender.tz michelson_test_scripts/opcodes/sender_after_fib_view.tz michelson_test_scripts/opcodes/sender_after_nonexistent_view.tz michelson_test_scripts/opcodes/sender_after_view.tz michelson_test_scripts/opcodes/set_car.tz michelson_test_scripts/opcodes/set_cdr.tz michelson_test_scripts/opcodes/set_delegate.tz michelson_test_scripts/opcodes/set_id.tz michelson_test_scripts/opcodes/set_iter.tz michelson_test_scripts/opcodes/set_member.tz michelson_test_scripts/opcodes/set_size.tz michelson_test_scripts/opcodes/sets.tz michelson_test_scripts/opcodes/sha3.tz michelson_test_scripts/opcodes/shifts.tz michelson_test_scripts/opcodes/slice.tz michelson_test_scripts/opcodes/slice_bytes.tz michelson_test_scripts/opcodes/slices.tz michelson_test_scripts/opcodes/source.tz michelson_test_scripts/opcodes/split_bytes.tz michelson_test_scripts/opcodes/split_string.tz michelson_test_scripts/opcodes/store_bls12_381_fr.tz michelson_test_scripts/opcodes/store_bls12_381_g1.tz michelson_test_scripts/opcodes/store_bls12_381_g2.tz michelson_test_scripts/opcodes/store_input.tz michelson_test_scripts/opcodes/store_now.tz michelson_test_scripts/opcodes/str_id.tz michelson_test_scripts/opcodes/sub_timestamp_delta.tz michelson_test_scripts/opcodes/subset.tz michelson_test_scripts/opcodes/tez_add_sub.tz michelson_test_scripts/opcodes/ticket_bad.tz michelson_test_scripts/opcodes/ticket_big_store.tz michelson_test_scripts/opcodes/ticket_join.tz michelson_test_scripts/opcodes/ticket_read.tz michelson_test_scripts/opcodes/ticket_split.tz michelson_test_scripts/opcodes/ticket_store.tz michelson_test_scripts/opcodes/ticket_store-2.tz michelson_test_scripts/opcodes/ticketer.tz michelson_test_scripts/opcodes/ticketer-2.tz michelson_test_scripts/opcodes/transfer_amount.tz michelson_test_scripts/opcodes/transfer_tokens.tz michelson_test_scripts/opcodes/uncomb.tz michelson_test_scripts/opcodes/unpair.tz michelson_test_scripts/opcodes/unpair_field_annotation_mismatch.tz michelson_test_scripts/opcodes/update_big_map.tz michelson_test_scripts/opcodes/utxo_read.tz michelson_test_scripts/opcodes/utxor.tz michelson_test_scripts/opcodes/view_fib.tz michelson_test_scripts/opcodes/view_mutual_recursion.tz michelson_test_scripts/opcodes/view_op_add.tz michelson_test_scripts/opcodes/view_op_constant.tz michelson_test_scripts/opcodes/view_op_id.tz michelson_test_scripts/opcodes/view_op_nonexistent_addr.tz michelson_test_scripts/opcodes/view_op_nonexistent_func.tz michelson_test_scripts/opcodes/view_op_test_step_contants.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_input_type.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_output_type.tz michelson_test_scripts/opcodes/view_rec.tz michelson_test_scripts/opcodes/view_toplevel_lib.tz michelson_test_scripts/opcodes/voting_power.tz michelson_test_scripts/opcodes/xor.tz michelson_test_scripts/opcodes/xor_bytes_016.tz --details --display-names +./octez-client --protocol PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf --mode mockup --no-base-dir-warnings typecheck script michelson_test_scripts/attic/accounts.tz michelson_test_scripts/attic/add1.tz michelson_test_scripts/attic/add1_list.tz michelson_test_scripts/attic/after_strategy.tz michelson_test_scripts/attic/always.tz michelson_test_scripts/attic/append.tz michelson_test_scripts/attic/at_least.tz michelson_test_scripts/attic/auction.tz michelson_test_scripts/attic/bad_lockup.tz michelson_test_scripts/attic/big_map_union.tz michelson_test_scripts/attic/cadr_annotation.tz michelson_test_scripts/attic/concat.tz michelson_test_scripts/attic/conditionals.tz michelson_test_scripts/attic/cons_twice.tz michelson_test_scripts/attic/cps_fact.tz michelson_test_scripts/attic/create_add1_lists.tz michelson_test_scripts/attic/data_publisher.tz michelson_test_scripts/attic/dispatch.tz michelson_test_scripts/attic/empty.tz michelson_test_scripts/attic/fail_amount.tz michelson_test_scripts/attic/faucet.tz michelson_test_scripts/attic/forward.tz michelson_test_scripts/attic/id.tz michelson_test_scripts/attic/infinite_loop.tz michelson_test_scripts/attic/insertion_sort.tz michelson_test_scripts/attic/int_publisher.tz michelson_test_scripts/attic/king_of_tez.tz michelson_test_scripts/attic/list_of_transactions.tz michelson_test_scripts/attic/queue.tz michelson_test_scripts/attic/reduce_map.tz michelson_test_scripts/attic/reentrancy.tz michelson_test_scripts/attic/reservoir.tz michelson_test_scripts/attic/scrutable_reservoir.tz michelson_test_scripts/attic/spawn_identities.tz michelson_test_scripts/entrypoints/big_map_entrypoints.tz michelson_test_scripts/entrypoints/delegatable_target.tz michelson_test_scripts/entrypoints/manager.tz michelson_test_scripts/entrypoints/no_default_target.tz michelson_test_scripts/entrypoints/no_entrypoint_target.tz michelson_test_scripts/entrypoints/rooted_target.tz michelson_test_scripts/entrypoints/simple_entrypoints.tz michelson_test_scripts/macros/assert.tz michelson_test_scripts/macros/assert_cmpeq.tz michelson_test_scripts/macros/assert_cmpge.tz michelson_test_scripts/macros/assert_cmpgt.tz michelson_test_scripts/macros/assert_cmple.tz michelson_test_scripts/macros/assert_cmplt.tz michelson_test_scripts/macros/assert_cmpneq.tz michelson_test_scripts/macros/assert_eq.tz michelson_test_scripts/macros/assert_ge.tz michelson_test_scripts/macros/assert_gt.tz michelson_test_scripts/macros/assert_le.tz michelson_test_scripts/macros/assert_lt.tz michelson_test_scripts/macros/assert_neq.tz michelson_test_scripts/macros/big_map_get_add.tz michelson_test_scripts/macros/big_map_mem.tz michelson_test_scripts/macros/build_list.tz michelson_test_scripts/macros/carn_and_cdrn.tz michelson_test_scripts/macros/compare.tz michelson_test_scripts/macros/compare_bytes.tz michelson_test_scripts/macros/fail.tz michelson_test_scripts/macros/guestbook.tz michelson_test_scripts/macros/macro_annotations.tz michelson_test_scripts/macros/map_caddaadr.tz michelson_test_scripts/macros/max_in_list.tz michelson_test_scripts/macros/min.tz michelson_test_scripts/macros/pair_macro.tz michelson_test_scripts/macros/set_caddaadr.tz michelson_test_scripts/macros/take_my_money.tz michelson_test_scripts/macros/unpair_macro.tz michelson_test_scripts/mini_scenarios/999_constant.tz michelson_test_scripts/mini_scenarios/add_clear_tickets_015.tz michelson_test_scripts/mini_scenarios/always_fails.tz michelson_test_scripts/mini_scenarios/authentication.tz michelson_test_scripts/mini_scenarios/big_map_all.tz michelson_test_scripts/mini_scenarios/big_map_entrypoints.tz michelson_test_scripts/mini_scenarios/big_map_magic.tz michelson_test_scripts/mini_scenarios/big_map_read.tz michelson_test_scripts/mini_scenarios/big_map_store.tz michelson_test_scripts/mini_scenarios/big_map_write.tz michelson_test_scripts/mini_scenarios/cache_consistency.tz michelson_test_scripts/mini_scenarios/check_signature.tz michelson_test_scripts/mini_scenarios/constant_entrypoints.tz michelson_test_scripts/mini_scenarios/constant_unit.tz michelson_test_scripts/mini_scenarios/create_contract.tz michelson_test_scripts/mini_scenarios/create_contract_simple.tz michelson_test_scripts/mini_scenarios/default_account.tz michelson_test_scripts/mini_scenarios/emit_events.tz michelson_test_scripts/mini_scenarios/execution_order_appender.tz michelson_test_scripts/mini_scenarios/execution_order_caller.tz michelson_test_scripts/mini_scenarios/execution_order_storer.tz michelson_test_scripts/mini_scenarios/fa12_reference.tz michelson_test_scripts/mini_scenarios/fail_on_false.tz michelson_test_scripts/mini_scenarios/generic_multisig.tz michelson_test_scripts/mini_scenarios/groth16.tz michelson_test_scripts/mini_scenarios/hardlimit.tz michelson_test_scripts/mini_scenarios/large_error.tz michelson_test_scripts/mini_scenarios/large_flat_contract.tz michelson_test_scripts/mini_scenarios/large_str_id.tz michelson_test_scripts/mini_scenarios/legacy_multisig.tz michelson_test_scripts/mini_scenarios/lockup.tz michelson_test_scripts/mini_scenarios/loop.tz michelson_test_scripts/mini_scenarios/lqt_fa12.mligo.tz michelson_test_scripts/mini_scenarios/multiple_en2.tz michelson_test_scripts/mini_scenarios/multiple_entrypoints_counter.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint_arg.tz michelson_test_scripts/mini_scenarios/nat_id.tz michelson_test_scripts/mini_scenarios/noop_bytes.tz michelson_test_scripts/mini_scenarios/originate_contract.tz michelson_test_scripts/mini_scenarios/parameterized_multisig.tz michelson_test_scripts/mini_scenarios/parsable_contract.tz michelson_test_scripts/mini_scenarios/receive_tickets_in_big_map.tz michelson_test_scripts/mini_scenarios/replay.tz michelson_test_scripts/mini_scenarios/reveal_signed_preimage.tz michelson_test_scripts/mini_scenarios/sc_rollup_forward.tz michelson_test_scripts/mini_scenarios/sc_rollup_mint_and_forward.tz michelson_test_scripts/mini_scenarios/self_address_receiver.tz michelson_test_scripts/mini_scenarios/self_address_sender.tz michelson_test_scripts/mini_scenarios/send_ticket_list_016.tz michelson_test_scripts/mini_scenarios/send_ticket_list_multiple_016.tz michelson_test_scripts/mini_scenarios/send_tickets_from_storage_016.tz michelson_test_scripts/mini_scenarios/send_tickets_in_big_map_015.tz michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz michelson_test_scripts/mini_scenarios/str_id.tz michelson_test_scripts/mini_scenarios/ticket_builder_fungible.tz michelson_test_scripts/mini_scenarios/ticket_builder_non_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_non_fungible.tz michelson_test_scripts/mini_scenarios/tickets_015.tz michelson_test_scripts/mini_scenarios/tickets_bag_016.tz michelson_test_scripts/mini_scenarios/tickets_bag_implicit_016.tz michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz michelson_test_scripts/mini_scenarios/tickets_send_016.tz michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz michelson_test_scripts/mini_scenarios/tickets_store_fst_and_rely_snd.tz michelson_test_scripts/mini_scenarios/tzip4_view.tz michelson_test_scripts/mini_scenarios/very_small.tz michelson_test_scripts/mini_scenarios/view_check_caller.tz michelson_test_scripts/mini_scenarios/view_registers_callers.tz michelson_test_scripts/mini_scenarios/viewable.tz michelson_test_scripts/mini_scenarios/vote_for_delegate.tz michelson_test_scripts/mini_scenarios/weather_insurance.tz michelson_test_scripts/mini_scenarios/xcat.tz michelson_test_scripts/mini_scenarios/xcat_dapp.tz michelson_test_scripts/non_regression/262_bug.tz michelson_test_scripts/non_regression/843_bug.tz michelson_test_scripts/non_regression/bad_annot_contract.tz michelson_test_scripts/non_regression/pairk_annot.tz michelson_test_scripts/opcodes/abs.tz michelson_test_scripts/opcodes/add.tz michelson_test_scripts/opcodes/add_bls12_381_fr.tz michelson_test_scripts/opcodes/add_bls12_381_g1.tz michelson_test_scripts/opcodes/add_bls12_381_g2.tz michelson_test_scripts/opcodes/add_delta_timestamp.tz michelson_test_scripts/opcodes/add_timestamp_delta.tz michelson_test_scripts/opcodes/address.tz michelson_test_scripts/opcodes/amount_after_fib_view.tz michelson_test_scripts/opcodes/amount_after_nonexistent_view.tz michelson_test_scripts/opcodes/amount_after_view.tz michelson_test_scripts/opcodes/and.tz michelson_test_scripts/opcodes/and_binary.tz michelson_test_scripts/opcodes/and_bytes_016.tz michelson_test_scripts/opcodes/and_logical_1.tz michelson_test_scripts/opcodes/balance.tz michelson_test_scripts/opcodes/balance_after_fib_view.tz michelson_test_scripts/opcodes/balance_after_nonexistent_view.tz michelson_test_scripts/opcodes/balance_after_view.tz michelson_test_scripts/opcodes/big_map_mem_nat.tz michelson_test_scripts/opcodes/big_map_mem_string.tz michelson_test_scripts/opcodes/big_map_to_self.tz michelson_test_scripts/opcodes/bls12_381_fr_push_bytes_not_padded.tz michelson_test_scripts/opcodes/bls12_381_fr_push_nat.tz michelson_test_scripts/opcodes/bls12_381_fr_to_int.tz michelson_test_scripts/opcodes/bls12_381_fr_to_mutez.tz michelson_test_scripts/opcodes/bls12_381_fr_z_int.tz michelson_test_scripts/opcodes/bls12_381_fr_z_nat.tz michelson_test_scripts/opcodes/bls12_381_z_fr_int.tz michelson_test_scripts/opcodes/bls12_381_z_fr_nat.tz michelson_test_scripts/opcodes/bytes.tz michelson_test_scripts/opcodes/bytes_of_int_016.tz michelson_test_scripts/opcodes/bytes_of_nat_016.tz michelson_test_scripts/opcodes/car.tz michelson_test_scripts/opcodes/cdr.tz michelson_test_scripts/opcodes/chain_id.tz michelson_test_scripts/opcodes/chain_id_store.tz michelson_test_scripts/opcodes/check_signature.tz michelson_test_scripts/opcodes/comb.tz michelson_test_scripts/opcodes/comb-get.tz michelson_test_scripts/opcodes/comb-literals.tz michelson_test_scripts/opcodes/comb-set.tz michelson_test_scripts/opcodes/comb-set-2.tz michelson_test_scripts/opcodes/compare.tz michelson_test_scripts/opcodes/compare_big_type.tz michelson_test_scripts/opcodes/compare_big_type2.tz michelson_test_scripts/opcodes/comparisons.tz michelson_test_scripts/opcodes/concat_hello.tz michelson_test_scripts/opcodes/concat_hello_bytes.tz michelson_test_scripts/opcodes/concat_list.tz michelson_test_scripts/opcodes/cons.tz michelson_test_scripts/opcodes/contains_all.tz michelson_test_scripts/opcodes/contract.tz michelson_test_scripts/opcodes/create_contract.tz michelson_test_scripts/opcodes/create_contract_rootname.tz michelson_test_scripts/opcodes/create_contract_rootname_alt.tz michelson_test_scripts/opcodes/create_contract_with_view.tz michelson_test_scripts/opcodes/diff_timestamps.tz michelson_test_scripts/opcodes/dig_eq.tz michelson_test_scripts/opcodes/dign.tz michelson_test_scripts/opcodes/dip.tz michelson_test_scripts/opcodes/dipn.tz michelson_test_scripts/opcodes/dropn.tz michelson_test_scripts/opcodes/dugn.tz michelson_test_scripts/opcodes/dup-n.tz michelson_test_scripts/opcodes/ediv.tz michelson_test_scripts/opcodes/ediv_mutez.tz michelson_test_scripts/opcodes/emit.tz michelson_test_scripts/opcodes/empty_map.tz michelson_test_scripts/opcodes/exec_concat.tz michelson_test_scripts/opcodes/fact.tz michelson_test_scripts/opcodes/first.tz michelson_test_scripts/opcodes/get_and_update_big_map.tz michelson_test_scripts/opcodes/get_and_update_map.tz michelson_test_scripts/opcodes/get_big_map_value.tz michelson_test_scripts/opcodes/get_map_value.tz michelson_test_scripts/opcodes/hash_consistency_checker.tz michelson_test_scripts/opcodes/hash_key.tz michelson_test_scripts/opcodes/hash_string.tz michelson_test_scripts/opcodes/if.tz michelson_test_scripts/opcodes/if_some.tz michelson_test_scripts/opcodes/int.tz michelson_test_scripts/opcodes/iter_fail.tz michelson_test_scripts/opcodes/keccak.tz michelson_test_scripts/opcodes/left_right.tz michelson_test_scripts/opcodes/level.tz michelson_test_scripts/opcodes/list_concat.tz michelson_test_scripts/opcodes/list_concat_bytes.tz michelson_test_scripts/opcodes/list_id.tz michelson_test_scripts/opcodes/list_id_map.tz michelson_test_scripts/opcodes/list_iter.tz michelson_test_scripts/opcodes/list_map_block.tz michelson_test_scripts/opcodes/list_size.tz michelson_test_scripts/opcodes/loop_failwith.tz michelson_test_scripts/opcodes/loop_left.tz michelson_test_scripts/opcodes/loop_left_failwith.tz michelson_test_scripts/opcodes/lsl_bytes_016.tz michelson_test_scripts/opcodes/lsr_bytes_016.tz michelson_test_scripts/opcodes/map_car.tz michelson_test_scripts/opcodes/map_id.tz michelson_test_scripts/opcodes/map_iter.tz michelson_test_scripts/opcodes/map_map.tz michelson_test_scripts/opcodes/map_map_sideeffect.tz michelson_test_scripts/opcodes/map_mem_nat.tz michelson_test_scripts/opcodes/map_mem_string.tz michelson_test_scripts/opcodes/map_size.tz michelson_test_scripts/opcodes/merge_comparable_pairs.tz michelson_test_scripts/opcodes/mul.tz michelson_test_scripts/opcodes/mul_bls12_381_fr.tz michelson_test_scripts/opcodes/mul_bls12_381_g1.tz michelson_test_scripts/opcodes/mul_bls12_381_g2.tz michelson_test_scripts/opcodes/mul_overflow.tz michelson_test_scripts/opcodes/munch.tz michelson_test_scripts/opcodes/mutez_to_bls12_381_fr.tz michelson_test_scripts/opcodes/neg.tz michelson_test_scripts/opcodes/neg_bls12_381_fr.tz michelson_test_scripts/opcodes/neg_bls12_381_g1.tz michelson_test_scripts/opcodes/neg_bls12_381_g2.tz michelson_test_scripts/opcodes/none.tz michelson_test_scripts/opcodes/noop.tz michelson_test_scripts/opcodes/not.tz michelson_test_scripts/opcodes/not_binary.tz michelson_test_scripts/opcodes/not_bytes_016.tz michelson_test_scripts/opcodes/or.tz michelson_test_scripts/opcodes/or_binary.tz michelson_test_scripts/opcodes/or_bytes_016.tz michelson_test_scripts/opcodes/originate_big_map.tz michelson_test_scripts/opcodes/packunpack.tz michelson_test_scripts/opcodes/packunpack_rev.tz michelson_test_scripts/opcodes/packunpack_rev_cty.tz michelson_test_scripts/opcodes/pair_id.tz michelson_test_scripts/opcodes/pairing_check.tz michelson_test_scripts/opcodes/pexec.tz michelson_test_scripts/opcodes/pexec_2.tz michelson_test_scripts/opcodes/proxy.tz michelson_test_scripts/opcodes/ret_int.tz michelson_test_scripts/opcodes/reverse.tz michelson_test_scripts/opcodes/reverse_loop.tz michelson_test_scripts/opcodes/sapling_empty_state.tz michelson_test_scripts/opcodes/self.tz michelson_test_scripts/opcodes/self_address.tz michelson_test_scripts/opcodes/self_address_after_fib_view.tz michelson_test_scripts/opcodes/self_address_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_address_after_view.tz michelson_test_scripts/opcodes/self_after_fib_view.tz michelson_test_scripts/opcodes/self_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_after_view.tz michelson_test_scripts/opcodes/self_with_default_entrypoint.tz michelson_test_scripts/opcodes/self_with_entrypoint.tz michelson_test_scripts/opcodes/sender.tz michelson_test_scripts/opcodes/sender_after_fib_view.tz michelson_test_scripts/opcodes/sender_after_nonexistent_view.tz michelson_test_scripts/opcodes/sender_after_view.tz michelson_test_scripts/opcodes/set_car.tz michelson_test_scripts/opcodes/set_cdr.tz michelson_test_scripts/opcodes/set_delegate.tz michelson_test_scripts/opcodes/set_id.tz michelson_test_scripts/opcodes/set_iter.tz michelson_test_scripts/opcodes/set_member.tz michelson_test_scripts/opcodes/set_size.tz michelson_test_scripts/opcodes/sets.tz michelson_test_scripts/opcodes/sha3.tz michelson_test_scripts/opcodes/shifts.tz michelson_test_scripts/opcodes/slice.tz michelson_test_scripts/opcodes/slice_bytes.tz michelson_test_scripts/opcodes/slices.tz michelson_test_scripts/opcodes/source.tz michelson_test_scripts/opcodes/split_bytes.tz michelson_test_scripts/opcodes/split_string.tz michelson_test_scripts/opcodes/store_bls12_381_fr.tz michelson_test_scripts/opcodes/store_bls12_381_g1.tz michelson_test_scripts/opcodes/store_bls12_381_g2.tz michelson_test_scripts/opcodes/store_input.tz michelson_test_scripts/opcodes/store_now.tz michelson_test_scripts/opcodes/str_id.tz michelson_test_scripts/opcodes/sub_timestamp_delta.tz michelson_test_scripts/opcodes/subset.tz michelson_test_scripts/opcodes/tez_add_sub.tz michelson_test_scripts/opcodes/ticket_bad.tz michelson_test_scripts/opcodes/ticket_big_store.tz michelson_test_scripts/opcodes/ticket_join.tz michelson_test_scripts/opcodes/ticket_read.tz michelson_test_scripts/opcodes/ticket_split.tz michelson_test_scripts/opcodes/ticket_store.tz michelson_test_scripts/opcodes/ticket_store-2.tz michelson_test_scripts/opcodes/ticketer.tz michelson_test_scripts/opcodes/ticketer-2.tz michelson_test_scripts/opcodes/transfer_amount.tz michelson_test_scripts/opcodes/transfer_tokens.tz michelson_test_scripts/opcodes/uncomb.tz michelson_test_scripts/opcodes/unpair.tz michelson_test_scripts/opcodes/unpair_field_annotation_mismatch.tz michelson_test_scripts/opcodes/update_big_map.tz michelson_test_scripts/opcodes/utxo_read.tz michelson_test_scripts/opcodes/utxor.tz michelson_test_scripts/opcodes/view_fib.tz michelson_test_scripts/opcodes/view_mutual_recursion.tz michelson_test_scripts/opcodes/view_op_add.tz michelson_test_scripts/opcodes/view_op_constant.tz michelson_test_scripts/opcodes/view_op_id.tz michelson_test_scripts/opcodes/view_op_nonexistent_addr.tz michelson_test_scripts/opcodes/view_op_nonexistent_func.tz michelson_test_scripts/opcodes/view_op_test_step_contants.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_input_type.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_output_type.tz michelson_test_scripts/opcodes/view_rec.tz michelson_test_scripts/opcodes/view_toplevel_lib.tz michelson_test_scripts/opcodes/voting_power.tz michelson_test_scripts/opcodes/xor.tz michelson_test_scripts/opcodes/xor_bytes_016.tz --details --display-names Well typed (Gas remaining: 1039932.585 units remaining) michelson_test_scripts/attic/accounts.tz { parameter (or (key_hash %Initialize) @@ -35175,6 +35175,54 @@ Well typed (Gas remaining: 1039997.740 units remaining) michelson_test_scripts/m /* [ list operation : unit ] */ ; PAIR /* [ pair (list operation) unit ] */ } } +Well typed (Gas remaining: 1039985.432 units remaining) michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz +{ parameter + (or (pair %mint_and_send string nat (contract (ticket string))) + (pair %store int (list (pair string (ticket string))))) ; + storage (list (ticket string)) ; + code { UNPAIR + /* [ or (pair string nat (contract (ticket string))) + (pair int (list (pair string (ticket string)))) : list (ticket string) ] */ ; + IF_LEFT + { UNPAIR 3 + /* [ string : nat : contract (ticket string) : list (ticket string) ] */ ; + TICKET + /* [ option (ticket string) : contract (ticket string) : list (ticket string) ] */ ; + IF_NONE + { PUSH string + "option is None" + /* [ string : contract (ticket string) : list (ticket string) ] */ ; + FAILWITH + /* [] */ } + { /* [ ticket string : contract (ticket string) : list (ticket string) ] */ } ; + SWAP + /* [ contract (ticket string) : ticket string : list (ticket string) ] */ ; + PUSH mutez + 0 + /* [ mutez : contract (ticket string) : ticket string : list (ticket string) ] */ ; + DIG 2 + /* [ ticket string : mutez : contract (ticket string) : list (ticket string) ] */ ; + TRANSFER_TOKENS + /* [ operation : list (ticket string) ] */ ; + SWAP + /* [ list (ticket string) : operation ] */ ; + NIL operation + /* [ list operation : list (ticket string) : operation ] */ ; + DIG 2 + /* [ operation : list operation : list (ticket string) ] */ ; + CONS + /* [ list operation : list (ticket string) ] */ } + { CDR + /* [ list (pair string (ticket string)) : list (ticket string) ] */ ; + ITER { CDR + /* [ ticket string : list (ticket string) ] */ ; + CONS + /* [ list (ticket string) ] */ } + /* [ list (ticket string) ] */ ; + NIL operation + /* [ list operation : list (ticket string) ] */ } ; + PAIR + /* [ pair (list operation) (list (ticket string)) ] */ } } Well typed (Gas remaining: 1039997.074 units remaining) michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz { parameter (ticket string) ; storage (option (ticket string)) ; diff --git a/tezt/tests/expected/contract_typecheck_regression.ml/Oxford- Tc scripts.out b/tezt/tests/expected/contract_typecheck_regression.ml/Oxford- Tc scripts.out index 5c80ac8cd7682c4c421bbb575af59ad891c6987d..4c62e05ce7ead3713a8f8c597cb80ae51147e763 100644 --- a/tezt/tests/expected/contract_typecheck_regression.ml/Oxford- Tc scripts.out +++ b/tezt/tests/expected/contract_typecheck_regression.ml/Oxford- Tc scripts.out @@ -1,5 +1,5 @@ -./octez-client --protocol ProxfordXomTQ2AyWMVdAzJvbhGm2nGzBuDvovb4Rn6UGmgZ5s4 --mode mockup --no-base-dir-warnings typecheck script michelson_test_scripts/attic/accounts.tz michelson_test_scripts/attic/add1.tz michelson_test_scripts/attic/add1_list.tz michelson_test_scripts/attic/after_strategy.tz michelson_test_scripts/attic/always.tz michelson_test_scripts/attic/append.tz michelson_test_scripts/attic/at_least.tz michelson_test_scripts/attic/auction.tz michelson_test_scripts/attic/bad_lockup.tz michelson_test_scripts/attic/big_map_union.tz michelson_test_scripts/attic/cadr_annotation.tz michelson_test_scripts/attic/concat.tz michelson_test_scripts/attic/conditionals.tz michelson_test_scripts/attic/cons_twice.tz michelson_test_scripts/attic/cps_fact.tz michelson_test_scripts/attic/create_add1_lists.tz michelson_test_scripts/attic/data_publisher.tz michelson_test_scripts/attic/dispatch.tz michelson_test_scripts/attic/empty.tz michelson_test_scripts/attic/fail_amount.tz michelson_test_scripts/attic/faucet.tz michelson_test_scripts/attic/forward.tz michelson_test_scripts/attic/id.tz michelson_test_scripts/attic/infinite_loop.tz michelson_test_scripts/attic/insertion_sort.tz michelson_test_scripts/attic/int_publisher.tz michelson_test_scripts/attic/king_of_tez.tz michelson_test_scripts/attic/list_of_transactions.tz michelson_test_scripts/attic/queue.tz michelson_test_scripts/attic/reduce_map.tz michelson_test_scripts/attic/reentrancy.tz michelson_test_scripts/attic/reservoir.tz michelson_test_scripts/attic/scrutable_reservoir.tz michelson_test_scripts/attic/spawn_identities.tz michelson_test_scripts/entrypoints/big_map_entrypoints.tz michelson_test_scripts/entrypoints/delegatable_target.tz michelson_test_scripts/entrypoints/manager.tz michelson_test_scripts/entrypoints/no_default_target.tz michelson_test_scripts/entrypoints/no_entrypoint_target.tz michelson_test_scripts/entrypoints/rooted_target.tz michelson_test_scripts/entrypoints/simple_entrypoints.tz michelson_test_scripts/macros/assert.tz michelson_test_scripts/macros/assert_cmpeq.tz michelson_test_scripts/macros/assert_cmpge.tz michelson_test_scripts/macros/assert_cmpgt.tz michelson_test_scripts/macros/assert_cmple.tz michelson_test_scripts/macros/assert_cmplt.tz michelson_test_scripts/macros/assert_cmpneq.tz michelson_test_scripts/macros/assert_eq.tz michelson_test_scripts/macros/assert_ge.tz michelson_test_scripts/macros/assert_gt.tz michelson_test_scripts/macros/assert_le.tz michelson_test_scripts/macros/assert_lt.tz michelson_test_scripts/macros/assert_neq.tz michelson_test_scripts/macros/big_map_get_add.tz michelson_test_scripts/macros/big_map_mem.tz michelson_test_scripts/macros/build_list.tz michelson_test_scripts/macros/carn_and_cdrn.tz michelson_test_scripts/macros/compare.tz michelson_test_scripts/macros/compare_bytes.tz michelson_test_scripts/macros/fail.tz michelson_test_scripts/macros/guestbook.tz michelson_test_scripts/macros/macro_annotations.tz michelson_test_scripts/macros/map_caddaadr.tz michelson_test_scripts/macros/max_in_list.tz michelson_test_scripts/macros/min.tz michelson_test_scripts/macros/pair_macro.tz michelson_test_scripts/macros/set_caddaadr.tz michelson_test_scripts/macros/take_my_money.tz michelson_test_scripts/macros/unpair_macro.tz michelson_test_scripts/mini_scenarios/999_constant.tz michelson_test_scripts/mini_scenarios/add_clear_tickets_015.tz michelson_test_scripts/mini_scenarios/always_fails.tz michelson_test_scripts/mini_scenarios/authentication.tz michelson_test_scripts/mini_scenarios/big_map_all.tz michelson_test_scripts/mini_scenarios/big_map_entrypoints.tz michelson_test_scripts/mini_scenarios/big_map_magic.tz michelson_test_scripts/mini_scenarios/big_map_read.tz michelson_test_scripts/mini_scenarios/big_map_store.tz michelson_test_scripts/mini_scenarios/big_map_write.tz michelson_test_scripts/mini_scenarios/cache_consistency.tz michelson_test_scripts/mini_scenarios/check_signature.tz michelson_test_scripts/mini_scenarios/constant_entrypoints.tz michelson_test_scripts/mini_scenarios/constant_unit.tz michelson_test_scripts/mini_scenarios/create_contract.tz michelson_test_scripts/mini_scenarios/create_contract_simple.tz michelson_test_scripts/mini_scenarios/default_account.tz michelson_test_scripts/mini_scenarios/emit_events.tz michelson_test_scripts/mini_scenarios/execution_order_appender.tz michelson_test_scripts/mini_scenarios/execution_order_caller.tz michelson_test_scripts/mini_scenarios/execution_order_storer.tz michelson_test_scripts/mini_scenarios/fa12_reference.tz michelson_test_scripts/mini_scenarios/fail_on_false.tz michelson_test_scripts/mini_scenarios/generic_multisig.tz michelson_test_scripts/mini_scenarios/groth16.tz michelson_test_scripts/mini_scenarios/hardlimit.tz michelson_test_scripts/mini_scenarios/large_error.tz michelson_test_scripts/mini_scenarios/large_flat_contract.tz michelson_test_scripts/mini_scenarios/large_str_id.tz michelson_test_scripts/mini_scenarios/legacy_multisig.tz michelson_test_scripts/mini_scenarios/lockup.tz michelson_test_scripts/mini_scenarios/loop.tz michelson_test_scripts/mini_scenarios/lqt_fa12.mligo.tz michelson_test_scripts/mini_scenarios/multiple_en2.tz michelson_test_scripts/mini_scenarios/multiple_entrypoints_counter.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint_arg.tz michelson_test_scripts/mini_scenarios/nat_id.tz michelson_test_scripts/mini_scenarios/noop_bytes.tz michelson_test_scripts/mini_scenarios/originate_contract.tz michelson_test_scripts/mini_scenarios/parameterized_multisig.tz michelson_test_scripts/mini_scenarios/parsable_contract.tz michelson_test_scripts/mini_scenarios/receive_tickets_in_big_map.tz michelson_test_scripts/mini_scenarios/replay.tz michelson_test_scripts/mini_scenarios/reveal_signed_preimage.tz michelson_test_scripts/mini_scenarios/sc_rollup_forward.tz michelson_test_scripts/mini_scenarios/sc_rollup_mint_and_forward.tz michelson_test_scripts/mini_scenarios/self_address_receiver.tz michelson_test_scripts/mini_scenarios/self_address_sender.tz michelson_test_scripts/mini_scenarios/send_ticket_list_016.tz michelson_test_scripts/mini_scenarios/send_ticket_list_multiple_016.tz michelson_test_scripts/mini_scenarios/send_tickets_from_storage_016.tz michelson_test_scripts/mini_scenarios/send_tickets_in_big_map_015.tz michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz michelson_test_scripts/mini_scenarios/str_id.tz michelson_test_scripts/mini_scenarios/ticket_builder_fungible.tz michelson_test_scripts/mini_scenarios/ticket_builder_non_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_non_fungible.tz michelson_test_scripts/mini_scenarios/tickets_015.tz michelson_test_scripts/mini_scenarios/tickets_bag_016.tz michelson_test_scripts/mini_scenarios/tickets_bag_implicit_016.tz michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz michelson_test_scripts/mini_scenarios/tickets_send_016.tz michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz michelson_test_scripts/mini_scenarios/tickets_store_fst_and_rely_snd.tz michelson_test_scripts/mini_scenarios/tzip4_view.tz michelson_test_scripts/mini_scenarios/very_small.tz michelson_test_scripts/mini_scenarios/view_check_caller.tz michelson_test_scripts/mini_scenarios/view_registers_callers.tz michelson_test_scripts/mini_scenarios/viewable.tz michelson_test_scripts/mini_scenarios/vote_for_delegate.tz michelson_test_scripts/mini_scenarios/weather_insurance.tz michelson_test_scripts/mini_scenarios/xcat.tz michelson_test_scripts/mini_scenarios/xcat_dapp.tz michelson_test_scripts/non_regression/262_bug.tz michelson_test_scripts/non_regression/843_bug.tz michelson_test_scripts/non_regression/bad_annot_contract.tz michelson_test_scripts/non_regression/pairk_annot.tz michelson_test_scripts/opcodes/abs.tz michelson_test_scripts/opcodes/add.tz michelson_test_scripts/opcodes/add_bls12_381_fr.tz michelson_test_scripts/opcodes/add_bls12_381_g1.tz michelson_test_scripts/opcodes/add_bls12_381_g2.tz michelson_test_scripts/opcodes/add_delta_timestamp.tz michelson_test_scripts/opcodes/add_timestamp_delta.tz michelson_test_scripts/opcodes/address.tz michelson_test_scripts/opcodes/amount_after_fib_view.tz michelson_test_scripts/opcodes/amount_after_nonexistent_view.tz michelson_test_scripts/opcodes/amount_after_view.tz michelson_test_scripts/opcodes/and.tz michelson_test_scripts/opcodes/and_binary.tz michelson_test_scripts/opcodes/and_bytes_016.tz michelson_test_scripts/opcodes/and_logical_1.tz michelson_test_scripts/opcodes/balance.tz michelson_test_scripts/opcodes/balance_after_fib_view.tz michelson_test_scripts/opcodes/balance_after_nonexistent_view.tz michelson_test_scripts/opcodes/balance_after_view.tz michelson_test_scripts/opcodes/big_map_mem_nat.tz michelson_test_scripts/opcodes/big_map_mem_string.tz michelson_test_scripts/opcodes/big_map_to_self.tz michelson_test_scripts/opcodes/bls12_381_fr_push_bytes_not_padded.tz michelson_test_scripts/opcodes/bls12_381_fr_push_nat.tz michelson_test_scripts/opcodes/bls12_381_fr_to_int.tz michelson_test_scripts/opcodes/bls12_381_fr_to_mutez.tz michelson_test_scripts/opcodes/bls12_381_fr_z_int.tz michelson_test_scripts/opcodes/bls12_381_fr_z_nat.tz michelson_test_scripts/opcodes/bls12_381_z_fr_int.tz michelson_test_scripts/opcodes/bls12_381_z_fr_nat.tz michelson_test_scripts/opcodes/bytes.tz michelson_test_scripts/opcodes/bytes_of_int_016.tz michelson_test_scripts/opcodes/bytes_of_nat_016.tz michelson_test_scripts/opcodes/car.tz michelson_test_scripts/opcodes/cdr.tz michelson_test_scripts/opcodes/chain_id.tz michelson_test_scripts/opcodes/chain_id_store.tz michelson_test_scripts/opcodes/check_signature.tz michelson_test_scripts/opcodes/comb.tz michelson_test_scripts/opcodes/comb-get.tz michelson_test_scripts/opcodes/comb-literals.tz michelson_test_scripts/opcodes/comb-set.tz michelson_test_scripts/opcodes/comb-set-2.tz michelson_test_scripts/opcodes/compare.tz michelson_test_scripts/opcodes/compare_big_type.tz michelson_test_scripts/opcodes/compare_big_type2.tz michelson_test_scripts/opcodes/comparisons.tz michelson_test_scripts/opcodes/concat_hello.tz michelson_test_scripts/opcodes/concat_hello_bytes.tz michelson_test_scripts/opcodes/concat_list.tz michelson_test_scripts/opcodes/cons.tz michelson_test_scripts/opcodes/contains_all.tz michelson_test_scripts/opcodes/contract.tz michelson_test_scripts/opcodes/create_contract.tz michelson_test_scripts/opcodes/create_contract_rootname.tz michelson_test_scripts/opcodes/create_contract_rootname_alt.tz michelson_test_scripts/opcodes/create_contract_with_view.tz michelson_test_scripts/opcodes/diff_timestamps.tz michelson_test_scripts/opcodes/dig_eq.tz michelson_test_scripts/opcodes/dign.tz michelson_test_scripts/opcodes/dip.tz michelson_test_scripts/opcodes/dipn.tz michelson_test_scripts/opcodes/dropn.tz michelson_test_scripts/opcodes/dugn.tz michelson_test_scripts/opcodes/dup-n.tz michelson_test_scripts/opcodes/ediv.tz michelson_test_scripts/opcodes/ediv_mutez.tz michelson_test_scripts/opcodes/emit.tz michelson_test_scripts/opcodes/empty_map.tz michelson_test_scripts/opcodes/exec_concat.tz michelson_test_scripts/opcodes/fact.tz michelson_test_scripts/opcodes/first.tz michelson_test_scripts/opcodes/get_and_update_big_map.tz michelson_test_scripts/opcodes/get_and_update_map.tz michelson_test_scripts/opcodes/get_big_map_value.tz michelson_test_scripts/opcodes/get_map_value.tz michelson_test_scripts/opcodes/hash_consistency_checker.tz michelson_test_scripts/opcodes/hash_key.tz michelson_test_scripts/opcodes/hash_string.tz michelson_test_scripts/opcodes/if.tz michelson_test_scripts/opcodes/if_some.tz michelson_test_scripts/opcodes/int.tz michelson_test_scripts/opcodes/iter_fail.tz michelson_test_scripts/opcodes/keccak.tz michelson_test_scripts/opcodes/left_right.tz michelson_test_scripts/opcodes/level.tz michelson_test_scripts/opcodes/list_concat.tz michelson_test_scripts/opcodes/list_concat_bytes.tz michelson_test_scripts/opcodes/list_id.tz michelson_test_scripts/opcodes/list_id_map.tz michelson_test_scripts/opcodes/list_iter.tz michelson_test_scripts/opcodes/list_map_block.tz michelson_test_scripts/opcodes/list_size.tz michelson_test_scripts/opcodes/loop_failwith.tz michelson_test_scripts/opcodes/loop_left.tz michelson_test_scripts/opcodes/loop_left_failwith.tz michelson_test_scripts/opcodes/lsl_bytes_016.tz michelson_test_scripts/opcodes/lsr_bytes_016.tz michelson_test_scripts/opcodes/map_car.tz michelson_test_scripts/opcodes/map_id.tz michelson_test_scripts/opcodes/map_iter.tz michelson_test_scripts/opcodes/map_map.tz michelson_test_scripts/opcodes/map_map_sideeffect.tz michelson_test_scripts/opcodes/map_mem_nat.tz michelson_test_scripts/opcodes/map_mem_string.tz michelson_test_scripts/opcodes/map_size.tz michelson_test_scripts/opcodes/merge_comparable_pairs.tz michelson_test_scripts/opcodes/mul.tz michelson_test_scripts/opcodes/mul_bls12_381_fr.tz michelson_test_scripts/opcodes/mul_bls12_381_g1.tz michelson_test_scripts/opcodes/mul_bls12_381_g2.tz michelson_test_scripts/opcodes/mul_overflow.tz michelson_test_scripts/opcodes/munch.tz michelson_test_scripts/opcodes/mutez_to_bls12_381_fr.tz michelson_test_scripts/opcodes/neg.tz michelson_test_scripts/opcodes/neg_bls12_381_fr.tz michelson_test_scripts/opcodes/neg_bls12_381_g1.tz michelson_test_scripts/opcodes/neg_bls12_381_g2.tz michelson_test_scripts/opcodes/none.tz michelson_test_scripts/opcodes/noop.tz michelson_test_scripts/opcodes/not.tz michelson_test_scripts/opcodes/not_binary.tz michelson_test_scripts/opcodes/not_bytes_016.tz michelson_test_scripts/opcodes/or.tz michelson_test_scripts/opcodes/or_binary.tz michelson_test_scripts/opcodes/or_bytes_016.tz michelson_test_scripts/opcodes/originate_big_map.tz michelson_test_scripts/opcodes/packunpack.tz michelson_test_scripts/opcodes/packunpack_rev.tz michelson_test_scripts/opcodes/packunpack_rev_cty.tz michelson_test_scripts/opcodes/pair_id.tz michelson_test_scripts/opcodes/pairing_check.tz michelson_test_scripts/opcodes/pexec.tz michelson_test_scripts/opcodes/pexec_2.tz michelson_test_scripts/opcodes/proxy.tz michelson_test_scripts/opcodes/ret_int.tz michelson_test_scripts/opcodes/reverse.tz michelson_test_scripts/opcodes/reverse_loop.tz michelson_test_scripts/opcodes/sapling_empty_state.tz michelson_test_scripts/opcodes/self.tz michelson_test_scripts/opcodes/self_address.tz michelson_test_scripts/opcodes/self_address_after_fib_view.tz michelson_test_scripts/opcodes/self_address_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_address_after_view.tz michelson_test_scripts/opcodes/self_after_fib_view.tz michelson_test_scripts/opcodes/self_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_after_view.tz michelson_test_scripts/opcodes/self_with_default_entrypoint.tz michelson_test_scripts/opcodes/self_with_entrypoint.tz michelson_test_scripts/opcodes/sender.tz michelson_test_scripts/opcodes/sender_after_fib_view.tz michelson_test_scripts/opcodes/sender_after_nonexistent_view.tz michelson_test_scripts/opcodes/sender_after_view.tz michelson_test_scripts/opcodes/set_car.tz michelson_test_scripts/opcodes/set_cdr.tz michelson_test_scripts/opcodes/set_delegate.tz michelson_test_scripts/opcodes/set_id.tz michelson_test_scripts/opcodes/set_iter.tz michelson_test_scripts/opcodes/set_member.tz michelson_test_scripts/opcodes/set_size.tz michelson_test_scripts/opcodes/sets.tz michelson_test_scripts/opcodes/sha3.tz michelson_test_scripts/opcodes/shifts.tz michelson_test_scripts/opcodes/slice.tz michelson_test_scripts/opcodes/slice_bytes.tz michelson_test_scripts/opcodes/slices.tz michelson_test_scripts/opcodes/source.tz michelson_test_scripts/opcodes/split_bytes.tz michelson_test_scripts/opcodes/split_string.tz michelson_test_scripts/opcodes/store_bls12_381_fr.tz michelson_test_scripts/opcodes/store_bls12_381_g1.tz michelson_test_scripts/opcodes/store_bls12_381_g2.tz michelson_test_scripts/opcodes/store_input.tz michelson_test_scripts/opcodes/store_now.tz michelson_test_scripts/opcodes/str_id.tz michelson_test_scripts/opcodes/sub_timestamp_delta.tz michelson_test_scripts/opcodes/subset.tz michelson_test_scripts/opcodes/tez_add_sub.tz michelson_test_scripts/opcodes/ticket_bad.tz michelson_test_scripts/opcodes/ticket_big_store.tz michelson_test_scripts/opcodes/ticket_join.tz michelson_test_scripts/opcodes/ticket_read.tz michelson_test_scripts/opcodes/ticket_split.tz michelson_test_scripts/opcodes/ticket_store.tz michelson_test_scripts/opcodes/ticket_store-2.tz michelson_test_scripts/opcodes/ticketer.tz michelson_test_scripts/opcodes/ticketer-2.tz michelson_test_scripts/opcodes/transfer_amount.tz michelson_test_scripts/opcodes/transfer_tokens.tz michelson_test_scripts/opcodes/uncomb.tz michelson_test_scripts/opcodes/unpair.tz michelson_test_scripts/opcodes/unpair_field_annotation_mismatch.tz michelson_test_scripts/opcodes/update_big_map.tz michelson_test_scripts/opcodes/utxo_read.tz michelson_test_scripts/opcodes/utxor.tz michelson_test_scripts/opcodes/view_fib.tz michelson_test_scripts/opcodes/view_mutual_recursion.tz michelson_test_scripts/opcodes/view_op_add.tz michelson_test_scripts/opcodes/view_op_constant.tz michelson_test_scripts/opcodes/view_op_id.tz michelson_test_scripts/opcodes/view_op_nonexistent_addr.tz michelson_test_scripts/opcodes/view_op_nonexistent_func.tz michelson_test_scripts/opcodes/view_op_test_step_contants.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_input_type.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_output_type.tz michelson_test_scripts/opcodes/view_rec.tz michelson_test_scripts/opcodes/view_toplevel_lib.tz michelson_test_scripts/opcodes/voting_power.tz michelson_test_scripts/opcodes/xor.tz michelson_test_scripts/opcodes/xor_bytes_016.tz --details --display-names +./octez-client --protocol ProxfordXomTQ2AyWMVdAzJvbhGm2nGzBuDvovb4Rn6UGmgZ5s4 --mode mockup --no-base-dir-warnings typecheck script michelson_test_scripts/attic/accounts.tz michelson_test_scripts/attic/add1.tz michelson_test_scripts/attic/add1_list.tz michelson_test_scripts/attic/after_strategy.tz michelson_test_scripts/attic/always.tz michelson_test_scripts/attic/append.tz michelson_test_scripts/attic/at_least.tz michelson_test_scripts/attic/auction.tz michelson_test_scripts/attic/bad_lockup.tz michelson_test_scripts/attic/big_map_union.tz michelson_test_scripts/attic/cadr_annotation.tz michelson_test_scripts/attic/concat.tz michelson_test_scripts/attic/conditionals.tz michelson_test_scripts/attic/cons_twice.tz michelson_test_scripts/attic/cps_fact.tz michelson_test_scripts/attic/create_add1_lists.tz michelson_test_scripts/attic/data_publisher.tz michelson_test_scripts/attic/dispatch.tz michelson_test_scripts/attic/empty.tz michelson_test_scripts/attic/fail_amount.tz michelson_test_scripts/attic/faucet.tz michelson_test_scripts/attic/forward.tz michelson_test_scripts/attic/id.tz michelson_test_scripts/attic/infinite_loop.tz michelson_test_scripts/attic/insertion_sort.tz michelson_test_scripts/attic/int_publisher.tz michelson_test_scripts/attic/king_of_tez.tz michelson_test_scripts/attic/list_of_transactions.tz michelson_test_scripts/attic/queue.tz michelson_test_scripts/attic/reduce_map.tz michelson_test_scripts/attic/reentrancy.tz michelson_test_scripts/attic/reservoir.tz michelson_test_scripts/attic/scrutable_reservoir.tz michelson_test_scripts/attic/spawn_identities.tz michelson_test_scripts/entrypoints/big_map_entrypoints.tz michelson_test_scripts/entrypoints/delegatable_target.tz michelson_test_scripts/entrypoints/manager.tz michelson_test_scripts/entrypoints/no_default_target.tz michelson_test_scripts/entrypoints/no_entrypoint_target.tz michelson_test_scripts/entrypoints/rooted_target.tz michelson_test_scripts/entrypoints/simple_entrypoints.tz michelson_test_scripts/macros/assert.tz michelson_test_scripts/macros/assert_cmpeq.tz michelson_test_scripts/macros/assert_cmpge.tz michelson_test_scripts/macros/assert_cmpgt.tz michelson_test_scripts/macros/assert_cmple.tz michelson_test_scripts/macros/assert_cmplt.tz michelson_test_scripts/macros/assert_cmpneq.tz michelson_test_scripts/macros/assert_eq.tz michelson_test_scripts/macros/assert_ge.tz michelson_test_scripts/macros/assert_gt.tz michelson_test_scripts/macros/assert_le.tz michelson_test_scripts/macros/assert_lt.tz michelson_test_scripts/macros/assert_neq.tz michelson_test_scripts/macros/big_map_get_add.tz michelson_test_scripts/macros/big_map_mem.tz michelson_test_scripts/macros/build_list.tz michelson_test_scripts/macros/carn_and_cdrn.tz michelson_test_scripts/macros/compare.tz michelson_test_scripts/macros/compare_bytes.tz michelson_test_scripts/macros/fail.tz michelson_test_scripts/macros/guestbook.tz michelson_test_scripts/macros/macro_annotations.tz michelson_test_scripts/macros/map_caddaadr.tz michelson_test_scripts/macros/max_in_list.tz michelson_test_scripts/macros/min.tz michelson_test_scripts/macros/pair_macro.tz michelson_test_scripts/macros/set_caddaadr.tz michelson_test_scripts/macros/take_my_money.tz michelson_test_scripts/macros/unpair_macro.tz michelson_test_scripts/mini_scenarios/999_constant.tz michelson_test_scripts/mini_scenarios/add_clear_tickets_015.tz michelson_test_scripts/mini_scenarios/always_fails.tz michelson_test_scripts/mini_scenarios/authentication.tz michelson_test_scripts/mini_scenarios/big_map_all.tz michelson_test_scripts/mini_scenarios/big_map_entrypoints.tz michelson_test_scripts/mini_scenarios/big_map_magic.tz michelson_test_scripts/mini_scenarios/big_map_read.tz michelson_test_scripts/mini_scenarios/big_map_store.tz michelson_test_scripts/mini_scenarios/big_map_write.tz michelson_test_scripts/mini_scenarios/cache_consistency.tz michelson_test_scripts/mini_scenarios/check_signature.tz michelson_test_scripts/mini_scenarios/constant_entrypoints.tz michelson_test_scripts/mini_scenarios/constant_unit.tz michelson_test_scripts/mini_scenarios/create_contract.tz michelson_test_scripts/mini_scenarios/create_contract_simple.tz michelson_test_scripts/mini_scenarios/default_account.tz michelson_test_scripts/mini_scenarios/emit_events.tz michelson_test_scripts/mini_scenarios/execution_order_appender.tz michelson_test_scripts/mini_scenarios/execution_order_caller.tz michelson_test_scripts/mini_scenarios/execution_order_storer.tz michelson_test_scripts/mini_scenarios/fa12_reference.tz michelson_test_scripts/mini_scenarios/fail_on_false.tz michelson_test_scripts/mini_scenarios/generic_multisig.tz michelson_test_scripts/mini_scenarios/groth16.tz michelson_test_scripts/mini_scenarios/hardlimit.tz michelson_test_scripts/mini_scenarios/large_error.tz michelson_test_scripts/mini_scenarios/large_flat_contract.tz michelson_test_scripts/mini_scenarios/large_str_id.tz michelson_test_scripts/mini_scenarios/legacy_multisig.tz michelson_test_scripts/mini_scenarios/lockup.tz michelson_test_scripts/mini_scenarios/loop.tz michelson_test_scripts/mini_scenarios/lqt_fa12.mligo.tz michelson_test_scripts/mini_scenarios/multiple_en2.tz michelson_test_scripts/mini_scenarios/multiple_entrypoints_counter.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint.tz michelson_test_scripts/mini_scenarios/multisig_dest_entrypoint_arg.tz michelson_test_scripts/mini_scenarios/nat_id.tz michelson_test_scripts/mini_scenarios/noop_bytes.tz michelson_test_scripts/mini_scenarios/originate_contract.tz michelson_test_scripts/mini_scenarios/parameterized_multisig.tz michelson_test_scripts/mini_scenarios/parsable_contract.tz michelson_test_scripts/mini_scenarios/receive_tickets_in_big_map.tz michelson_test_scripts/mini_scenarios/replay.tz michelson_test_scripts/mini_scenarios/reveal_signed_preimage.tz michelson_test_scripts/mini_scenarios/sc_rollup_forward.tz michelson_test_scripts/mini_scenarios/sc_rollup_mint_and_forward.tz michelson_test_scripts/mini_scenarios/self_address_receiver.tz michelson_test_scripts/mini_scenarios/self_address_sender.tz michelson_test_scripts/mini_scenarios/send_ticket_list_016.tz michelson_test_scripts/mini_scenarios/send_ticket_list_multiple_016.tz michelson_test_scripts/mini_scenarios/send_tickets_from_storage_016.tz michelson_test_scripts/mini_scenarios/send_tickets_in_big_map_015.tz michelson_test_scripts/mini_scenarios/smart_rollup_mint_and_deposit_ticket_016.tz michelson_test_scripts/mini_scenarios/smart_rollup_receive_tickets_016.tz michelson_test_scripts/mini_scenarios/str_id.tz michelson_test_scripts/mini_scenarios/ticket_builder_fungible.tz michelson_test_scripts/mini_scenarios/ticket_builder_non_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_fungible.tz michelson_test_scripts/mini_scenarios/ticket_wallet_non_fungible.tz michelson_test_scripts/mini_scenarios/tickets_015.tz michelson_test_scripts/mini_scenarios/tickets_bag_016.tz michelson_test_scripts/mini_scenarios/tickets_bag_implicit_016.tz michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz michelson_test_scripts/mini_scenarios/tickets_send_016.tz michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz michelson_test_scripts/mini_scenarios/tickets_store_fst_and_rely_snd.tz michelson_test_scripts/mini_scenarios/tzip4_view.tz michelson_test_scripts/mini_scenarios/very_small.tz michelson_test_scripts/mini_scenarios/view_check_caller.tz michelson_test_scripts/mini_scenarios/view_registers_callers.tz michelson_test_scripts/mini_scenarios/viewable.tz michelson_test_scripts/mini_scenarios/vote_for_delegate.tz michelson_test_scripts/mini_scenarios/weather_insurance.tz michelson_test_scripts/mini_scenarios/xcat.tz michelson_test_scripts/mini_scenarios/xcat_dapp.tz michelson_test_scripts/non_regression/262_bug.tz michelson_test_scripts/non_regression/843_bug.tz michelson_test_scripts/non_regression/bad_annot_contract.tz michelson_test_scripts/non_regression/pairk_annot.tz michelson_test_scripts/opcodes/abs.tz michelson_test_scripts/opcodes/add.tz michelson_test_scripts/opcodes/add_bls12_381_fr.tz michelson_test_scripts/opcodes/add_bls12_381_g1.tz michelson_test_scripts/opcodes/add_bls12_381_g2.tz michelson_test_scripts/opcodes/add_delta_timestamp.tz michelson_test_scripts/opcodes/add_timestamp_delta.tz michelson_test_scripts/opcodes/address.tz michelson_test_scripts/opcodes/amount_after_fib_view.tz michelson_test_scripts/opcodes/amount_after_nonexistent_view.tz michelson_test_scripts/opcodes/amount_after_view.tz michelson_test_scripts/opcodes/and.tz michelson_test_scripts/opcodes/and_binary.tz michelson_test_scripts/opcodes/and_bytes_016.tz michelson_test_scripts/opcodes/and_logical_1.tz michelson_test_scripts/opcodes/balance.tz michelson_test_scripts/opcodes/balance_after_fib_view.tz michelson_test_scripts/opcodes/balance_after_nonexistent_view.tz michelson_test_scripts/opcodes/balance_after_view.tz michelson_test_scripts/opcodes/big_map_mem_nat.tz michelson_test_scripts/opcodes/big_map_mem_string.tz michelson_test_scripts/opcodes/big_map_to_self.tz michelson_test_scripts/opcodes/bls12_381_fr_push_bytes_not_padded.tz michelson_test_scripts/opcodes/bls12_381_fr_push_nat.tz michelson_test_scripts/opcodes/bls12_381_fr_to_int.tz michelson_test_scripts/opcodes/bls12_381_fr_to_mutez.tz michelson_test_scripts/opcodes/bls12_381_fr_z_int.tz michelson_test_scripts/opcodes/bls12_381_fr_z_nat.tz michelson_test_scripts/opcodes/bls12_381_z_fr_int.tz michelson_test_scripts/opcodes/bls12_381_z_fr_nat.tz michelson_test_scripts/opcodes/bytes.tz michelson_test_scripts/opcodes/bytes_of_int_016.tz michelson_test_scripts/opcodes/bytes_of_nat_016.tz michelson_test_scripts/opcodes/car.tz michelson_test_scripts/opcodes/cdr.tz michelson_test_scripts/opcodes/chain_id.tz michelson_test_scripts/opcodes/chain_id_store.tz michelson_test_scripts/opcodes/check_signature.tz michelson_test_scripts/opcodes/comb.tz michelson_test_scripts/opcodes/comb-get.tz michelson_test_scripts/opcodes/comb-literals.tz michelson_test_scripts/opcodes/comb-set.tz michelson_test_scripts/opcodes/comb-set-2.tz michelson_test_scripts/opcodes/compare.tz michelson_test_scripts/opcodes/compare_big_type.tz michelson_test_scripts/opcodes/compare_big_type2.tz michelson_test_scripts/opcodes/comparisons.tz michelson_test_scripts/opcodes/concat_hello.tz michelson_test_scripts/opcodes/concat_hello_bytes.tz michelson_test_scripts/opcodes/concat_list.tz michelson_test_scripts/opcodes/cons.tz michelson_test_scripts/opcodes/contains_all.tz michelson_test_scripts/opcodes/contract.tz michelson_test_scripts/opcodes/create_contract.tz michelson_test_scripts/opcodes/create_contract_rootname.tz michelson_test_scripts/opcodes/create_contract_rootname_alt.tz michelson_test_scripts/opcodes/create_contract_with_view.tz michelson_test_scripts/opcodes/diff_timestamps.tz michelson_test_scripts/opcodes/dig_eq.tz michelson_test_scripts/opcodes/dign.tz michelson_test_scripts/opcodes/dip.tz michelson_test_scripts/opcodes/dipn.tz michelson_test_scripts/opcodes/dropn.tz michelson_test_scripts/opcodes/dugn.tz michelson_test_scripts/opcodes/dup-n.tz michelson_test_scripts/opcodes/ediv.tz michelson_test_scripts/opcodes/ediv_mutez.tz michelson_test_scripts/opcodes/emit.tz michelson_test_scripts/opcodes/empty_map.tz michelson_test_scripts/opcodes/exec_concat.tz michelson_test_scripts/opcodes/fact.tz michelson_test_scripts/opcodes/first.tz michelson_test_scripts/opcodes/get_and_update_big_map.tz michelson_test_scripts/opcodes/get_and_update_map.tz michelson_test_scripts/opcodes/get_big_map_value.tz michelson_test_scripts/opcodes/get_map_value.tz michelson_test_scripts/opcodes/hash_consistency_checker.tz michelson_test_scripts/opcodes/hash_key.tz michelson_test_scripts/opcodes/hash_string.tz michelson_test_scripts/opcodes/if.tz michelson_test_scripts/opcodes/if_some.tz michelson_test_scripts/opcodes/int.tz michelson_test_scripts/opcodes/iter_fail.tz michelson_test_scripts/opcodes/keccak.tz michelson_test_scripts/opcodes/left_right.tz michelson_test_scripts/opcodes/level.tz michelson_test_scripts/opcodes/list_concat.tz michelson_test_scripts/opcodes/list_concat_bytes.tz michelson_test_scripts/opcodes/list_id.tz michelson_test_scripts/opcodes/list_id_map.tz michelson_test_scripts/opcodes/list_iter.tz michelson_test_scripts/opcodes/list_map_block.tz michelson_test_scripts/opcodes/list_size.tz michelson_test_scripts/opcodes/loop_failwith.tz michelson_test_scripts/opcodes/loop_left.tz michelson_test_scripts/opcodes/loop_left_failwith.tz michelson_test_scripts/opcodes/lsl_bytes_016.tz michelson_test_scripts/opcodes/lsr_bytes_016.tz michelson_test_scripts/opcodes/map_car.tz michelson_test_scripts/opcodes/map_id.tz michelson_test_scripts/opcodes/map_iter.tz michelson_test_scripts/opcodes/map_map.tz michelson_test_scripts/opcodes/map_map_sideeffect.tz michelson_test_scripts/opcodes/map_mem_nat.tz michelson_test_scripts/opcodes/map_mem_string.tz michelson_test_scripts/opcodes/map_size.tz michelson_test_scripts/opcodes/merge_comparable_pairs.tz michelson_test_scripts/opcodes/mul.tz michelson_test_scripts/opcodes/mul_bls12_381_fr.tz michelson_test_scripts/opcodes/mul_bls12_381_g1.tz michelson_test_scripts/opcodes/mul_bls12_381_g2.tz michelson_test_scripts/opcodes/mul_overflow.tz michelson_test_scripts/opcodes/munch.tz michelson_test_scripts/opcodes/mutez_to_bls12_381_fr.tz michelson_test_scripts/opcodes/neg.tz michelson_test_scripts/opcodes/neg_bls12_381_fr.tz michelson_test_scripts/opcodes/neg_bls12_381_g1.tz michelson_test_scripts/opcodes/neg_bls12_381_g2.tz michelson_test_scripts/opcodes/none.tz michelson_test_scripts/opcodes/noop.tz michelson_test_scripts/opcodes/not.tz michelson_test_scripts/opcodes/not_binary.tz michelson_test_scripts/opcodes/not_bytes_016.tz michelson_test_scripts/opcodes/or.tz michelson_test_scripts/opcodes/or_binary.tz michelson_test_scripts/opcodes/or_bytes_016.tz michelson_test_scripts/opcodes/originate_big_map.tz michelson_test_scripts/opcodes/packunpack.tz michelson_test_scripts/opcodes/packunpack_rev.tz michelson_test_scripts/opcodes/packunpack_rev_cty.tz michelson_test_scripts/opcodes/pair_id.tz michelson_test_scripts/opcodes/pairing_check.tz michelson_test_scripts/opcodes/pexec.tz michelson_test_scripts/opcodes/pexec_2.tz michelson_test_scripts/opcodes/proxy.tz michelson_test_scripts/opcodes/ret_int.tz michelson_test_scripts/opcodes/reverse.tz michelson_test_scripts/opcodes/reverse_loop.tz michelson_test_scripts/opcodes/sapling_empty_state.tz michelson_test_scripts/opcodes/self.tz michelson_test_scripts/opcodes/self_address.tz michelson_test_scripts/opcodes/self_address_after_fib_view.tz michelson_test_scripts/opcodes/self_address_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_address_after_view.tz michelson_test_scripts/opcodes/self_after_fib_view.tz michelson_test_scripts/opcodes/self_after_nonexistent_view.tz michelson_test_scripts/opcodes/self_after_view.tz michelson_test_scripts/opcodes/self_with_default_entrypoint.tz michelson_test_scripts/opcodes/self_with_entrypoint.tz michelson_test_scripts/opcodes/sender.tz michelson_test_scripts/opcodes/sender_after_fib_view.tz michelson_test_scripts/opcodes/sender_after_nonexistent_view.tz michelson_test_scripts/opcodes/sender_after_view.tz michelson_test_scripts/opcodes/set_car.tz michelson_test_scripts/opcodes/set_cdr.tz michelson_test_scripts/opcodes/set_delegate.tz michelson_test_scripts/opcodes/set_id.tz michelson_test_scripts/opcodes/set_iter.tz michelson_test_scripts/opcodes/set_member.tz michelson_test_scripts/opcodes/set_size.tz michelson_test_scripts/opcodes/sets.tz michelson_test_scripts/opcodes/sha3.tz michelson_test_scripts/opcodes/shifts.tz michelson_test_scripts/opcodes/slice.tz michelson_test_scripts/opcodes/slice_bytes.tz michelson_test_scripts/opcodes/slices.tz michelson_test_scripts/opcodes/source.tz michelson_test_scripts/opcodes/split_bytes.tz michelson_test_scripts/opcodes/split_string.tz michelson_test_scripts/opcodes/store_bls12_381_fr.tz michelson_test_scripts/opcodes/store_bls12_381_g1.tz michelson_test_scripts/opcodes/store_bls12_381_g2.tz michelson_test_scripts/opcodes/store_input.tz michelson_test_scripts/opcodes/store_now.tz michelson_test_scripts/opcodes/str_id.tz michelson_test_scripts/opcodes/sub_timestamp_delta.tz michelson_test_scripts/opcodes/subset.tz michelson_test_scripts/opcodes/tez_add_sub.tz michelson_test_scripts/opcodes/ticket_bad.tz michelson_test_scripts/opcodes/ticket_big_store.tz michelson_test_scripts/opcodes/ticket_join.tz michelson_test_scripts/opcodes/ticket_read.tz michelson_test_scripts/opcodes/ticket_split.tz michelson_test_scripts/opcodes/ticket_store.tz michelson_test_scripts/opcodes/ticket_store-2.tz michelson_test_scripts/opcodes/ticketer.tz michelson_test_scripts/opcodes/ticketer-2.tz michelson_test_scripts/opcodes/transfer_amount.tz michelson_test_scripts/opcodes/transfer_tokens.tz michelson_test_scripts/opcodes/uncomb.tz michelson_test_scripts/opcodes/unpair.tz michelson_test_scripts/opcodes/unpair_field_annotation_mismatch.tz michelson_test_scripts/opcodes/update_big_map.tz michelson_test_scripts/opcodes/utxo_read.tz michelson_test_scripts/opcodes/utxor.tz michelson_test_scripts/opcodes/view_fib.tz michelson_test_scripts/opcodes/view_mutual_recursion.tz michelson_test_scripts/opcodes/view_op_add.tz michelson_test_scripts/opcodes/view_op_constant.tz michelson_test_scripts/opcodes/view_op_id.tz michelson_test_scripts/opcodes/view_op_nonexistent_addr.tz michelson_test_scripts/opcodes/view_op_nonexistent_func.tz michelson_test_scripts/opcodes/view_op_test_step_contants.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_input_type.tz michelson_test_scripts/opcodes/view_op_toplevel_inconsistent_output_type.tz michelson_test_scripts/opcodes/view_rec.tz michelson_test_scripts/opcodes/view_toplevel_lib.tz michelson_test_scripts/opcodes/voting_power.tz michelson_test_scripts/opcodes/xor.tz michelson_test_scripts/opcodes/xor_bytes_016.tz --details --display-names Well typed (Gas remaining: 1039933.430 units remaining) michelson_test_scripts/attic/accounts.tz { parameter (or (key_hash %Initialize) @@ -35175,6 +35175,54 @@ Well typed (Gas remaining: 1039997.849 units remaining) michelson_test_scripts/m /* [ list operation : unit ] */ ; PAIR /* [ pair (list operation) unit ] */ } } +Well typed (Gas remaining: 1039985.858 units remaining) michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz +{ parameter + (or (pair %mint_and_send string nat (contract (ticket string))) + (pair %store int (list (pair string (ticket string))))) ; + storage (list (ticket string)) ; + code { UNPAIR + /* [ or (pair string nat (contract (ticket string))) + (pair int (list (pair string (ticket string)))) : list (ticket string) ] */ ; + IF_LEFT + { UNPAIR 3 + /* [ string : nat : contract (ticket string) : list (ticket string) ] */ ; + TICKET + /* [ option (ticket string) : contract (ticket string) : list (ticket string) ] */ ; + IF_NONE + { PUSH string + "option is None" + /* [ string : contract (ticket string) : list (ticket string) ] */ ; + FAILWITH + /* [] */ } + { /* [ ticket string : contract (ticket string) : list (ticket string) ] */ } ; + SWAP + /* [ contract (ticket string) : ticket string : list (ticket string) ] */ ; + PUSH mutez + 0 + /* [ mutez : contract (ticket string) : ticket string : list (ticket string) ] */ ; + DIG 2 + /* [ ticket string : mutez : contract (ticket string) : list (ticket string) ] */ ; + TRANSFER_TOKENS + /* [ operation : list (ticket string) ] */ ; + SWAP + /* [ list (ticket string) : operation ] */ ; + NIL operation + /* [ list operation : list (ticket string) : operation ] */ ; + DIG 2 + /* [ operation : list operation : list (ticket string) ] */ ; + CONS + /* [ list operation : list (ticket string) ] */ } + { CDR + /* [ list (pair string (ticket string)) : list (ticket string) ] */ ; + ITER { CDR + /* [ ticket string : list (ticket string) ] */ ; + CONS + /* [ list (ticket string) ] */ } + /* [ list (ticket string) ] */ ; + NIL operation + /* [ list operation : list (ticket string) ] */ } ; + PAIR + /* [ pair (list operation) (list (ticket string)) ] */ } } Well typed (Gas remaining: 1039997.186 units remaining) michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz { parameter (ticket string) ; storage (option (ticket string)) ; diff --git a/tezt/tests/expected/script_hash_regression.ml/Alpha- Test script hash regression.out b/tezt/tests/expected/script_hash_regression.ml/Alpha- Test script hash regression.out index 72c54d8f00e86ce8244ad8bab9e9eabaf6691618..e16fe16b92d103920e58ed680a62c5f9527494cb 100644 --- a/tezt/tests/expected/script_hash_regression.ml/Alpha- Test script hash regression.out +++ b/tezt/tests/expected/script_hash_regression.ml/Alpha- Test script hash regression.out @@ -215,6 +215,7 @@ exprteapARTC3TcgQgBLVei9HoTq28M5xLbaEjmBaiUt46ipgP2TEq michelson_test_scripts/mi exprthATKGK2oc4oVbEDM4TYgJ9wHRsgbP4QwdpgwaNbjvswCeP3iT michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz expru3BvEZn3LQEeUGjADWtNsRomSDi7LumwBDZEPnqo7j6iTnC5G1 michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz exprutzAruVCL3YX7JEwZf6bJ9Tq4bj19vWR9S3wofjNFXga1LzQSd michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz +exprvRyB18cUg5GmD5fzdkozmBMJyRm6my9hCFMMXQA4UgEGF6rdcH michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz expruhv4oofRVia4jt9hoTcYyohmNPiFqHTGTAyquyWu6R24eRdbEu michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz exprtfF4hinrA2UJXB12eDnXV2ZjGAXX5ADneq5ezkuVi3PJvVFwnN michelson_test_scripts/mini_scenarios/tickets_send_016.tz expruTjbiyNePk21v9BsharZPaT7xLkTzwTU5aSeHya4pXqn2DTBz5 michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz diff --git a/tezt/tests/expected/script_hash_regression.ml/Nairobi- Test script hash regression.out b/tezt/tests/expected/script_hash_regression.ml/Nairobi- Test script hash regression.out index 72c54d8f00e86ce8244ad8bab9e9eabaf6691618..e16fe16b92d103920e58ed680a62c5f9527494cb 100644 --- a/tezt/tests/expected/script_hash_regression.ml/Nairobi- Test script hash regression.out +++ b/tezt/tests/expected/script_hash_regression.ml/Nairobi- Test script hash regression.out @@ -215,6 +215,7 @@ exprteapARTC3TcgQgBLVei9HoTq28M5xLbaEjmBaiUt46ipgP2TEq michelson_test_scripts/mi exprthATKGK2oc4oVbEDM4TYgJ9wHRsgbP4QwdpgwaNbjvswCeP3iT michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz expru3BvEZn3LQEeUGjADWtNsRomSDi7LumwBDZEPnqo7j6iTnC5G1 michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz exprutzAruVCL3YX7JEwZf6bJ9Tq4bj19vWR9S3wofjNFXga1LzQSd michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz +exprvRyB18cUg5GmD5fzdkozmBMJyRm6my9hCFMMXQA4UgEGF6rdcH michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz expruhv4oofRVia4jt9hoTcYyohmNPiFqHTGTAyquyWu6R24eRdbEu michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz exprtfF4hinrA2UJXB12eDnXV2ZjGAXX5ADneq5ezkuVi3PJvVFwnN michelson_test_scripts/mini_scenarios/tickets_send_016.tz expruTjbiyNePk21v9BsharZPaT7xLkTzwTU5aSeHya4pXqn2DTBz5 michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz diff --git a/tezt/tests/expected/script_hash_regression.ml/Oxford- Test script hash regression.out b/tezt/tests/expected/script_hash_regression.ml/Oxford- Test script hash regression.out index 72c54d8f00e86ce8244ad8bab9e9eabaf6691618..e16fe16b92d103920e58ed680a62c5f9527494cb 100644 --- a/tezt/tests/expected/script_hash_regression.ml/Oxford- Test script hash regression.out +++ b/tezt/tests/expected/script_hash_regression.ml/Oxford- Test script hash regression.out @@ -215,6 +215,7 @@ exprteapARTC3TcgQgBLVei9HoTq28M5xLbaEjmBaiUt46ipgP2TEq michelson_test_scripts/mi exprthATKGK2oc4oVbEDM4TYgJ9wHRsgbP4QwdpgwaNbjvswCeP3iT michelson_test_scripts/mini_scenarios/tickets_blackhole_016.tz expru3BvEZn3LQEeUGjADWtNsRomSDi7LumwBDZEPnqo7j6iTnC5G1 michelson_test_scripts/mini_scenarios/tickets_create_and_send_015.tz exprutzAruVCL3YX7JEwZf6bJ9Tq4bj19vWR9S3wofjNFXga1LzQSd michelson_test_scripts/mini_scenarios/tickets_list_blackhole_016.tz +exprvRyB18cUg5GmD5fzdkozmBMJyRm6my9hCFMMXQA4UgEGF6rdcH michelson_test_scripts/mini_scenarios/tickets_mint_and_store_complex_param.tz expruhv4oofRVia4jt9hoTcYyohmNPiFqHTGTAyquyWu6R24eRdbEu michelson_test_scripts/mini_scenarios/tickets_receive_and_store.tz exprtfF4hinrA2UJXB12eDnXV2ZjGAXX5ADneq5ezkuVi3PJvVFwnN michelson_test_scripts/mini_scenarios/tickets_send_016.tz expruTjbiyNePk21v9BsharZPaT7xLkTzwTU5aSeHya4pXqn2DTBz5 michelson_test_scripts/mini_scenarios/tickets_send_with_tez_016.tz diff --git a/tezt/tests/expected/tickets.ml/Alpha- Send tickets from implicit account to originated directly (with complex p.out b/tezt/tests/expected/tickets.ml/Alpha- Send tickets from implicit account to originated directly (with complex p.out new file mode 100644 index 0000000000000000000000000000000000000000..1a42e9eca0d4707246eabe896634fff81a5ec0ff --- /dev/null +++ b/tezt/tests/expected/tickets.ml/Alpha- Send tickets from implicit account to originated directly (with complex p.out @@ -0,0 +1,61 @@ + +./octez-client --wait none transfer 0 from bootstrap1 to '[CONTRACT_HASH]' --burn-cap 1 --entrypoint store --arg 'Pair 99 {Pair "garbage" (Pair 0x01b9ce1609aab1100170d2ea4f94e3407244090b1000 (Pair "Ticket1" 1)) ; Pair "garbage" (Pair 0x01b9ce1609aab1100170d2ea4f94e3407244090b1000 (Pair "Ticket2" 2))}' +Node is bootstrapped. +Estimated gas: 3992.854 units (will add 100 for safety) +Estimated storage: 222 bytes added (will add 20 for safety) +Operation successfully injected in the node. +Operation hash is '[OPERATION_HASH]' +NOT waiting for the operation to be included. +Use command + octez-client wait for [OPERATION_HASH] to be included --confirmations 1 --branch [BLOCK_HASH] +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: [PUBLIC_KEY_HASH] + Fee to the baker: ꜩ0.000798 + Expected counter: 4 + Gas limit: 4093 + Storage limit: 242 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.000798 + payload fees(the block proposer) ....... +ꜩ0.000798 + Transaction: + Amount: ꜩ0 + From: [PUBLIC_KEY_HASH] + To: [CONTRACT_HASH] + Entrypoint: store + Parameter: (Pair 99 + { Pair "garbage" (Pair 0x01b9ce1609aab1100170d2ea4f94e3407244090b1000 (Pair "Ticket1" 1)) ; + Pair "garbage" (Pair 0x01b9ce1609aab1100170d2ea4f94e3407244090b1000 (Pair "Ticket2" 2)) }) + This transaction was successfully applied + Updated storage: + { Pair 0x01b9ce1609aab1100170d2ea4f94e3407244090b1000 (Pair "Ticket2" 2) ; + Pair 0x01b9ce1609aab1100170d2ea4f94e3407244090b1000 (Pair "Ticket1" 1) } + Storage size: 287 bytes + Paid storage size diff: 222 bytes + Consumed gas: 3992.821 + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.0555 + storage fees ........................... +ꜩ0.0555 + Ticket updates: + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Ticket1" + Account updates: + [PUBLIC_KEY_HASH] ... -1 + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Ticket2" + Account updates: + [PUBLIC_KEY_HASH] ... -2 + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Ticket2" + Account updates: + [CONTRACT_HASH] ... +2 + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Ticket1" + Account updates: + [CONTRACT_HASH] ... +1 + diff --git a/tezt/tests/expected/tickets.ml/Alpha- Send tickets from implicit account to originated directly.out b/tezt/tests/expected/tickets.ml/Alpha- Send tickets from implicit account to originated directly.out new file mode 100644 index 0000000000000000000000000000000000000000..76db476257d43896f60143ef0b4e2b034fa4280f --- /dev/null +++ b/tezt/tests/expected/tickets.ml/Alpha- Send tickets from implicit account to originated directly.out @@ -0,0 +1,48 @@ + +./octez-client --wait none transfer 0 from bootstrap1 to '[CONTRACT_HASH]' --burn-cap 1 --entrypoint save --arg 'Pair 0x01fb08747351ab3652f772910c4565880d8df616f800 (Pair "Ticket" 1)' +Node is bootstrapped. +Estimated gas: 3077.335 units (will add 100 for safety) +Estimated storage: 44 bytes added (will add 20 for safety) +Operation successfully injected in the node. +Operation hash is '[OPERATION_HASH]' +NOT waiting for the operation to be included. +Use command + octez-client wait for [OPERATION_HASH] to be included --confirmations 1 --branch [BLOCK_HASH] +and/or an external block explorer to make sure that it has been included. +This sequence of operations was run: + Manager signed operations: + From: [PUBLIC_KEY_HASH] + Fee to the baker: ꜩ0.00062 + Expected counter: 4 + Gas limit: 3178 + Storage limit: 64 bytes + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.00062 + payload fees(the block proposer) ....... +ꜩ0.00062 + Transaction: + Amount: ꜩ0 + From: [PUBLIC_KEY_HASH] + To: [CONTRACT_HASH] + Entrypoint: save + Parameter: (Pair 0x01fb08747351ab3652f772910c4565880d8df616f800 (Pair "Ticket" 1)) + This transaction was successfully applied + Updated storage: + { Pair 0x01fb08747351ab3652f772910c4565880d8df616f800 (Pair "Ticket" 1) } + Storage size: 238 bytes + Paid storage size diff: 44 bytes + Consumed gas: 3077.269 + Balance updates: + [PUBLIC_KEY_HASH] ... -ꜩ0.011 + storage fees ........................... +ꜩ0.011 + Ticket updates: + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Ticket" + Account updates: + [PUBLIC_KEY_HASH] ... -1 + Ticketer: [CONTRACT_HASH] + Content type: string + Content: "Ticket" + Account updates: + [CONTRACT_HASH] ... +1 + diff --git a/tezt/tests/tickets.ml b/tezt/tests/tickets.ml index cf01071218c86c4b31adb03887960fd0b8d5c8d5..6e79591e834e21e126f30916366b271735949c4b 100644 --- a/tezt/tests/tickets.ml +++ b/tezt/tests/tickets.ml @@ -31,8 +31,38 @@ Subject: Regression tests for tickets *) +open Tezos_protocol_alpha.Protocol + let hooks = Tezos_regression.hooks +let setup_node protocol ~direct_ticket_spending_enable = + let base = Either.right (protocol, None) in + let* parameter_file = + Protocol.write_parameter_file + ~base + [(["direct_ticket_spending_enable"], `Bool direct_ticket_spending_enable)] + in + let nodes_args = + Node.[Synchronisation_threshold 0; History_mode Archive; No_bootstrap_peers] + in + let* node, client = + Client.init_with_protocol ~parameter_file `Client ~protocol ~nodes_args () + in + return (node, client) + +(* Return micheline encoding of ticket. *) +let encode_ticket ~ticketer ~content ~amount = + let ticketer_contract = + Result.get_ok (Alpha_context.Contract.of_b58check ticketer) + in + let ticketer_bytes = + Data_encoding.Binary.to_bytes_exn + Alpha_context.Contract.encoding + ticketer_contract + in + let encoded_ticketer = Hex.show (Hex.of_bytes ticketer_bytes) in + sf {|Pair 0x%s (Pair %S %d)|} encoded_ticketer content amount + let test_create_and_remove_tickets = Protocol.register_regression_test ~__FILE__ @@ -208,6 +238,245 @@ let test_send_tickets_to_implicit_account = in unit +(* Tests that an implicit account can send a single ticket to originated + using the [Transfer] manager operation. *) +let test_direct_transfer_tickets_from_implicit_account_to_originated = + Protocol.register_regression_test + ~__FILE__ + ~title:"Send tickets from implicit account to originated directly" + ~tags:["client"; "michelson"; "implicit"; "ticket"; "originated"] + ~supports:(Protocol.From_protocol 19) + @@ fun protocol -> + let* _node, client = + setup_node protocol ~direct_ticket_spending_enable:true + in + (* Deposit tickets to the implicit account. *) + let* _alias, ticketer = + Client.originate_contract_at + ~amount:Tez.zero + ~src:Constant.bootstrap1.alias + ~init:"Unit" + ~burn_cap:Tez.one + client + ["mini_scenarios"; "tickets_send"] + protocol + in + let* () = Client.bake_for_and_wait client in + let* () = + Client.transfer + ~burn_cap:Tez.one + ~amount:Tez.zero + ~giver:Constant.bootstrap1.alias + ~receiver:ticketer + ~arg:(sf "Pair %S 1" Constant.bootstrap1.public_key_hash) + client + in + let* () = Client.bake_for_and_wait client in + (* Assert that the implicit account holds the ticket. *) + let* () = + assert_ticket_balance + ~contract:Constant.bootstrap1.alias + ~ticketer + ~ty:"string" + ~contents:"\"Ticket\"" + ~expected:1 + client + in + (* Originate contract that stores tickets sent to it's "save" entrypoint. *) + let* _alias, bag = + Client.originate_contract_at + ~amount:Tez.zero + ~src:Constant.bootstrap1.alias + ~init:"{}" + ~burn_cap:Tez.one + client + ["mini_scenarios"; "tickets_bag"] + protocol + in + let* () = Client.bake_for_and_wait client in + (* Transfer ticket from implicit to originated using the [Transaction] manager operation. *) + let* () = + Client.transfer + ~burn_cap:Tez.one + ~amount:Tez.zero + ~giver:Constant.bootstrap1.alias + ~receiver:bag + ~entrypoint:"save" + ~arg:(encode_ticket ~ticketer ~content:"Ticket" ~amount:1) + ~hooks + client + in + let* () = Client.bake_for_and_wait client in + let* () = + assert_ticket_balance + ~contract:Constant.bootstrap1.alias + ~ticketer + ~ty:"string" + ~contents:"\"Ticket\"" + ~expected:0 + client + in + let* () = + assert_ticket_balance + ~contract:bag + ~ticketer + ~ty:"string" + ~contents:"\"Ticket\"" + ~expected:1 + client + in + unit + +(* Tests that an implicit account can send a tickets to originated + using the [Transfer] manager operation. The parameter of the + transfer is made complex to check that the [Transfer] properly + scans the parameter and transfers all included tickets. *) +let test_direct_transfer_tickets_from_implicit_account_to_originated_complex = + Protocol.register_regression_test + ~__FILE__ + ~title: + "Send tickets from implicit account to originated directly (with complex \ + parameters)" + ~tags:["client"; "michelson"; "implicit"; "ticket"; "originated"] + ~supports:(Protocol.From_protocol 19) + @@ fun protocol -> + let* _node, client = + setup_node protocol ~direct_ticket_spending_enable:true + in + (* Deposit tickets to the implicit account. *) + let* _alias, ticketer = + Client.originate_contract_at + ~amount:Tez.zero + ~src:Constant.bootstrap1.alias + ~init:"{}" + ~burn_cap:Tez.one + client + ["mini_scenarios"; "tickets_mint_and_store_complex_param"] + protocol + in + let* () = Client.bake_for_and_wait client in + let first_ticket_content = "Ticket1" in + let second_ticket_content = "Ticket2" in + let amount = 3 in + let* () = + Client.transfer + ~burn_cap:Tez.one + ~amount:Tez.zero + ~giver:Constant.bootstrap1.alias + ~receiver:ticketer + ~entrypoint:"mint_and_send" + ~arg: + (sf + "Pair %S (Pair %d %S)" + first_ticket_content + amount + Constant.bootstrap1.public_key_hash) + client + in + let* () = Client.bake_for_and_wait client in + let* () = + Client.transfer + ~burn_cap:Tez.one + ~amount:Tez.zero + ~giver:Constant.bootstrap1.alias + ~receiver:ticketer + ~entrypoint:"mint_and_send" + ~arg: + (sf + "Pair %S (Pair %d %S)" + second_ticket_content + amount + Constant.bootstrap1.public_key_hash) + client + in + let* () = Client.bake_for_and_wait client in + (* Assert that the implicit account holds the ticket. *) + let* () = + assert_ticket_balance + ~contract:Constant.bootstrap1.alias + ~ticketer + ~ty:"string" + ~contents:(sf "%S" first_ticket_content) + ~expected:amount + client + in + let* () = + assert_ticket_balance + ~contract:Constant.bootstrap1.alias + ~ticketer + ~ty:"string" + ~contents:(sf "%S" second_ticket_content) + ~expected:amount + client + in + let* () = Client.bake_for_and_wait client in + (* Send tickets from implicit to originated. *) + let first_ticket_sent = 1 in + let second_ticket_sent = 2 in + let complex_arg_with_tickets = + sf + {|Pair 99 {Pair "garbage" (%s) ; Pair "garbage" (%s)}|} + (encode_ticket + ~ticketer + ~content:first_ticket_content + ~amount:first_ticket_sent) + (encode_ticket + ~ticketer + ~content:second_ticket_content + ~amount:second_ticket_sent) + in + let* () = + Client.transfer + ~hooks + ~burn_cap:Tez.one + ~amount:Tez.zero + ~giver:Constant.bootstrap1.alias + ~entrypoint:"store" + ~receiver:ticketer + ~arg:complex_arg_with_tickets + client + in + let* () = Client.bake_for_and_wait client in + (* Check that ticket balance is removed for implicit account. *) + let* () = + assert_ticket_balance + ~contract:Constant.bootstrap1.alias + ~ticketer + ~ty:"string" + ~contents:(sf "%S" first_ticket_content) + ~expected:(amount - first_ticket_sent) + client + in + let* () = + assert_ticket_balance + ~contract:Constant.bootstrap1.alias + ~ticketer + ~ty:"string" + ~contents:(sf "%S" second_ticket_content) + ~expected:(amount - second_ticket_sent) + client + in + (* Check that ticket balance is added for originated contract. *) + let* () = + assert_ticket_balance + ~contract:ticketer + ~ticketer + ~ty:"string" + ~contents:(sf "%S" first_ticket_content) + ~expected:first_ticket_sent + client + in + let* () = + assert_ticket_balance + ~contract:ticketer + ~ticketer + ~ty:"string" + ~contents:(sf "%S" second_ticket_content) + ~expected:second_ticket_sent + client + in + unit + (* This test originates one contract which mints and sends tickets to the address passed in the parameter. In this test, the receiver of the ticket is an implicit account *) @@ -1046,4 +1315,7 @@ let register ~protocols = test_ticket_of_wrong_type_rejection protocols ; test_originated_implicit_can_be_equipotent protocols ; test_send_tickets_to_sc_rollup protocols ; - test_send_tickets_from_storage_to_sc_rollup protocols + test_send_tickets_from_storage_to_sc_rollup protocols ; + test_direct_transfer_tickets_from_implicit_account_to_originated protocols ; + test_direct_transfer_tickets_from_implicit_account_to_originated_complex + protocols