From 3c46b5d68fff5b2c7e79a3497062cbe34bb515d3 Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Wed, 30 Mar 2022 15:12:45 +0200 Subject: [PATCH 1/2] proto/test: add test with tickets forge then deposit --- .../integration/operations/test_tx_rollup.ml | 212 ++++++++++++++++++ 1 file changed, 212 insertions(+) diff --git a/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml index 505cf75c7b6f..3115a26df5d9 100644 --- a/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml @@ -5021,6 +5021,213 @@ module Withdraw = struct ignore i ; return_unit + (** [test_forge_deposit_withdraw_deposit ()] check the following scenario : + 1. forges new tickets and stores it in contract's storage. + 2. deposits theses tickets into a tx_rollup + 3. dispatches them to an account + 4. forges new tickets + 3. transfers the tickets from the account to the contract + 4. deposits the just received tickets into the tx_rollup *) + let test_forge_deposit_withdraw_deposit () = + context_init1 () >>=? fun (block, account) -> + originate block account >>=? fun (block, tx_rollup) -> + (* This script has 3 entrypoints: + - %default: forges new tickets and stores it in contract's storage. + - %withdraw: receives tickets and add it in contract's storage. + - %deposit: sends the last tickets stored in the contract's storage to an + of a , both given in the entrypoint's parameter. *) + Contract_helpers.originate_contract_from_string + ~script: + {| parameter (or (pair %default nat nat) + (or (ticket %withdraw nat) + (pair %deposit address tx_rollup_l2_address))); + storage (list (ticket nat)); + code + { + UNPAIR; + IF_LEFT + { + UNPAIR; + TICKET; + CONS; + NIL operation; + PAIR + } + { + IF_LEFT + { + CONS; + NIL operation; + PAIR; + } + { + UNPAIR; + CONTRACT %deposit (pair (ticket nat) tx_rollup_l2_address); + ASSERT_SOME; + DUG 2; + SWAP; + IF_CONS + { + SWAP; + DUG 3; + PAIR; + PUSH mutez 0; + SWAP; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR + } + { FAIL } + } + } + } |} + ~storage:"{}" + ~source_contract:account + ~baker:(is_implicit_exn account) + block + >>=? fun (forge_withdraw_deposit_contract, _script, block) -> + let forge_ticket block = + Op.transaction + (B block) + ~entrypoint:Entrypoint.default + ~parameters: + (Expr_common.( + pair_n + [ + int (Z.of_int Nat_ticket.contents_nat); + int (Tx_rollup_l2_qty.to_z Nat_ticket.amount); + ]) + |> Tezos_micheline.Micheline.strip_locations |> Script.lazy_expr) + ~fee:Tez.one + account + forge_withdraw_deposit_contract + (Tez.of_mutez_exn 0L) + >>=? fun operation -> Block.bake ~operation block + in + let deposit_ticket block = + Op.transaction + (B block) + ~entrypoint:(Entrypoint.of_string_strict_exn "deposit") + ~parameters: + (Expr_common.( + pair_n + [ + string (Tx_rollup.to_b58check tx_rollup); + string "tz4MSfZsn6kMDczShy8PMeB628TNukn9hi2K"; + ]) + |> Tezos_micheline.Micheline.strip_locations |> Script.lazy_expr) + ~fee:Tez.one + account + forge_withdraw_deposit_contract + (Tez.of_mutez_exn 0L) + >>=? fun operation -> Block.bake ~operation block + in + let dispatch_ticket block = + Nat_ticket.withdrawal + (B block) + ~ticketer:forge_withdraw_deposit_contract + ~claimer:account + tx_rollup + >>=? fun (withdraw, ticket_info) -> + let message_index = 0 in + finalize_all_commitment_with_withdrawals + ~batches:["batch"] + ~account + ~tx_rollup + ~withdrawals:[(message_index, [withdraw])] + block + >>=? fun (commitment, context_hash_list, committed_level, block) -> + let context_hash = + WithExceptions.Option.get + ~loc:__LOC__ + (List.nth context_hash_list message_index) + in + let (_message_result_hash, message_result_path) = + Rejection.make_rejection_param commitment ~index:message_index + in + Op.tx_rollup_dispatch_tickets + (B block) + ~source:account + ~message_index + ~message_result_path + tx_rollup + committed_level + context_hash + [ticket_info] + >>=? fun operation -> Block.bake ~operation block + in + let transfer_ticket block = + Op.transfer_ticket + (B block) + ~source:account + ~contents:(Script.lazy_expr Nat_ticket.contents) + ~ty:(Script.lazy_expr Nat_ticket.ty) + ~ticketer:forge_withdraw_deposit_contract + (Tx_rollup_l2_qty.to_z Nat_ticket.amount) + ~destination:forge_withdraw_deposit_contract + (Entrypoint.of_string_strict_exn "withdraw") + >>=? fun operation -> Block.bake ~operation block + in + let token_one = + Nat_ticket.ex_token ~ticketer:forge_withdraw_deposit_contract + in + let assert_contract_ticket_balance ~__LOC__ block balance = + assert_ticket_balance + ~loc:__LOC__ + block + token_one + (Contract forge_withdraw_deposit_contract) + balance + in + let assert_account_ticket_balance ~__LOC__ block balance = + assert_ticket_balance + ~loc:__LOC__ + block + token_one + (Contract account) + balance + in + let assert_tx_rollup_ticket_balance ~__LOC__ block balance = + assert_ticket_balance + ~loc:__LOC__ + block + token_one + (Tx_rollup tx_rollup) + balance + in + (* forge tickets and store them in the contract storage. *) + forge_ticket block >>=? fun block -> + assert_contract_ticket_balance ~__LOC__ block (Some 10) >>=? fun () -> + assert_tx_rollup_ticket_balance ~__LOC__ block None >>=? fun () -> + assert_account_ticket_balance ~__LOC__ block None >>=? fun () -> + (* deposit tickets from the contract storage into the tx_rollup. *) + deposit_ticket block >>=? fun block -> + assert_contract_ticket_balance ~__LOC__ block None >>=? fun () -> + assert_tx_rollup_ticket_balance ~__LOC__ block (Some 10) >>=? fun () -> + assert_account_ticket_balance ~__LOC__ block None >>=? fun () -> + (* add withdrawals, then transfer the tickets from tx_rollup to account. *) + dispatch_ticket block >>=? fun block -> + assert_contract_ticket_balance ~__LOC__ block None >>=? fun () -> + assert_tx_rollup_ticket_balance ~__LOC__ block None >>=? fun () -> + assert_account_ticket_balance ~__LOC__ block (Some 10) >>=? fun () -> + (* forge new tickets and store them in the contract storage. *) + forge_ticket block >>=? fun block -> + assert_contract_ticket_balance ~__LOC__ block (Some 10) >>=? fun () -> + assert_tx_rollup_ticket_balance ~__LOC__ block None >>=? fun () -> + assert_account_ticket_balance ~__LOC__ block (Some 10) >>=? fun () -> + (* transfer tickets from account to the contract. *) + transfer_ticket block >>=? fun block -> + assert_contract_ticket_balance ~__LOC__ block (Some 20) >>=? fun () -> + assert_tx_rollup_ticket_balance ~__LOC__ block None >>=? fun () -> + assert_account_ticket_balance ~__LOC__ block None >>=? fun () -> + deposit_ticket block >>=? fun block -> + (* deposit back the tickets that was just transfered. *) + assert_contract_ticket_balance ~__LOC__ block (Some 10) >>=? fun () -> + assert_tx_rollup_ticket_balance ~__LOC__ block (Some 10) >>=? fun () -> + assert_account_ticket_balance ~__LOC__ block None + let tests = [ Tztest.tztest "Test withdraw" `Quick test_valid_withdraw; @@ -5062,6 +5269,11 @@ module Withdraw = struct batches" `Quick test_multiple_withdrawals_multiple_batches; + Tztest.tztest + "Test multiple withdrawals from the same batch and from different \ + batches" + `Quick + test_forge_deposit_withdraw_deposit; ] end -- GitLab From ee3e20b01ca533300607dd04b4f81c2f80773a81 Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Wed, 6 Apr 2022 08:05:51 +0200 Subject: [PATCH 2/2] test/tx_rollup: rename make_rejection_param fct --- .../integration/operations/test_tx_rollup.ml | 190 ++++++++++-------- 1 file changed, 109 insertions(+), 81 deletions(-) diff --git a/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml b/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml index 3115a26df5d9..7051e707d897 100644 --- a/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml +++ b/src/proto_alpha/lib_protocol/test/integration/operations/test_tx_rollup.ml @@ -577,6 +577,27 @@ module Nat_ticket = struct (op, block, deposit_contract) end +let message_result_hash_in_commitment (commitment : Tx_rollup_commitment.Full.t) + ~message_position = + WithExceptions.Option.get + ~loc:__LOC__ + (List.nth commitment.messages message_position) + +let compute_message_result_path (commitment : Tx_rollup_commitment.Full.t) + ~message_position = + let tree = + List.fold_left + (fun tree m -> Tx_rollup_commitment.Merkle.snoc tree m) + Tx_rollup_commitment.Merkle.nil + commitment.messages + in + assert_ok @@ Tx_rollup_commitment.Merkle.compute_path tree message_position + +let message_result_hash_and_path (commitment : Tx_rollup_commitment.Full.t) + ~message_position = + ( message_result_hash_in_commitment commitment ~message_position, + compute_message_result_path commitment ~message_position ) + (** ---- TESTS -------------------------------------------------------------- *) (** [test_origination] originates a transaction rollup and checks that @@ -2348,25 +2369,6 @@ module Rejection = struct replace_commitment ~l2_parameters ~commitment ~store messages >>= fun commitment -> return commitment - let make_rejection_param (commitment : Tx_rollup_commitment.Full.t) ~index = - let message_result_hash = - WithExceptions.Option.get - ~loc:__LOC__ - (List.nth commitment.messages index) - in - let tree = - List.fold_left - (fun tree m -> Tx_rollup_commitment.Merkle.snoc tree m) - Tx_rollup_commitment.Merkle.nil - commitment.messages - in - let path = - match Tx_rollup_commitment.Merkle.compute_path tree index with - | Ok x -> x - | Error _ -> assert false - in - (message_result_hash, path) - let init_with_deposit ?tx_rollup_hard_size_limit_per_message addr = init_l2_store () >>= fun store -> context_init1 ?tx_rollup_hard_size_limit_per_message () @@ -2398,8 +2400,9 @@ module Rejection = struct l2_parameters (I i) >>=? fun l2_parameters -> make_proof store l2_parameters deposit >>= fun proof -> Incremental.begin_construction b >>=? fun i -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -2407,7 +2410,7 @@ module Rejection = struct tx_rollup Tx_rollup_level.root deposit - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -2512,8 +2515,9 @@ module Rejection = struct (* Now we produce a valid proof rejecting the commitment *) l2_parameters (I i) >>=? fun l2_parameters -> make_proof store l2_parameters message >>= fun proof -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (B b) @@ -2521,7 +2525,7 @@ module Rejection = struct tx_rollup level message - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -2569,8 +2573,9 @@ module Rejection = struct (* Now we produce a valid proof rejecting the commitment *) l2_parameters (B b) >>=? fun l2_parameters -> make_proof store l2_parameters message >>= fun proof -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (B b) @@ -2578,7 +2583,7 @@ module Rejection = struct tx_rollup level message - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -2629,8 +2634,9 @@ module Rejection = struct (* Now we produce a valid proof rejecting the commitment *) l2_parameters (B b) >>=? fun l2_parameters -> make_proof store l2_parameters message >>= fun proof -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (B b) @@ -2638,7 +2644,7 @@ module Rejection = struct tx_rollup level message - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -2712,8 +2718,9 @@ module Rejection = struct in l2_parameters (I i) >>=? fun l2_parameters -> valid_empty_proof l2_parameters >>= fun proof -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -2721,7 +2728,7 @@ module Rejection = struct tx_rollup level msg - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -2742,8 +2749,9 @@ module Rejection = struct | Error _ -> assert false | Ok path -> path in + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -2751,7 +2759,7 @@ module Rejection = struct tx_rollup level msg - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -2786,8 +2794,9 @@ module Rejection = struct | Error _ -> assert false | Ok path -> path in + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -2795,7 +2804,7 @@ module Rejection = struct tx_rollup level msg - ~message_position:0 + ~message_position ~message_path ~proof:invalid_proof (* doesn't matter -- we'll never check it*) ~message_result_hash @@ -2893,8 +2902,9 @@ module Rejection = struct in l2_parameters (I i) >>=? fun l2_parameters -> valid_empty_proof l2_parameters >>= fun proof -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -2902,7 +2912,7 @@ module Rejection = struct tx_rollup level message - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -2940,8 +2950,9 @@ module Rejection = struct in l2_parameters (I i) >>=? fun l2_parameters -> valid_empty_proof l2_parameters >>= fun proof -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -2949,7 +2960,7 @@ module Rejection = struct tx_rollup level message - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -3023,8 +3034,9 @@ module Rejection = struct Incremental.add_operation i op >>=? fun i -> Incremental.finalize_block i >>=? fun b -> Incremental.begin_construction b >>=? fun i -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -3032,7 +3044,7 @@ module Rejection = struct tx_rollup Tx_rollup_level.root deposit - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -3055,7 +3067,7 @@ module Rejection = struct tx_rollup Tx_rollup_level.root deposit - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -3103,8 +3115,9 @@ module Rejection = struct l2_parameters (I i) >>=? fun l2_parameters -> make_proof store l2_parameters deposit >>= fun proof -> Incremental.begin_construction b >>=? fun i -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -3112,7 +3125,7 @@ module Rejection = struct tx_rollup Tx_rollup_level.root deposit - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -3179,8 +3192,9 @@ module Rejection = struct (* We try to reject with the truncated proof which is already above the size limit. *) Incremental.begin_construction b >>=? fun i -> + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -3188,7 +3202,7 @@ module Rejection = struct tx_rollup Tx_rollup_level.root deposit - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -3285,8 +3299,9 @@ module Rejection = struct withdraw_list_hash = Tx_rollup_withdraw_list_hash.empty; } in + let message_position = 0 in let (message_result_hash, message_result_path) = - make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (B b) @@ -3294,7 +3309,7 @@ module Rejection = struct tx_rollup level message - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -3408,8 +3423,9 @@ module Single_message_inbox = struct (if Option.is_some expect_failure then "x" else "√") ; l2_parameters (B b) >>=? fun l2_parameters -> Rejection.valid_empty_proof l2_parameters >>= fun proof -> + let message_position = 0 in let (message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:0 + message_result_hash_and_path commitment ~message_position in Op.tx_rollup_reject (B b) @@ -3417,7 +3433,7 @@ module Single_message_inbox = struct tx_rollup level message - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -3945,8 +3961,8 @@ module Withdraw = struct >>=? fun storage_size_before_withdraw -> (* -- At this point, everything is in place for the user to execute the withdrawal -- *) - let (_message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:0 + let message_result_path = + compute_message_result_path commitment ~message_position:message_index in Op.tx_rollup_dispatch_tickets (B block) @@ -4179,13 +4195,14 @@ module Withdraw = struct WithExceptions.Option.get ~loc:__LOC__ @@ List.nth context_hash_list 0 in Incremental.begin_construction block >>=? fun incr -> - let (_message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:0 + let message_index = 0 in + let message_result_path = + compute_message_result_path commitment ~message_position:message_index in Op.tx_rollup_dispatch_tickets (I incr) ~source:account1 - ~message_index:0 + ~message_index ~message_result_path tx_rollup committed_level @@ -4230,8 +4247,8 @@ module Withdraw = struct in Incremental.begin_construction block >>=? fun incr -> (* Try with invalid amounts *) - let (_message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:0 + let message_result_path = + compute_message_result_path commitment ~message_position:message_index in Op.tx_rollup_dispatch_tickets (I incr) @@ -4365,8 +4382,9 @@ module Withdraw = struct ~loc:__LOC__ (List.nth context_hash_list message_index) in - let (_message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:0 + + let message_result_path = + compute_message_result_path commitment ~message_position:message_index in Op.tx_rollup_dispatch_tickets (B block) @@ -4461,11 +4479,15 @@ module Withdraw = struct ~loc:__LOC__ (List.nth context_hash_list second_message_index) in - let (_message_result_hash, path1) = - Rejection.make_rejection_param commitment ~index:first_message_index + let path1 = + compute_message_result_path + commitment + ~message_position:first_message_index in - let (_message_result_hash, path2) = - Rejection.make_rejection_param commitment ~index:second_message_index + let path2 = + compute_message_result_path + commitment + ~message_position:second_message_index in Op.tx_rollup_dispatch_tickets (B block) @@ -4589,17 +4611,21 @@ module Withdraw = struct in Incremental.begin_construction block >>=? fun incr -> (* try with wrong context hash *) - let (_message_result_hash, path1) = - Rejection.make_rejection_param commitment ~index:valid_message_index + let valid_path = + compute_message_result_path + commitment + ~message_position:valid_message_index in - let (_message_result_hash, path2) = - Rejection.make_rejection_param commitment ~index:wrong_message_index + let wrong_path = + compute_message_result_path + commitment + ~message_position:wrong_message_index in Op.tx_rollup_dispatch_tickets (I incr) ~source:account1 ~message_index:valid_message_index - ~message_result_path:path1 + ~message_result_path:valid_path tx_rollup Tx_rollup_level.(succ root) wrong_context_hash @@ -4620,7 +4646,7 @@ module Withdraw = struct (I incr) ~source:account1 ~message_index:wrong_message_index - ~message_result_path:path2 + ~message_result_path:wrong_path tx_rollup Tx_rollup_level.(succ root) valid_context_hash @@ -4643,7 +4669,7 @@ module Withdraw = struct (I incr) ~source:account1 ~message_index:wrong_message_index - ~message_result_path:path2 + ~message_result_path:wrong_path tx_rollup Tx_rollup_level.(succ root) valid_context_hash @@ -4664,7 +4690,7 @@ module Withdraw = struct (I incr) ~source:account1 ~message_index:valid_message_index - ~message_result_path:path1 + ~message_result_path:valid_path tx_rollup Tx_rollup_level.(succ root) valid_context_hash @@ -4703,8 +4729,8 @@ module Withdraw = struct Block.bake ~operation block >>=? fun block -> (* At this point, the reveal can no longer be executed *) Incremental.begin_construction block >>=? fun incr -> - let (_message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:message_index + let message_result_path = + compute_message_result_path commitment ~message_position:message_index in Op.tx_rollup_dispatch_tickets (I incr) @@ -4736,6 +4762,7 @@ module Withdraw = struct let open Error_monad_operators in context_init1_withdraw () >>=? fun (account1, tx_rollup, deposit_contract, _withdraw_contract, b) -> + let message_position = 0 in let assert_consumed b ~msg committed_level consumed_expected = Incremental.begin_construction b >>=? fun i -> let ctxt = Incremental.alpha_ctxt i in @@ -4743,7 +4770,7 @@ module Withdraw = struct ctxt tx_rollup committed_level - ~message_position:0 + ~message_position >>=?? fun (_, consumed_actual) -> Alcotest.(check bool msg consumed_expected consumed_actual) ; return_unit @@ -4758,7 +4785,7 @@ module Withdraw = struct finalize_all_commitment_with_withdrawals ~account:account1 ~tx_rollup - ~withdrawals:[(0, [withdraw])] + ~withdrawals:[(message_position, [withdraw])] b >>=? fun (commitment, context_hash_list, committed_level, b) -> let context_hash = @@ -4772,13 +4799,13 @@ module Withdraw = struct >>=? fun () -> (* Exexute with withdrawal *) Incremental.begin_construction b >>=? fun incr -> - let (_message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:0 + let message_result_path = + compute_message_result_path commitment ~message_position in Op.tx_rollup_dispatch_tickets (I incr) ~source:account1 - ~message_index:0 + ~message_index:message_position ~message_result_path tx_rollup committed_level @@ -4844,13 +4871,14 @@ module Withdraw = struct Incremental.add_operation i operation >>=? fun i -> Incremental.finalize_block i >>=? fun b -> Incremental.begin_construction b >>=? fun i -> + let message_position = 0 in let message_path = assert_ok Tx_rollup_inbox.Merkle.( compute_path [Tx_rollup_message_hash.hash_uncarbonated message] 0) in - let (message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:0 + let message_result_path = + compute_message_result_path commitment ~message_position in Op.tx_rollup_reject (I i) @@ -4858,7 +4886,7 @@ module Withdraw = struct tx_rollup level message - ~message_position:0 + ~message_position ~message_path ~message_result_hash ~message_result_path @@ -5144,8 +5172,8 @@ module Withdraw = struct ~loc:__LOC__ (List.nth context_hash_list message_index) in - let (_message_result_hash, message_result_path) = - Rejection.make_rejection_param commitment ~index:message_index + let message_result_path = + compute_message_result_path commitment ~message_position:message_index in Op.tx_rollup_dispatch_tickets (B block) -- GitLab