@aztec/end-to-end 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +217 -14
- package/dest/automine/automine_test_context.d.ts +85 -0
- package/dest/automine/automine_test_context.d.ts.map +1 -0
- package/dest/automine/automine_test_context.js +98 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.js +120 -0
- package/dest/automine/delivery/interactive_handshake_responder.d.ts +48 -0
- package/dest/automine/delivery/interactive_handshake_responder.d.ts.map +1 -0
- package/dest/automine/delivery/interactive_handshake_responder.js +76 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts +19 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
- package/dest/automine/delivery/onchain_delivery_harness.js +141 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
- package/dest/automine/token/blacklist_token_contract_test.js +166 -0
- package/dest/automine/token/token_contract_test.d.ts +40 -0
- package/dest/automine/token/token_contract_test.d.ts.map +1 -0
- package/dest/automine/token/token_contract_test.js +119 -0
- package/dest/automine/token/token_test_helpers.d.ts +73 -0
- package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
- package/dest/automine/token/token_test_helpers.js +97 -0
- package/dest/bench/client_flows/benchmark.d.ts +17 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +40 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +19 -20
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +155 -159
- package/dest/bench/client_flows/config.d.ts +2 -2
- package/dest/bench/client_flows/config.d.ts.map +1 -1
- package/dest/bench/client_flows/config.js +18 -0
- package/dest/bench/client_flows/data_extractor.js +4 -1
- package/dest/bench/utils.d.ts +11 -10
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +126 -23
- package/dest/composed/ha/ha_full_setup.d.ts +77 -0
- package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
- package/dest/composed/ha/ha_full_setup.js +383 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
- package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +1 -1
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +25 -29
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +147 -151
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +84 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +87 -2
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +119 -0
- package/dest/fixtures/index.d.ts +3 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +2 -0
- package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
- package/dest/fixtures/setup.d.ts +269 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +688 -0
- package/dest/fixtures/setup_p2p_test.d.ts +22 -11
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +49 -38
- package/dest/fixtures/timing.d.ts +42 -0
- package/dest/fixtures/timing.d.ts.map +1 -0
- package/dest/fixtures/timing.js +72 -0
- package/dest/fixtures/token_utils.d.ts +22 -4
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +28 -7
- package/dest/fixtures/utils.d.ts +5 -638
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -647
- package/dest/fixtures/wait_helpers.d.ts +135 -0
- package/dest/fixtures/wait_helpers.d.ts.map +1 -0
- package/dest/fixtures/wait_helpers.js +154 -0
- package/dest/fixtures/web3signer.js +1 -1
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/install_legacy_contracts.d.cts +10 -0
- package/dest/install_legacy_contracts.d.cts.map +1 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/multi-node/block-production/setup.d.ts +97 -0
- package/dest/multi-node/block-production/setup.d.ts.map +1 -0
- package/dest/multi-node/block-production/setup.js +158 -0
- package/dest/multi-node/governance/setup.d.ts +67 -0
- package/dest/multi-node/governance/setup.d.ts.map +1 -0
- package/dest/multi-node/governance/setup.js +126 -0
- package/dest/multi-node/multi_node_test_context.d.ts +212 -0
- package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
- package/dest/multi-node/multi_node_test_context.js +347 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/inactivity_setup.js +111 -0
- package/dest/multi-node/slashing/setup.d.ts +167 -0
- package/dest/multi-node/slashing/setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/setup.js +275 -0
- package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +33 -21
- package/dest/p2p/p2p_network.d.ts.map +1 -0
- package/dest/p2p/p2p_network.js +389 -0
- package/dest/p2p/reqresp/utils.d.ts +19 -0
- package/dest/p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/p2p/reqresp/utils.js +193 -0
- package/dest/p2p/shared.d.ts +72 -0
- package/dest/p2p/shared.d.ts.map +1 -0
- package/dest/p2p/shared.js +212 -0
- package/dest/quality_of_service/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +22 -9
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +45 -40
- package/dest/shared/gas_portal_test_harness.d.ts +19 -6
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +27 -15
- package/dest/shared/index.d.ts +3 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +4 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +19 -14
- package/dest/shared/timing_env.d.js +5 -0
- package/dest/shared/timing_env.js +365 -0
- package/dest/shared/uniswap_l1_l2.d.ts +3 -27
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +86 -54
- package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
- package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
- package/dest/simulators/lending_simulator.d.ts +15 -4
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +29 -17
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +3 -24
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
- package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
- package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
- package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
- package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +21 -10
- package/dest/single-node/fees/fees_test.d.ts +93 -0
- package/dest/single-node/fees/fees_test.d.ts.map +1 -0
- package/dest/single-node/fees/fees_test.js +274 -0
- package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
- package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
- package/dest/single-node/l1-reorgs/setup.js +57 -0
- package/dest/single-node/partial-proofs/setup.d.ts +5 -0
- package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
- package/dest/single-node/partial-proofs/setup.js +5 -0
- package/dest/single-node/proving/setup.d.ts +5 -0
- package/dest/single-node/proving/setup.d.ts.map +1 -0
- package/dest/single-node/proving/setup.js +5 -0
- package/dest/single-node/recovery/setup.d.ts +5 -0
- package/dest/single-node/recovery/setup.d.ts.map +1 -0
- package/dest/single-node/recovery/setup.js +5 -0
- package/dest/single-node/setup.d.ts +49 -0
- package/dest/single-node/setup.d.ts.map +1 -0
- package/dest/single-node/setup.js +56 -0
- package/dest/single-node/single_node_test_context.d.ts +360 -0
- package/dest/single-node/single_node_test_context.d.ts.map +1 -0
- package/dest/single-node/single_node_test_context.js +833 -0
- package/dest/spartan/setup_test_wallets.d.ts +15 -5
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +155 -50
- package/dest/spartan/tx_metrics.d.ts +111 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +507 -0
- package/dest/spartan/utils/bot.d.ts +28 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +142 -0
- package/dest/spartan/utils/chaos.d.ts +79 -0
- package/dest/spartan/utils/chaos.d.ts.map +1 -0
- package/dest/spartan/utils/chaos.js +142 -0
- package/dest/spartan/utils/clients.d.ts +39 -0
- package/dest/spartan/utils/clients.d.ts.map +1 -0
- package/dest/spartan/utils/clients.js +90 -0
- package/dest/spartan/utils/config.d.ts +19 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +23 -0
- package/dest/spartan/utils/health.d.ts +63 -0
- package/dest/spartan/utils/health.d.ts.map +1 -0
- package/dest/spartan/utils/health.js +202 -0
- package/dest/spartan/utils/helm.d.ts +15 -0
- package/dest/spartan/utils/helm.d.ts.map +1 -0
- package/dest/spartan/utils/helm.js +47 -0
- package/dest/spartan/utils/index.d.ts +11 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +22 -0
- package/dest/spartan/utils/k8s.d.ts +128 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +381 -0
- package/dest/spartan/utils/nodes.d.ts +40 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/spartan/utils/scripts.d.ts +30 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +81 -0
- package/dest/spartan/utils.d.ts +2 -221
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -782
- package/dest/test-wallet/test_wallet.d.ts +105 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +320 -0
- package/dest/test-wallet/utils.d.ts +76 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +126 -0
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +56 -0
- package/dest/test-wallet/worker_wallet.d.ts +53 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +157 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +23 -0
- package/package.json +54 -46
- package/src/automine/README.md +60 -0
- package/src/automine/automine_test_context.ts +153 -0
- package/src/automine/contracts/fixtures/storage_proof.json +915 -0
- package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
- package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
- package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
- package/src/automine/token/blacklist_token_contract_test.ts +208 -0
- package/src/automine/token/token_contract_test.ts +146 -0
- package/src/automine/token/token_test_helpers.ts +138 -0
- package/src/bench/client_flows/benchmark.ts +45 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +222 -251
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +2 -1
- package/src/bench/utils.ts +144 -25
- package/src/composed/ha/ha_full_setup.ts +466 -0
- package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +1 -1
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +172 -205
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +111 -3
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +192 -0
- package/src/fixtures/index.ts +2 -0
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +987 -0
- package/src/fixtures/setup_p2p_test.ts +57 -57
- package/src/fixtures/timing.ts +97 -0
- package/src/fixtures/token_utils.ts +46 -10
- package/src/fixtures/utils.ts +26 -966
- package/src/fixtures/wait_helpers.ts +333 -0
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +106 -0
- package/src/guides/up_quick_start.sh +7 -4
- package/src/infra/README.md +12 -0
- package/src/install_legacy_contracts.cjs +75 -0
- package/src/legacy-jest-resolver.cjs +112 -0
- package/src/multi-node/README.md +95 -0
- package/src/multi-node/block-production/setup.ts +272 -0
- package/src/multi-node/governance/setup.ts +172 -0
- package/src/multi-node/multi_node_test_context.ts +447 -0
- package/src/multi-node/slashing/inactivity_setup.ts +139 -0
- package/src/multi-node/slashing/setup.ts +433 -0
- package/src/p2p/README.md +78 -0
- package/src/p2p/p2p_network.ts +542 -0
- package/src/p2p/reqresp/utils.ts +263 -0
- package/src/p2p/shared.ts +329 -0
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +51 -44
- package/src/shared/gas_portal_test_harness.ts +35 -17
- package/src/shared/index.ts +2 -1
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +22 -19
- package/src/shared/timing_env.d.mts +39 -0
- package/src/shared/timing_env.mjs +363 -0
- package/src/shared/uniswap_l1_l2.ts +136 -115
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +36 -18
- package/src/simulators/token_simulator.ts +6 -30
- package/src/single-node/README.md +60 -0
- package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
- package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
- package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +23 -15
- package/src/single-node/fees/fees_test.ts +368 -0
- package/src/single-node/l1-reorgs/setup.ts +93 -0
- package/src/single-node/partial-proofs/setup.ts +8 -0
- package/src/single-node/proving/setup.ts +15 -0
- package/src/single-node/recovery/setup.ts +8 -0
- package/src/single-node/setup.ts +63 -0
- package/src/single-node/single_node_test_context.ts +1041 -0
- package/src/spartan/setup_test_wallets.ts +217 -36
- package/src/spartan/tx_metrics.ts +460 -0
- package/src/spartan/utils/bot.ts +188 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +29 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +71 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +543 -0
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -983
- package/src/test-wallet/test_wallet.ts +426 -0
- package/src/test-wallet/utils.ts +205 -0
- package/src/test-wallet/wallet_worker_script.ts +66 -0
- package/src/test-wallet/worker_wallet.ts +216 -0
- package/src/test-wallet/worker_wallet_schema.ts +14 -0
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -54
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +0 -185
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -41
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -108
- package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -36
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
- package/dest/e2e_deploy_contract/deploy_test.js +0 -45
- package/dest/e2e_epochs/epochs_test.d.ts +0 -93
- package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
- package/dest/e2e_epochs/epochs_test.js +0 -337
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.d.ts +0 -85
- package/dest/e2e_fees/fees_test.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.js +0 -263
- package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
- package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
- package/dest/e2e_l1_publisher/write_json.js +0 -58
- package/dest/e2e_multi_validator/utils.d.ts +0 -12
- package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -29
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +0 -64
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +0 -139
- package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
- package/dest/e2e_p2p/p2p_network.js +0 -320
- package/dest/e2e_p2p/shared.d.ts +0 -46
- package/dest/e2e_p2p/shared.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.js +0 -184
- package/dest/e2e_token_contract/token_contract_test.d.ts +0 -35
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
- package/dest/e2e_token_contract/token_contract_test.js +0 -126
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/fixtures/snapshot_manager.d.ts +0 -95
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -505
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +0 -256
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -179
- package/src/e2e_deploy_contract/deploy_test.ts +0 -78
- package/src/e2e_epochs/epochs_test.ts +0 -438
- package/src/e2e_fees/fees_test.ts +0 -382
- package/src/e2e_l1_publisher/write_json.ts +0 -77
- package/src/e2e_nested_contract/nested_contract_test.ts +0 -96
- package/src/e2e_p2p/inactivity_slash_test.ts +0 -182
- package/src/e2e_p2p/p2p_network.ts +0 -476
- package/src/e2e_p2p/shared.ts +0 -285
- package/src/e2e_token_contract/token_contract_test.ts +0 -167
- package/src/fixtures/setup_l1_contracts.ts +0 -26
- package/src/fixtures/snapshot_manager.ts +0 -665
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { computeAuthWitMessageHash } from '@aztec/aztec.js/authorization';
|
|
3
|
+
import { waitForProven } from '@aztec/aztec.js/contracts';
|
|
3
4
|
import { generateClaimSecret } from '@aztec/aztec.js/ethereum';
|
|
4
5
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
6
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
6
7
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
7
8
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} from '@aztec/
|
|
15
|
-
import {
|
|
9
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
|
+
import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
11
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
12
|
+
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
13
|
+
import { extractEvent } from '@aztec/ethereum/utils';
|
|
14
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
15
|
+
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
16
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
16
17
|
import { InboxAbi, UniswapPortalAbi, UniswapPortalBytecode } from '@aztec/l1-artifacts';
|
|
17
18
|
import { UniswapContract } from '@aztec/noir-contracts.js/Uniswap';
|
|
18
19
|
import { computeL2ToL1MessageHash } from '@aztec/stdlib/hash';
|
|
19
|
-
import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
20
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
21
20
|
|
|
22
21
|
import { jest } from '@jest/globals';
|
|
23
22
|
import { type GetContractReturnType, getContract, parseEther, toFunctionSelector } from 'viem';
|
|
24
23
|
|
|
25
|
-
import {
|
|
24
|
+
import { type EndToEndContext, ensureAuthRegistryPublished } from '../fixtures/utils.js';
|
|
25
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
26
26
|
import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
27
27
|
|
|
28
28
|
// PSA: This tests works on forked mainnet. There is a dump of the data in `dumpedState` such that we
|
|
@@ -32,30 +32,10 @@ import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
|
32
32
|
// anvil --fork-url https://mainnet.infura.io/v3/9928b52099854248b3a096be07a6b23c --fork-block-number 17514288 --chain-id 31337
|
|
33
33
|
// For CI, this is configured in `run_tests.sh` and `docker-compose-images.yml`
|
|
34
34
|
|
|
35
|
-
const TIMEOUT =
|
|
36
|
-
|
|
37
|
-
/** Objects to be returned by the uniswap setup function */
|
|
38
|
-
export type UniswapSetupContext = {
|
|
39
|
-
/** Aztec Node instance */
|
|
40
|
-
aztecNode: AztecNode;
|
|
41
|
-
/** Logger instance named as the current test. */
|
|
42
|
-
logger: Logger;
|
|
43
|
-
/** The L1 wallet client, extended with public actions. */
|
|
44
|
-
l1Client: ExtendedViemWalletClient;
|
|
45
|
-
/** The wallet. */
|
|
46
|
-
wallet: TestWallet;
|
|
47
|
-
/** The owner address. */
|
|
48
|
-
ownerAddress: AztecAddress;
|
|
49
|
-
/** The sponsor wallet. */
|
|
50
|
-
sponsorAddress: AztecAddress;
|
|
51
|
-
/** */
|
|
52
|
-
deployL1ContractsValues: DeployL1ContractsReturnType;
|
|
53
|
-
/** Cheat codes instance. */
|
|
54
|
-
cheatCodes: CheatCodes;
|
|
55
|
-
};
|
|
35
|
+
const TIMEOUT = 15 * 60 * 1000;
|
|
56
36
|
|
|
57
37
|
export const uniswapL1L2TestSuite = (
|
|
58
|
-
setup: () => Promise<
|
|
38
|
+
setup: () => Promise<EndToEndContext>,
|
|
59
39
|
cleanup: () => Promise<void>,
|
|
60
40
|
expectedForkBlockNumber = 17514288,
|
|
61
41
|
) => {
|
|
@@ -79,7 +59,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
79
59
|
let daiCrossChainHarness: CrossChainTestHarness;
|
|
80
60
|
let wethCrossChainHarness: CrossChainTestHarness;
|
|
81
61
|
|
|
82
|
-
let deployL1ContractsValues:
|
|
62
|
+
let deployL1ContractsValues: DeployAztecL1ContractsReturnType;
|
|
83
63
|
let rollup: RollupContract;
|
|
84
64
|
let uniswapPortal: GetContractReturnType<typeof UniswapPortalAbi, ExtendedViemWalletClient>;
|
|
85
65
|
let uniswapPortalAddress: EthAddress;
|
|
@@ -92,8 +72,17 @@ export const uniswapL1L2TestSuite = (
|
|
|
92
72
|
let cheatCodes: CheatCodes;
|
|
93
73
|
let version: number;
|
|
94
74
|
beforeAll(async () => {
|
|
95
|
-
|
|
96
|
-
|
|
75
|
+
const t = await setup();
|
|
76
|
+
({
|
|
77
|
+
aztecNode,
|
|
78
|
+
logger,
|
|
79
|
+
deployL1ContractsValues,
|
|
80
|
+
cheatCodes,
|
|
81
|
+
wallet,
|
|
82
|
+
accounts: [ownerAddress, sponsorAddress],
|
|
83
|
+
} = t);
|
|
84
|
+
|
|
85
|
+
l1Client = deployL1ContractsValues.l1Client;
|
|
97
86
|
|
|
98
87
|
if (Number(await l1Client.getBlockNumber()) < expectedForkBlockNumber) {
|
|
99
88
|
throw new Error('This test must be run on a fork of mainnet with the expected fork block');
|
|
@@ -106,7 +95,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
106
95
|
version = Number(await rollup.getVersion());
|
|
107
96
|
ownerEthAddress = EthAddress.fromString((await l1Client.getAddresses())[0]);
|
|
108
97
|
|
|
109
|
-
await
|
|
98
|
+
await ensureAuthRegistryPublished(wallet, ownerAddress);
|
|
110
99
|
|
|
111
100
|
logger.info('Deploying DAI Portal, initializing and deploying l2 contract...');
|
|
112
101
|
daiCrossChainHarness = await CrossChainTestHarness.new(
|
|
@@ -139,9 +128,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
139
128
|
client: l1Client,
|
|
140
129
|
});
|
|
141
130
|
// deploy l2 uniswap contract and attach to portal
|
|
142
|
-
uniswapL2Contract = await UniswapContract.deploy(wallet, uniswapPortalAddress)
|
|
143
|
-
|
|
144
|
-
|
|
131
|
+
({ contract: uniswapL2Contract } = await UniswapContract.deploy(wallet, uniswapPortalAddress).send({
|
|
132
|
+
from: ownerAddress,
|
|
133
|
+
}));
|
|
145
134
|
|
|
146
135
|
const registryAddress = (await aztecNode.getNodeInfo()).l1ContractAddresses.registryAddress;
|
|
147
136
|
|
|
@@ -163,7 +152,6 @@ export const uniswapL1L2TestSuite = (
|
|
|
163
152
|
await cleanup();
|
|
164
153
|
});
|
|
165
154
|
|
|
166
|
-
// docs:start:uniswap_private
|
|
167
155
|
it('should uniswap trade on L1 from L2 funds privately (swaps WETH -> DAI)', async () => {
|
|
168
156
|
const wethL1BeforeBalance = await wethCrossChainHarness.getL1BalanceOf(ownerEthAddress);
|
|
169
157
|
|
|
@@ -206,7 +194,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
206
194
|
logger.info('Withdrawing weth to L1 and sending message to swap to dai');
|
|
207
195
|
const [secretForDepositingSwappedDai, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
208
196
|
|
|
209
|
-
const l2UniswapInteractionReceipt = await uniswapL2Contract.methods
|
|
197
|
+
const { receipt: l2UniswapInteractionReceipt } = await uniswapL2Contract.methods
|
|
210
198
|
.swap_private(
|
|
211
199
|
wethCrossChainHarness.l2Token.address,
|
|
212
200
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -218,8 +206,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
218
206
|
secretHashForDepositingSwappedDai,
|
|
219
207
|
ownerEthAddress,
|
|
220
208
|
)
|
|
221
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] })
|
|
222
|
-
.wait();
|
|
209
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] });
|
|
223
210
|
|
|
224
211
|
const swapPrivateFunction = 'swap_private(address,uint256,uint24,address,uint256,bytes32,address)';
|
|
225
212
|
const swapPrivateContent = sha256ToField([
|
|
@@ -261,33 +248,43 @@ export const uniswapL1L2TestSuite = (
|
|
|
261
248
|
// ensure that uniswap contract didn't eat the funds.
|
|
262
249
|
await wethCrossChainHarness.expectPublicBalanceOnL2(uniswapL2Contract.address, 0n);
|
|
263
250
|
|
|
264
|
-
// Since the outbox is only consumable when the
|
|
265
|
-
|
|
251
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch
|
|
252
|
+
// before we can ask the witness helper for a covering root.
|
|
253
|
+
const minedReceipt = await aztecNode.getTxReceipt(l2UniswapInteractionReceipt.txHash);
|
|
254
|
+
if (minedReceipt.epochNumber === undefined) {
|
|
255
|
+
throw new Error('L2 Uniswap interaction tx is not yet in an epoch');
|
|
256
|
+
}
|
|
257
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(minedReceipt.epochNumber + 1));
|
|
258
|
+
await waitForProven(aztecNode, l2UniswapInteractionReceipt, { provenTimeout: 300 });
|
|
266
259
|
|
|
267
260
|
// 5. Consume L2 to L1 message by calling uniswapPortal.swap_private()
|
|
268
261
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
269
262
|
const daiL1BalanceOfPortalBeforeSwap = await daiCrossChainHarness.getL1BalanceOf(
|
|
270
263
|
daiCrossChainHarness.tokenPortalAddress,
|
|
271
264
|
);
|
|
272
|
-
const swapResult = await
|
|
273
|
-
aztecNode,
|
|
274
|
-
|
|
275
|
-
|
|
265
|
+
const swapResult = await retryUntil(
|
|
266
|
+
() => aztecNode.getL2ToL1MembershipWitness(minedReceipt.txHash, swapPrivateLeaf),
|
|
267
|
+
'swap private l2 to l1 witness',
|
|
268
|
+
60,
|
|
269
|
+
1,
|
|
276
270
|
);
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
271
|
+
const { epochNumber: epoch, numCheckpointsInEpoch } = swapResult;
|
|
272
|
+
const withdrawResult = await retryUntil(
|
|
273
|
+
() => aztecNode.getL2ToL1MembershipWitness(minedReceipt.txHash, withdrawLeaf),
|
|
274
|
+
'withdraw l2 to l1 witness',
|
|
275
|
+
60,
|
|
276
|
+
1,
|
|
281
277
|
);
|
|
282
278
|
|
|
283
|
-
const swapPrivateL2MessageIndex = swapResult
|
|
284
|
-
const swapPrivateSiblingPath = swapResult
|
|
279
|
+
const swapPrivateL2MessageIndex = swapResult.leafIndex;
|
|
280
|
+
const swapPrivateSiblingPath = swapResult.siblingPath;
|
|
285
281
|
|
|
286
|
-
const withdrawL2MessageIndex = withdrawResult
|
|
287
|
-
const withdrawSiblingPath = withdrawResult
|
|
282
|
+
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
283
|
+
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
288
284
|
|
|
289
285
|
const withdrawMessageMetadata = {
|
|
290
|
-
|
|
286
|
+
_epoch: BigInt(epoch),
|
|
287
|
+
_numCheckpointsInEpoch: BigInt(withdrawResult.numCheckpointsInEpoch),
|
|
291
288
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
292
289
|
_path: withdrawSiblingPath
|
|
293
290
|
.toBufferArray()
|
|
@@ -295,7 +292,8 @@ export const uniswapL1L2TestSuite = (
|
|
|
295
292
|
};
|
|
296
293
|
|
|
297
294
|
const swapPrivateMessageMetadata = {
|
|
298
|
-
|
|
295
|
+
_epoch: BigInt(epoch),
|
|
296
|
+
_numCheckpointsInEpoch: BigInt(numCheckpointsInEpoch),
|
|
299
297
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
300
298
|
_path: swapPrivateSiblingPath
|
|
301
299
|
.toBufferArray()
|
|
@@ -353,10 +351,8 @@ export const uniswapL1L2TestSuite = (
|
|
|
353
351
|
logger.info('WETH balance after swap : ', wethL2BalanceAfterSwap.toString());
|
|
354
352
|
logger.info('DAI balance after swap : ', daiL2BalanceAfterSwap.toString());
|
|
355
353
|
});
|
|
356
|
-
// docs:end:uniswap_private
|
|
357
354
|
|
|
358
355
|
// TODO(#7463): reenable look into this failure https://github.com/AztecProtocol/aztec-packages/actions/runs/9912612912/job/27388320150?pr=7462
|
|
359
|
-
// // docs:start:uniswap_public
|
|
360
356
|
// it('should uniswap trade on L1 from L2 funds publicly (swaps WETH -> DAI)', async () => {
|
|
361
357
|
// const wethL1BeforeBalance = await wethCrossChainHarness.getL1BalanceOf(ownerEthAddress);
|
|
362
358
|
|
|
@@ -442,10 +438,10 @@ export const uniswapL1L2TestSuite = (
|
|
|
442
438
|
// ownerEthAddress,
|
|
443
439
|
// nonceForSwap,
|
|
444
440
|
// );
|
|
445
|
-
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send()
|
|
441
|
+
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send();
|
|
446
442
|
|
|
447
443
|
// // 4.2 Call swap_public from user2 on behalf of owner
|
|
448
|
-
// const uniswapL2Interaction = await action.send()
|
|
444
|
+
// const uniswapL2Interaction = await action.send();
|
|
449
445
|
|
|
450
446
|
// const swapPublicContent = sha256ToField([
|
|
451
447
|
// Buffer.from(
|
|
@@ -506,7 +502,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
506
502
|
// );
|
|
507
503
|
|
|
508
504
|
// const withdrawMessageMetadata = {
|
|
509
|
-
//
|
|
505
|
+
// _epoch: epoch,
|
|
510
506
|
// _leafIndex: BigInt(withdrawL2MessageIndex),
|
|
511
507
|
// _path: withdrawSiblingPath
|
|
512
508
|
// .toBufferArray()
|
|
@@ -514,7 +510,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
514
510
|
// };
|
|
515
511
|
|
|
516
512
|
// const swapPrivateMessageMetadata = {
|
|
517
|
-
//
|
|
513
|
+
// _epoch: epoch,
|
|
518
514
|
// _leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
519
515
|
// _path: swapPrivateSiblingPath
|
|
520
516
|
// .toBufferArray()
|
|
@@ -589,7 +585,6 @@ export const uniswapL1L2TestSuite = (
|
|
|
589
585
|
// logger.info('WETH balance after swap : ', wethL2BalanceAfterSwap.toString());
|
|
590
586
|
// logger.info('DAI balance after swap : ', daiL2BalanceAfterSwap.toString());
|
|
591
587
|
// });
|
|
592
|
-
// // docs:end:uniswap_public
|
|
593
588
|
|
|
594
589
|
// Edge cases for the private flow:
|
|
595
590
|
// note - tests for uniswapPortal.sol and minting asset on L2 are covered in other tests.
|
|
@@ -663,8 +658,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
663
658
|
Fr.random(),
|
|
664
659
|
ownerEthAddress,
|
|
665
660
|
)
|
|
666
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuthwith] })
|
|
667
|
-
.wait(),
|
|
661
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuthwith] }),
|
|
668
662
|
).rejects.toThrow('Assertion failed: input_asset address is not the same as seen in the bridge contract');
|
|
669
663
|
});
|
|
670
664
|
|
|
@@ -689,7 +683,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
689
683
|
},
|
|
690
684
|
true,
|
|
691
685
|
);
|
|
692
|
-
await validateActionInteraction.send()
|
|
686
|
+
await validateActionInteraction.send();
|
|
693
687
|
|
|
694
688
|
// No approval to call `swap` but should work even without it:
|
|
695
689
|
const [_, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
@@ -708,8 +702,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
708
702
|
ownerEthAddress,
|
|
709
703
|
Fr.ZERO, // nonce for swap -> doesn't matter
|
|
710
704
|
)
|
|
711
|
-
.send({ from: ownerAddress })
|
|
712
|
-
.wait();
|
|
705
|
+
.send({ from: ownerAddress });
|
|
713
706
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
714
707
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
715
708
|
});
|
|
@@ -739,7 +732,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
739
732
|
{ caller: approvedUser, action },
|
|
740
733
|
true,
|
|
741
734
|
);
|
|
742
|
-
await validateActionInteraction.send()
|
|
735
|
+
await validateActionInteraction.send();
|
|
743
736
|
|
|
744
737
|
await expect(action.simulate({ from: sponsorAddress })).rejects.toThrow(/unauthorized/);
|
|
745
738
|
});
|
|
@@ -761,7 +754,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
761
754
|
},
|
|
762
755
|
true,
|
|
763
756
|
);
|
|
764
|
-
await validateActionInteraction.send()
|
|
757
|
+
await validateActionInteraction.send();
|
|
765
758
|
|
|
766
759
|
await expect(
|
|
767
760
|
uniswapL2Contract.methods
|
|
@@ -806,7 +799,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
806
799
|
logger.info('Withdrawing weth to L1 and sending message to swap to dai');
|
|
807
800
|
|
|
808
801
|
const [, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
809
|
-
const withdrawReceipt = await uniswapL2Contract.methods
|
|
802
|
+
const { receipt: withdrawReceipt } = await uniswapL2Contract.methods
|
|
810
803
|
.swap_private(
|
|
811
804
|
wethCrossChainHarness.l2Token.address,
|
|
812
805
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -818,8 +811,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
818
811
|
secretHashForDepositingSwappedDai,
|
|
819
812
|
ownerEthAddress,
|
|
820
813
|
)
|
|
821
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] })
|
|
822
|
-
.wait();
|
|
814
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] });
|
|
823
815
|
|
|
824
816
|
const swapPrivateContent = sha256ToField([
|
|
825
817
|
Buffer.from(
|
|
@@ -858,21 +850,41 @@ export const uniswapL1L2TestSuite = (
|
|
|
858
850
|
chainId: new Fr(l1Client.chain.id),
|
|
859
851
|
});
|
|
860
852
|
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
853
|
+
// ensure that user's funds were burnt
|
|
854
|
+
await wethCrossChainHarness.expectPrivateBalanceOnL2(ownerAddress, wethL2BalanceBeforeSwap - wethAmountToBridge);
|
|
855
|
+
|
|
856
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch
|
|
857
|
+
// before we can ask the witness helper for a covering root.
|
|
858
|
+
const minedReceipt = await aztecNode.getTxReceipt(withdrawReceipt.txHash);
|
|
859
|
+
if (minedReceipt.epochNumber === undefined) {
|
|
860
|
+
throw new Error('Withdraw tx is not yet in an epoch');
|
|
861
|
+
}
|
|
862
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(minedReceipt.epochNumber + 1));
|
|
863
|
+
await waitForProven(aztecNode, withdrawReceipt, { provenTimeout: 300 });
|
|
864
|
+
|
|
865
|
+
const swapResult = await retryUntil(
|
|
866
|
+
() => aztecNode.getL2ToL1MembershipWitness(minedReceipt.txHash, swapPrivateLeaf),
|
|
867
|
+
'swap private l2 to l1 witness',
|
|
868
|
+
60,
|
|
869
|
+
1,
|
|
870
|
+
);
|
|
871
|
+
const { epochNumber: epoch, numCheckpointsInEpoch } = swapResult;
|
|
872
|
+
const withdrawResult = await retryUntil(
|
|
873
|
+
() => aztecNode.getL2ToL1MembershipWitness(minedReceipt.txHash, withdrawLeaf),
|
|
874
|
+
'withdraw l2 to l1 witness',
|
|
875
|
+
60,
|
|
876
|
+
1,
|
|
866
877
|
);
|
|
867
878
|
|
|
868
|
-
const swapPrivateL2MessageIndex = swapResult
|
|
869
|
-
const swapPrivateSiblingPath = swapResult
|
|
879
|
+
const swapPrivateL2MessageIndex = swapResult.leafIndex;
|
|
880
|
+
const swapPrivateSiblingPath = swapResult.siblingPath;
|
|
870
881
|
|
|
871
|
-
const withdrawL2MessageIndex = withdrawResult
|
|
872
|
-
const withdrawSiblingPath = withdrawResult
|
|
882
|
+
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
883
|
+
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
873
884
|
|
|
874
885
|
const withdrawMessageMetadata = {
|
|
875
|
-
|
|
886
|
+
_epoch: BigInt(epoch),
|
|
887
|
+
_numCheckpointsInEpoch: BigInt(withdrawResult.numCheckpointsInEpoch),
|
|
876
888
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
877
889
|
_path: withdrawSiblingPath
|
|
878
890
|
.toBufferArray()
|
|
@@ -880,19 +892,14 @@ export const uniswapL1L2TestSuite = (
|
|
|
880
892
|
};
|
|
881
893
|
|
|
882
894
|
const swapPrivateMessageMetadata = {
|
|
883
|
-
|
|
895
|
+
_epoch: BigInt(epoch),
|
|
896
|
+
_numCheckpointsInEpoch: BigInt(numCheckpointsInEpoch),
|
|
884
897
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
885
898
|
_path: swapPrivateSiblingPath
|
|
886
899
|
.toBufferArray()
|
|
887
900
|
.map((buf: Buffer) => `0x${buf.toString('hex')}`) as readonly `0x${string}`[],
|
|
888
901
|
};
|
|
889
902
|
|
|
890
|
-
// ensure that user's funds were burnt
|
|
891
|
-
await wethCrossChainHarness.expectPrivateBalanceOnL2(ownerAddress, wethL2BalanceBeforeSwap - wethAmountToBridge);
|
|
892
|
-
|
|
893
|
-
// Since the outbox is only consumable when the block is proven, we need to set the block to be proven
|
|
894
|
-
await cheatCodes.rollup.markAsProven(await rollup.getCheckpointNumber());
|
|
895
|
-
|
|
896
903
|
// On L1 call swap_public!
|
|
897
904
|
logger.info('call swap_public on L1');
|
|
898
905
|
const swapArgs = [
|
|
@@ -932,11 +939,11 @@ export const uniswapL1L2TestSuite = (
|
|
|
932
939
|
},
|
|
933
940
|
true,
|
|
934
941
|
);
|
|
935
|
-
await validateActionInteraction.send()
|
|
942
|
+
await validateActionInteraction.send();
|
|
936
943
|
|
|
937
944
|
// Call swap_public on L2
|
|
938
945
|
const secretHashForDepositingSwappedDai = Fr.random();
|
|
939
|
-
const withdrawReceipt = await uniswapL2Contract.methods
|
|
946
|
+
const { receipt: withdrawReceipt } = await uniswapL2Contract.methods
|
|
940
947
|
.swap_public(
|
|
941
948
|
ownerAddress,
|
|
942
949
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -950,8 +957,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
950
957
|
ownerEthAddress,
|
|
951
958
|
Fr.ZERO,
|
|
952
959
|
)
|
|
953
|
-
.send({ from: ownerAddress })
|
|
954
|
-
.wait();
|
|
960
|
+
.send({ from: ownerAddress });
|
|
955
961
|
|
|
956
962
|
const swapPublicContent = sha256ToField([
|
|
957
963
|
Buffer.from(
|
|
@@ -993,21 +999,41 @@ export const uniswapL1L2TestSuite = (
|
|
|
993
999
|
chainId: new Fr(l1Client.chain.id),
|
|
994
1000
|
});
|
|
995
1001
|
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1002
|
+
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
1003
|
+
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
1004
|
+
|
|
1005
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch
|
|
1006
|
+
// before we can ask the witness helper for a covering root.
|
|
1007
|
+
const minedReceipt = await aztecNode.getTxReceipt(withdrawReceipt.txHash);
|
|
1008
|
+
if (minedReceipt.epochNumber === undefined) {
|
|
1009
|
+
throw new Error('Withdraw tx is not yet in an epoch');
|
|
1010
|
+
}
|
|
1011
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(minedReceipt.epochNumber + 1));
|
|
1012
|
+
await waitForProven(aztecNode, withdrawReceipt, { provenTimeout: 300 });
|
|
1013
|
+
|
|
1014
|
+
const swapResult = await retryUntil(
|
|
1015
|
+
() => aztecNode.getL2ToL1MembershipWitness(minedReceipt.txHash, swapPublicLeaf),
|
|
1016
|
+
'swap public l2 to l1 witness',
|
|
1017
|
+
60,
|
|
1018
|
+
1,
|
|
1019
|
+
);
|
|
1020
|
+
const { epochNumber: epoch, numCheckpointsInEpoch } = swapResult;
|
|
1021
|
+
const withdrawResult = await retryUntil(
|
|
1022
|
+
() => aztecNode.getL2ToL1MembershipWitness(minedReceipt.txHash, withdrawLeaf),
|
|
1023
|
+
'withdraw l2 to l1 witness',
|
|
1024
|
+
60,
|
|
1025
|
+
1,
|
|
1001
1026
|
);
|
|
1002
1027
|
|
|
1003
|
-
const swapPublicL2MessageIndex = swapResult
|
|
1004
|
-
const swapPublicSiblingPath = swapResult
|
|
1028
|
+
const swapPublicL2MessageIndex = swapResult.leafIndex;
|
|
1029
|
+
const swapPublicSiblingPath = swapResult.siblingPath;
|
|
1005
1030
|
|
|
1006
|
-
const withdrawL2MessageIndex = withdrawResult
|
|
1007
|
-
const withdrawSiblingPath = withdrawResult
|
|
1031
|
+
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
1032
|
+
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
1008
1033
|
|
|
1009
1034
|
const withdrawMessageMetadata = {
|
|
1010
|
-
|
|
1035
|
+
_epoch: BigInt(epoch),
|
|
1036
|
+
_numCheckpointsInEpoch: BigInt(withdrawResult.numCheckpointsInEpoch),
|
|
1011
1037
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
1012
1038
|
_path: withdrawSiblingPath
|
|
1013
1039
|
.toBufferArray()
|
|
@@ -1015,19 +1041,14 @@ export const uniswapL1L2TestSuite = (
|
|
|
1015
1041
|
};
|
|
1016
1042
|
|
|
1017
1043
|
const swapPublicMessageMetadata = {
|
|
1018
|
-
|
|
1044
|
+
_epoch: BigInt(epoch),
|
|
1045
|
+
_numCheckpointsInEpoch: BigInt(numCheckpointsInEpoch),
|
|
1019
1046
|
_leafIndex: BigInt(swapPublicL2MessageIndex),
|
|
1020
1047
|
_path: swapPublicSiblingPath
|
|
1021
1048
|
.toBufferArray()
|
|
1022
1049
|
.map((buf: Buffer) => `0x${buf.toString('hex')}`) as readonly `0x${string}`[],
|
|
1023
1050
|
};
|
|
1024
1051
|
|
|
1025
|
-
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
1026
|
-
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
1027
|
-
|
|
1028
|
-
// Since the outbox is only consumable when the block is proven, we need to set the block to be proven
|
|
1029
|
-
await cheatCodes.rollup.markAsProven(await rollup.getCheckpointNumber());
|
|
1030
|
-
|
|
1031
1052
|
// Call swap_private on L1
|
|
1032
1053
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
1033
1054
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/aztec.js/fields';
|
|
2
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
3
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Waits until the archiver has seen the L1 to L2 message and indexed it. Unlike
|
|
7
|
+
* {@link waitForL1ToL2MessageReady} from `@aztec/aztec.js/messaging`, this does not
|
|
8
|
+
* require the L2 chain to have advanced to the message's checkpoint — it only confirms
|
|
9
|
+
* the message has been picked up from L1. Use this in tests that explicitly produce L2
|
|
10
|
+
* blocks afterwards to make the message consumable.
|
|
11
|
+
*/
|
|
12
|
+
export function waitForL1ToL2MessageSeen(
|
|
13
|
+
node: Pick<AztecNode, 'getL1ToL2MessageCheckpoint'>,
|
|
14
|
+
l1ToL2MessageHash: Fr,
|
|
15
|
+
opts: { timeoutSeconds: number },
|
|
16
|
+
) {
|
|
17
|
+
return retryUntil(
|
|
18
|
+
async () => (await node.getL1ToL2MessageCheckpoint(l1ToL2MessageHash)) !== undefined,
|
|
19
|
+
`L1 to L2 message ${l1ToL2MessageHash.toString()} seen`,
|
|
20
|
+
opts.timeoutSeconds,
|
|
21
|
+
0.25,
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
3
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
4
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
5
|
-
import type { RollupContract } from '@aztec/ethereum';
|
|
5
|
+
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
6
6
|
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
7
|
-
import {
|
|
7
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
8
8
|
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
9
9
|
import type { LendingContract } from '@aztec/noir-contracts.js/Lending';
|
|
10
|
+
import type { AztecNode, AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
|
|
10
11
|
|
|
11
12
|
import type { TokenSimulator } from './token_simulator.js';
|
|
12
13
|
|
|
@@ -29,7 +30,7 @@ export class LendingAccount {
|
|
|
29
30
|
* @returns Key in public space
|
|
30
31
|
*/
|
|
31
32
|
public key() {
|
|
32
|
-
return
|
|
33
|
+
return poseidon2Hash([this.address, this.secret]);
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
|
|
@@ -92,30 +93,45 @@ export class LendingSimulator {
|
|
|
92
93
|
public stableCoin: TokenSimulator,
|
|
93
94
|
) {}
|
|
94
95
|
|
|
95
|
-
|
|
96
|
+
prepare() {
|
|
96
97
|
this.accumulator = BASE;
|
|
97
|
-
|
|
98
|
-
this.time = Number(await this.rollup.getTimestampForSlot(slot));
|
|
98
|
+
this.time = 0;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Advances the simulator's accumulator and clock to match a block timestamp observed on chain.
|
|
103
|
+
* Call this BEFORE applying any accumulator-sensitive mutation (borrow/repay) so the mutation
|
|
104
|
+
* sees the same accumulator as the contract did during execution.
|
|
105
|
+
*/
|
|
106
|
+
observeBlockTimestamp(ts: number) {
|
|
107
|
+
const diff = ts - this.time;
|
|
108
|
+
if (diff > 0) {
|
|
109
|
+
this.accumulator = muldivDown(this.accumulator, computeMultiplier(this.rate, BigInt(diff)), BASE);
|
|
110
|
+
}
|
|
111
|
+
this.time = ts;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
async progressSlots(diff: number, _dateProvider?: TestDateProvider, node?: AztecNode & AztecNodeDebug) {
|
|
102
115
|
if (diff <= 1) {
|
|
103
116
|
return;
|
|
104
117
|
}
|
|
105
118
|
|
|
106
|
-
const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.
|
|
119
|
+
const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.lastBlockTimestamp()));
|
|
107
120
|
const targetSlot = SlotNumber(slot + diff);
|
|
108
121
|
const ts = Number(await this.rollup.getTimestampForSlot(targetSlot));
|
|
109
|
-
const timeDiff = ts - this.time;
|
|
110
|
-
this.time = ts;
|
|
111
122
|
|
|
112
|
-
//
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
123
|
+
// Queue-aware warp under AutomineSequencer: atomic warp + mineBlock that advances L2 time to the
|
|
124
|
+
// target slot. The cheat code routes through the AutomineSequencer queue when one is installed,
|
|
125
|
+
// and otherwise falls back to a manual warp + mineBlock loop.
|
|
126
|
+
if (node) {
|
|
127
|
+
await this.cc.warpL2TimeAtLeastTo(node, ts);
|
|
128
|
+
} else {
|
|
129
|
+
await this.cc.eth.warp(ts - this.ethereumSlotDuration);
|
|
116
130
|
}
|
|
131
|
+
|
|
132
|
+
// Mark the latest checkpoint as proven so the rollup does not reorg pending checkpoints when
|
|
133
|
+
// time jumps far enough forward to cross an unproven epoch boundary.
|
|
117
134
|
await this.cc.rollup.markAsProven(await this.rollup.getCheckpointNumber());
|
|
118
|
-
this.accumulator = muldivDown(this.accumulator, computeMultiplier(this.rate, BigInt(timeDiff)), BASE);
|
|
119
135
|
}
|
|
120
136
|
|
|
121
137
|
depositPrivate(from: AztecAddress, onBehalfOf: Fr, amount: bigint) {
|
|
@@ -186,14 +202,16 @@ export class LendingSimulator {
|
|
|
186
202
|
|
|
187
203
|
expect(this.borrowed).toEqual(this.stableCoin.totalSupply - this.mintedOutside);
|
|
188
204
|
|
|
189
|
-
const asset = await this.lendingContract.methods.get_asset(0).simulate({ from: this.account.address });
|
|
205
|
+
const { result: asset } = await this.lendingContract.methods.get_asset(0).simulate({ from: this.account.address });
|
|
190
206
|
|
|
191
207
|
const interestAccumulator = asset['interest_accumulator'];
|
|
192
208
|
expect(interestAccumulator).toEqual(this.accumulator);
|
|
193
209
|
expect(asset['last_updated_ts']).toEqual(BigInt(this.time));
|
|
194
210
|
|
|
195
|
-
for (const key of [this.account.address, AztecAddress.
|
|
196
|
-
const privatePos = await this.lendingContract.methods
|
|
211
|
+
for (const key of [this.account.address, AztecAddress.fromFieldUnsafe(await this.account.key())]) {
|
|
212
|
+
const { result: privatePos } = await this.lendingContract.methods
|
|
213
|
+
.get_position(key)
|
|
214
|
+
.simulate({ from: this.account.address });
|
|
197
215
|
expect(new Fr(privatePos['collateral'])).toEqual(this.collateral[key.toString()] ?? Fr.ZERO);
|
|
198
216
|
expect(new Fr(privatePos['static_debt'])).toEqual(this.staticDebt[key.toString()] ?? Fr.ZERO);
|
|
199
217
|
expect(privatePos['debt']).toEqual(
|