From bc7a537275c28496e49a272171da0a055be59a6e Mon Sep 17 00:00:00 2001 From: Thomas Plisson Date: Thu, 24 Jul 2025 15:41:30 +0200 Subject: [PATCH 1/2] REVM: Regression tests for XTZ withdrawal and FA bridge events --- etherlink/tezt/tests/evm_sequencer.ml | 22 ++++++++++++------- ...osit and withdrawal events (with revm).out | 21 ++++++++++++++++++ ... for the withdrawal events (with revm).out | 12 ++++++++++ 3 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the FA deposit and withdrawal events (with revm).out create mode 100644 etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the withdrawal events (with revm).out diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index 9e3c74d29fc3..c87ba60a695b 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -12824,11 +12824,13 @@ let test_deposit_event = unit -let test_withdrawal_events = +let test_withdrawal_events ~enable_revm = Protocol.register_regression_test ~__FILE__ ~tags:["evm"; "withdrawal"; "event"] - ~title:"Regression test for the withdrawal events" + ~title: + ("Regression test for the withdrawal events" + ^ if enable_revm then " (with revm)" else "") ~uses:(fun _protocol -> [ Constant.octez_smart_rollup_node; @@ -12849,7 +12851,7 @@ let test_withdrawal_events = ~enable_multichain:false (* TODO: temporary, needs migration to set custom precompile's bytecode. *) - ~enable_revm:false + ~enable_revm ~enable_fast_withdrawal:true protocol in @@ -12913,11 +12915,13 @@ let test_withdrawal_events = unit -let test_fa_deposit_and_withdrawals_events = +let test_fa_deposit_and_withdrawals_events ~enable_revm = Protocol.register_regression_test ~__FILE__ ~tags:["evm"; "fa_bridge"; "event"] - ~title:"Regression test for the FA deposit and withdrawal events" + ~title: + ("Regression test for the FA deposit and withdrawal events" + ^ if enable_revm then " (with revm)" else "") ~uses:(fun _protocol -> [ Constant.octez_smart_rollup_node; @@ -12939,7 +12943,7 @@ let test_fa_deposit_and_withdrawals_events = ~enable_multichain:false (* TODO: temporary, needs migration to set custom precompile's bytecode. *) - ~enable_revm:false + ~enable_revm ~enable_fa_bridge:true ~enable_fast_fa_withdrawal:true protocol @@ -13663,8 +13667,10 @@ let () = test_tx_queue_limit [Alpha] ; test_observer_periodic_snapshot [Alpha] ; test_deposit_event [Alpha] ; - test_withdrawal_events [Alpha] ; - test_fa_deposit_and_withdrawals_events [Alpha] ; + test_withdrawal_events [Alpha] ~enable_revm:false ; + test_withdrawal_events [Alpha] ~enable_revm:true ; + test_fa_deposit_and_withdrawals_events [Alpha] ~enable_revm:false ; + test_fa_deposit_and_withdrawals_events [Alpha] ~enable_revm:true ; test_block_producer_validation [Alpha] ; test_durable_storage_consistency [Alpha] ; test_fa_deposit_can_be_claimed [Alpha] ; diff --git a/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the FA deposit and withdrawal events (with revm).out b/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the FA deposit and withdrawal events (with revm).out new file mode 100644 index 000000000000..858ec1dc643f --- /dev/null +++ b/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the FA deposit and withdrawal events (with revm).out @@ -0,0 +1,21 @@ +# FA Deposit +## Log 0 +Address: 0x0000000000000000000000000000000000000000 +Topics: +- 0x7ee7a1de9c18ce695c95b8b19fbdf26cce3544e3ca9e08c9f487776783d7599f +- 0xe93ef5b0cbe6d2f5a9e220560f624fc9bad80ba85e0742e65bf17dfebcf4f333 +Data: 0x0000000000000000000000006ce4d79d4e77402e1ef3417fdda433aa744c6e1c0000000000000000000000006ce4d79d4e77402e1ef3417fdda433aa744c6e1c000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000002 +# FA Withdrawal +## Log 0 +Address: 0xff00000000000000000000000000000000000002 +Topics: +- 0xab68450c9e546f6062a861eebf8ec5bbd41b4425e26b20199c91227c7f9038ca +- 0xe93ef5b0cbe6d2f5a9e220560f624fc9bad80ba85e0742e65bf17dfebcf4f333 +Data: 0x0000000000000000000000006ce4d79d4e77402e1ef3417fdda433aa744c6e1c0000000000000000000000006ce4d79d4e77402e1ef3417fdda433aa744c6e1c0000000000000000000000000000000000000000000000000000000000000000011fbd55a114875a8ee4ef81e5f43509ebdafc8ddc000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000 +# FA Fast Withdrawal +## Log 0 +Address: 0xff00000000000000000000000000000000000002 +Topics: +- 0x7e40c982e82bccb5e8bbd29f38bcfa3996f341ef9f51e2a9cffe086ec87a11c7 +- 0xe93ef5b0cbe6d2f5a9e220560f624fc9bad80ba85e0742e65bf17dfebcf4f333 +Data: 0x0000000000000000000000006ce4d79d4e77402e1ef3417fdda433aa744c6e1c0000000000000000000000006ce4d79d4e77402e1ef3417fdda433aa744c6e1c0000c55cf02dbeecc978d9c84625dcae72bb77ea4fbd00000000000000000000011fbd55a114875a8ee4ef81e5f43509ebdafc8ddc000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000005e0be103000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001 diff --git a/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the withdrawal events (with revm).out b/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the withdrawal events (with revm).out new file mode 100644 index 000000000000..02e4d201cb8e --- /dev/null +++ b/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the withdrawal events (with revm).out @@ -0,0 +1,12 @@ +# XTZ Withdrawal +## Log 0 +Address: 0xff00000000000000000000000000000000000001 +Topics: +- 0x2d5ad793181f5b6bd727c0c216461e019ecfe466353fdde9ccf813f45b84fa82 +Data: 0x0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000006ce4d79d4e77402e1ef3417fdda433aa744c6e1c0000c55cf02dbeecc978d9c84625dcae72bb77ea4fbd000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +# XTZ Fast Withdrawal +## Log 0 +Address: 0xff00000000000000000000000000000000000001 +Topics: +- 0x62e8e01e31b83084b97c32b1b11ad5a2042382f5f65ee4106ad4a0d0f8b9942c +Data: 0x0000c55cf02dbeecc978d9c84625dcae72bb77ea4fbd0000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005e0be10200000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000b53dc01974176e5dff2298c5a94343c2585e3c5400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001 -- GitLab From 47f33c20a12ae91a62dc2d711c7e0c1695fdfc68 Mon Sep 17 00:00:00 2001 From: Thomas Plisson Date: Thu, 24 Jul 2025 16:48:01 +0200 Subject: [PATCH 2/2] REVM: Regression tests for claimed FA deposit on proxy owned ticket --- etherlink/tezt/lib/contract_path.ml | 3 + etherlink/tezt/lib/setup.ml | 13 ++- etherlink/tezt/lib/setup.mli | 1 + etherlink/tezt/tests/evm_sequencer.ml | 109 ++++++++++++------ ...e claimed FA deposit event (with revm).out | 7 ++ ... test for the claimed FA deposit event.out | 7 ++ 6 files changed, 101 insertions(+), 39 deletions(-) create mode 100644 etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the claimed FA deposit event (with revm).out create mode 100644 etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the claimed FA deposit event.out diff --git a/etherlink/tezt/lib/contract_path.ml b/etherlink/tezt/lib/contract_path.ml index 3bf87148b0c2..d39f717f4940 100644 --- a/etherlink/tezt/lib/contract_path.ml +++ b/etherlink/tezt/lib/contract_path.ml @@ -40,3 +40,6 @@ let ticket_router_tester_path () = Base.( project_root // "etherlink/tezos_contracts/fa_bridge/ticket_router_tester.tz") + +let fa_deposit_path () = + Base.(project_root // "etherlink/tezos_contracts/fa_deposit.tz") diff --git a/etherlink/tezt/lib/setup.ml b/etherlink/tezt/lib/setup.ml index 6b1691b0f28a..6c85283ea5ef 100644 --- a/etherlink/tezt/lib/setup.ml +++ b/etherlink/tezt/lib/setup.ml @@ -17,6 +17,7 @@ type l1_contracts = { admin : string; sequencer_governance : string; ticket_router_tester : string; + fa_deposit : string; } type multichain_sequencer_setup = { @@ -140,8 +141,17 @@ let setup_l1_contracts ?(dictator = Constant.bootstrap2) ~kernel client = client in let* () = Client.bake_for_and_wait ~keys:[] client in + (* Originates the FA deposit contract. *) + let* fa_deposit = + Client.originate_contract + ~alias:"fa-deposit" + ~amount:Tez.zero + ~src:Constant.bootstrap3.public_key_hash + ~prg:(fa_deposit_path ()) + ~burn_cap:Tez.one + client (* Originates the ticket router tester (FA bridge) contract. *) - let* ticket_router_tester = + and* ticket_router_tester = Client.originate_contract ~alias:"ticket-router-tester" ~amount:Tez.zero @@ -162,6 +172,7 @@ let setup_l1_contracts ?(dictator = Constant.bootstrap2) ~kernel client = admin; sequencer_governance; ticket_router_tester; + fa_deposit; } let run_new_rpc_endpoint evm_node = diff --git a/etherlink/tezt/lib/setup.mli b/etherlink/tezt/lib/setup.mli index c35ccb39da2e..58431789951c 100644 --- a/etherlink/tezt/lib/setup.mli +++ b/etherlink/tezt/lib/setup.mli @@ -14,6 +14,7 @@ type l1_contracts = { admin : string; sequencer_governance : string; ticket_router_tester : string; + fa_deposit : string; } type multichain_sequencer_setup = { diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index c87ba60a695b..ff5bfb59d027 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -13272,43 +13272,8 @@ let expect_failure msg k = Test.fail msg) (fun _ -> unit) -let test_fa_deposit_can_be_claimed = - register_all - ~__FILE__ - ~kernels:[Latest] - ~tags:["evm"; "fa_deposit"; "claim"] - ~time_between_blocks:Nothing - ~use_dal:Register_without_feature - ~enable_fa_bridge:true - ~use_multichain:Register_without_feature - ~maximum_allowed_ticks:2_000_000_000L - ~use_revm:activate_revm_registration - ~title:"Claims are operational" - @@ fun { - client; - sequencer; - sc_rollup_address; - proxy; - sc_rollup_node; - evm_version; - _; - } - _protocol -> - let* l1_contract = - Client.originate_contract - ~alias:"l1_contract" - ~amount:Tez.zero - ~src:Constant.bootstrap4.public_key_hash - ~prg:"etherlink/tezos_contracts/fa_deposit.tz" - ~burn_cap:Tez.one - client - in - let* () = Client.bake_for_and_wait client in - - let* () = bake_until_sync ~sc_rollup_node ~proxy ~sequencer ~client () in - - Log.info "%s originated" l1_contract ; - +let produce_proxy_owned_fa_deposit_and_claim ~client ~sequencer + ~sc_rollup_address ~evm_version ~fa_deposit = let* incrementor = Solidity_contracts.incrementor evm_version in let* incrementor, _tx_hash = @@ -13343,7 +13308,7 @@ let test_fa_deposit_can_be_claimed = let* () = Client.transfer ~giver:Constant.bootstrap4.public_key_hash - ~receiver:l1_contract + ~receiver:fa_deposit ~arg: (sf {|Pair 50 (Pair 0x%s%s "%s")|} @@ -13377,6 +13342,30 @@ let test_fa_deposit_can_be_claimed = in let produce_block () = Rpc.produce_block sequencer in let* _res = wait_for_application ~produce_block claim in + return nonce + +let test_fa_deposit_can_be_claimed = + register_all + ~__FILE__ + ~kernels:[Latest] + ~tags:["evm"; "fa_deposit"; "claim"] + ~time_between_blocks:Nothing + ~use_dal:Register_without_feature + ~enable_fa_bridge:true + ~use_multichain:Register_without_feature + ~maximum_allowed_ticks:2_000_000_000L + ~use_revm:activate_revm_registration + ~title:"Claims are operational" + @@ fun {client; sequencer; sc_rollup_address; evm_version; l1_contracts; _} + _protocol -> + let* nonce = + produce_proxy_owned_fa_deposit_and_claim + ~client + ~sequencer + ~sc_rollup_address + ~evm_version + ~fa_deposit:l1_contracts.fa_deposit + in let*@ block = Rpc.get_block_by_number ~full_tx_objects:true ~block:"latest" sequencer @@ -13415,6 +13404,48 @@ let test_fa_deposit_can_be_claimed = unit +let test_claim_deposit_event ~enable_revm = + Protocol.register_regression_test + ~__FILE__ + ~tags:["evm"; "fa_bridge"; "claim"; "deposit"; "event"] + ~title: + ("Regression test for the claimed FA deposit event" + ^ if enable_revm then " (with revm)" else "") + ~uses:(fun _protocol -> + [ + Constant.octez_smart_rollup_node; + Constant.octez_evm_node; + Constant.smart_rollup_installer; + Constant.WASM.evm_kernel; + ]) + @@ fun protocol -> + (* See {Note timestamp} *) + let next_timestamp = timestamp_generator () in + let* {sequencer; sc_rollup_address; client; evm_version; l1_contracts; _} = + let genesis_timestamp = next_timestamp () in + Setup.setup_sequencer + ~genesis_timestamp:Client.(At (Time.of_notation_exn genesis_timestamp)) + ~time_between_blocks:Nothing + ~mainnet_compat:false + ~enable_dal:false + ~enable_multichain:false + ~enable_revm + ~enable_fa_bridge:true + ~enable_fast_fa_withdrawal:true + protocol + in + let* _nonce = + produce_proxy_owned_fa_deposit_and_claim + ~client + ~sequencer + ~sc_rollup_address + ~evm_version + ~fa_deposit:l1_contracts.fa_deposit + in + let* receipt = get_one_receipt_from_latest_or_fail sequencer in + capture_logs ~header:"Claimed deposit" receipt.logs ; + unit + let test_eip2930_storage_access = register_all ~__FILE__ @@ -13674,4 +13705,6 @@ let () = test_block_producer_validation [Alpha] ; test_durable_storage_consistency [Alpha] ; test_fa_deposit_can_be_claimed [Alpha] ; + test_claim_deposit_event [Alpha] ~enable_revm:false ; + test_claim_deposit_event [Alpha] ~enable_revm:true ; test_eip2930_storage_access [Alpha] diff --git a/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the claimed FA deposit event (with revm).out b/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the claimed FA deposit event (with revm).out new file mode 100644 index 000000000000..3cb7dc069bea --- /dev/null +++ b/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the claimed FA deposit event (with revm).out @@ -0,0 +1,7 @@ +# Claimed deposit +## Log 0 +Address: 0xff00000000000000000000000000000000000002 +Topics: +- 0x7ee7a1de9c18ce695c95b8b19fbdf26cce3544e3ca9e08c9f487776783d7599f +- 0x2aa47038ff901ed93fb2e4f6596a02d55a9d42ad6dae6e09fe4d0f69e7940b53 +Data: 0x00000000000000000000000092e791df3dd5a8704f0e7d9b3003a0627d95d01700000000000000000000000092e791df3dd5a8704f0e7d9b3003a0627d95d017000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000003 diff --git a/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the claimed FA deposit event.out b/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the claimed FA deposit event.out new file mode 100644 index 000000000000..58e38ea12470 --- /dev/null +++ b/etherlink/tezt/tests/expected/evm_sequencer.ml/Alpha- Regression test for the claimed FA deposit event.out @@ -0,0 +1,7 @@ +# Claimed deposit +## Log 0 +Address: 0x0000000000000000000000000000000000000000 +Topics: +- 0x7ee7a1de9c18ce695c95b8b19fbdf26cce3544e3ca9e08c9f487776783d7599f +- 0x2aa47038ff901ed93fb2e4f6596a02d55a9d42ad6dae6e09fe4d0f69e7940b53 +Data: 0x00000000000000000000000092e791df3dd5a8704f0e7d9b3003a0627d95d01700000000000000000000000092e791df3dd5a8704f0e7d9b3003a0627d95d017000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000003 -- GitLab