From 824e4d617a8d9e52c652b1bacee270680c49d3e2 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 14 Jun 2022 23:16:49 +0200 Subject: [PATCH 01/10] Proto/Michelson: transfers to implicit accounts are of type unit --- .../lib_protocol/alpha_context.mli | 2 ++ .../lib_protocol/script_interpreter_defs.ml | 34 ++++++++----------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 195a5b0c6de8..43ba348662c6 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -736,6 +736,8 @@ module Script : sig called with [consume_deserialization_gas:Always]. *) val consume_decoding_gas : Gas.Arith.fp -> lazy_expr -> Gas.Arith.fp tzresult + val unit : expr + val unit_parameter : lazy_expr val strip_locations_cost : _ michelson_node -> Gas.cost diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index d88d017df3d4..df20184c6112 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -559,25 +559,21 @@ let transfer (type t tc) (ctxt, sc) gas amount location >>=? fun (parameters, lazy_storage_diff, ctxt) -> (match destination with | Typed_implicit destination -> - unparse_data ctxt Optimized parameters_ty parameters - >>=? fun (unparsed_parameters, ctxt) -> - Lwt.return - ( Gas.consume ctxt (Script.strip_locations_cost unparsed_parameters) - >|? fun ctxt -> - let unparsed_parameters = - Micheline.strip_locations unparsed_parameters - in - ( Transaction_to_implicit - { - destination; - amount; - entrypoint; - location; - parameters_ty; - parameters; - unparsed_parameters; - }, - ctxt ) ) + let Unit_t = parameters_ty in + let () = parameters in + let unparsed_parameters = Script.unit in + return + ( Transaction_to_implicit + { + destination; + amount; + entrypoint; + location; + parameters_ty; + parameters; + unparsed_parameters; + }, + ctxt ) | Typed_originated destination -> unparse_data ctxt Optimized parameters_ty parameters >>=? fun (unparsed_parameters, ctxt) -> -- GitLab From 2d15a0c87f90a5227b35543cb3eceea9114753c5 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 14 Jun 2022 23:41:05 +0200 Subject: [PATCH 02/10] Proto/Michelson: simplify Transaction_to_implicit --- src/proto_alpha/lib_protocol/alpha_context.mli | 2 -- src/proto_alpha/lib_protocol/apply.ml | 13 ++----------- .../lib_protocol/apply_internal_results.ml | 5 ++--- .../lib_protocol/script_interpreter_defs.ml | 12 +----------- src/proto_alpha/lib_protocol/script_typed_ir.ml | 3 --- src/proto_alpha/lib_protocol/script_typed_ir.mli | 8 -------- 6 files changed, 5 insertions(+), 38 deletions(-) diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 43ba348662c6..195a5b0c6de8 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -736,8 +736,6 @@ module Script : sig called with [consume_deserialization_gas:Always]. *) val consume_decoding_gas : Gas.Arith.fp -> lazy_expr -> Gas.Arith.fp tzresult - val unit : expr - val unit_parameter : lazy_expr val strip_locations_cost : _ michelson_node -> Gas.cost diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 3c14dbbd460b..314db5c71c92 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -1100,22 +1100,13 @@ let apply_internal_operation_contents : comparing it with the [ctxt] we will have at the end of the application). *) match operation with - | Transaction_to_implicit - { - destination = pkh; - amount; - unparsed_parameters = _; - entrypoint; - location; - parameters_ty; - parameters = typed_parameters; - } -> + | Transaction_to_implicit {destination = pkh; amount; entrypoint; location} -> apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh - ~parameter:(Typed_arg (location, parameters_ty, typed_parameters)) + ~parameter:(Typed_arg (location, Unit_t, ())) ~entrypoint ~before_operation:ctxt_before_op >|=? fun (ctxt, res, ops) -> diff --git a/src/proto_alpha/lib_protocol/apply_internal_results.ml b/src/proto_alpha/lib_protocol/apply_internal_results.ml index e625c311843b..b3e54a1764a9 100644 --- a/src/proto_alpha/lib_protocol/apply_internal_results.ml +++ b/src/proto_alpha/lib_protocol/apply_internal_results.ml @@ -70,14 +70,13 @@ let internal_operation (type kind) kind internal_operation = let operation : kind internal_operation_contents = match operation with - | Transaction_to_implicit - {destination; amount; entrypoint; unparsed_parameters; _} -> + | Transaction_to_implicit {destination; amount; entrypoint; _} -> Transaction { destination = Contract (Implicit destination); amount; entrypoint; - parameters = Script.lazy_expr unparsed_parameters; + parameters = Script.unit_parameter; } | Transaction_to_smart_contract {destination; amount; entrypoint; unparsed_parameters; _} -> diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index df20184c6112..223513df76ac 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -561,18 +561,8 @@ let transfer (type t tc) (ctxt, sc) gas amount location | Typed_implicit destination -> let Unit_t = parameters_ty in let () = parameters in - let unparsed_parameters = Script.unit in return - ( Transaction_to_implicit - { - destination; - amount; - entrypoint; - location; - parameters_ty; - parameters; - unparsed_parameters; - }, + ( Transaction_to_implicit {destination; amount; entrypoint; location}, ctxt ) | Typed_originated destination -> unparse_data ctxt Optimized parameters_ty parameters diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 70b8a85d51ef..82ea41d2431e 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -1352,9 +1352,6 @@ and 'kind internal_operation_contents = amount : Tez.tez; entrypoint : Entrypoint.t; location : Script.location; - parameters_ty : ('a, _) ty; - parameters : 'a; - unparsed_parameters : Script.expr; } -> Kind.transaction internal_operation_contents | Transaction_to_smart_contract : { diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index df36a4027364..d60677711089 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -1479,18 +1479,10 @@ and ('input, 'output) view_signature = and 'kind internal_operation_contents = | Transaction_to_implicit : { - (* The [unparsed_parameters] field may seem useless since we have - access to a typed version of the field (with [parameters_ty] and - [parameters]), but we keep it so that we do not have to unparse the - typed version in order to produce the receipt - ([Apply_internal_results.internal_operation_contents]). *) destination : Signature.Public_key_hash.t; amount : Tez.tez; entrypoint : Entrypoint.t; location : Script.location; - parameters_ty : ('a, _) ty; - parameters : 'a; - unparsed_parameters : Script.expr; } -> Kind.transaction internal_operation_contents | Transaction_to_smart_contract : { -- GitLab From 46c6aef9d349e764c416ca7886c31e8c2f95ee94 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 15 Jun 2022 01:14:30 +0200 Subject: [PATCH 03/10] Proto/Apply: generalize execution_arg location --- src/proto_alpha/lib_protocol/apply.ml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 314db5c71c92..9e6862ef5aa0 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -782,11 +782,9 @@ let apply_delegation ~ctxt ~source ~delegate ~before_operation = Delegate.set ctxt source delegate >|=? fun ctxt -> (ctxt, Gas.consumed ~since:before_operation ~until:ctxt, []) -type execution_arg = - | Typed_arg : - Script.location * ('a, _) Script_typed_ir.ty * 'a - -> execution_arg - | Untyped_arg : Script.expr -> execution_arg +type 'loc execution_arg = + | Typed_arg : 'loc * ('a, _) Script_typed_ir.ty * 'a -> 'loc execution_arg + | Untyped_arg : Script.expr -> _ execution_arg let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~parameter ~entrypoint ~before_operation = -- GitLab From e5c879c6d7fdcaba9abf007e705d3da8902faf8d Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 15 Jun 2022 01:15:40 +0200 Subject: [PATCH 04/10] Proto/Apply: typed unit does not need a location --- src/proto_alpha/lib_protocol/apply.ml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 9e6862ef5aa0..f5ce506c2021 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -798,7 +798,7 @@ let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~parameter >>=? fun (ctxt, balance_updates) -> let is_unit = match parameter with - | Typed_arg (_, Unit_t, ()) -> true + | Typed_arg ((), Unit_t, ()) -> true | Typed_arg _ -> false | Untyped_arg parameter -> ( match Micheline.root parameter with @@ -1098,13 +1098,14 @@ let apply_internal_operation_contents : comparing it with the [ctxt] we will have at the end of the application). *) match operation with - | Transaction_to_implicit {destination = pkh; amount; entrypoint; location} -> + | Transaction_to_implicit + {destination = pkh; amount; entrypoint; location = _} -> apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh - ~parameter:(Typed_arg (location, Unit_t, ())) + ~parameter:(Typed_arg ((), Unit_t, ())) ~entrypoint ~before_operation:ctxt_before_op >|=? fun (ctxt, res, ops) -> -- GitLab From af6ed2e6b0e23b6772cf40f2c772f0441a357ea4 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 15 Jun 2022 01:16:50 +0200 Subject: [PATCH 05/10] Proto/Michelson: simplify Transaction_to_implicit further --- src/proto_alpha/lib_protocol/apply.ml | 3 +-- src/proto_alpha/lib_protocol/apply_internal_results.ml | 2 +- src/proto_alpha/lib_protocol/script_interpreter_defs.ml | 4 +--- src/proto_alpha/lib_protocol/script_typed_ir.ml | 1 - src/proto_alpha/lib_protocol/script_typed_ir.mli | 1 - 5 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index f5ce506c2021..3a345fcc5002 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -1098,8 +1098,7 @@ let apply_internal_operation_contents : comparing it with the [ctxt] we will have at the end of the application). *) match operation with - | Transaction_to_implicit - {destination = pkh; amount; entrypoint; location = _} -> + | Transaction_to_implicit {destination = pkh; amount; entrypoint} -> apply_transaction_to_implicit ~ctxt ~source diff --git a/src/proto_alpha/lib_protocol/apply_internal_results.ml b/src/proto_alpha/lib_protocol/apply_internal_results.ml index b3e54a1764a9..080ccf98d481 100644 --- a/src/proto_alpha/lib_protocol/apply_internal_results.ml +++ b/src/proto_alpha/lib_protocol/apply_internal_results.ml @@ -70,7 +70,7 @@ let internal_operation (type kind) kind internal_operation = let operation : kind internal_operation_contents = match operation with - | Transaction_to_implicit {destination; amount; entrypoint; _} -> + | Transaction_to_implicit {destination; amount; entrypoint} -> Transaction { destination = Contract (Implicit destination); diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index 223513df76ac..069103a562eb 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -561,9 +561,7 @@ let transfer (type t tc) (ctxt, sc) gas amount location | Typed_implicit destination -> let Unit_t = parameters_ty in let () = parameters in - return - ( Transaction_to_implicit {destination; amount; entrypoint; location}, - ctxt ) + return (Transaction_to_implicit {destination; amount; entrypoint}, ctxt) | Typed_originated destination -> unparse_data ctxt Optimized parameters_ty parameters >>=? fun (unparsed_parameters, ctxt) -> diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 82ea41d2431e..23a934010ca4 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -1351,7 +1351,6 @@ and 'kind internal_operation_contents = destination : Signature.Public_key_hash.t; amount : Tez.tez; entrypoint : Entrypoint.t; - location : Script.location; } -> Kind.transaction internal_operation_contents | Transaction_to_smart_contract : { diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index d60677711089..1ee8b366c6fa 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -1482,7 +1482,6 @@ and 'kind internal_operation_contents = destination : Signature.Public_key_hash.t; amount : Tez.tez; entrypoint : Entrypoint.t; - location : Script.location; } -> Kind.transaction internal_operation_contents | Transaction_to_smart_contract : { -- GitLab From 12a003d9f20a388430773afac1ce9ebc2da3630f Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 15 Jun 2022 01:19:23 +0200 Subject: [PATCH 06/10] Proto/Apply: do not check unit is unit --- src/proto_alpha/lib_protocol/apply.ml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 3a345fcc5002..1f32cd083c89 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -786,7 +786,7 @@ type 'loc execution_arg = | Typed_arg : 'loc * ('a, _) Script_typed_ir.ty * 'a -> 'loc execution_arg | Untyped_arg : Script.expr -> _ execution_arg -let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~parameter +let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~untyped_parameter ~entrypoint ~before_operation = let contract = Contract.Implicit pkh in (* Transfers of zero to implicit accounts are forbidden. *) @@ -797,10 +797,9 @@ let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~parameter Token.transfer ctxt (`Contract source) (`Contract contract) amount >>=? fun (ctxt, balance_updates) -> let is_unit = - match parameter with - | Typed_arg ((), Unit_t, ()) -> true - | Typed_arg _ -> false - | Untyped_arg parameter -> ( + match untyped_parameter with + | None -> true + | Some parameter -> ( match Micheline.root parameter with | Prim (_, Michelson_v1_primitives.D_Unit, [], _) -> true | _ -> false) @@ -1104,7 +1103,7 @@ let apply_internal_operation_contents : ~source ~amount ~pkh - ~parameter:(Typed_arg ((), Unit_t, ())) + ~untyped_parameter:None ~entrypoint ~before_operation:ctxt_before_op >|=? fun (ctxt, res, ops) -> @@ -1276,7 +1275,7 @@ let apply_manager_operation : ~source:source_contract ~amount ~pkh - ~parameter:(Untyped_arg parameters) + ~untyped_parameter:(Some parameters) ~entrypoint ~before_operation:ctxt_before_op >|=? fun (ctxt, res, ops) -> (ctxt, Transaction_result res, ops) -- GitLab From 4074dbd719454bbf8ad22b637b098d36f81f973e Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 15 Jun 2022 01:25:45 +0200 Subject: [PATCH 07/10] Proto/Apply: simplify apply_transaction_to_implicit --- src/proto_alpha/lib_protocol/apply.ml | 54 ++++++++++++--------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 1f32cd083c89..42635f8aea28 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -796,37 +796,31 @@ let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~untyped_parameter Contract.allocated ctxt contract >>= fun already_allocated -> Token.transfer ctxt (`Contract source) (`Contract contract) amount >>=? fun (ctxt, balance_updates) -> - let is_unit = - match untyped_parameter with - | None -> true - | Some parameter -> ( - match Micheline.root parameter with - | Prim (_, Michelson_v1_primitives.D_Unit, [], _) -> true - | _ -> false) + (* Only allow [Unit] parameter to implicit accounts. *) + (match untyped_parameter with + | None -> Result.return_unit + | Some parameter -> ( + match Micheline.root parameter with + | Prim (_, Michelson_v1_primitives.D_Unit, [], _) -> Result.return_unit + | _ -> error (Script_interpreter.Bad_contract_parameter contract))) + >>?= fun () -> + (if Entrypoint.is_default entrypoint then Result.return_unit + else error (Script_tc_errors.No_such_entrypoint entrypoint)) + >>?= fun () -> + let result = + Transaction_to_contract_result + { + storage = None; + lazy_storage_diff = None; + balance_updates; + originated_contracts = []; + consumed_gas = Gas.consumed ~since:before_operation ~until:ctxt; + storage_size = Z.zero; + paid_storage_size_diff = Z.zero; + allocated_destination_contract = not already_allocated; + } in - Lwt.return - ( ( (if Entrypoint.is_default entrypoint then Result.return_unit - else error (Script_tc_errors.No_such_entrypoint entrypoint)) - >>? fun () -> - if is_unit then - (* Only allow [Unit] parameter to implicit accounts. *) - ok ctxt - else error (Script_interpreter.Bad_contract_parameter contract) ) - >|? fun ctxt -> - let result = - Transaction_to_contract_result - { - storage = None; - lazy_storage_diff = None; - balance_updates; - originated_contracts = []; - consumed_gas = Gas.consumed ~since:before_operation ~until:ctxt; - storage_size = Z.zero; - paid_storage_size_diff = Z.zero; - allocated_destination_contract = not already_allocated; - } - in - (ctxt, result, []) ) + return (ctxt, result, []) let apply_transaction_to_smart_contract ~ctxt ~source ~contract_hash ~amount ~entrypoint ~before_operation ~payer ~chain_id ~internal ~parameter = -- GitLab From 2cab129ba0a990f630eae470603f3b4292e1f53e Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 15 Jun 2022 01:28:52 +0200 Subject: [PATCH 08/10] Proto/Michelson: check entrypoint of transactions to implicit earlier --- src/proto_alpha/lib_protocol/apply.ml | 4 ++-- src/proto_alpha/lib_protocol/apply_internal_results.ml | 4 ++-- src/proto_alpha/lib_protocol/script_interpreter_defs.ml | 4 +++- src/proto_alpha/lib_protocol/script_typed_ir.ml | 1 - src/proto_alpha/lib_protocol/script_typed_ir.mli | 1 - 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 42635f8aea28..eba62e0f3b47 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -1091,14 +1091,14 @@ let apply_internal_operation_contents : comparing it with the [ctxt] we will have at the end of the application). *) match operation with - | Transaction_to_implicit {destination = pkh; amount; entrypoint} -> + | Transaction_to_implicit {destination = pkh; amount} -> apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~untyped_parameter:None - ~entrypoint + ~entrypoint:Entrypoint.default ~before_operation:ctxt_before_op >|=? fun (ctxt, res, ops) -> ( ctxt, diff --git a/src/proto_alpha/lib_protocol/apply_internal_results.ml b/src/proto_alpha/lib_protocol/apply_internal_results.ml index 080ccf98d481..46f1239f13c3 100644 --- a/src/proto_alpha/lib_protocol/apply_internal_results.ml +++ b/src/proto_alpha/lib_protocol/apply_internal_results.ml @@ -70,12 +70,12 @@ let internal_operation (type kind) kind internal_operation = let operation : kind internal_operation_contents = match operation with - | Transaction_to_implicit {destination; amount; entrypoint} -> + | Transaction_to_implicit {destination; amount} -> Transaction { destination = Contract (Implicit destination); amount; - entrypoint; + entrypoint = Entrypoint.default; parameters = Script.unit_parameter; } | Transaction_to_smart_contract diff --git a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml index 069103a562eb..bff19c21f1c6 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter_defs.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter_defs.ml @@ -561,7 +561,9 @@ let transfer (type t tc) (ctxt, sc) gas amount location | Typed_implicit destination -> let Unit_t = parameters_ty in let () = parameters in - return (Transaction_to_implicit {destination; amount; entrypoint}, ctxt) + (if Entrypoint.is_default entrypoint then Result.return_unit + else error (Script_tc_errors.No_such_entrypoint entrypoint)) + >>?= fun () -> return (Transaction_to_implicit {destination; amount}, ctxt) | Typed_originated destination -> unparse_data ctxt Optimized parameters_ty parameters >>=? fun (unparsed_parameters, ctxt) -> diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 23a934010ca4..fd4dc3833744 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -1350,7 +1350,6 @@ and 'kind internal_operation_contents = | Transaction_to_implicit : { destination : Signature.Public_key_hash.t; amount : Tez.tez; - entrypoint : Entrypoint.t; } -> Kind.transaction internal_operation_contents | Transaction_to_smart_contract : { diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 1ee8b366c6fa..2b7e742450d6 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -1481,7 +1481,6 @@ and 'kind internal_operation_contents = | Transaction_to_implicit : { destination : Signature.Public_key_hash.t; amount : Tez.tez; - entrypoint : Entrypoint.t; } -> Kind.transaction internal_operation_contents | Transaction_to_smart_contract : { -- GitLab From e2f957f85e96385f87dd7cad74473cbaae596aa5 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 15 Jun 2022 01:30:31 +0200 Subject: [PATCH 09/10] Proto/Apply: do not check default is default --- src/proto_alpha/lib_protocol/apply.ml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index eba62e0f3b47..43b9fbb2ffb1 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -787,7 +787,7 @@ type 'loc execution_arg = | Untyped_arg : Script.expr -> _ execution_arg let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~untyped_parameter - ~entrypoint ~before_operation = + ~external_entrypoint ~before_operation = let contract = Contract.Implicit pkh in (* Transfers of zero to implicit accounts are forbidden. *) error_when Tez.(amount = zero) (Empty_transaction contract) >>?= fun () -> @@ -804,8 +804,11 @@ let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~untyped_parameter | Prim (_, Michelson_v1_primitives.D_Unit, [], _) -> Result.return_unit | _ -> error (Script_interpreter.Bad_contract_parameter contract))) >>?= fun () -> - (if Entrypoint.is_default entrypoint then Result.return_unit - else error (Script_tc_errors.No_such_entrypoint entrypoint)) + (match external_entrypoint with + | None -> Result.return_unit + | Some entrypoint -> + if Entrypoint.is_default entrypoint then Result.return_unit + else error (Script_tc_errors.No_such_entrypoint entrypoint)) >>?= fun () -> let result = Transaction_to_contract_result @@ -1098,7 +1101,7 @@ let apply_internal_operation_contents : ~amount ~pkh ~untyped_parameter:None - ~entrypoint:Entrypoint.default + ~external_entrypoint:None ~before_operation:ctxt_before_op >|=? fun (ctxt, res, ops) -> ( ctxt, @@ -1270,7 +1273,7 @@ let apply_manager_operation : ~amount ~pkh ~untyped_parameter:(Some parameters) - ~entrypoint + ~external_entrypoint:(Some entrypoint) ~before_operation:ctxt_before_op >|=? fun (ctxt, res, ops) -> (ctxt, Transaction_result res, ops) | Transaction -- GitLab From b832a3685e6f2ec0f18b8f90979e4181333477c2 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Thu, 7 Jul 2022 12:41:01 +0200 Subject: [PATCH 10/10] Tests/Python: update gas in regression traces --- ... 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out | 4 ++-- ...ng.TestAddApproveTransferRemove::test_remove_liquidity.out | 4 ++-- .../test_liquidity_baking.TestTrades::test_buy_tok.out | 4 ++-- .../test_liquidity_baking.TestTrades::test_sell_tok.out | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out b/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out index 995797754443..16d12cdc9d92 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_contract_onchain_opcodes.TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b.7da5c9014e.out @@ -1,7 +1,7 @@ tests_alpha/test_contract_onchain_opcodes.py::TestContractOnchainOpcodes::test_slice_success[(Pair 0xe009ab79e8b84ef0e55c43a9a857214d8761e67b75ba63500a5694fb2ffe174acc2de22d01ccb7259342437f05e1987949f0ad82e9f32e9a0b79cb252d7f7b8236ad728893f4e7150742eefdbeda254970f9fcd92c6228c178e1a923e5600758eb83f2a05edd0be7625657901f2ba81eaf145d003dbef78e33f43a32a3788bdf0501000000085341554349535345 "spsig1PPUFZucuAQybs5wsqsNQ68QNgFaBnVKMFaoZZfi1BtNnuCAWnmL9wVy5HfHkR6AeodjVGxpBVVSYcJKyMURn6K1yknYLm")] Node is bootstrapped. -Estimated gas: 3595.323 units (will add 100 for safety) +Estimated gas: 3595.227 units (will add 100 for safety) Estimated storage: 257 bytes added (will add 20 for safety) Operation successfully injected in the node. Operation hash is '[BLOCK_HASH]' @@ -29,7 +29,7 @@ This sequence of operations was run: Updated storage: [OPERATION_HASH]48f709699019725ba Storage size: 578 bytes - Consumed gas: 2595.323 + Consumed gas: 2595.227 Internal operations: Internal Transaction: Amount: ꜩ1000 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestAddApproveTransferRemove::test_remove_liquidity.out b/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestAddApproveTransferRemove::test_remove_liquidity.out index 0acb80ccdd69..c679ce44b3bd 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestAddApproveTransferRemove::test_remove_liquidity.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestAddApproveTransferRemove::test_remove_liquidity.out @@ -1,7 +1,7 @@ tests_alpha/test_liquidity_baking.py::TestAddApproveTransferRemove::test_remove_liquidity Node is bootstrapped. -Estimated gas: 7517.954 units (will add 100 for safety) +Estimated gas: 7517.858 units (will add 100 for safety) Estimated storage: 67 bytes added (will add 20 for safety) Operation successfully injected in the node. Operation hash is '[BLOCK_HASH]' @@ -33,7 +33,7 @@ This sequence of operations was run: 0x01e927f00ef734dfc85919635e9afc9166c83ef9fc00 ; 0x0115eb0104481a6d7921160bc982c5e0a561cd8a3a00 } Storage size: 4633 bytes - Consumed gas: 2276.887 + Consumed gas: 2276.791 Internal operations: Internal Transaction: Amount: ꜩ0 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestTrades::test_buy_tok.out b/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestTrades::test_buy_tok.out index bfdbdea6eb2d..28fb91d67dcb 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestTrades::test_buy_tok.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestTrades::test_buy_tok.out @@ -1,7 +1,7 @@ tests_alpha/test_liquidity_baking.py::TestTrades::test_buy_tok Node is bootstrapped. -Estimated gas: 5113.582 units (will add 100 for safety) +Estimated gas: 5113.486 units (will add 100 for safety) Estimated storage: 326 bytes added (will add 20 for safety) Operation successfully injected in the node. Operation hash is '[BLOCK_HASH]' @@ -34,7 +34,7 @@ This sequence of operations was run: 0x0115eb0104481a6d7921160bc982c5e0a561cd8a3a00 } Storage size: 4634 bytes Paid storage size diff: 1 bytes - Consumed gas: 1745.741 + Consumed gas: 1745.645 Balance updates: [CONTRACT_HASH] ... -ꜩ0.00025 storage fees ........................... +ꜩ0.00025 diff --git a/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestTrades::test_sell_tok.out b/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestTrades::test_sell_tok.out index fc6290f2a79f..a605e9bb3c96 100644 --- a/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestTrades::test_sell_tok.out +++ b/tests_python/tests_alpha/_regtest_outputs/test_liquidity_baking.TestTrades::test_sell_tok.out @@ -1,7 +1,7 @@ tests_alpha/test_liquidity_baking.py::TestTrades::test_sell_tok Node is bootstrapped. -Estimated gas: 7012.513 units (will add 100 for safety) +Estimated gas: 7012.321 units (will add 100 for safety) Estimated storage: no bytes added Operation successfully injected in the node. Operation hash is '[BLOCK_HASH]' @@ -33,7 +33,7 @@ This sequence of operations was run: 0x01e927f00ef734dfc85919635e9afc9166c83ef9fc00 ; 0x0115eb0104481a6d7921160bc982c5e0a561cd8a3a00 } Storage size: 4633 bytes - Consumed gas: 1746.925 + Consumed gas: 1746.733 Internal operations: Internal Transaction: Amount: ꜩ0 -- GitLab