From e7ff8de948055db04e1c5958cd5d41d96f35c77e Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:41:11 +0200 Subject: [PATCH 01/10] Proto/Apply: apply_operation is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_protocol/apply.ml | 6 +++--- src/proto_alpha/lib_protocol/apply.mli | 1 - src/proto_alpha/lib_protocol/main.ml | 1 - 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 960a36bdd391..d711a9abaf40 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -3053,15 +3053,15 @@ let apply_contents_list (type kind) ctxt chain_id (apply_mode : apply_mode) mode op_validated_stamp contents_list -let apply_operation ctxt chain_id (apply_mode : apply_mode) mode - ~payload_producer op_validated_stamp hash operation = +let apply_operation ctxt chain_id (apply_mode : apply_mode) ~payload_producer + op_validated_stamp hash operation = let ctxt = Origination_nonce.init ctxt hash in let ctxt = record_operation ctxt hash operation in apply_contents_list ctxt chain_id apply_mode - mode + Optimized ~payload_producer op_validated_stamp operation diff --git a/src/proto_alpha/lib_protocol/apply.mli b/src/proto_alpha/lib_protocol/apply.mli index eca510e5cb5c..e7decff19548 100644 --- a/src/proto_alpha/lib_protocol/apply.mli +++ b/src/proto_alpha/lib_protocol/apply.mli @@ -135,7 +135,6 @@ val apply_operation : context -> Chain_id.t -> apply_mode -> - Script_ir_translator.unparsing_mode -> payload_producer:public_key_hash -> Validate_operation.stamp -> Operation_hash.t -> diff --git a/src/proto_alpha/lib_protocol/main.ml b/src/proto_alpha/lib_protocol/main.ml index 12ee15cff4cf..6cd9197dc56c 100644 --- a/src/proto_alpha/lib_protocol/main.ml +++ b/src/proto_alpha/lib_protocol/main.ml @@ -385,7 +385,6 @@ let apply_operation_with_mode mode ctxt chain_id data op_count operation ctxt chain_id mode - Optimized ~payload_producer op_validated_stamp oph -- GitLab From 28e7de08c9f349839468c69708bf19c18fb91f3f Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:44:07 +0200 Subject: [PATCH 02/10] Proto/Apply: apply_contents_list is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_plugin/RPC.ml | 1 - src/proto_alpha/lib_protocol/apply.ml | 7 +++---- src/proto_alpha/lib_protocol/apply.mli | 1 - 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/proto_alpha/lib_plugin/RPC.ml b/src/proto_alpha/lib_plugin/RPC.ml index 97ca7c540e24..e9cc9dfe2141 100644 --- a/src/proto_alpha/lib_plugin/RPC.ml +++ b/src/proto_alpha/lib_plugin/RPC.ml @@ -866,7 +866,6 @@ module Scripts = struct predecessor_round; grand_parent_round = Round.zero; }) - Optimized ~payload_producer op_validated_stamp operation diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index d711a9abaf40..a305c8b52dea 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -2881,7 +2881,7 @@ let validate_grand_parent_endorsement ctxt chain_id 0 (* dummy endorsement power: this will never be used *); }) ) -let apply_contents_list (type kind) ctxt chain_id (apply_mode : apply_mode) mode +let apply_contents_list (type kind) ctxt chain_id (apply_mode : apply_mode) ~payload_producer op_validated_stamp (operation : kind operation) (contents_list : kind contents_list) : (context * kind contents_result_list) tzresult Lwt.t = @@ -3037,7 +3037,7 @@ let apply_contents_list (type kind) ctxt chain_id (apply_mode : apply_mode) mode | Single (Manager_operation _) -> apply_manager_operation ctxt - mode + Optimized ~payload_producer chain_id ~mempool_mode @@ -3046,7 +3046,7 @@ let apply_contents_list (type kind) ctxt chain_id (apply_mode : apply_mode) mode | Cons (Manager_operation _, _) -> apply_manager_operation ctxt - mode + Optimized ~payload_producer chain_id ~mempool_mode @@ -3061,7 +3061,6 @@ let apply_operation ctxt chain_id (apply_mode : apply_mode) ~payload_producer ctxt chain_id apply_mode - Optimized ~payload_producer op_validated_stamp operation diff --git a/src/proto_alpha/lib_protocol/apply.mli b/src/proto_alpha/lib_protocol/apply.mli index e7decff19548..63539fa15b70 100644 --- a/src/proto_alpha/lib_protocol/apply.mli +++ b/src/proto_alpha/lib_protocol/apply.mli @@ -167,7 +167,6 @@ val apply_contents_list : context -> Chain_id.t -> apply_mode -> - Script_ir_translator.unparsing_mode -> payload_producer:public_key_hash -> Validate_operation.stamp -> 'kind operation -> -- GitLab From 4a5c3847f99d0865e53067b8fd71c0fad36aa0c5 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:47:31 +0200 Subject: [PATCH 03/10] Proto/Apply: apply_manager_operation is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_plugin/RPC.ml | 2 -- src/proto_alpha/lib_protocol/apply.ml | 6 ++---- src/proto_alpha/lib_protocol/apply.mli | 1 - 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_plugin/RPC.ml b/src/proto_alpha/lib_plugin/RPC.ml index e9cc9dfe2141..a988aeea4c3e 100644 --- a/src/proto_alpha/lib_plugin/RPC.ml +++ b/src/proto_alpha/lib_plugin/RPC.ml @@ -831,7 +831,6 @@ module Scripts = struct | Single (Manager_operation _) as op -> Apply.apply_manager_operation ctxt - Optimized ~payload_producer chain_id ~mempool_mode:true @@ -841,7 +840,6 @@ module Scripts = struct | Cons (Manager_operation _, _) as op -> Apply.apply_manager_operation ctxt - Optimized ~payload_producer chain_id ~mempool_mode:true diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index a305c8b52dea..cfc3fab7059d 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -2691,7 +2691,7 @@ let apply_manager_contents_list ctxt mode ~payload_producer chain_id | Success ctxt -> Lazy_storage.cleanup_temporaries ctxt >|= fun ctxt -> (ctxt, results) -let apply_manager_operation ctxt mode ~payload_producer chain_id ~mempool_mode +let apply_manager_operation ctxt ~payload_producer chain_id ~mempool_mode op_validated_stamp contents_list = let open Lwt_result_syntax in let ctxt = if mempool_mode then Gas.reset_block_gas ctxt else ctxt in @@ -2701,7 +2701,7 @@ let apply_manager_operation ctxt mode ~payload_producer chain_id ~mempool_mode let*! ctxt, contents_result_list = apply_manager_contents_list ctxt - mode + Optimized ~payload_producer chain_id fees_updated_contents_list @@ -3037,7 +3037,6 @@ let apply_contents_list (type kind) ctxt chain_id (apply_mode : apply_mode) | Single (Manager_operation _) -> apply_manager_operation ctxt - Optimized ~payload_producer chain_id ~mempool_mode @@ -3046,7 +3045,6 @@ let apply_contents_list (type kind) ctxt chain_id (apply_mode : apply_mode) | Cons (Manager_operation _, _) -> apply_manager_operation ctxt - Optimized ~payload_producer chain_id ~mempool_mode diff --git a/src/proto_alpha/lib_protocol/apply.mli b/src/proto_alpha/lib_protocol/apply.mli index 63539fa15b70..07f0c78fc47f 100644 --- a/src/proto_alpha/lib_protocol/apply.mli +++ b/src/proto_alpha/lib_protocol/apply.mli @@ -205,7 +205,6 @@ val apply_contents_list : above during the first phase. *) val apply_manager_operation : context -> - Script_ir_translator.unparsing_mode -> payload_producer:public_key_hash -> Chain_id.t -> mempool_mode:bool -> -- GitLab From 2156a59a31185785eab90c57fcf1ddd1d55a6ecb Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:49:04 +0200 Subject: [PATCH 04/10] Proto/Apply: apply_manager_contents_list is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_protocol/apply.ml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index cfc3fab7059d..0179efe1a619 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -2677,11 +2677,11 @@ let validate_consensus_contents (type kind) ctxt chain_id Operation.check_signature delegate_pk chain_id operation >>?= fun () -> return (ctxt, delegate_pkh, voting_power) -let apply_manager_contents_list ctxt mode ~payload_producer chain_id +let apply_manager_contents_list ctxt ~payload_producer chain_id fees_updated_contents_list = apply_manager_contents_list_rec ctxt - mode + Optimized ~payload_producer chain_id fees_updated_contents_list @@ -2701,7 +2701,6 @@ let apply_manager_operation ctxt ~payload_producer chain_id ~mempool_mode let*! ctxt, contents_result_list = apply_manager_contents_list ctxt - Optimized ~payload_producer chain_id fees_updated_contents_list -- GitLab From 8a51d0b2e558527c0f80875b297c204054188bc9 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:50:17 +0200 Subject: [PATCH 05/10] Proto/Apply: apply_manager_contents_list_rec is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_protocol/apply.ml | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 0179efe1a619..8747248b99df 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -2337,16 +2337,15 @@ let take_fees ctxt (_ : Validate_operation.stamp) contents_list = let rec apply_manager_contents_list_rec : type kind. context -> - Script_ir_translator.unparsing_mode -> payload_producer:public_key_hash -> Chain_id.t -> kind Kind.manager fees_updated_contents_list -> (success_or_failure * kind Kind.manager contents_result_list) Lwt.t = - fun ctxt mode ~payload_producer chain_id fees_updated_contents_list -> + fun ctxt ~payload_producer chain_id fees_updated_contents_list -> let level = Level.current ctxt in match[@coq_match_with_default] fees_updated_contents_list with | FeesUpdatedSingle {contents = Manager_operation _ as op; balance_updates} -> - apply_manager_contents ctxt mode chain_id op + apply_manager_contents ctxt Optimized chain_id op >|= fun (ctxt_result, operation_result, internal_operation_results) -> let result = Manager_operation_result @@ -2355,7 +2354,7 @@ let rec apply_manager_contents_list_rec : (ctxt_result, Single_result result) | FeesUpdatedCons ({contents = Manager_operation _ as op; balance_updates}, rest) -> ( - apply_manager_contents ctxt mode chain_id op >>= function + apply_manager_contents ctxt Optimized chain_id op >>= function | Failure, operation_result, internal_operation_results -> let result = Manager_operation_result @@ -2369,12 +2368,7 @@ let rec apply_manager_contents_list_rec : Manager_operation_result {balance_updates; operation_result; internal_operation_results} in - apply_manager_contents_list_rec - ctxt - mode - ~payload_producer - chain_id - rest + apply_manager_contents_list_rec ctxt ~payload_producer chain_id rest >|= fun (ctxt_result, results) -> (ctxt_result, Cons_result (result, results))) @@ -2681,7 +2675,6 @@ let apply_manager_contents_list ctxt ~payload_producer chain_id fees_updated_contents_list = apply_manager_contents_list_rec ctxt - Optimized ~payload_producer chain_id fees_updated_contents_list -- GitLab From b767652d7f66ad3693e7f15890dfbd5fca67ad2c Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:51:03 +0200 Subject: [PATCH 06/10] Proto/Apply: apply_manager_contents is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_protocol/apply.ml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 8747248b99df..fd4baac2c924 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -2166,7 +2166,7 @@ let burn_internal_storage_fees : | IDelegation_result _ -> return (ctxt, storage_limit, smopr) | IEvent_result _ -> return (ctxt, storage_limit, smopr) -let apply_manager_contents (type kind) ctxt mode chain_id +let apply_manager_contents (type kind) ctxt chain_id (op : kind Kind.manager contents) : (success_or_failure * kind manager_operation_result @@ -2185,12 +2185,17 @@ let apply_manager_contents (type kind) ctxt mode chain_id (* We do not expose the internal scaling to the users. Instead, we multiply the specified gas limit by the internal scaling. *) let ctxt = Gas.set_limit ctxt gas_limit in - apply_external_manager_operation_content ctxt mode ~source ~chain_id operation + apply_external_manager_operation_content + ctxt + Optimized + ~source + ~chain_id + operation >>= function | Ok (ctxt, operation_results, internal_operations) -> ( apply_internal_manager_operations ctxt - mode + Optimized ~payer:source ~chain_id internal_operations @@ -2345,7 +2350,7 @@ let rec apply_manager_contents_list_rec : let level = Level.current ctxt in match[@coq_match_with_default] fees_updated_contents_list with | FeesUpdatedSingle {contents = Manager_operation _ as op; balance_updates} -> - apply_manager_contents ctxt Optimized chain_id op + apply_manager_contents ctxt chain_id op >|= fun (ctxt_result, operation_result, internal_operation_results) -> let result = Manager_operation_result @@ -2354,7 +2359,7 @@ let rec apply_manager_contents_list_rec : (ctxt_result, Single_result result) | FeesUpdatedCons ({contents = Manager_operation _ as op; balance_updates}, rest) -> ( - apply_manager_contents ctxt Optimized chain_id op >>= function + apply_manager_contents ctxt chain_id op >>= function | Failure, operation_result, internal_operation_results -> let result = Manager_operation_result -- GitLab From 1c9e598d0bc5ad67ffc53d9f6d80fa5920709304 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:52:26 +0200 Subject: [PATCH 07/10] Proto/Apply: apply_external_manager_operation_content is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_protocol/apply.ml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index fd4baac2c924..f9cf19420fee 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -1224,7 +1224,6 @@ let apply_internal_manager_operation_content : let apply_external_manager_operation_content : type kind. context -> - Script_ir_translator.unparsing_mode -> source:public_key_hash -> chain_id:Chain_id.t -> kind manager_operation -> @@ -1233,7 +1232,7 @@ let apply_external_manager_operation_content : * Script_typed_ir.packed_internal_operation list) tzresult Lwt.t = - fun ctxt_before_op mode ~source ~chain_id operation -> + fun ctxt_before_op ~source ~chain_id operation -> let source_contract = Contract.Implicit source in Contract.must_exist ctxt_before_op source_contract >>=? fun () -> Gas.consume ctxt_before_op Michelson_v1_gas.Cost_of.manager_operation @@ -1310,7 +1309,7 @@ let apply_external_manager_operation_content : ~before_operation:ctxt_before_op ~payer:source ~chain_id - ~mode + ~mode:Optimized ~internal:false ~parameter:(Untyped_arg parameters) >|=? fun (ctxt, res, ops) -> (ctxt, Transaction_result res, ops) @@ -2185,12 +2184,7 @@ let apply_manager_contents (type kind) ctxt chain_id (* We do not expose the internal scaling to the users. Instead, we multiply the specified gas limit by the internal scaling. *) let ctxt = Gas.set_limit ctxt gas_limit in - apply_external_manager_operation_content - ctxt - Optimized - ~source - ~chain_id - operation + apply_external_manager_operation_content ctxt ~source ~chain_id operation >>= function | Ok (ctxt, operation_results, internal_operations) -> ( apply_internal_manager_operations -- GitLab From 7326c83f330bc68f5e22bf04efbba56717cb59e0 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:53:29 +0200 Subject: [PATCH 08/10] Proto/Apply: apply_internal_manager_operations is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_protocol/apply.ml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index f9cf19420fee..2c1a27cfead9 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -1908,7 +1908,7 @@ let apply_external_manager_operation_content : type success_or_failure = Success of context | Failure -let apply_internal_manager_operations ctxt mode ~payer ~chain_id ops = +let apply_internal_manager_operations ctxt ~payer ~chain_id ops = let[@coq_struct "ctxt"] rec apply ctxt applied worklist = match worklist with | [] -> Lwt.return (Success ctxt, List.rev applied) @@ -1923,7 +1923,7 @@ let apply_internal_manager_operations ctxt mode ~payer ~chain_id ops = let ctxt = record_internal_nonce ctxt nonce in apply_internal_manager_operation_content ctxt - mode + Optimized ~source ~payer ~chain_id @@ -2189,7 +2189,6 @@ let apply_manager_contents (type kind) ctxt chain_id | Ok (ctxt, operation_results, internal_operations) -> ( apply_internal_manager_operations ctxt - Optimized ~payer:source ~chain_id internal_operations -- GitLab From 1953c771e222cc53151c92fb0460bae5b6d95f09 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:54:07 +0200 Subject: [PATCH 09/10] Proto/Apply: apply_internal_manager_operation_content is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_protocol/apply.ml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 2c1a27cfead9..04b16b543f15 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -1080,7 +1080,6 @@ let apply_origination ~ctxt ~storage_type ~storage ~unparsed_code let apply_internal_manager_operation_content : type kind. context -> - Script_ir_translator.unparsing_mode -> payer:public_key_hash -> source:Contract.t -> chain_id:Chain_id.t -> @@ -1090,7 +1089,7 @@ let apply_internal_manager_operation_content : * Script_typed_ir.packed_internal_operation list) tzresult Lwt.t = - fun ctxt_before_op mode ~payer ~source ~chain_id operation -> + fun ctxt_before_op ~payer ~source ~chain_id operation -> Contract.must_exist ctxt_before_op source >>=? fun () -> Gas.consume ctxt_before_op Michelson_v1_gas.Cost_of.manager_operation >>?= fun ctxt -> @@ -1141,7 +1140,7 @@ let apply_internal_manager_operation_content : ~before_operation:ctxt_before_op ~payer ~chain_id - ~mode + ~mode:Optimized ~internal:true ~parameter:(Typed_arg (location, parameters_ty, typed_parameters)) >|=? fun (ctxt, res, ops) -> (ctxt, ITransaction_result res, ops) @@ -1923,7 +1922,6 @@ let apply_internal_manager_operations ctxt ~payer ~chain_id ops = let ctxt = record_internal_nonce ctxt nonce in apply_internal_manager_operation_content ctxt - Optimized ~source ~payer ~chain_id -- GitLab From b15a61b54d5f8c98584e2d75a3609d2056d57966 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Wed, 29 Jun 2022 17:54:55 +0200 Subject: [PATCH 10/10] Proto/Apply: apply_transaction_to_smart_contract is always called with unparsing_mode = Optimized --- src/proto_alpha/lib_protocol/apply.ml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 04b16b543f15..46d386aa2ed9 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -831,7 +831,7 @@ let apply_transaction_to_implicit ~ctxt ~source ~amount ~pkh ~parameter (ctxt, result, []) ) let apply_transaction_to_smart_contract ~ctxt ~source ~contract_hash ~amount - ~entrypoint ~before_operation ~payer ~chain_id ~mode ~internal ~parameter = + ~entrypoint ~before_operation ~payer ~chain_id ~internal ~parameter = 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 @@ -879,7 +879,7 @@ let apply_transaction_to_smart_contract ~ctxt ~source ~contract_hash ~amount execute ctxt ~cached_script - mode + Optimized step_constants ~script ~entrypoint @@ -1140,7 +1140,6 @@ let apply_internal_manager_operation_content : ~before_operation:ctxt_before_op ~payer ~chain_id - ~mode:Optimized ~internal:true ~parameter:(Typed_arg (location, parameters_ty, typed_parameters)) >|=? fun (ctxt, res, ops) -> (ctxt, ITransaction_result res, ops) @@ -1308,7 +1307,6 @@ let apply_external_manager_operation_content : ~before_operation:ctxt_before_op ~payer:source ~chain_id - ~mode:Optimized ~internal:false ~parameter:(Untyped_arg parameters) >|=? fun (ctxt, res, ops) -> (ctxt, Transaction_result res, ops) -- GitLab