@aztec/end-to-end 0.0.1-commit.c2eed6949 → 0.0.1-commit.c52d6e7
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 +229 -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/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.d.ts +1 -1
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -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 +23 -36
- 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 +24 -39
- 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 +56 -58
- package/dest/bench/client_flows/data_extractor.js +1 -0
- package/dest/bench/utils.d.ts +3 -3
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +97 -6
- 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 +1 -1
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -1
- package/dest/fixtures/authwit_proxy.js +4 -0
- package/dest/fixtures/e2e_prover_test.d.ts +12 -9
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +53 -35
- package/dest/fixtures/fixtures.d.ts +79 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +80 -0
- package/dest/fixtures/get_acvm_config.d.ts +1 -1
- package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
- package/dest/fixtures/get_acvm_config.js +2 -2
- 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 +2 -2
- package/dest/fixtures/ha_setup.d.ts +4 -4
- package/dest/fixtures/ha_setup.d.ts.map +1 -1
- package/dest/fixtures/ha_setup.js +5 -2
- package/dest/fixtures/index.d.ts +2 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +1 -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 +81 -42
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +289 -198
- package/dest/fixtures/setup_p2p_test.d.ts +10 -6
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +11 -11
- package/dest/fixtures/standard_contracts_genesis.d.ts +16 -0
- package/dest/fixtures/standard_contracts_genesis.d.ts.map +1 -0
- package/dest/fixtures/standard_contracts_genesis.js +25 -0
- 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 +23 -6
- 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 +19 -10
- package/dest/p2p/p2p_network.d.ts.map +1 -0
- package/dest/{e2e_p2p → p2p}/p2p_network.js +82 -38
- package/dest/p2p/reqresp/utils.d.ts +19 -0
- package/dest/p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/{e2e_p2p → p2p}/reqresp/utils.js +32 -29
- 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 +6 -4
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +33 -21
- package/dest/shared/gas_portal_test_harness.d.ts +9 -6
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +26 -15
- package/dest/shared/submit-transactions.d.ts +1 -1
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +12 -5
- 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 +50 -37
- 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 +24 -12
- 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 +17 -4
- package/dest/single-node/fees/fees_test.d.ts +95 -0
- package/dest/single-node/fees/fees_test.d.ts.map +1 -0
- package/dest/single-node/fees/fees_test.js +344 -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 +374 -0
- package/dest/single-node/single_node_test_context.d.ts.map +1 -0
- package/dest/single-node/single_node_test_context.js +847 -0
- package/dest/spartan/setup_test_wallets.d.ts +1 -1
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +84 -50
- package/dest/spartan/tx_metrics.d.ts +27 -4
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +105 -20
- package/dest/spartan/utils/config.d.ts +9 -35
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +2 -2
- package/dest/test-wallet/test_wallet.d.ts +39 -10
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +166 -59
- package/dest/test-wallet/utils.d.ts +38 -3
- package/dest/test-wallet/utils.d.ts.map +1 -1
- package/dest/test-wallet/utils.js +65 -10
- package/dest/test-wallet/wallet_worker_script.js +12 -4
- package/dest/test-wallet/worker_wallet.d.ts +9 -8
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -1
- package/dest/test-wallet/worker_wallet.js +10 -4
- package/dest/test-wallet/worker_wallet_schema.d.ts +3 -273
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -1
- package/dest/test-wallet/worker_wallet_schema.js +15 -2
- package/package.json +47 -42
- package/src/automine/README.md +60 -0
- package/src/automine/automine_test_context.ts +153 -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 +24 -47
- package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +25 -48
- 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 +106 -80
- package/src/bench/client_flows/data_extractor.ts +1 -0
- package/src/bench/utils.ts +110 -6
- package/src/composed/ha/ha_full_setup.ts +466 -0
- package/src/fixtures/authwit_proxy.ts +4 -0
- package/src/fixtures/e2e_prover_test.ts +68 -52
- package/src/fixtures/fixtures.ts +100 -0
- package/src/fixtures/get_acvm_config.ts +2 -8
- package/src/fixtures/get_bb_config.ts +1 -2
- package/src/fixtures/ha_setup.ts +11 -5
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +361 -256
- package/src/fixtures/setup_p2p_test.ts +15 -11
- package/src/fixtures/standard_contracts_genesis.ts +28 -0
- package/src/fixtures/timing.ts +97 -0
- package/src/fixtures/token_utils.ts +40 -8
- 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 +5 -2
- 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 +96 -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 +95 -50
- package/src/{e2e_p2p → p2p}/reqresp/utils.ts +35 -28
- package/src/p2p/shared.ts +329 -0
- package/src/shared/cross_chain_test_harness.ts +36 -17
- package/src/shared/gas_portal_test_harness.ts +34 -17
- package/src/shared/submit-transactions.ts +13 -5
- package/src/shared/timing_env.d.mts +39 -0
- package/src/shared/timing_env.mjs +363 -0
- package/src/shared/uniswap_l1_l2.ts +80 -43
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +28 -14
- package/src/single-node/README.md +66 -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 +19 -5
- package/src/single-node/fees/fees_test.ts +434 -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 +1058 -0
- package/src/spartan/setup_test_wallets.ts +87 -47
- package/src/spartan/tx_metrics.ts +107 -23
- package/src/spartan/utils/nodes.ts +2 -2
- package/src/test-wallet/test_wallet.ts +185 -60
- package/src/test-wallet/utils.ts +104 -11
- package/src/test-wallet/wallet_worker_script.ts +11 -5
- package/src/test-wallet/worker_wallet.ts +19 -16
- package/src/test-wallet/worker_wallet_schema.ts +4 -3
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -55
- 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 -129
- 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 -104
- package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
- package/dest/e2e_epochs/epochs_test.js +0 -389
- 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_fees/fees_test.js +0 -255
- package/dest/e2e_l1_publisher/write_json.d.ts +0 -11
- package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
- package/dest/e2e_l1_publisher/write_json.js +0 -56
- 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 -54
- 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/reqresp/utils.d.ts +0 -22
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.d.ts +0 -66
- package/dest/e2e_p2p/shared.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.js +0 -212
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +0 -2
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +0 -1
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +0 -1
- package/dest/e2e_token_contract/token_contract_test.d.ts +0 -44
- 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 -193
- package/src/e2e_deploy_contract/deploy_test.ts +0 -85
- package/src/e2e_epochs/epochs_test.ts +0 -499
- package/src/e2e_fees/fees_test.ts +0 -331
- package/src/e2e_l1_publisher/write_json.ts +0 -77
- 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 -343
- /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.js +0 -0
- /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.js +0 -0
- /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof.json +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.ts +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.ts +0 -0
- /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
|
@@ -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,22 +19,29 @@ 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
|
-
//
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const { contract: bridge } = await TokenBridgeContract.deploy(wallet, token.address, tokenPortalAddress).send({
|
|
34
|
-
from: owner
|
|
30
|
+
// Deploy the L2 token and its bridge concurrently so they share a slot: the bridge takes the token
|
|
31
|
+
// address as a constructor arg, but that address is known deterministically before the token deploy
|
|
32
|
+
// mines, and the bridge's constructor only stores it without calling into the token.
|
|
33
|
+
const tokenDeploy = TokenContract.deploy(wallet, owner, 'TokenName', 'TokenSymbol', 18, {
|
|
34
|
+
deployer: owner
|
|
35
35
|
});
|
|
36
|
+
const tokenAddress = await tokenDeploy.getAddress();
|
|
37
|
+
const [{ contract: token }, { contract: bridge }] = await Promise.all([
|
|
38
|
+
testSpan('deploy:token', ()=>tokenDeploy.send({
|
|
39
|
+
from: owner
|
|
40
|
+
})),
|
|
41
|
+
testSpan('deploy:bridge', ()=>TokenBridgeContract.deploy(wallet, tokenAddress, tokenPortalAddress).send({
|
|
42
|
+
from: owner
|
|
43
|
+
}))
|
|
44
|
+
]);
|
|
36
45
|
if ((await token.methods.get_admin().simulate({
|
|
37
46
|
from: owner
|
|
38
47
|
})).result !== owner.toBigInt()) {
|
|
@@ -86,17 +95,18 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
86
95
|
l1ContractAddresses;
|
|
87
96
|
wallet;
|
|
88
97
|
ownerAddress;
|
|
89
|
-
static async new(aztecNode, l1Client, wallet, ownerAddress, logger, underlyingERC20Address) {
|
|
98
|
+
static async new(aztecNode, l1Client, wallet, ownerAddress, logger, underlyingERC20Address, predeployedTokenPortalAddress) {
|
|
90
99
|
const ethAccount = EthAddress.fromString((await l1Client.getAddresses())[0]);
|
|
91
100
|
const l1ContractAddresses = (await aztecNode.getNodeInfo()).l1ContractAddresses;
|
|
92
101
|
// Deploy and initialize all required contracts
|
|
93
102
|
logger.info('Deploying and initializing token, portal and its bridge...');
|
|
94
|
-
const { token, bridge, tokenPortalAddress, underlyingERC20 } = await deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, l1ContractAddresses.registryAddress, ownerAddress, underlyingERC20Address);
|
|
103
|
+
const { token, bridge, tokenPortalAddress, underlyingERC20 } = await deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, l1ContractAddresses.registryAddress, ownerAddress, underlyingERC20Address, predeployedTokenPortalAddress);
|
|
95
104
|
logger.info('Deployed and initialized token, portal and its bridge.');
|
|
96
105
|
return new CrossChainTestHarness(aztecNode, logger, token, bridge, ethAccount, tokenPortalAddress, underlyingERC20.address, l1Client, l1ContractAddresses, wallet, ownerAddress);
|
|
97
106
|
}
|
|
98
107
|
l1TokenManager;
|
|
99
108
|
l1TokenPortalManager;
|
|
109
|
+
outboxContract;
|
|
100
110
|
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
111
|
this.aztecNode = aztecNode;
|
|
102
112
|
this.logger = logger;
|
|
@@ -111,6 +121,7 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
111
121
|
this.ownerAddress = ownerAddress;
|
|
112
122
|
this.l1TokenPortalManager = new L1TokenPortalManager(this.tokenPortalAddress, this.underlyingERC20Address, this.l1ContractAddresses.feeAssetHandlerAddress, this.l1ContractAddresses.outboxAddress, this.l1Client, this.logger);
|
|
113
123
|
this.l1TokenManager = this.l1TokenPortalManager.getTokenManager();
|
|
124
|
+
this.outboxContract = new OutboxContract(this.l1Client, this.l1ContractAddresses.outboxAddress);
|
|
114
125
|
}
|
|
115
126
|
async mintTokensOnL1(amount) {
|
|
116
127
|
const contract = getContract({
|
|
@@ -139,12 +150,12 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
139
150
|
}
|
|
140
151
|
async mintTokensPublicOnL2(amount) {
|
|
141
152
|
this.logger.info('Minting tokens on L2 publicly');
|
|
142
|
-
await this.l2Token.methods.mint_to_public(this.ownerAddress, amount).send({
|
|
143
|
-
|
|
144
|
-
|
|
153
|
+
await testSpan('tx:mint', ()=>this.l2Token.methods.mint_to_public(this.ownerAddress, amount).send({
|
|
154
|
+
from: this.ownerAddress
|
|
155
|
+
}));
|
|
145
156
|
}
|
|
146
157
|
async mintTokensPrivateOnL2(amount) {
|
|
147
|
-
await mintTokensToPrivate(this.l2Token, this.ownerAddress, this.ownerAddress, amount);
|
|
158
|
+
await testSpan('tx:mint', ()=>mintTokensToPrivate(this.l2Token, this.ownerAddress, this.ownerAddress, amount));
|
|
148
159
|
}
|
|
149
160
|
async sendL2PublicTransfer(transferAmount, receiverAddress) {
|
|
150
161
|
// send a transfer tx to force through rollup with the message included
|
|
@@ -203,8 +214,8 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
203
214
|
async getL2ToL1MessageLeaf(withdrawAmount, callerOnL1 = EthAddress.ZERO) {
|
|
204
215
|
return await this.l1TokenPortalManager.getL2ToL1MessageLeaf(withdrawAmount, this.ethAccount, this.l2Bridge.address, callerOnL1);
|
|
205
216
|
}
|
|
206
|
-
withdrawFundsFromBridgeOnL1(amount, epochNumber, messageIndex, siblingPath) {
|
|
207
|
-
return this.l1TokenPortalManager.withdrawFunds(amount, this.ethAccount, epochNumber, messageIndex, siblingPath);
|
|
217
|
+
withdrawFundsFromBridgeOnL1(amount, epochNumber, numCheckpointsInEpoch, messageIndex, siblingPath) {
|
|
218
|
+
return this.l1TokenPortalManager.withdrawFunds(amount, this.ethAccount, epochNumber, numCheckpointsInEpoch, messageIndex, siblingPath);
|
|
208
219
|
}
|
|
209
220
|
async transferToPrivateOnL2(shieldAmount) {
|
|
210
221
|
this.logger.info('Transferring to private on L2');
|
|
@@ -226,8 +237,9 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
226
237
|
* it's included it becomes available for consumption in the next block because the l1 to l2 message tree.
|
|
227
238
|
*/ async makeMessageConsumable(msgHash) {
|
|
228
239
|
const frMsgHash = typeof msgHash === 'string' ? Fr.fromHexString(msgHash) : msgHash;
|
|
229
|
-
|
|
230
|
-
|
|
240
|
+
await waitForL1ToL2MessageSeen(this.aztecNode, frMsgHash, {
|
|
241
|
+
timeoutSeconds: 10
|
|
242
|
+
});
|
|
231
243
|
await this.mintTokensPublicOnL2(0n);
|
|
232
244
|
await this.mintTokensPublicOnL2(0n);
|
|
233
245
|
}
|
|
@@ -2,10 +2,12 @@ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
|
2
2
|
import { L1FeeJuicePortalManager, type L1TokenManager, type L2AmountClaim } from '@aztec/aztec.js/ethereum';
|
|
3
3
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
4
4
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
5
|
+
import { FeeJuiceContract } from '@aztec/aztec.js/protocol';
|
|
5
6
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
6
7
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
7
|
-
import {
|
|
8
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUt0RiwyRUFBMkU7QUFDM0UsS0FBSyxlQUFlLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUUzRCxNQUFNLFdBQVcsdUJBQXVCO0lBQ3RDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELGdCQUFnQixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDO0lBQzNCLGlCQUFpQixFQUFFLFVBQVUsQ0FBQztDQUMvQjtBQUVELE1BQU0sV0FBVyx5Q0FBeUM7SUFDeEQsU0FBUyxFQUFFLGVBQWUsQ0FBQztJQUMzQixjQUFjLENBQUMsRUFBRSxjQUFjLENBQUM7SUFDaEMsUUFBUSxFQUFFLHdCQUF3QixDQUFDO0lBQ25DLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xCO0FBRUQscUJBQWEsbUNBQW1DO0lBQzFCLE9BQU8sQ0FBQyxNQUFNO0lBQWxDLE9BQU8sZUFBMEU7WUFFbkUsVUFBVTtJQTZCeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUseUNBQXlDLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBR2hHO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxxQkFBYSxzQkFBdUIsWUFBVyx1QkFBdUI7SUFLbEUsaUJBQWlCO0lBQ1YsU0FBUyxFQUFFLGVBQWU7SUFDakMsaUNBQWlDO0lBQzFCLGNBQWMsRUFBRSxjQUFjLEdBQUcsU0FBUztJQUNqRCxjQUFjO0lBQ1AsTUFBTSxFQUFFLE1BQU07SUFDckIsY0FBYztJQUNQLE1BQU0sRUFBRSxNQUFNO0lBRXJCLGdDQUFnQztJQUN6QixRQUFRLEVBQUUsZ0JBQWdCO0lBRWpDLG9DQUFvQztJQUM3QixVQUFVLEVBQUUsVUFBVTtJQUU3QixzQkFBc0I7SUFDZixxQkFBcUIsRUFBRSxVQUFVO0lBQ3hDLHlDQUF5QztJQUNsQyxpQkFBaUIsRUFBRSxVQUFVO0lBQ3BDLGlDQUFpQztJQUMxQixzQkFBc0IsRUFBRSxVQUFVO0lBQ3pDLHFDQUFxQztJQUM5QixRQUFRLEVBQUUsd0JBQXdCO0lBMUIzQyxTQUFnQixjQUFjLEVBQUUsY0FBYyxDQUFDO0lBQy9DLFNBQWdCLHFCQUFxQixFQUFFLHVCQUF1QixDQUFDO0lBRS9EO0lBQ0UsaUJBQWlCO0lBQ1YsU0FBUyxFQUFFLGVBQWU7SUFDakMsaUNBQWlDO0lBQzFCLGNBQWMsRUFBRSxjQUFjLEdBQUcsU0FBUztJQUNqRCxjQUFjO0lBQ1AsTUFBTSxFQUFFLE1BQU07SUFDckIsY0FBYztJQUNQLE1BQU0sRUFBRSxNQUFNO0lBRXJCLGdDQUFnQztJQUN6QixRQUFRLEVBQUUsZ0JBQWdCO0lBRWpDLG9DQUFvQztJQUM3QixVQUFVLEVBQUUsVUFBVTtJQUU3QixzQkFBc0I7SUFDZixxQkFBcUIsRUFBRSxVQUFVO0lBQ3hDLHlDQUF5QztJQUNsQyxpQkFBaUIsRUFBRSxVQUFVO0lBQ3BDLGlDQUFpQztJQUMxQixzQkFBc0IsRUFBRSxVQUFVO0lBQ3pDLHFDQUFxQztJQUM5QixRQUFRLEVBQUUsd0JBQXdCLEVBVzFDO0lBRUssY0FBYyxDQUFDLEVBQUUsR0FBRSxVQUE0QixpQkFLcEQ7SUFFSyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxtQkFFN0M7SUFFRCx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLDBCQUVyRTtJQUVLLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsYUFBYSxpQkFJNUc7SUFFSyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxnQkFFN0M7SUFFSyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUd6RTtJQUVLLGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLDBCQVkxQztJQUVLLGdCQUFnQixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksaUJBUWhFO1lBRWEsY0FBYztDQTJCN0IifQ==
|
|
@@ -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,
|
|
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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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
|
|
3
3
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
|
+
import { FeeJuiceContract } from '@aztec/aztec.js/protocol';
|
|
4
5
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
6
|
+
import { testSpan } from '../fixtures/timing.js';
|
|
7
|
+
import { waitForL1ToL2MessageSeen } from './wait_for_l1_to_l2_message.js';
|
|
7
8
|
export class FeeJuicePortalTestingHarnessFactory {
|
|
8
9
|
config;
|
|
9
10
|
constructor(config){
|
|
@@ -18,7 +19,7 @@ export class FeeJuicePortalTestingHarnessFactory {
|
|
|
18
19
|
if (feeJuiceAddress.isZero() || feeJuicePortalAddress.isZero()) {
|
|
19
20
|
throw new Error('Fee Juice portal not deployed on L1');
|
|
20
21
|
}
|
|
21
|
-
const gasL2 = FeeJuiceContract.
|
|
22
|
+
const gasL2 = FeeJuiceContract.withWallet(wallet);
|
|
22
23
|
return new GasBridgingTestHarness(aztecNode, aztecNodeAdmin, wallet, logger, gasL2, ethAccount, feeJuicePortalAddress, feeJuiceAddress, l1ContractAddresses.feeAssetHandlerAddress, l1Client);
|
|
23
24
|
}
|
|
24
25
|
static create(config) {
|
|
@@ -87,20 +88,27 @@ export class FeeJuicePortalTestingHarnessFactory {
|
|
|
87
88
|
const bridgeAmount = await this.l1TokenManager.getMintAmount();
|
|
88
89
|
await this.mintTokensOnL1();
|
|
89
90
|
const claim = await this.sendTokensToPortalPublic(bridgeAmount, owner);
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
await waitForL1ToL2MessageSeen(this.aztecNode, Fr.fromHexString(claim.messageHash), {
|
|
92
|
+
timeoutSeconds: 24
|
|
93
|
+
});
|
|
92
94
|
// Progress by 2 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
|
|
93
95
|
await this.advanceL2Block();
|
|
94
96
|
await this.advanceL2Block();
|
|
95
97
|
return claim;
|
|
96
98
|
}
|
|
97
99
|
async bridgeFromL1ToL2(owner, claimer) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
await testSpan('setup:bridge', async ()=>{
|
|
101
|
+
// Prepare the tokens on the L1 side
|
|
102
|
+
const claim = await this.prepareTokensOnL1(owner);
|
|
103
|
+
// Consume L1 -> L2 message and claim tokens privately on L2
|
|
104
|
+
await this.consumeMessageOnAztecAndClaimPrivately(owner, claimer, claim);
|
|
105
|
+
});
|
|
102
106
|
}
|
|
103
107
|
async advanceL2Block() {
|
|
108
|
+
if (this.aztecNode.mineBlock) {
|
|
109
|
+
await this.aztecNode.mineBlock();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
104
112
|
const initialBlockNumber = await this.aztecNode.getBlockNumber();
|
|
105
113
|
let minTxsPerBlock = undefined;
|
|
106
114
|
if (this.aztecNodeAdmin) {
|
|
@@ -109,11 +117,14 @@ export class FeeJuicePortalTestingHarnessFactory {
|
|
|
109
117
|
minTxsPerBlock: 0
|
|
110
118
|
}); // Set to 0 to ensure we can advance the block
|
|
111
119
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
120
|
+
try {
|
|
121
|
+
await retryUntil(async ()=>await this.aztecNode.getBlockNumber() >= initialBlockNumber + 1, 'gas portal block advance', 0, 0.25);
|
|
122
|
+
} finally{
|
|
123
|
+
if (this.aztecNodeAdmin && minTxsPerBlock !== undefined) {
|
|
124
|
+
await this.aztecNodeAdmin.setConfig({
|
|
125
|
+
minTxsPerBlock
|
|
126
|
+
});
|
|
127
|
+
}
|
|
117
128
|
}
|
|
118
129
|
}
|
|
119
|
-
}
|
|
130
|
+
}
|
|
@@ -3,4 +3,4 @@ import type { Logger } from '@aztec/aztec.js/log';
|
|
|
3
3
|
import { TxHash } from '@aztec/aztec.js/tx';
|
|
4
4
|
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
5
5
|
export declare const submitTxsTo: (wallet: TestWallet, submitter: AztecAddress, numTxs: number, logger: Logger) => Promise<TxHash[]>;
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LXRyYW5zYWN0aW9ucy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC9zdWJtaXQtdHJhbnNhY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUE0QixNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2hFLGVBQU8sTUFBTSxXQUFXLG9HQTRCdkIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-transactions.d.ts","sourceRoot":"","sources":["../../src/shared/submit-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAA4B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"submit-transactions.d.ts","sourceRoot":"","sources":["../../src/shared/submit-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAA4B,MAAM,oBAAoB,CAAC;AAItE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,eAAO,MAAM,WAAW,oGA4BvB,CAAC"}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
2
|
-
import { Fr
|
|
1
|
+
import { NO_WAIT, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
3
|
import { TxStatus } from '@aztec/aztec.js/tx';
|
|
4
4
|
import { times } from '@aztec/foundation/collection';
|
|
5
|
+
import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.js/Test';
|
|
5
6
|
// submits a set of transactions to the provided Wallet
|
|
6
7
|
export const submitTxsTo = async (wallet, submitter, numTxs, logger)=>{
|
|
8
|
+
// Register (without deploying) a single TestContract instance to source cheap throwaway txs from.
|
|
9
|
+
// emit_nullifier is #[noinitcheck], so it runs on a register-only instance — this avoids a full
|
|
10
|
+
// account-contract deployment per tx, which is all these callers were paying for a mined/gossiped tx.
|
|
11
|
+
const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {
|
|
12
|
+
salt: Fr.random()
|
|
13
|
+
});
|
|
14
|
+
await wallet.registerContract(testContractInstance, TestContractArtifact);
|
|
15
|
+
const contract = TestContract.at(testContractInstance.address, wallet);
|
|
7
16
|
const txHashes = [];
|
|
8
17
|
await Promise.all(times(numTxs, async ()=>{
|
|
9
|
-
const
|
|
10
|
-
const deployMethod = await accountManager.getDeployMethod();
|
|
11
|
-
const { txHash } = await deployMethod.send({
|
|
18
|
+
const { txHash } = await contract.methods.emit_nullifier(Fr.random()).send({
|
|
12
19
|
from: submitter,
|
|
13
20
|
wait: NO_WAIT
|
|
14
21
|
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** A single recorded span occurrence on the shared `performance.now()` clock. */ /**
|
|
2
|
+
* Groups `spans` by owner then tag, attaches a `spans` aggregate map to the matching record (or
|
|
3
|
+
* `suiteRecord` for `null`-owner spans), derives back-compat `setupFnMs` / `teardownFnMs`, drops spans
|
|
4
|
+
* whose owner matches no record, and returns the raw per-occurrence list (empty unless `emitSpanLines`).
|
|
5
|
+
*/ export { };
|