@aztec/end-to-end 0.0.1-commit.d431d1c → 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/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.js +50 -54
- 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/{e2e_token_contract → automine/token}/token_contract_test.js +44 -49
- 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 +15 -1
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +19 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +6 -6
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +68 -44
- 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 +1 -0
- package/dest/bench/utils.d.ts +7 -6
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +108 -12
- 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/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 +18 -14
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +85 -74
- 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 +83 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +86 -0
- 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/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 +113 -60
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +330 -326
- 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 +46 -35
- 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 +2 -2
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +1 -1
- 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/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 +22 -12
- package/dest/p2p/p2p_network.d.ts.map +1 -0
- package/dest/{e2e_p2p → p2p}/p2p_network.js +99 -35
- 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/shared/cross_chain_test_harness.d.ts +8 -7
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +44 -39
- package/dest/shared/gas_portal_test_harness.d.ts +8 -5
- 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 +2 -1
- 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 +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +67 -55
- 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 +10 -3
- 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 +18 -5
- 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/{e2e_fees → single-node/fees}/fees_test.js +96 -70
- 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 +12 -3
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +153 -49
- package/dest/spartan/tx_metrics.d.ts +64 -5
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +280 -21
- 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 -260
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -942
- 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 +53 -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/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +56 -69
- package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +51 -59
- package/src/automine/token/token_test_helpers.ts +138 -0
- package/src/bench/client_flows/benchmark.ts +21 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +111 -90
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +1 -0
- package/src/bench/utils.ts +123 -12
- package/src/composed/ha/ha_full_setup.ts +466 -0
- 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 +102 -103
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +110 -0
- 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/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +421 -444
- package/src/fixtures/setup_p2p_test.ts +54 -54
- package/src/fixtures/timing.ts +97 -0
- package/src/fixtures/token_utils.ts +46 -10
- package/src/fixtures/utils.ts +2 -3
- package/src/fixtures/wait_helpers.ts +333 -0
- 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/{e2e_p2p → p2p}/p2p_network.ts +132 -57
- package/src/p2p/reqresp/utils.ts +263 -0
- package/src/p2p/shared.ts +329 -0
- package/src/shared/cross_chain_test_harness.ts +52 -41
- package/src/shared/gas_portal_test_harness.ts +34 -16
- package/src/shared/index.ts +1 -0
- 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 +109 -74
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +35 -17
- 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 +20 -9
- package/src/{e2e_fees → single-node/fees}/fees_test.ts +120 -95
- 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 +208 -34
- package/src/spartan/tx_metrics.ts +255 -26
- 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 -1246
- 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 -53
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -47
- 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 -128
- package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
- package/dest/e2e_deploy_contract/deploy_test.js +0 -50
- package/dest/e2e_epochs/epochs_test.d.ts +0 -94
- package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
- package/dest/e2e_epochs/epochs_test.js +0 -339
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.d.ts +0 -88
- package/dest/e2e_fees/fees_test.d.ts.map +0 -1
- 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 -62
- 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 -26
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +0 -56
- 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 -136
- package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
- 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 -42
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -194
- package/src/e2e_deploy_contract/deploy_test.ts +0 -85
- package/src/e2e_epochs/epochs_test.ts +0 -451
- package/src/e2e_l1_publisher/write_json.ts +0 -82
- package/src/e2e_nested_contract/nested_contract_test.ts +0 -75
- package/src/e2e_p2p/inactivity_slash_test.ts +0 -179
- package/src/e2e_p2p/shared.ts +0 -290
- /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
- /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { NO_WAIT, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { timesAsync } from '@aztec/foundation/collection';
|
|
5
|
+
import { Signature } from '@aztec/foundation/eth-signature';
|
|
6
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
7
|
+
import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.js/Test';
|
|
8
|
+
import { getPXEConfig, getPXEConfig as getRpcConfig } from '@aztec/pxe/server';
|
|
9
|
+
import { CheckpointAttestation, ConsensusPayload } from '@aztec/stdlib/p2p';
|
|
10
|
+
import { expect } from '@jest/globals';
|
|
11
|
+
import { shouldCollectMetrics } from '../fixtures/fixtures.js';
|
|
12
|
+
import { SchnorrHardcodedKeyAccountContract } from '../fixtures/schnorr_hardcoded_account_contract.js';
|
|
13
|
+
import { createNodes } from '../fixtures/setup_p2p_test.js';
|
|
14
|
+
import { waitForTxs } from '../fixtures/wait_helpers.js';
|
|
15
|
+
import { GrafanaClient } from '../quality_of_service/grafana_client.js';
|
|
16
|
+
import { submitTxsTo } from '../shared/submit-transactions.js';
|
|
17
|
+
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
18
|
+
import { proveInteraction } from '../test-wallet/utils.js';
|
|
19
|
+
import { WAIT_FOR_TX_TIMEOUT } from './p2p_network.js';
|
|
20
|
+
// submits a set of transactions to the provided Private eXecution Environment (PXE)
|
|
21
|
+
export const submitComplexTxsTo = async (logger, from, spamContract, numTxs, opts = {})=>{
|
|
22
|
+
const txs = [];
|
|
23
|
+
const seed = 1234n;
|
|
24
|
+
const spamCount = 15;
|
|
25
|
+
for(let i = 0; i < numTxs; i++){
|
|
26
|
+
const method = spamContract.methods.spam(seed + BigInt(i * spamCount), spamCount, !!opts.callPublic);
|
|
27
|
+
const { txHash } = await method.send({
|
|
28
|
+
from,
|
|
29
|
+
wait: NO_WAIT
|
|
30
|
+
});
|
|
31
|
+
logger.info(`Tx sent with hash ${txHash.toString()}`);
|
|
32
|
+
txs.push(txHash);
|
|
33
|
+
}
|
|
34
|
+
return txs;
|
|
35
|
+
};
|
|
36
|
+
// creates a wallet and submit a given number of transactions through it.
|
|
37
|
+
export const submitTransactions = async (logger, node, numTxs, fundedAccount)=>{
|
|
38
|
+
const rpcConfig = getRpcConfig();
|
|
39
|
+
rpcConfig.proverEnabled = false;
|
|
40
|
+
const wallet = await TestWallet.create(node, // Use checkpointed chain tip to avoid anchoring on provisional blocks that the archiver can prune
|
|
41
|
+
// when their slot ends without a checkpoint landing on L1.
|
|
42
|
+
{
|
|
43
|
+
...getPXEConfig(),
|
|
44
|
+
proverEnabled: false,
|
|
45
|
+
syncChainTip: 'checkpointed'
|
|
46
|
+
}, {
|
|
47
|
+
loggerActorLabel: 'pxe-tx'
|
|
48
|
+
});
|
|
49
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
50
|
+
const fundedAccountManager = await wallet.createAccount({
|
|
51
|
+
secret: fundedAccount.secret,
|
|
52
|
+
salt: fundedAccount.salt,
|
|
53
|
+
contract
|
|
54
|
+
});
|
|
55
|
+
return submitTxsTo(wallet, fundedAccountManager.address, numTxs, logger);
|
|
56
|
+
};
|
|
57
|
+
export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
|
|
58
|
+
const rpcConfig = getRpcConfig();
|
|
59
|
+
rpcConfig.proverEnabled = false;
|
|
60
|
+
const wallet = await TestWallet.create(node, {
|
|
61
|
+
...getPXEConfig(),
|
|
62
|
+
proverEnabled: false,
|
|
63
|
+
syncChainTip: 'checkpointed'
|
|
64
|
+
}, {
|
|
65
|
+
loggerActorLabel: 'pxe-tx'
|
|
66
|
+
});
|
|
67
|
+
const accountContract = new SchnorrHardcodedKeyAccountContract();
|
|
68
|
+
const fundedAccountManager = await wallet.createAccount({
|
|
69
|
+
secret: fundedAccount.secret,
|
|
70
|
+
salt: fundedAccount.salt,
|
|
71
|
+
contract: accountContract
|
|
72
|
+
});
|
|
73
|
+
const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {
|
|
74
|
+
salt: Fr.random()
|
|
75
|
+
});
|
|
76
|
+
await wallet.registerContract(testContractInstance, TestContractArtifact);
|
|
77
|
+
const contract = TestContract.at(testContractInstance.address, wallet);
|
|
78
|
+
return timesAsync(numTxs, async ()=>{
|
|
79
|
+
const tx = await proveInteraction(wallet, contract.methods.emit_nullifier(Fr.random()), {
|
|
80
|
+
from: fundedAccountManager.address
|
|
81
|
+
});
|
|
82
|
+
logger.info(`Tx prepared with hash ${tx.getTxHash()}`);
|
|
83
|
+
return tx;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const CHECK_ALERTS = process.env.CHECK_ALERTS === 'true';
|
|
87
|
+
const qosAlerts = [
|
|
88
|
+
{
|
|
89
|
+
alert: 'SequencerTimeToCollectAttestations',
|
|
90
|
+
expr: 'aztec_sequencer_time_to_collect_attestations > 3500',
|
|
91
|
+
labels: {
|
|
92
|
+
severity: 'error'
|
|
93
|
+
},
|
|
94
|
+
for: '10m',
|
|
95
|
+
annotations: {}
|
|
96
|
+
}
|
|
97
|
+
];
|
|
98
|
+
/** Runs the shared p2p QoS Grafana alert check when CHECK_ALERTS=true; a no-op otherwise. */ export async function maybeCheckQosAlerts(logger) {
|
|
99
|
+
if (CHECK_ALERTS) {
|
|
100
|
+
const checker = new GrafanaClient(logger);
|
|
101
|
+
await checker.runAlertCheck(qosAlerts);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** Waits until every node's synced block number reaches the initial node's current tip. */ export async function waitForNodesToSync(t, nodes) {
|
|
105
|
+
const targetBlock = await t.ctx.aztecNode.getBlockNumber();
|
|
106
|
+
t.logger.warn(`Waiting for all nodes to sync to block number ${targetBlock}`);
|
|
107
|
+
await retryUntil(async ()=>{
|
|
108
|
+
const blockNumbers = await Promise.all(nodes.map((node)=>node.getBlockNumber()));
|
|
109
|
+
const checkpointNumber = (await t.monitor.run()).checkpointNumber;
|
|
110
|
+
t.logger.info(`Current block numbers ${blockNumbers} (checkpoint number on L1 is ${checkpointNumber})`);
|
|
111
|
+
return blockNumbers.every((bn)=>bn >= targetBlock);
|
|
112
|
+
}, `nodes to sync to block number ${targetBlock}`, 30, 0.5);
|
|
113
|
+
}
|
|
114
|
+
/** Reads the published checkpoint containing the block that mined the given tx. */ export async function getPublishedCheckpointForTx(node, txHash) {
|
|
115
|
+
const receipt = await node.getTxReceipt(txHash);
|
|
116
|
+
const blockNumber = receipt.blockNumber;
|
|
117
|
+
const dataStore = node.getBlockSource();
|
|
118
|
+
const blockData = await dataStore.getBlockData({
|
|
119
|
+
number: BlockNumber(blockNumber)
|
|
120
|
+
});
|
|
121
|
+
const [publishedCheckpoint] = await dataStore.getCheckpoints({
|
|
122
|
+
from: blockData.checkpointNumber,
|
|
123
|
+
limit: 1
|
|
124
|
+
});
|
|
125
|
+
return publishedCheckpoint;
|
|
126
|
+
}
|
|
127
|
+
/** Polls until the archiver has indexed the first published checkpoint, then returns it. */ export async function waitForFirstPublishedCheckpoint(t, nodes, timeoutSeconds = 120) {
|
|
128
|
+
const dataStore = nodes[0].getBlockSource();
|
|
129
|
+
t.logger.warn('Waiting for first checkpoint to be published and indexed by the archiver');
|
|
130
|
+
return await retryUntil(async ()=>{
|
|
131
|
+
const blockNumbers = await Promise.all(nodes.map((node)=>node.getBlockNumber()));
|
|
132
|
+
const checkpointNumber = (await t.monitor.run()).checkpointNumber;
|
|
133
|
+
t.logger.info(`Current block numbers ${blockNumbers} (checkpoint number on L1 is ${checkpointNumber})`);
|
|
134
|
+
const [checkpoint] = await dataStore.getCheckpoints({
|
|
135
|
+
from: CheckpointNumber(1),
|
|
136
|
+
limit: 1
|
|
137
|
+
});
|
|
138
|
+
return checkpoint;
|
|
139
|
+
}, 'published checkpoint to be indexed', timeoutSeconds, 1);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Recovers the attestation signers from a published checkpoint and asserts each one belongs to the
|
|
143
|
+
* validator set formed by the given nodes. Returns the recovered signer addresses so callers can add
|
|
144
|
+
* scenario-specific assertions (e.g. an exact signer count).
|
|
145
|
+
*/ export async function verifyAttestationSigners(t, nodes, publishedCheckpoint) {
|
|
146
|
+
const signatureContext = {
|
|
147
|
+
chainId: t.ctx.aztecNodeConfig.l1ChainId,
|
|
148
|
+
rollupAddress: t.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress
|
|
149
|
+
};
|
|
150
|
+
const payload = ConsensusPayload.fromCheckpoint(publishedCheckpoint.checkpoint, signatureContext);
|
|
151
|
+
const attestations = publishedCheckpoint.attestations.filter((a)=>!a.signature.isEmpty()).map((a)=>new CheckpointAttestation(payload, a.signature, Signature.empty()));
|
|
152
|
+
const signers = await Promise.all(attestations.map((att)=>att.getSender().toString()));
|
|
153
|
+
t.logger.info(`Attestation signers`, {
|
|
154
|
+
signers
|
|
155
|
+
});
|
|
156
|
+
// Check that the signers found are part of the proposer nodes to ensure the archiver fetched them right
|
|
157
|
+
const validatorAddresses = nodes.flatMap((node)=>node.getSequencer().validatorAddresses?.map((a)=>a.toString()));
|
|
158
|
+
t.logger.info(`Validator addresses`, {
|
|
159
|
+
addresses: validatorAddresses
|
|
160
|
+
});
|
|
161
|
+
for (const signer of signers){
|
|
162
|
+
expect(validatorAddresses).toContain(signer);
|
|
163
|
+
}
|
|
164
|
+
return signers;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Shared skeleton for the p2p gossip tests: create the validator nodes and any extra nodes, wait for
|
|
168
|
+
* the mesh to form, register the account, optionally submit and mine txs, then verify the attestation
|
|
169
|
+
* signers of a published checkpoint. Each varying part (validator registration, extra nodes, pre-submit
|
|
170
|
+
* waits, scenario-specific verification) is supplied via the callbacks in {@link GossipScenarioOptions}.
|
|
171
|
+
* Returns the validator nodes so the caller can track them for teardown.
|
|
172
|
+
*/ export async function runGossipScenario(opts) {
|
|
173
|
+
const { t, numValidators, bootNodePort, txsPerNode } = opts;
|
|
174
|
+
if (!t.bootstrapNodeEnr) {
|
|
175
|
+
throw new Error('Bootstrap node ENR is not available');
|
|
176
|
+
}
|
|
177
|
+
await opts.beforeCreateNodes?.();
|
|
178
|
+
t.logger.info('Creating validator nodes');
|
|
179
|
+
const nodes = await createNodes(t.ctx.aztecNodeConfig, t.ctx.dateProvider, t.bootstrapNodeEnr, numValidators, bootNodePort, t.genesis, t.dataDirFor('validator'), shouldCollectMetrics());
|
|
180
|
+
await opts.createExtraNodes?.(nodes);
|
|
181
|
+
t.logger.info('Waiting for nodes to connect');
|
|
182
|
+
await t.waitForP2PMeshConnectivity(nodes, opts.mesh?.expectedNodeCount ?? numValidators, opts.mesh?.timeoutSeconds, opts.mesh?.checkIntervalSeconds, opts.mesh?.topics, opts.mesh?.minMeshPeerCount);
|
|
183
|
+
// We need to create the nodes before we setup the account, because those nodes form the committee
|
|
184
|
+
// and blocks cannot be built without them (targetCommitteeSize is set to the number of nodes).
|
|
185
|
+
await t.setupAccount();
|
|
186
|
+
await opts.beforeSubmit?.(nodes);
|
|
187
|
+
let firstTxHash;
|
|
188
|
+
if (txsPerNode > 0) {
|
|
189
|
+
t.logger.info('Submitting transactions');
|
|
190
|
+
const submitOne = (node)=>submitTransactions(t.logger, node, txsPerNode, t.fundedAccount);
|
|
191
|
+
// Each submitTransactions call builds its own wallet/PXE, so submissions are independent. When run
|
|
192
|
+
// concurrently, Promise.all preserves node order so submitted[i] stays aligned with nodes[i].
|
|
193
|
+
const submitted = [];
|
|
194
|
+
if (opts.submitSequentially) {
|
|
195
|
+
for (const node of nodes){
|
|
196
|
+
submitted.push(await submitOne(node));
|
|
197
|
+
}
|
|
198
|
+
} else {
|
|
199
|
+
submitted.push(...await Promise.all(nodes.map(submitOne)));
|
|
200
|
+
}
|
|
201
|
+
firstTxHash = submitted[0][0];
|
|
202
|
+
t.logger.info('Waiting for transactions to be mined');
|
|
203
|
+
await waitForTxs(nodes[0], submitted.flat(), {
|
|
204
|
+
timeout: WAIT_FOR_TX_TIMEOUT
|
|
205
|
+
});
|
|
206
|
+
t.logger.info('All transactions mined');
|
|
207
|
+
}
|
|
208
|
+
const publishedCheckpoint = opts.checkpointSource === 'first-published' ? await waitForFirstPublishedCheckpoint(t, nodes) : await getPublishedCheckpointForTx(nodes[0], firstTxHash);
|
|
209
|
+
await verifyAttestationSigners(t, nodes, publishedCheckpoint);
|
|
210
|
+
await opts.afterVerify?.(nodes);
|
|
211
|
+
return nodes;
|
|
212
|
+
}
|
|
@@ -8,10 +8,10 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
8
8
|
import type { SiblingPath } from '@aztec/aztec.js/trees';
|
|
9
9
|
import type { TxReceipt } from '@aztec/aztec.js/tx';
|
|
10
10
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
11
|
+
import { OutboxContract } from '@aztec/ethereum/contracts';
|
|
11
12
|
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
12
13
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
13
14
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
14
|
-
import type { FieldsOf } from '@aztec/foundation/types';
|
|
15
15
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
16
16
|
import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
|
|
17
17
|
import { type Hex } from 'viem';
|
|
@@ -25,7 +25,7 @@ import { type Hex } from 'viem';
|
|
|
25
25
|
* @param underlyingERC20Address - address of the underlying ERC20 contract to use (if none supplied, it deploys one)
|
|
26
26
|
* @returns l2 contract instance, bridge contract instance, token portal instance, token portal address and the underlying ERC20 instance
|
|
27
27
|
*/
|
|
28
|
-
export declare function deployAndInitializeTokenAndBridgeContracts(wallet: Wallet, l1Client: ExtendedViemWalletClient, rollupRegistryAddress: EthAddress, owner: AztecAddress, underlyingERC20Address: EthAddress): Promise<{
|
|
28
|
+
export declare function deployAndInitializeTokenAndBridgeContracts(wallet: Wallet, l1Client: ExtendedViemWalletClient, rollupRegistryAddress: EthAddress, owner: AztecAddress, underlyingERC20Address: EthAddress, predeployedTokenPortalAddress?: EthAddress): Promise<{
|
|
29
29
|
/**
|
|
30
30
|
* The L2 token contract instance.
|
|
31
31
|
*/
|
|
@@ -84,9 +84,10 @@ export declare class CrossChainTestHarness {
|
|
|
84
84
|
readonly wallet: Wallet;
|
|
85
85
|
/** Owner of the l2 token and bridge */
|
|
86
86
|
readonly ownerAddress: AztecAddress;
|
|
87
|
-
static new(aztecNode: AztecNode, l1Client: ExtendedViemWalletClient, wallet: Wallet, ownerAddress: AztecAddress, logger: Logger, underlyingERC20Address: EthAddress): Promise<CrossChainTestHarness>;
|
|
87
|
+
static new(aztecNode: AztecNode, l1Client: ExtendedViemWalletClient, wallet: Wallet, ownerAddress: AztecAddress, logger: Logger, underlyingERC20Address: EthAddress, predeployedTokenPortalAddress?: EthAddress): Promise<CrossChainTestHarness>;
|
|
88
88
|
private readonly l1TokenManager;
|
|
89
89
|
private readonly l1TokenPortalManager;
|
|
90
|
+
readonly outboxContract: OutboxContract;
|
|
90
91
|
constructor(
|
|
91
92
|
/** Aztec node instance. */
|
|
92
93
|
aztecNode: AztecNode,
|
|
@@ -119,14 +120,14 @@ export declare class CrossChainTestHarness {
|
|
|
119
120
|
sendL2PublicTransfer(transferAmount: bigint, receiverAddress: AztecAddress): Promise<void>;
|
|
120
121
|
consumeMessageOnAztecAndMintPrivately(claim: Pick<L2AmountClaimWithRecipient, 'claimAmount' | 'claimSecret' | 'messageLeafIndex' | 'recipient'>): Promise<void>;
|
|
121
122
|
consumeMessageOnAztecAndMintPublicly(claim: Pick<L2AmountClaim, 'claimAmount' | 'claimSecret' | 'messageLeafIndex'>): Promise<void>;
|
|
122
|
-
withdrawPrivateFromAztecToL1(withdrawAmount: bigint, authwitNonce: Fr | undefined, authWitness: AuthWitness): Promise<
|
|
123
|
-
withdrawPublicFromAztecToL1(withdrawAmount: bigint, authwitNonce?: Fr): Promise<
|
|
123
|
+
withdrawPrivateFromAztecToL1(withdrawAmount: bigint, authwitNonce: Fr | undefined, authWitness: AuthWitness): Promise<TxReceipt>;
|
|
124
|
+
withdrawPublicFromAztecToL1(withdrawAmount: bigint, authwitNonce?: Fr): Promise<TxReceipt>;
|
|
124
125
|
getL2PrivateBalanceOf(owner: AztecAddress): Promise<any>;
|
|
125
126
|
expectPrivateBalanceOnL2(owner: AztecAddress, expectedBalance: bigint): Promise<void>;
|
|
126
127
|
getL2PublicBalanceOf(owner: AztecAddress): Promise<any>;
|
|
127
128
|
expectPublicBalanceOnL2(owner: AztecAddress, expectedBalance: bigint): Promise<void>;
|
|
128
129
|
getL2ToL1MessageLeaf(withdrawAmount: bigint, callerOnL1?: EthAddress): Promise<Fr>;
|
|
129
|
-
withdrawFundsFromBridgeOnL1(amount: bigint, epochNumber: EpochNumber, messageIndex: bigint, siblingPath: SiblingPath<number>): Promise<void>;
|
|
130
|
+
withdrawFundsFromBridgeOnL1(amount: bigint, epochNumber: EpochNumber, numCheckpointsInEpoch: number, messageIndex: bigint, siblingPath: SiblingPath<number>): Promise<void>;
|
|
130
131
|
transferToPrivateOnL2(shieldAmount: bigint): Promise<void>;
|
|
131
132
|
transferToPublicOnL2(amount: bigint, authwitNonce?: Fr): Promise<void>;
|
|
132
133
|
/**
|
|
@@ -139,4 +140,4 @@ export declare class CrossChainTestHarness {
|
|
|
139
140
|
makeMessageConsumable(msgHash: Fr | Hex): Promise<void>;
|
|
140
141
|
toCrossChainContext(): CrossChainContext;
|
|
141
142
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fdGVzdF9oYXJuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL2Nyb3NzX2NoYWluX3Rlc3RfaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFHTCxLQUFLLGFBQWEsRUFDbEIsS0FBSywwQkFBMEIsRUFDaEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFz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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross_chain_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/cross_chain_test_harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"cross_chain_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/cross_chain_test_harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { L1TokenPortalManager } from '@aztec/aztec.js/ethereum';
|
|
3
3
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
|
+
import { OutboxContract } from '@aztec/ethereum/contracts';
|
|
4
5
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
5
|
-
import { retryUntil } from '@aztec/foundation/retry';
|
|
6
6
|
import { TestERC20Abi, TokenPortalAbi, TokenPortalBytecode } from '@aztec/l1-artifacts';
|
|
7
7
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
8
8
|
import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
|
|
9
9
|
import { getContract } from 'viem';
|
|
10
|
+
import { testSpan } from '../fixtures/timing.js';
|
|
10
11
|
import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
12
|
+
import { waitForL1ToL2MessageSeen } from './wait_for_l1_to_l2_message.js';
|
|
11
13
|
/**
|
|
12
14
|
* Deploy L1 token and portal, initialize portal, deploy a non native l2 token contract, its L2 bridge contract and attach is to the portal.
|
|
13
15
|
* @param wallet - the wallet instance
|
|
@@ -17,39 +19,39 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
17
19
|
* @param owner - owner of the L2 contract
|
|
18
20
|
* @param underlyingERC20Address - address of the underlying ERC20 contract to use (if none supplied, it deploys one)
|
|
19
21
|
* @returns l2 contract instance, bridge contract instance, token portal instance, token portal address and the underlying ERC20 instance
|
|
20
|
-
*/ export async function deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, rollupRegistryAddress, owner, underlyingERC20Address) {
|
|
21
|
-
//
|
|
22
|
-
const
|
|
22
|
+
*/ export async function deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, rollupRegistryAddress, owner, underlyingERC20Address, predeployedTokenPortalAddress) {
|
|
23
|
+
// Deploy the token portal, unless it was already deployed before the node started (under automine).
|
|
24
|
+
const tokenPortalAddress = predeployedTokenPortalAddress ?? (await deployL1Contract(l1Client, TokenPortalAbi, TokenPortalBytecode)).address;
|
|
23
25
|
const tokenPortal = getContract({
|
|
24
26
|
address: tokenPortalAddress.toString(),
|
|
25
27
|
abi: TokenPortalAbi,
|
|
26
28
|
client: l1Client
|
|
27
29
|
});
|
|
28
30
|
// deploy l2 token
|
|
29
|
-
const token = await TokenContract.deploy(wallet, owner, 'TokenName', 'TokenSymbol', 18).send({
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
const { contract: token } = await testSpan('deploy:token', ()=>TokenContract.deploy(wallet, owner, 'TokenName', 'TokenSymbol', 18).send({
|
|
32
|
+
from: owner
|
|
33
|
+
}));
|
|
32
34
|
// deploy l2 token bridge and attach to the portal
|
|
33
|
-
const bridge = await TokenBridgeContract.deploy(wallet, token.address, tokenPortalAddress).send({
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (await token.methods.get_admin().simulate({
|
|
35
|
+
const { contract: bridge } = await testSpan('deploy:bridge', ()=>TokenBridgeContract.deploy(wallet, token.address, tokenPortalAddress).send({
|
|
36
|
+
from: owner
|
|
37
|
+
}));
|
|
38
|
+
if ((await token.methods.get_admin().simulate({
|
|
37
39
|
from: owner
|
|
38
|
-
}) !== owner.toBigInt()) {
|
|
40
|
+
})).result !== owner.toBigInt()) {
|
|
39
41
|
throw new Error(`Token admin is not ${owner}`);
|
|
40
42
|
}
|
|
41
43
|
if (!(await bridge.methods.get_config().simulate({
|
|
42
44
|
from: owner
|
|
43
|
-
})).token.equals(token.address)) {
|
|
45
|
+
})).result.token.equals(token.address)) {
|
|
44
46
|
throw new Error(`Bridge token is not ${token.address}`);
|
|
45
47
|
}
|
|
46
48
|
// make the bridge a minter on the token:
|
|
47
49
|
await token.methods.set_minter(bridge.address, true).send({
|
|
48
50
|
from: owner
|
|
49
|
-
})
|
|
50
|
-
if (await token.methods.is_minter(bridge.address).simulate({
|
|
51
|
+
});
|
|
52
|
+
if ((await token.methods.is_minter(bridge.address).simulate({
|
|
51
53
|
from: owner
|
|
52
|
-
}) === 1n) {
|
|
54
|
+
})).result === 1n) {
|
|
53
55
|
throw new Error(`Bridge is not a minter`);
|
|
54
56
|
}
|
|
55
57
|
// initialize portal
|
|
@@ -86,17 +88,18 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
86
88
|
l1ContractAddresses;
|
|
87
89
|
wallet;
|
|
88
90
|
ownerAddress;
|
|
89
|
-
static async new(aztecNode, l1Client, wallet, ownerAddress, logger, underlyingERC20Address) {
|
|
91
|
+
static async new(aztecNode, l1Client, wallet, ownerAddress, logger, underlyingERC20Address, predeployedTokenPortalAddress) {
|
|
90
92
|
const ethAccount = EthAddress.fromString((await l1Client.getAddresses())[0]);
|
|
91
93
|
const l1ContractAddresses = (await aztecNode.getNodeInfo()).l1ContractAddresses;
|
|
92
94
|
// Deploy and initialize all required contracts
|
|
93
95
|
logger.info('Deploying and initializing token, portal and its bridge...');
|
|
94
|
-
const { token, bridge, tokenPortalAddress, underlyingERC20 } = await deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, l1ContractAddresses.registryAddress, ownerAddress, underlyingERC20Address);
|
|
96
|
+
const { token, bridge, tokenPortalAddress, underlyingERC20 } = await deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, l1ContractAddresses.registryAddress, ownerAddress, underlyingERC20Address, predeployedTokenPortalAddress);
|
|
95
97
|
logger.info('Deployed and initialized token, portal and its bridge.');
|
|
96
98
|
return new CrossChainTestHarness(aztecNode, logger, token, bridge, ethAccount, tokenPortalAddress, underlyingERC20.address, l1Client, l1ContractAddresses, wallet, ownerAddress);
|
|
97
99
|
}
|
|
98
100
|
l1TokenManager;
|
|
99
101
|
l1TokenPortalManager;
|
|
102
|
+
outboxContract;
|
|
100
103
|
constructor(/** Aztec node instance. */ aztecNode, /** Logger. */ logger, /** L2 Token contract. */ l2Token, /** L2 Token bridge contract. */ l2Bridge, /** Eth account to interact with. */ ethAccount, /** Portal address. */ tokenPortalAddress, /** Underlying token for portal tests. */ underlyingERC20Address, /** Viem Extended client instance. */ l1Client, /** Deployment addresses for all L1 contracts */ l1ContractAddresses, /** Wallet to simulate and send txs from. */ wallet, /** Owner of the l2 token and bridge */ ownerAddress){
|
|
101
104
|
this.aztecNode = aztecNode;
|
|
102
105
|
this.logger = logger;
|
|
@@ -111,6 +114,7 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
111
114
|
this.ownerAddress = ownerAddress;
|
|
112
115
|
this.l1TokenPortalManager = new L1TokenPortalManager(this.tokenPortalAddress, this.underlyingERC20Address, this.l1ContractAddresses.feeAssetHandlerAddress, this.l1ContractAddresses.outboxAddress, this.l1Client, this.logger);
|
|
113
116
|
this.l1TokenManager = this.l1TokenPortalManager.getTokenManager();
|
|
117
|
+
this.outboxContract = new OutboxContract(this.l1Client, this.l1ContractAddresses.outboxAddress);
|
|
114
118
|
}
|
|
115
119
|
async mintTokensOnL1(amount) {
|
|
116
120
|
const contract = getContract({
|
|
@@ -139,52 +143,52 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
139
143
|
}
|
|
140
144
|
async mintTokensPublicOnL2(amount) {
|
|
141
145
|
this.logger.info('Minting tokens on L2 publicly');
|
|
142
|
-
await this.l2Token.methods.mint_to_public(this.ownerAddress, amount).send({
|
|
143
|
-
|
|
144
|
-
|
|
146
|
+
await testSpan('tx:mint', ()=>this.l2Token.methods.mint_to_public(this.ownerAddress, amount).send({
|
|
147
|
+
from: this.ownerAddress
|
|
148
|
+
}));
|
|
145
149
|
}
|
|
146
150
|
async mintTokensPrivateOnL2(amount) {
|
|
147
|
-
await mintTokensToPrivate(this.l2Token, this.ownerAddress, this.ownerAddress, amount);
|
|
151
|
+
await testSpan('tx:mint', ()=>mintTokensToPrivate(this.l2Token, this.ownerAddress, this.ownerAddress, amount));
|
|
148
152
|
}
|
|
149
153
|
async sendL2PublicTransfer(transferAmount, receiverAddress) {
|
|
150
154
|
// send a transfer tx to force through rollup with the message included
|
|
151
155
|
await this.l2Token.methods.transfer_in_public(this.ownerAddress, receiverAddress, transferAmount, 0).send({
|
|
152
156
|
from: this.ownerAddress
|
|
153
|
-
})
|
|
157
|
+
});
|
|
154
158
|
}
|
|
155
159
|
async consumeMessageOnAztecAndMintPrivately(claim) {
|
|
156
160
|
this.logger.info('Consuming messages on L2 privately');
|
|
157
161
|
const { recipient, claimAmount, claimSecret: secretForL2MessageConsumption, messageLeafIndex } = claim;
|
|
158
162
|
await this.l2Bridge.methods.claim_private(recipient, claimAmount, secretForL2MessageConsumption, messageLeafIndex).send({
|
|
159
163
|
from: this.ownerAddress
|
|
160
|
-
})
|
|
164
|
+
});
|
|
161
165
|
}
|
|
162
166
|
async consumeMessageOnAztecAndMintPublicly(claim) {
|
|
163
167
|
this.logger.info('Consuming messages on L2 Publicly');
|
|
164
168
|
const { claimAmount, claimSecret, messageLeafIndex } = claim;
|
|
165
169
|
await this.l2Bridge.methods.claim_public(this.ownerAddress, claimAmount, claimSecret, messageLeafIndex).send({
|
|
166
170
|
from: this.ownerAddress
|
|
167
|
-
})
|
|
171
|
+
});
|
|
168
172
|
}
|
|
169
173
|
async withdrawPrivateFromAztecToL1(withdrawAmount, authwitNonce = Fr.ZERO, authWitness) {
|
|
170
|
-
const withdrawReceipt = await this.l2Bridge.methods.exit_to_l1_private(this.l2Token.address, this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
|
|
174
|
+
const { receipt: withdrawReceipt } = await this.l2Bridge.methods.exit_to_l1_private(this.l2Token.address, this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
|
|
171
175
|
authWitnesses: [
|
|
172
176
|
authWitness
|
|
173
177
|
],
|
|
174
178
|
from: this.ownerAddress
|
|
175
|
-
})
|
|
179
|
+
});
|
|
176
180
|
return withdrawReceipt;
|
|
177
181
|
}
|
|
178
182
|
async withdrawPublicFromAztecToL1(withdrawAmount, authwitNonce = Fr.ZERO) {
|
|
179
|
-
const withdrawReceipt = await this.l2Bridge.methods.exit_to_l1_public(this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
|
|
183
|
+
const { receipt: withdrawReceipt } = await this.l2Bridge.methods.exit_to_l1_public(this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
|
|
180
184
|
from: this.ownerAddress
|
|
181
|
-
})
|
|
185
|
+
});
|
|
182
186
|
return withdrawReceipt;
|
|
183
187
|
}
|
|
184
188
|
async getL2PrivateBalanceOf(owner) {
|
|
185
|
-
return await this.l2Token.methods.balance_of_private(owner).simulate({
|
|
189
|
+
return (await this.l2Token.methods.balance_of_private(owner).simulate({
|
|
186
190
|
from: owner
|
|
187
|
-
});
|
|
191
|
+
})).result;
|
|
188
192
|
}
|
|
189
193
|
async expectPrivateBalanceOnL2(owner, expectedBalance) {
|
|
190
194
|
const balance = await this.getL2PrivateBalanceOf(owner);
|
|
@@ -192,9 +196,9 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
192
196
|
expect(balance).toBe(expectedBalance);
|
|
193
197
|
}
|
|
194
198
|
async getL2PublicBalanceOf(owner) {
|
|
195
|
-
return await this.l2Token.methods.balance_of_public(owner).simulate({
|
|
199
|
+
return (await this.l2Token.methods.balance_of_public(owner).simulate({
|
|
196
200
|
from: this.ownerAddress
|
|
197
|
-
});
|
|
201
|
+
})).result;
|
|
198
202
|
}
|
|
199
203
|
async expectPublicBalanceOnL2(owner, expectedBalance) {
|
|
200
204
|
const balance = await this.getL2PublicBalanceOf(owner);
|
|
@@ -203,20 +207,20 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
203
207
|
async getL2ToL1MessageLeaf(withdrawAmount, callerOnL1 = EthAddress.ZERO) {
|
|
204
208
|
return await this.l1TokenPortalManager.getL2ToL1MessageLeaf(withdrawAmount, this.ethAccount, this.l2Bridge.address, callerOnL1);
|
|
205
209
|
}
|
|
206
|
-
withdrawFundsFromBridgeOnL1(amount, epochNumber, messageIndex, siblingPath) {
|
|
207
|
-
return this.l1TokenPortalManager.withdrawFunds(amount, this.ethAccount, epochNumber, messageIndex, siblingPath);
|
|
210
|
+
withdrawFundsFromBridgeOnL1(amount, epochNumber, numCheckpointsInEpoch, messageIndex, siblingPath) {
|
|
211
|
+
return this.l1TokenPortalManager.withdrawFunds(amount, this.ethAccount, epochNumber, numCheckpointsInEpoch, messageIndex, siblingPath);
|
|
208
212
|
}
|
|
209
213
|
async transferToPrivateOnL2(shieldAmount) {
|
|
210
214
|
this.logger.info('Transferring to private on L2');
|
|
211
215
|
await this.l2Token.methods.transfer_to_private(this.ownerAddress, shieldAmount).send({
|
|
212
216
|
from: this.ownerAddress
|
|
213
|
-
})
|
|
217
|
+
});
|
|
214
218
|
}
|
|
215
219
|
async transferToPublicOnL2(amount, authwitNonce = Fr.ZERO) {
|
|
216
220
|
this.logger.info('Transferring tokens to public');
|
|
217
221
|
await this.l2Token.methods.transfer_to_public(this.ownerAddress, this.ownerAddress, amount, authwitNonce).send({
|
|
218
222
|
from: this.ownerAddress
|
|
219
|
-
})
|
|
223
|
+
});
|
|
220
224
|
}
|
|
221
225
|
/**
|
|
222
226
|
* Makes message available for consumption.
|
|
@@ -226,8 +230,9 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
226
230
|
* it's included it becomes available for consumption in the next block because the l1 to l2 message tree.
|
|
227
231
|
*/ async makeMessageConsumable(msgHash) {
|
|
228
232
|
const frMsgHash = typeof msgHash === 'string' ? Fr.fromHexString(msgHash) : msgHash;
|
|
229
|
-
|
|
230
|
-
|
|
233
|
+
await waitForL1ToL2MessageSeen(this.aztecNode, frMsgHash, {
|
|
234
|
+
timeoutSeconds: 10
|
|
235
|
+
});
|
|
231
236
|
await this.mintTokensPublicOnL2(0n);
|
|
232
237
|
await this.mintTokensPublicOnL2(0n);
|
|
233
238
|
}
|
|
@@ -5,7 +5,9 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
5
5
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
6
6
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
7
7
|
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
|
|
8
|
-
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
8
|
+
import type { AztecNodeAdmin, AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
|
|
9
|
+
/** Aztec node that may expose the debug mining API in local e2e setups. */
|
|
10
|
+
type MiningAztecNode = AztecNode & Partial<AztecNodeDebug>;
|
|
9
11
|
export interface IGasBridgingTestHarness {
|
|
10
12
|
getL1FeeJuiceBalance(address: EthAddress): Promise<bigint>;
|
|
11
13
|
prepareTokensOnL1(owner: AztecAddress): Promise<L2AmountClaim>;
|
|
@@ -14,7 +16,7 @@ export interface IGasBridgingTestHarness {
|
|
|
14
16
|
l1FeeJuiceAddress: EthAddress;
|
|
15
17
|
}
|
|
16
18
|
export interface FeeJuicePortalTestingHarnessFactoryConfig {
|
|
17
|
-
aztecNode:
|
|
19
|
+
aztecNode: MiningAztecNode;
|
|
18
20
|
aztecNodeAdmin?: AztecNodeAdmin;
|
|
19
21
|
l1Client: ExtendedViemWalletClient;
|
|
20
22
|
wallet: Wallet;
|
|
@@ -33,7 +35,7 @@ export declare class FeeJuicePortalTestingHarnessFactory {
|
|
|
33
35
|
*/
|
|
34
36
|
export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
|
|
35
37
|
/** Aztec node */
|
|
36
|
-
aztecNode:
|
|
38
|
+
aztecNode: MiningAztecNode;
|
|
37
39
|
/** Aztec node admin interface */
|
|
38
40
|
aztecNodeAdmin: AztecNodeAdmin | undefined;
|
|
39
41
|
/** Wallet. */
|
|
@@ -56,7 +58,7 @@ export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
|
|
|
56
58
|
readonly feeJuicePortalManager: L1FeeJuicePortalManager;
|
|
57
59
|
constructor(
|
|
58
60
|
/** Aztec node */
|
|
59
|
-
aztecNode:
|
|
61
|
+
aztecNode: MiningAztecNode,
|
|
60
62
|
/** Aztec node admin interface */
|
|
61
63
|
aztecNodeAdmin: AztecNodeAdmin | undefined,
|
|
62
64
|
/** Wallet. */
|
|
@@ -85,4 +87,5 @@ export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
|
|
|
85
87
|
bridgeFromL1ToL2(owner: AztecAddress, claimer: AztecAddress): Promise<void>;
|
|
86
88
|
private advanceL2Block;
|
|
87
89
|
}
|
|
88
|
-
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUt0RiwyRUFBMkU7QUFDM0UsS0FBSyxlQUFlLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUUzRCxNQUFNLFdBQVcsdUJBQXVCO0lBQ3RDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELGdCQUFnQixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsUUFBUSxFQUFFLGdCQUFnQixDQUFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas_portal_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/gas_portal_test_harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE5G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"gas_portal_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/gas_portal_test_harness.ts"],"names":[],"mappings":"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"}
|