From 0426e8dc90ee737ccf865cea5d1b9dbe500d9cd1 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:35:18 +0200 Subject: [PATCH 01/11] Proto/Client: payer arg should be an implicit account --- .../client_proto_programs_commands.ml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/proto_alpha/lib_client_commands/client_proto_programs_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_programs_commands.ml index d82c6be1bc6c..990deccf4a1d 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_programs_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_programs_commands.ml @@ -91,8 +91,8 @@ let commands () = () in let payer_arg = - ContractAlias.destination_arg - ~name:"payer" + Client_keys.Public_key_hash.source_arg + ~long:"payer" ~doc:"name of the payer (i.e. SOURCE) contract for the transaction" () in @@ -279,6 +279,9 @@ let commands () = Lwt.return @@ Micheline_parser.no_parsing_error program >>=? fun program -> let show_source = not no_print_source in + let payer = + Option.map (fun c -> Alpha_context.Contract.Implicit c) payer + in if trace_exec then trace cctxt @@ -961,6 +964,9 @@ let commands () = contract input cctxt -> + let payer = + Option.map (fun c -> Alpha_context.Contract.Implicit c) payer + in Client_proto_programs.run_view cctxt ~chain:cctxt#chain @@ -997,6 +1003,9 @@ let commands () = Micheline_parser.no_parsing_error @@ Michelson_v1_parser.parse_expression "Unit" >>?= fun input -> + let payer = + Option.map (fun c -> Alpha_context.Contract.Implicit c) payer + in Client_proto_programs.run_script_view cctxt ~chain:cctxt#chain @@ -1037,6 +1046,9 @@ let commands () = contract input cctxt -> + let payer = + Option.map (fun c -> Alpha_context.Contract.Implicit c) payer + in Client_proto_programs.run_script_view cctxt ~chain:cctxt#chain -- GitLab From c3cddace6fddbb70cf697d701b991ffed4484825 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:55:24 +0200 Subject: [PATCH 02/11] Proto/Client/FA1.2: payer arg should be an implicit account --- .../lib_client_commands/client_proto_fa12_commands.ml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/proto_alpha/lib_client_commands/client_proto_fa12_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_fa12_commands.ml index 3c276d20c0df..17d4b0a8fe18 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_fa12_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_fa12_commands.ml @@ -66,8 +66,8 @@ let as_arg = () let payer_arg = - Client_proto_contracts.ContractAlias.destination_arg - ~name:"payer" + Client_keys.Public_key_hash.source_arg + ~long:"payer" ~doc:"name of the payer (i.e. SOURCE) contract for the transaction" () @@ -163,6 +163,7 @@ let commands_ro () : #Protocol_client_context.full Clic.command list = let action = Client_proto_fa12.Get_balance (addr, (dummy_callback, None)) in + let payer = Option.map (fun c -> Contract.Implicit c) payer in Client_proto_fa12.run_view_action cctxt ~chain:cctxt#chain @@ -199,6 +200,7 @@ let commands_ro () : #Protocol_client_context.full Clic.command list = Client_proto_fa12.Get_allowance (source, destination, (dummy_callback, None)) in + let payer = Option.map (fun c -> Contract.Implicit c) payer in Client_proto_fa12.run_view_action cctxt ~chain:cctxt#chain @@ -225,6 +227,7 @@ let commands_ro () : #Protocol_client_context.full Clic.command list = let action = Client_proto_fa12.Get_total_supply (dummy_callback, None) in + let payer = Option.map (fun c -> Contract.Implicit c) payer in Client_proto_fa12.run_view_action cctxt ~chain:cctxt#chain -- GitLab From 14144ef9937f1e9a698d840cdb5d79a5dbfbea49 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:36:51 +0200 Subject: [PATCH 03/11] Proto/Client: payer in simulation_params should be an implicit account --- src/proto_alpha/lib_client/client_proto_programs.ml | 6 +++++- src/proto_alpha/lib_client/client_proto_programs.mli | 2 +- .../client_proto_programs_commands.ml | 12 ------------ 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/proto_alpha/lib_client/client_proto_programs.ml b/src/proto_alpha/lib_client/client_proto_programs.ml index e2e7d31e3803..7ca3ebc54ae7 100644 --- a/src/proto_alpha/lib_client/client_proto_programs.ml +++ b/src/proto_alpha/lib_client/client_proto_programs.ml @@ -126,7 +126,7 @@ type simulation_params = { now : Script_timestamp.t option; level : Script_int.n Script_int.num option; source : Contract.t option; - payer : Contract.t option; + payer : Signature.public_key_hash option; gas : Gas.Arith.integral option; } @@ -162,6 +162,7 @@ let run_view (cctxt : #Protocol_client_context.rpc_context) } = params in + let payer = Option.map (fun c -> Contract.Implicit c) payer in Chain_services.chain_id cctxt ~chain () >>=? fun chain_id -> Plugin.RPC.Scripts.run_tzip4_view cctxt @@ -187,6 +188,7 @@ let run_script_view (cctxt : #Protocol_client_context.rpc_context) } = params in + let payer = Option.map (fun c -> Contract.Implicit c) payer in Chain_services.chain_id cctxt ~chain () >>=? fun chain_id -> Plugin.RPC.Scripts.run_script_view cctxt @@ -217,6 +219,7 @@ let run (cctxt : #Protocol_client_context.rpc_context) } = params in + let payer = Option.map (fun c -> Contract.Implicit c) payer in let amount = Option.value ~default:Tez.fifty_cents amount in Plugin.RPC.Scripts.run_code cctxt @@ -250,6 +253,7 @@ let trace (cctxt : #Protocol_client_context.rpc_context) } = params in + let payer = Option.map (fun c -> Contract.Implicit c) payer in let amount = Option.value ~default:Tez.fifty_cents amount in Plugin.RPC.Scripts.trace_code cctxt diff --git a/src/proto_alpha/lib_client/client_proto_programs.mli b/src/proto_alpha/lib_client/client_proto_programs.mli index dbe6e154e2ab..40d5acac1b4f 100644 --- a/src/proto_alpha/lib_client/client_proto_programs.mli +++ b/src/proto_alpha/lib_client/client_proto_programs.mli @@ -39,7 +39,7 @@ type simulation_params = { now : Script_timestamp.t option; level : Script_int.n Script_int.num option; source : Contract.t option; - payer : Contract.t option; + payer : Signature.public_key_hash option; gas : Gas.Arith.integral option; } diff --git a/src/proto_alpha/lib_client_commands/client_proto_programs_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_programs_commands.ml index 990deccf4a1d..39241974d120 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_programs_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_programs_commands.ml @@ -279,9 +279,6 @@ let commands () = Lwt.return @@ Micheline_parser.no_parsing_error program >>=? fun program -> let show_source = not no_print_source in - let payer = - Option.map (fun c -> Alpha_context.Contract.Implicit c) payer - in if trace_exec then trace cctxt @@ -964,9 +961,6 @@ let commands () = contract input cctxt -> - let payer = - Option.map (fun c -> Alpha_context.Contract.Implicit c) payer - in Client_proto_programs.run_view cctxt ~chain:cctxt#chain @@ -1003,9 +997,6 @@ let commands () = Micheline_parser.no_parsing_error @@ Michelson_v1_parser.parse_expression "Unit" >>?= fun input -> - let payer = - Option.map (fun c -> Alpha_context.Contract.Implicit c) payer - in Client_proto_programs.run_script_view cctxt ~chain:cctxt#chain @@ -1046,9 +1037,6 @@ let commands () = contract input cctxt -> - let payer = - Option.map (fun c -> Alpha_context.Contract.Implicit c) payer - in Client_proto_programs.run_script_view cctxt ~chain:cctxt#chain -- GitLab From eb9da5cdd411bc13fba17eecc8e17c61ef8eca41 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:19:41 +0200 Subject: [PATCH 04/11] Plugin/RPC: use address zero as payer if payer is not specified --- src/proto_alpha/lib_plugin/RPC.ml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/proto_alpha/lib_plugin/RPC.ml b/src/proto_alpha/lib_plugin/RPC.ml index daaac1c42cd2..16f8e503620a 100644 --- a/src/proto_alpha/lib_plugin/RPC.ml +++ b/src/proto_alpha/lib_plugin/RPC.ml @@ -945,8 +945,9 @@ module Scripts = struct match (src_opt, pay_opt) with | None, None -> let self = Contract.Originated self in - (self, self) - | Some c, None | None, Some c -> (c, c) + (self, Contract.Implicit Signature.Public_key_hash.zero) + | Some c, None -> (c, Contract.Implicit Signature.Public_key_hash.zero) + | None, Some c -> (c, c) | Some src, Some pay -> (src, pay) in return (ctxt, {balance; self; source; payer}) -- GitLab From 5ff82f524a0b7ac18b6636f83a512c082890ed7f Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:39:38 +0200 Subject: [PATCH 05/11] Plugin/RPC: payer of run_code should be an implicit account --- src/proto_alpha/lib_client/client_proto_programs.ml | 2 -- src/proto_alpha/lib_plugin/RPC.ml | 12 +++++++----- src/proto_alpha/lib_protocol/alpha_context.mli | 2 ++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_client/client_proto_programs.ml b/src/proto_alpha/lib_client/client_proto_programs.ml index 7ca3ebc54ae7..4754b18a70bb 100644 --- a/src/proto_alpha/lib_client/client_proto_programs.ml +++ b/src/proto_alpha/lib_client/client_proto_programs.ml @@ -219,7 +219,6 @@ let run (cctxt : #Protocol_client_context.rpc_context) } = params in - let payer = Option.map (fun c -> Contract.Implicit c) payer in let amount = Option.value ~default:Tez.fifty_cents amount in Plugin.RPC.Scripts.run_code cctxt @@ -253,7 +252,6 @@ let trace (cctxt : #Protocol_client_context.rpc_context) } = params in - let payer = Option.map (fun c -> Contract.Implicit c) payer in let amount = Option.value ~default:Tez.fifty_cents amount in Plugin.RPC.Scripts.trace_code cctxt diff --git a/src/proto_alpha/lib_plugin/RPC.ml b/src/proto_alpha/lib_plugin/RPC.ml index 16f8e503620a..2870adbd4eb1 100644 --- a/src/proto_alpha/lib_plugin/RPC.ml +++ b/src/proto_alpha/lib_plugin/RPC.ml @@ -164,7 +164,7 @@ module Scripts = struct (opt "balance" Tez.encoding) (req "chain_id" Chain_id.encoding) (opt "source" Contract.encoding) - (opt "payer" Contract.encoding) + (opt "payer" Contract.implicit_encoding) (opt "self" Contract.originated_encoding) (dft "entrypoint" Entrypoint.simple_encoding Entrypoint.default)) (obj4 @@ -901,7 +901,7 @@ module Scripts = struct type run_code_config = { balance : Tez.t; self : Contract_hash.t; - payer : Contract.t; + payer : Signature.public_key_hash; source : Contract.t; } @@ -945,9 +945,9 @@ module Scripts = struct match (src_opt, pay_opt) with | None, None -> let self = Contract.Originated self in - (self, Contract.Implicit Signature.Public_key_hash.zero) - | Some c, None -> (c, Contract.Implicit Signature.Public_key_hash.zero) - | None, Some c -> (c, c) + (self, Signature.Public_key_hash.zero) + | Some c, None -> (c, Signature.Public_key_hash.zero) + | None, Some c -> (Contract.Implicit c, c) | Some src, Some pay -> (src, pay) in return (ctxt, {balance; self; source; payer}) @@ -1028,6 +1028,7 @@ module Scripts = struct | Some z -> z in let step_constants = + let payer = Contract.Implicit payer in let open Script_interpreter in {source; payer; self; amount; balance; chain_id; now; level} in @@ -1098,6 +1099,7 @@ module Scripts = struct | Some z -> z in let step_constants = + let payer = Contract.Implicit payer in let open Script_interpreter in {source; payer; self; amount; balance; chain_id; now; level} in diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index ab984536b588..ef33c165a54e 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -1633,6 +1633,8 @@ module Contract : sig include BASIC_DATA with type t := t + val implicit_encoding : Signature.public_key_hash Data_encoding.t + val originated_encoding : Contract_hash.t Data_encoding.t val in_memory_size : t -> Cache_memory_helpers.sint -- GitLab From 6cf3e38d6275718379fb521b019b24ab3fb98287 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:43:22 +0200 Subject: [PATCH 06/11] Plugin/RPC: extract source_and_payer --- src/proto_alpha/lib_plugin/RPC.ml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/proto_alpha/lib_plugin/RPC.ml b/src/proto_alpha/lib_plugin/RPC.ml index 2870adbd4eb1..b36515100773 100644 --- a/src/proto_alpha/lib_plugin/RPC.ml +++ b/src/proto_alpha/lib_plugin/RPC.ml @@ -928,6 +928,14 @@ module Scripts = struct balance >>=? fun (ctxt, _) -> return (ctxt, dummy_contract_hash) in + let source_and_payer ~src_opt ~pay_opt ~default_src = + match (src_opt, pay_opt) with + | None, None -> + (Contract.Originated default_src, Signature.Public_key_hash.zero) + | Some c, None -> (c, Signature.Public_key_hash.zero) + | None, Some c -> (Contract.Implicit c, c) + | Some src, Some pay -> (src, pay) + in let configure_contracts ctxt script balance ~src_opt ~pay_opt ~self_opt = (match self_opt with | None -> @@ -942,13 +950,7 @@ module Scripts = struct >>=? fun bal -> return (ctxt, addr, bal)) >>=? fun (ctxt, self, balance) -> let source, payer = - match (src_opt, pay_opt) with - | None, None -> - let self = Contract.Originated self in - (self, Signature.Public_key_hash.zero) - | Some c, None -> (c, Signature.Public_key_hash.zero) - | None, Some c -> (Contract.Implicit c, c) - | Some src, Some pay -> (src, pay) + source_and_payer ~src_opt ~pay_opt ~default_src:self in return (ctxt, {balance; self; source; payer}) in -- GitLab From 871cf1d890878e55c10d861664b2df462a4ad925 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:49:01 +0200 Subject: [PATCH 07/11] Plugin/RPC: payer of run_script_view should be an implicit account --- .../lib_client/client_proto_programs.ml | 1 - src/proto_alpha/lib_plugin/RPC.ml | 14 +++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/proto_alpha/lib_client/client_proto_programs.ml b/src/proto_alpha/lib_client/client_proto_programs.ml index 4754b18a70bb..beadf983c9a6 100644 --- a/src/proto_alpha/lib_client/client_proto_programs.ml +++ b/src/proto_alpha/lib_client/client_proto_programs.ml @@ -188,7 +188,6 @@ let run_script_view (cctxt : #Protocol_client_context.rpc_context) } = params in - let payer = Option.map (fun c -> Contract.Implicit c) payer in Chain_services.chain_id cctxt ~chain () >>=? fun chain_id -> Plugin.RPC.Scripts.run_script_view cctxt diff --git a/src/proto_alpha/lib_plugin/RPC.ml b/src/proto_alpha/lib_plugin/RPC.ml index b36515100773..4e015ce0935d 100644 --- a/src/proto_alpha/lib_plugin/RPC.ml +++ b/src/proto_alpha/lib_plugin/RPC.ml @@ -233,7 +233,7 @@ module Scripts = struct (dft "unlimited_gas" bool false) (req "chain_id" Chain_id.encoding) (opt "source" Contract.encoding) - (opt "payer" Contract.encoding) + (opt "payer" Contract.implicit_encoding) (opt "gas" Gas.Arith.z_integral_encoding) (req "unparsing_mode" unparsing_mode_encoding) (opt "now" Script_timestamp.encoding)) @@ -1239,8 +1239,8 @@ module Scripts = struct input, unlimited_gas, chain_id, - source, - payer, + src_opt, + pay_opt, gas, unparsing_mode, now ), @@ -1258,11 +1258,7 @@ module Scripts = struct >>=? fun (input_ty, output_ty) -> Contract.get_balance ctxt contract >>=? fun balance -> let source, payer = - match (source, payer) with - | Some source, Some payer -> (source, payer) - | Some source, None -> (source, source) - | None, Some payer -> (payer, payer) - | None, None -> (contract, contract) + source_and_payer ~src_opt ~pay_opt ~default_src:contract_hash in let now = match now with None -> Script_timestamp.now ctxt | Some t -> t @@ -1292,7 +1288,7 @@ module Scripts = struct let step_constants = { Script_interpreter.source; - payer; + payer = Contract.Implicit payer; self = contract_hash; amount = Tez.zero; balance; -- GitLab From 722a98798a592d8a2b21376c44c8fdd4254601d4 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:50:55 +0200 Subject: [PATCH 08/11] Plugin/RPC: payer of run_tzip4_view should be an implicit account --- src/proto_alpha/lib_client/client_proto_fa12.mli | 2 +- .../lib_client/client_proto_programs.ml | 1 - .../client_proto_fa12_commands.ml | 3 --- src/proto_alpha/lib_plugin/RPC.ml | 14 +++++--------- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/proto_alpha/lib_client/client_proto_fa12.mli b/src/proto_alpha/lib_client/client_proto_fa12.mli index 76800482921c..4817f9c68295 100644 --- a/src/proto_alpha/lib_client/client_proto_fa12.mli +++ b/src/proto_alpha/lib_client/client_proto_fa12.mli @@ -155,7 +155,7 @@ val run_view_action : ?source:Contract.t -> contract:Contract_hash.t -> action:action -> - ?payer:Contract.t -> + ?payer:Signature.public_key_hash -> ?gas:Gas.Arith.integral -> unparsing_mode:Script_ir_translator.unparsing_mode -> unit -> diff --git a/src/proto_alpha/lib_client/client_proto_programs.ml b/src/proto_alpha/lib_client/client_proto_programs.ml index beadf983c9a6..728e9ec1baaa 100644 --- a/src/proto_alpha/lib_client/client_proto_programs.ml +++ b/src/proto_alpha/lib_client/client_proto_programs.ml @@ -162,7 +162,6 @@ let run_view (cctxt : #Protocol_client_context.rpc_context) } = params in - let payer = Option.map (fun c -> Contract.Implicit c) payer in Chain_services.chain_id cctxt ~chain () >>=? fun chain_id -> Plugin.RPC.Scripts.run_tzip4_view cctxt diff --git a/src/proto_alpha/lib_client_commands/client_proto_fa12_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_fa12_commands.ml index 17d4b0a8fe18..e647c63f2f4e 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_fa12_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_fa12_commands.ml @@ -163,7 +163,6 @@ let commands_ro () : #Protocol_client_context.full Clic.command list = let action = Client_proto_fa12.Get_balance (addr, (dummy_callback, None)) in - let payer = Option.map (fun c -> Contract.Implicit c) payer in Client_proto_fa12.run_view_action cctxt ~chain:cctxt#chain @@ -200,7 +199,6 @@ let commands_ro () : #Protocol_client_context.full Clic.command list = Client_proto_fa12.Get_allowance (source, destination, (dummy_callback, None)) in - let payer = Option.map (fun c -> Contract.Implicit c) payer in Client_proto_fa12.run_view_action cctxt ~chain:cctxt#chain @@ -227,7 +225,6 @@ let commands_ro () : #Protocol_client_context.full Clic.command list = let action = Client_proto_fa12.Get_total_supply (dummy_callback, None) in - let payer = Option.map (fun c -> Contract.Implicit c) payer in Client_proto_fa12.run_view_action cctxt ~chain:cctxt#chain diff --git a/src/proto_alpha/lib_plugin/RPC.ml b/src/proto_alpha/lib_plugin/RPC.ml index 4e015ce0935d..896faf0e6150 100644 --- a/src/proto_alpha/lib_plugin/RPC.ml +++ b/src/proto_alpha/lib_plugin/RPC.ml @@ -217,7 +217,7 @@ module Scripts = struct (req "input" Script.expr_encoding) (req "chain_id" Chain_id.encoding) (opt "source" Contract.encoding) - (opt "payer" Contract.encoding) + (opt "payer" Contract.implicit_encoding) (opt "gas" Gas.Arith.z_integral_encoding) (req "unparsing_mode" unparsing_mode_encoding) (opt "now" Script_timestamp.encoding) @@ -1139,8 +1139,8 @@ module Scripts = struct entrypoint, input, chain_id, - source, - payer, + src_opt, + pay_opt, gas, unparsing_mode, now, @@ -1165,11 +1165,7 @@ module Scripts = struct Tez.zero >>=? fun (ctxt, viewer_contract) -> let source, payer = - match (source, payer) with - | Some source, Some payer -> (source, payer) - | Some source, None -> (source, source) - | None, Some payer -> (payer, payer) - | None, None -> (contract, contract) + source_and_payer ~src_opt ~pay_opt ~default_src:contract_hash in let gas = Option.value @@ -1191,7 +1187,7 @@ module Scripts = struct let open Script_interpreter in { source; - payer; + payer = Contract.Implicit payer; self = contract_hash; amount = Tez.zero; balance; -- GitLab From bde1f5d7c0e5790f664ccbd678cac07993af4151 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 12:11:15 +0200 Subject: [PATCH 09/11] Proto/LB: use an implicit account as dummy payer --- src/proto_alpha/lib_protocol/apply.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 89eb16234ab4..122d02dfc908 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -3098,7 +3098,7 @@ let apply_liquidity_baking_subsidy ctxt ~toggle_vote = entrypoint. *) { source = liquidity_baking_cpmm_contract; - payer = liquidity_baking_cpmm_contract; + payer = Contract.Implicit Signature.Public_key_hash.zero; self = liquidity_baking_cpmm_contract_hash; amount = liquidity_baking_subsidy; balance; -- GitLab From ad76cfe933bc0121c408fa31a858da3593cb7952 Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 13:01:50 +0200 Subject: [PATCH 10/11] Proto: payer is an implicit account --- src/proto_alpha/lib_benchmark/execution_context.ml | 4 ++-- .../lib_benchmarks_proto/interpreter_benchmarks.ml | 5 ++--- src/proto_alpha/lib_plugin/RPC.ml | 6 ++---- src/proto_alpha/lib_protocol/apply.ml | 4 ++-- src/proto_alpha/lib_protocol/script_interpreter.ml | 4 ++-- src/proto_alpha/lib_protocol/script_interpreter.mli | 2 +- src/proto_alpha/lib_protocol/script_typed_ir.ml | 2 +- src/proto_alpha/lib_protocol/script_typed_ir.mli | 2 +- .../lib_protocol/test/helpers/contract_helpers.ml | 6 ++++-- 9 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/proto_alpha/lib_benchmark/execution_context.ml b/src/proto_alpha/lib_benchmark/execution_context.ml index 86fbdd7278e7..a44d25fc8721 100644 --- a/src/proto_alpha/lib_benchmark/execution_context.ml +++ b/src/proto_alpha/lib_benchmark/execution_context.ml @@ -58,9 +58,9 @@ let make ~rng_state = let level = Script_int.zero_n in let open Script_interpreter in (match context with - | `Mem_block (block, (bs1, bs2, _, _, _)) -> + | `Mem_block (block, (bs1, _, _, _, _)) -> let source = bs1 in - let payer = bs2 in + let payer = Contract_helpers.default_payer in let self = Contract_helpers.default_self in let step_constants = { diff --git a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml index d372190f4510..735f29f015b8 100644 --- a/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml +++ b/src/proto_alpha/lib_benchmarks_proto/interpreter_benchmarks.ml @@ -2978,11 +2978,10 @@ module Registration_section = struct ~cont_and_stack_sampler:(fun _cfg _rng_state -> let open Script_typed_ir in let open Alpha_context in - let zero = Contract.Implicit Signature.Public_key_hash.zero in let step_constants = { - source = zero; - payer = zero; + source = Contract.Implicit Signature.Public_key_hash.zero; + payer = Signature.Public_key_hash.zero; self = Contract_hash.zero; amount = Tez.zero; balance = Tez.zero; diff --git a/src/proto_alpha/lib_plugin/RPC.ml b/src/proto_alpha/lib_plugin/RPC.ml index 896faf0e6150..4ef926e5a978 100644 --- a/src/proto_alpha/lib_plugin/RPC.ml +++ b/src/proto_alpha/lib_plugin/RPC.ml @@ -1030,7 +1030,6 @@ module Scripts = struct | Some z -> z in let step_constants = - let payer = Contract.Implicit payer in let open Script_interpreter in {source; payer; self; amount; balance; chain_id; now; level} in @@ -1101,7 +1100,6 @@ module Scripts = struct | Some z -> z in let step_constants = - let payer = Contract.Implicit payer in let open Script_interpreter in {source; payer; self; amount; balance; chain_id; now; level} in @@ -1187,7 +1185,7 @@ module Scripts = struct let open Script_interpreter in { source; - payer = Contract.Implicit payer; + payer; self = contract_hash; amount = Tez.zero; balance; @@ -1284,7 +1282,7 @@ module Scripts = struct let step_constants = { Script_interpreter.source; - payer = Contract.Implicit payer; + payer; self = contract_hash; amount = Tez.zero; balance; diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index 122d02dfc908..3f9accf97124 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -837,7 +837,7 @@ let apply_transaction_to_smart_contract ~ctxt ~source ~contract_hash ~amount let open Script_interpreter in { source; - payer = Contract.Implicit payer; + payer; self = contract_hash; amount; chain_id; @@ -3098,7 +3098,7 @@ let apply_liquidity_baking_subsidy ctxt ~toggle_vote = entrypoint. *) { source = liquidity_baking_cpmm_contract; - payer = Contract.Implicit Signature.Public_key_hash.zero; + payer = Signature.Public_key_hash.zero; self = liquidity_baking_cpmm_contract_hash; amount = liquidity_baking_subsidy; balance; diff --git a/src/proto_alpha/lib_protocol/script_interpreter.ml b/src/proto_alpha/lib_protocol/script_interpreter.ml index 0432fb11ef57..9178b58ed953 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.ml +++ b/src/proto_alpha/lib_protocol/script_interpreter.ml @@ -91,7 +91,7 @@ module S = Saturation_repr type step_constants = Script_typed_ir.step_constants = { source : Contract.t; - payer : Contract.t; + payer : Signature.public_key_hash; self : Contract_hash.t; amount : Tez.t; balance : Tez.t; @@ -1208,7 +1208,7 @@ and step : type a s b t r f. (a, s, b, t, r, f) step_type = let hash = Raw_hashes.sha512 bytes in (step [@ocaml.tailcall]) g gas k ks hash stack | ISource (_, k) -> - let destination : Destination.t = Contract sc.payer in + let destination : Destination.t = Contract (Implicit sc.payer) in let res = {destination; entrypoint = Entrypoint.default} in (step [@ocaml.tailcall]) g gas k ks res (accu, stack) | ISender (_, k) -> diff --git a/src/proto_alpha/lib_protocol/script_interpreter.mli b/src/proto_alpha/lib_protocol/script_interpreter.mli index 797a02f17f82..bcca460b020f 100644 --- a/src/proto_alpha/lib_protocol/script_interpreter.mli +++ b/src/proto_alpha/lib_protocol/script_interpreter.mli @@ -62,7 +62,7 @@ type execution_result = { type step_constants = Script_typed_ir.step_constants = { source : Contract.t; - payer : Contract.t; + payer : Signature.public_key_hash; self : Contract_hash.t; amount : Tez.t; balance : Tez.t; diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.ml b/src/proto_alpha/lib_protocol/script_typed_ir.ml index 60514a7975b4..e47943604c64 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.ml +++ b/src/proto_alpha/lib_protocol/script_typed_ir.ml @@ -41,7 +41,7 @@ open Dependent_bool type step_constants = { source : Contract.t; (** The address calling this contract, as returned by SENDER. *) - payer : Contract.t; + payer : Signature.public_key_hash; (** The address of the implicit account that initiated the chain of contract calls, as returned by SOURCE. *) self : Contract_hash.t; (** The address of the contract being executed, as returned by SELF and SELF_ADDRESS. diff --git a/src/proto_alpha/lib_protocol/script_typed_ir.mli b/src/proto_alpha/lib_protocol/script_typed_ir.mli index 010b1ab6f20a..0af068f38163 100644 --- a/src/proto_alpha/lib_protocol/script_typed_ir.mli +++ b/src/proto_alpha/lib_protocol/script_typed_ir.mli @@ -31,7 +31,7 @@ open Dependent_bool type step_constants = { source : Contract.t; - payer : Contract.t; + payer : Signature.public_key_hash; self : Contract_hash.t; amount : Tez.t; balance : Tez.t; diff --git a/src/proto_alpha/lib_protocol/test/helpers/contract_helpers.ml b/src/proto_alpha/lib_protocol/test/helpers/contract_helpers.ml index 4053b8f6b9b5..ec4d76ef1425 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/contract_helpers.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/contract_helpers.ml @@ -69,13 +69,15 @@ let fake_KT1 = let default_self = fake_KT1 -let default_source = Contract.Implicit Signature.Public_key_hash.zero +let default_payer = Signature.Public_key_hash.zero + +let default_source = Contract.Implicit default_payer let default_step_constants = Script_interpreter. { source = default_source; - payer = default_source; + payer = default_payer; self = default_self; amount = Tez.zero; balance = Tez.zero; -- GitLab From 2cac8a99aed3523f3efe29a40457db092153a57d Mon Sep 17 00:00:00 2001 From: Mehdi Bouaziz Date: Tue, 12 Jul 2022 16:22:17 +0200 Subject: [PATCH 11/11] Tezt: adapt test_source_and_sender test --- tezt/tests/run_script.ml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tezt/tests/run_script.ml b/tezt/tests/run_script.ml index 8b8ae4273b10..807b6fe5348e 100644 --- a/tezt/tests/run_script.ml +++ b/tezt/tests/run_script.ml @@ -148,13 +148,21 @@ let test_source_and_sender ~protocol () = let* bootstrap1 = Client.show_address ~alias:"bootstrap1" client in let* bootstrap2 = Client.show_address ~alias:"bootstrap2" client in - (* When --payer is absent, --source sets *both* SENDER and SOURCE. *) + (* When --payer is absent, --source sets: + - *both* SENDER and SOURCE (until Kathmandu); + - SENDER, but SOURCE is the zero address (since L). *) + let expected_source = + match protocol with + | Ithaca | Jakarta | Kathmandu -> + Format.sprintf "%S" bootstrap1.public_key_hash + | Alpha -> "0x00000000000000000000000000000000000000000000" + in let* _storage = Client.run_script ~source:"bootstrap1" ~prg:check_source ~storage:"Unit" - ~input:(Format.sprintf "%S" bootstrap1.public_key_hash) + ~input:expected_source client in let* _storage = -- GitLab