@aztec/end-to-end 0.0.1-commit.fcb71a6 → 0.0.1-commit.ff7989d6c
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/dest/bench/client_flows/benchmark.d.ts +3 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +21 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +13 -14
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +121 -136
- 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 +3 -1
- package/dest/bench/utils.d.ts +9 -8
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +17 -12
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +9 -8
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +106 -112
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +16 -11
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +90 -70
- package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +18 -13
- package/dest/e2e_epochs/epochs_test.d.ts +15 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +87 -40
- package/dest/e2e_fees/bridging_race.notest.js +3 -5
- package/dest/e2e_fees/fees_test.d.ts +14 -14
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +125 -143
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +14 -16
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +31 -39
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +8 -7
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +127 -106
- package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/e2e_p2p/reqresp/utils.js +177 -0
- package/dest/e2e_p2p/shared.d.ts +6 -6
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +18 -21
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
- package/dest/e2e_token_contract/token_contract_test.d.ts +19 -10
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +99 -91
- 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 +30 -0
- package/dest/fixtures/e2e_prover_test.d.ts +11 -17
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +112 -128
- package/dest/fixtures/fixtures.d.ts +5 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +6 -0
- 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 +116 -0
- 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/setup.d.ts +235 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +605 -0
- package/dest/fixtures/setup_p2p_test.d.ts +16 -9
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +40 -29
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +10 -6
- package/dest/fixtures/utils.d.ts +5 -194
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -619
- package/dest/quality_of_service/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +16 -6
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +13 -13
- package/dest/shared/gas_portal_test_harness.d.ts +11 -1
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +1 -1
- package/dest/shared/index.d.ts +3 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/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 +9 -11
- package/dest/shared/uniswap_l1_l2.d.ts +3 -28
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +53 -33
- package/dest/simulators/lending_simulator.d.ts +5 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +2 -2
- 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 +2 -23
- package/dest/spartan/setup_test_wallets.d.ts +12 -4
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +92 -35
- package/dest/spartan/tx_metrics.d.ts +51 -2
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +333 -6
- 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 +39 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +21 -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 +9 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +18 -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 +460 -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 -253
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -892
- package/dest/test-wallet/test_wallet.d.ts +83 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +214 -0
- package/dest/test-wallet/utils.d.ts +41 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +71 -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 +40 -0
- package/dest/test-wallet/worker_wallet.d.ts +52 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +103 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +10 -0
- package/package.json +44 -39
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +141 -211
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +1 -1
- package/src/bench/utils.ts +21 -15
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +114 -143
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +127 -117
- package/src/e2e_deploy_contract/deploy_test.ts +22 -15
- package/src/e2e_epochs/epochs_test.ts +130 -94
- package/src/e2e_fees/bridging_race.notest.ts +4 -10
- package/src/e2e_fees/fees_test.ts +164 -227
- package/src/e2e_l1_publisher/write_json.ts +16 -16
- package/src/e2e_nested_contract/nested_contract_test.ts +33 -56
- package/src/e2e_p2p/inactivity_slash_test.ts +3 -3
- package/src/e2e_p2p/p2p_network.ts +197 -171
- package/src/e2e_p2p/reqresp/utils.ts +235 -0
- package/src/e2e_p2p/shared.ts +28 -27
- package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
- package/src/e2e_token_contract/token_contract_test.ts +113 -119
- package/src/fixtures/authwit_proxy.ts +50 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +127 -172
- package/src/fixtures/fixtures.ts +10 -0
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/setup.ts +896 -0
- package/src/fixtures/setup_p2p_test.ts +40 -44
- package/src/fixtures/token_utils.ts +7 -5
- package/src/fixtures/utils.ts +27 -907
- package/src/guides/up_quick_start.sh +3 -3
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +16 -36
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/index.ts +2 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +14 -16
- package/src/shared/uniswap_l1_l2.ts +59 -80
- package/src/simulators/lending_simulator.ts +2 -2
- package/src/simulators/token_simulator.ts +1 -29
- package/src/spartan/setup_test_wallets.ts +134 -26
- package/src/spartan/tx_metrics.ts +255 -9
- 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 +27 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +65 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +535 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -1158
- package/src/test-wallet/test_wallet.ts +306 -0
- package/src/test-wallet/utils.ts +112 -0
- package/src/test-wallet/wallet_worker_script.ts +43 -0
- package/src/test-wallet/worker_wallet.ts +165 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
- package/dest/fixtures/snapshot_manager.d.ts +0 -93
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -493
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/fixtures/snapshot_manager.ts +0 -651
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { computeAuthWitMessageHash } from '@aztec/aztec.js/authorization';
|
|
3
|
+
import { waitForProven } from '@aztec/aztec.js/contracts';
|
|
3
4
|
import { generateClaimSecret } from '@aztec/aztec.js/ethereum';
|
|
4
5
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
6
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
@@ -10,17 +11,18 @@ import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-az
|
|
|
10
11
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
11
12
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
12
13
|
import { extractEvent } from '@aztec/ethereum/utils';
|
|
14
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
13
15
|
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
14
16
|
import { InboxAbi, UniswapPortalAbi, UniswapPortalBytecode } from '@aztec/l1-artifacts';
|
|
15
17
|
import { UniswapContract } from '@aztec/noir-contracts.js/Uniswap';
|
|
16
18
|
import { computeL2ToL1MessageHash } from '@aztec/stdlib/hash';
|
|
17
19
|
import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
18
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
19
20
|
|
|
20
21
|
import { jest } from '@jest/globals';
|
|
21
22
|
import { type GetContractReturnType, getContract, parseEther, toFunctionSelector } from 'viem';
|
|
22
23
|
|
|
23
|
-
import { ensureAccountContractsPublished } from '../fixtures/utils.js';
|
|
24
|
+
import { type EndToEndContext, ensureAccountContractsPublished } from '../fixtures/utils.js';
|
|
25
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
24
26
|
import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
25
27
|
|
|
26
28
|
// PSA: This tests works on forked mainnet. There is a dump of the data in `dumpedState` such that we
|
|
@@ -32,28 +34,8 @@ import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
|
32
34
|
|
|
33
35
|
const TIMEOUT = 360_000;
|
|
34
36
|
|
|
35
|
-
/** Objects to be returned by the uniswap setup function */
|
|
36
|
-
export type UniswapSetupContext = {
|
|
37
|
-
/** Aztec Node instance */
|
|
38
|
-
aztecNode: AztecNode;
|
|
39
|
-
/** Logger instance named as the current test. */
|
|
40
|
-
logger: Logger;
|
|
41
|
-
/** The L1 wallet client, extended with public actions. */
|
|
42
|
-
l1Client: ExtendedViemWalletClient;
|
|
43
|
-
/** The wallet. */
|
|
44
|
-
wallet: TestWallet;
|
|
45
|
-
/** The owner address. */
|
|
46
|
-
ownerAddress: AztecAddress;
|
|
47
|
-
/** The sponsor wallet. */
|
|
48
|
-
sponsorAddress: AztecAddress;
|
|
49
|
-
/** */
|
|
50
|
-
deployL1ContractsValues: DeployAztecL1ContractsReturnType;
|
|
51
|
-
/** Cheat codes instance. */
|
|
52
|
-
cheatCodes: CheatCodes;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
37
|
export const uniswapL1L2TestSuite = (
|
|
56
|
-
setup: () => Promise<
|
|
38
|
+
setup: () => Promise<EndToEndContext>,
|
|
57
39
|
cleanup: () => Promise<void>,
|
|
58
40
|
expectedForkBlockNumber = 17514288,
|
|
59
41
|
) => {
|
|
@@ -90,8 +72,19 @@ export const uniswapL1L2TestSuite = (
|
|
|
90
72
|
let cheatCodes: CheatCodes;
|
|
91
73
|
let version: number;
|
|
92
74
|
beforeAll(async () => {
|
|
93
|
-
|
|
94
|
-
|
|
75
|
+
const t = await setup();
|
|
76
|
+
({
|
|
77
|
+
aztecNode,
|
|
78
|
+
logger,
|
|
79
|
+
deployL1ContractsValues,
|
|
80
|
+
cheatCodes,
|
|
81
|
+
wallet,
|
|
82
|
+
accounts: [ownerAddress, sponsorAddress],
|
|
83
|
+
} = t);
|
|
84
|
+
|
|
85
|
+
l1Client = deployL1ContractsValues.l1Client;
|
|
86
|
+
|
|
87
|
+
t.watcher.setIsMarkingAsProven(false);
|
|
95
88
|
|
|
96
89
|
if (Number(await l1Client.getBlockNumber()) < expectedForkBlockNumber) {
|
|
97
90
|
throw new Error('This test must be run on a fork of mainnet with the expected fork block');
|
|
@@ -137,9 +130,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
137
130
|
client: l1Client,
|
|
138
131
|
});
|
|
139
132
|
// deploy l2 uniswap contract and attach to portal
|
|
140
|
-
uniswapL2Contract = await UniswapContract.deploy(wallet, uniswapPortalAddress)
|
|
141
|
-
.send({ from: ownerAddress })
|
|
142
|
-
.deployed();
|
|
133
|
+
uniswapL2Contract = await UniswapContract.deploy(wallet, uniswapPortalAddress).send({ from: ownerAddress });
|
|
143
134
|
|
|
144
135
|
const registryAddress = (await aztecNode.getNodeInfo()).l1ContractAddresses.registryAddress;
|
|
145
136
|
|
|
@@ -216,8 +207,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
216
207
|
secretHashForDepositingSwappedDai,
|
|
217
208
|
ownerEthAddress,
|
|
218
209
|
)
|
|
219
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] })
|
|
220
|
-
.wait();
|
|
210
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] });
|
|
221
211
|
|
|
222
212
|
const swapPrivateFunction = 'swap_private(address,uint256,uint24,address,uint256,bytes32,address)';
|
|
223
213
|
const swapPrivateContent = sha256ToField([
|
|
@@ -259,24 +249,19 @@ export const uniswapL1L2TestSuite = (
|
|
|
259
249
|
// ensure that uniswap contract didn't eat the funds.
|
|
260
250
|
await wethCrossChainHarness.expectPublicBalanceOnL2(uniswapL2Contract.address, 0n);
|
|
261
251
|
|
|
262
|
-
// Since the outbox is only consumable when the
|
|
263
|
-
await
|
|
252
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
253
|
+
const block = await aztecNode.getBlock(l2UniswapInteractionReceipt.blockNumber!);
|
|
254
|
+
const epoch = await rollup.getEpochNumberForCheckpoint(block!.checkpointNumber);
|
|
255
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
256
|
+
await waitForProven(aztecNode, l2UniswapInteractionReceipt, { provenTimeout: 300 });
|
|
264
257
|
|
|
265
258
|
// 5. Consume L2 to L1 message by calling uniswapPortal.swap_private()
|
|
266
259
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
267
260
|
const daiL1BalanceOfPortalBeforeSwap = await daiCrossChainHarness.getL1BalanceOf(
|
|
268
261
|
daiCrossChainHarness.tokenPortalAddress,
|
|
269
262
|
);
|
|
270
|
-
const swapResult = await computeL2ToL1MembershipWitness(
|
|
271
|
-
|
|
272
|
-
l2UniswapInteractionReceipt.blockNumber!,
|
|
273
|
-
swapPrivateLeaf,
|
|
274
|
-
);
|
|
275
|
-
const withdrawResult = await computeL2ToL1MembershipWitness(
|
|
276
|
-
aztecNode,
|
|
277
|
-
l2UniswapInteractionReceipt.blockNumber!,
|
|
278
|
-
withdrawLeaf,
|
|
279
|
-
);
|
|
263
|
+
const swapResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, swapPrivateLeaf);
|
|
264
|
+
const withdrawResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, withdrawLeaf);
|
|
280
265
|
|
|
281
266
|
const swapPrivateL2MessageIndex = swapResult!.leafIndex;
|
|
282
267
|
const swapPrivateSiblingPath = swapResult!.siblingPath;
|
|
@@ -285,7 +270,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
285
270
|
const withdrawSiblingPath = withdrawResult!.siblingPath;
|
|
286
271
|
|
|
287
272
|
const withdrawMessageMetadata = {
|
|
288
|
-
|
|
273
|
+
_epoch: BigInt(epoch),
|
|
289
274
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
290
275
|
_path: withdrawSiblingPath
|
|
291
276
|
.toBufferArray()
|
|
@@ -293,7 +278,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
293
278
|
};
|
|
294
279
|
|
|
295
280
|
const swapPrivateMessageMetadata = {
|
|
296
|
-
|
|
281
|
+
_epoch: BigInt(epoch),
|
|
297
282
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
298
283
|
_path: swapPrivateSiblingPath
|
|
299
284
|
.toBufferArray()
|
|
@@ -440,10 +425,10 @@ export const uniswapL1L2TestSuite = (
|
|
|
440
425
|
// ownerEthAddress,
|
|
441
426
|
// nonceForSwap,
|
|
442
427
|
// );
|
|
443
|
-
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send()
|
|
428
|
+
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send();
|
|
444
429
|
|
|
445
430
|
// // 4.2 Call swap_public from user2 on behalf of owner
|
|
446
|
-
// const uniswapL2Interaction = await action.send()
|
|
431
|
+
// const uniswapL2Interaction = await action.send();
|
|
447
432
|
|
|
448
433
|
// const swapPublicContent = sha256ToField([
|
|
449
434
|
// Buffer.from(
|
|
@@ -504,7 +489,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
504
489
|
// );
|
|
505
490
|
|
|
506
491
|
// const withdrawMessageMetadata = {
|
|
507
|
-
//
|
|
492
|
+
// _epoch: epoch,
|
|
508
493
|
// _leafIndex: BigInt(withdrawL2MessageIndex),
|
|
509
494
|
// _path: withdrawSiblingPath
|
|
510
495
|
// .toBufferArray()
|
|
@@ -512,7 +497,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
512
497
|
// };
|
|
513
498
|
|
|
514
499
|
// const swapPrivateMessageMetadata = {
|
|
515
|
-
//
|
|
500
|
+
// _epoch: epoch,
|
|
516
501
|
// _leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
517
502
|
// _path: swapPrivateSiblingPath
|
|
518
503
|
// .toBufferArray()
|
|
@@ -661,8 +646,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
661
646
|
Fr.random(),
|
|
662
647
|
ownerEthAddress,
|
|
663
648
|
)
|
|
664
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuthwith] })
|
|
665
|
-
.wait(),
|
|
649
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuthwith] }),
|
|
666
650
|
).rejects.toThrow('Assertion failed: input_asset address is not the same as seen in the bridge contract');
|
|
667
651
|
});
|
|
668
652
|
|
|
@@ -687,7 +671,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
687
671
|
},
|
|
688
672
|
true,
|
|
689
673
|
);
|
|
690
|
-
await validateActionInteraction.send()
|
|
674
|
+
await validateActionInteraction.send();
|
|
691
675
|
|
|
692
676
|
// No approval to call `swap` but should work even without it:
|
|
693
677
|
const [_, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
@@ -706,8 +690,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
706
690
|
ownerEthAddress,
|
|
707
691
|
Fr.ZERO, // nonce for swap -> doesn't matter
|
|
708
692
|
)
|
|
709
|
-
.send({ from: ownerAddress })
|
|
710
|
-
.wait();
|
|
693
|
+
.send({ from: ownerAddress });
|
|
711
694
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
712
695
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
713
696
|
});
|
|
@@ -737,7 +720,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
737
720
|
{ caller: approvedUser, action },
|
|
738
721
|
true,
|
|
739
722
|
);
|
|
740
|
-
await validateActionInteraction.send()
|
|
723
|
+
await validateActionInteraction.send();
|
|
741
724
|
|
|
742
725
|
await expect(action.simulate({ from: sponsorAddress })).rejects.toThrow(/unauthorized/);
|
|
743
726
|
});
|
|
@@ -759,7 +742,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
759
742
|
},
|
|
760
743
|
true,
|
|
761
744
|
);
|
|
762
|
-
await validateActionInteraction.send()
|
|
745
|
+
await validateActionInteraction.send();
|
|
763
746
|
|
|
764
747
|
await expect(
|
|
765
748
|
uniswapL2Contract.methods
|
|
@@ -816,8 +799,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
816
799
|
secretHashForDepositingSwappedDai,
|
|
817
800
|
ownerEthAddress,
|
|
818
801
|
)
|
|
819
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] })
|
|
820
|
-
.wait();
|
|
802
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] });
|
|
821
803
|
|
|
822
804
|
const swapPrivateContent = sha256ToField([
|
|
823
805
|
Buffer.from(
|
|
@@ -856,12 +838,10 @@ export const uniswapL1L2TestSuite = (
|
|
|
856
838
|
chainId: new Fr(l1Client.chain.id),
|
|
857
839
|
});
|
|
858
840
|
|
|
859
|
-
const
|
|
860
|
-
const
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
withdrawLeaf,
|
|
864
|
-
);
|
|
841
|
+
const block = await aztecNode.getBlock(withdrawReceipt.blockNumber!);
|
|
842
|
+
const epoch = await rollup.getEpochNumberForCheckpoint(block!.checkpointNumber);
|
|
843
|
+
const swapResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, swapPrivateLeaf);
|
|
844
|
+
const withdrawResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, withdrawLeaf);
|
|
865
845
|
|
|
866
846
|
const swapPrivateL2MessageIndex = swapResult!.leafIndex;
|
|
867
847
|
const swapPrivateSiblingPath = swapResult!.siblingPath;
|
|
@@ -870,7 +850,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
870
850
|
const withdrawSiblingPath = withdrawResult!.siblingPath;
|
|
871
851
|
|
|
872
852
|
const withdrawMessageMetadata = {
|
|
873
|
-
|
|
853
|
+
_epoch: BigInt(epoch),
|
|
874
854
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
875
855
|
_path: withdrawSiblingPath
|
|
876
856
|
.toBufferArray()
|
|
@@ -878,7 +858,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
878
858
|
};
|
|
879
859
|
|
|
880
860
|
const swapPrivateMessageMetadata = {
|
|
881
|
-
|
|
861
|
+
_epoch: BigInt(epoch),
|
|
882
862
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
883
863
|
_path: swapPrivateSiblingPath
|
|
884
864
|
.toBufferArray()
|
|
@@ -888,8 +868,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
888
868
|
// ensure that user's funds were burnt
|
|
889
869
|
await wethCrossChainHarness.expectPrivateBalanceOnL2(ownerAddress, wethL2BalanceBeforeSwap - wethAmountToBridge);
|
|
890
870
|
|
|
891
|
-
// Since the outbox is only consumable when the
|
|
892
|
-
await cheatCodes.rollup.
|
|
871
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
872
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
873
|
+
await waitForProven(aztecNode, withdrawReceipt, { provenTimeout: 300 });
|
|
893
874
|
|
|
894
875
|
// On L1 call swap_public!
|
|
895
876
|
logger.info('call swap_public on L1');
|
|
@@ -930,7 +911,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
930
911
|
},
|
|
931
912
|
true,
|
|
932
913
|
);
|
|
933
|
-
await validateActionInteraction.send()
|
|
914
|
+
await validateActionInteraction.send();
|
|
934
915
|
|
|
935
916
|
// Call swap_public on L2
|
|
936
917
|
const secretHashForDepositingSwappedDai = Fr.random();
|
|
@@ -948,8 +929,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
948
929
|
ownerEthAddress,
|
|
949
930
|
Fr.ZERO,
|
|
950
931
|
)
|
|
951
|
-
.send({ from: ownerAddress })
|
|
952
|
-
.wait();
|
|
932
|
+
.send({ from: ownerAddress });
|
|
953
933
|
|
|
954
934
|
const swapPublicContent = sha256ToField([
|
|
955
935
|
Buffer.from(
|
|
@@ -991,12 +971,10 @@ export const uniswapL1L2TestSuite = (
|
|
|
991
971
|
chainId: new Fr(l1Client.chain.id),
|
|
992
972
|
});
|
|
993
973
|
|
|
994
|
-
const
|
|
995
|
-
const
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
withdrawLeaf,
|
|
999
|
-
);
|
|
974
|
+
const block = await aztecNode.getBlock(withdrawReceipt.blockNumber!);
|
|
975
|
+
const epoch = await rollup.getEpochNumberForCheckpoint(block!.checkpointNumber);
|
|
976
|
+
const swapResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, swapPublicLeaf);
|
|
977
|
+
const withdrawResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, withdrawLeaf);
|
|
1000
978
|
|
|
1001
979
|
const swapPublicL2MessageIndex = swapResult!.leafIndex;
|
|
1002
980
|
const swapPublicSiblingPath = swapResult!.siblingPath;
|
|
@@ -1005,7 +983,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
1005
983
|
const withdrawSiblingPath = withdrawResult!.siblingPath;
|
|
1006
984
|
|
|
1007
985
|
const withdrawMessageMetadata = {
|
|
1008
|
-
|
|
986
|
+
_epoch: BigInt(epoch),
|
|
1009
987
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
1010
988
|
_path: withdrawSiblingPath
|
|
1011
989
|
.toBufferArray()
|
|
@@ -1013,7 +991,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
1013
991
|
};
|
|
1014
992
|
|
|
1015
993
|
const swapPublicMessageMetadata = {
|
|
1016
|
-
|
|
994
|
+
_epoch: BigInt(epoch),
|
|
1017
995
|
_leafIndex: BigInt(swapPublicL2MessageIndex),
|
|
1018
996
|
_path: swapPublicSiblingPath
|
|
1019
997
|
.toBufferArray()
|
|
@@ -1023,8 +1001,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
1023
1001
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
1024
1002
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
1025
1003
|
|
|
1026
|
-
// Since the outbox is only consumable when the
|
|
1027
|
-
await cheatCodes.rollup.
|
|
1004
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
1005
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
1006
|
+
await waitForProven(aztecNode, withdrawReceipt, { provenTimeout: 300 });
|
|
1028
1007
|
|
|
1029
1008
|
// Call swap_private on L1
|
|
1030
1009
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
@@ -4,7 +4,7 @@ import { Fr } from '@aztec/aztec.js/fields';
|
|
|
4
4
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
5
5
|
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
6
6
|
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
7
|
-
import {
|
|
7
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
8
8
|
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
9
9
|
import type { LendingContract } from '@aztec/noir-contracts.js/Lending';
|
|
10
10
|
|
|
@@ -29,7 +29,7 @@ export class LendingAccount {
|
|
|
29
29
|
* @returns Key in public space
|
|
30
30
|
*/
|
|
31
31
|
public key() {
|
|
32
|
-
return
|
|
32
|
+
return poseidon2Hash([this.address, this.secret]);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -119,39 +119,11 @@ export class TokenSimulator {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
async checkPrivate() {
|
|
122
|
-
// Private calls
|
|
123
|
-
const defaultLookups = [];
|
|
124
|
-
const nonDefaultLookups = [];
|
|
125
|
-
|
|
126
122
|
for (const address of this.accounts) {
|
|
127
|
-
if (this.lookupProvider.has(address.toString())) {
|
|
128
|
-
nonDefaultLookups.push(address);
|
|
129
|
-
} else {
|
|
130
|
-
defaultLookups.push(address);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const defaultCalls = defaultLookups.map(address => this.token.methods.balance_of_private(address));
|
|
135
|
-
const results = (
|
|
136
|
-
await Promise.all(
|
|
137
|
-
chunk(defaultCalls, 4).map(batch =>
|
|
138
|
-
new BatchCall(this.defaultWallet, batch).simulate({ from: this.defaultAddress }),
|
|
139
|
-
),
|
|
140
|
-
)
|
|
141
|
-
).flat();
|
|
142
|
-
for (let i = 0; i < defaultLookups.length; i++) {
|
|
143
|
-
expect(results[i]).toEqual(this.balanceOfPrivate(defaultLookups[i]));
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// We are just running individual calls for the non-default lookups
|
|
147
|
-
// @todo We should also batch these
|
|
148
|
-
for (const address of nonDefaultLookups) {
|
|
149
123
|
const wallet = this.lookupProvider.get(address.toString());
|
|
150
124
|
const asset = wallet ? this.token.withWallet(wallet) : this.token;
|
|
151
125
|
|
|
152
|
-
const actualPrivateBalance = await asset.methods
|
|
153
|
-
.balance_of_private({ address })
|
|
154
|
-
.simulate({ from: this.defaultAddress });
|
|
126
|
+
const actualPrivateBalance = await asset.methods.balance_of_private(address).simulate({ from: address });
|
|
155
127
|
expect(actualPrivateBalance).toEqual(this.balanceOfPrivate(address));
|
|
156
128
|
}
|
|
157
129
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
3
4
|
import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
|
|
4
5
|
import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
|
|
5
6
|
import { type FeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
6
7
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
7
|
-
import { type AztecNode, createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
8
|
+
import { type AztecNode, createAztecNodeClient, waitForTx } from '@aztec/aztec.js/node';
|
|
8
9
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
9
10
|
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
10
11
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
@@ -12,11 +13,14 @@ import type { Logger } from '@aztec/foundation/log';
|
|
|
12
13
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
13
14
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
14
15
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
15
|
-
import {
|
|
16
|
+
import { registerInitialLocalNetworkAccountsInWallet } from '@aztec/wallets/testing';
|
|
16
17
|
|
|
17
18
|
import { getACVMConfig } from '../fixtures/get_acvm_config.js';
|
|
18
19
|
import { getBBConfig } from '../fixtures/get_bb_config.js';
|
|
19
20
|
import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js';
|
|
21
|
+
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
22
|
+
import { proveInteraction } from '../test-wallet/utils.js';
|
|
23
|
+
import { WorkerWallet } from '../test-wallet/worker_wallet.js';
|
|
20
24
|
|
|
21
25
|
export interface TestAccounts {
|
|
22
26
|
aztecNode: AztecNode;
|
|
@@ -84,11 +88,19 @@ export async function deploySponsoredTestAccountsWithTokens(
|
|
|
84
88
|
|
|
85
89
|
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
86
90
|
const recipientDeployMethod = await recipientAccount.getDeployMethod();
|
|
87
|
-
await recipientDeployMethod.send({
|
|
91
|
+
await recipientDeployMethod.send({
|
|
92
|
+
from: AztecAddress.ZERO,
|
|
93
|
+
fee: { paymentMethod },
|
|
94
|
+
wait: { timeout: 2400 },
|
|
95
|
+
});
|
|
88
96
|
await Promise.all(
|
|
89
97
|
fundedAccounts.map(async a => {
|
|
90
98
|
const deployMethod = await a.getDeployMethod();
|
|
91
|
-
await deployMethod.send({
|
|
99
|
+
await deployMethod.send({
|
|
100
|
+
from: AztecAddress.ZERO,
|
|
101
|
+
fee: { paymentMethod },
|
|
102
|
+
wait: { timeout: 2400 },
|
|
103
|
+
}); // increase timeout on purpose in order to account for two empty epochs
|
|
92
104
|
logger.info(`Account deployed at ${a.address}`);
|
|
93
105
|
}),
|
|
94
106
|
);
|
|
@@ -116,6 +128,59 @@ export async function deploySponsoredTestAccountsWithTokens(
|
|
|
116
128
|
};
|
|
117
129
|
}
|
|
118
130
|
|
|
131
|
+
async function deployAccountWithDiagnostics(
|
|
132
|
+
account: { getDeployMethod: () => Promise<{ send: (opts: any) => any }>; address: any },
|
|
133
|
+
paymentMethod: SponsoredFeePaymentMethod,
|
|
134
|
+
aztecNode: AztecNode,
|
|
135
|
+
logger: Logger,
|
|
136
|
+
accountLabel: string,
|
|
137
|
+
): Promise<void> {
|
|
138
|
+
const deployMethod = await account.getDeployMethod();
|
|
139
|
+
let txHash;
|
|
140
|
+
try {
|
|
141
|
+
txHash = await deployMethod.send({
|
|
142
|
+
from: AztecAddress.ZERO,
|
|
143
|
+
fee: { paymentMethod },
|
|
144
|
+
wait: NO_WAIT,
|
|
145
|
+
});
|
|
146
|
+
await waitForTx(aztecNode, txHash, { timeout: 2400 });
|
|
147
|
+
logger.info(`${accountLabel} deployed at ${account.address}`);
|
|
148
|
+
} catch (error) {
|
|
149
|
+
const blockNumber = await aztecNode.getBlockNumber();
|
|
150
|
+
let receipt;
|
|
151
|
+
try {
|
|
152
|
+
receipt = await aztecNode.getTxReceipt(txHash);
|
|
153
|
+
} catch {
|
|
154
|
+
receipt = 'unavailable';
|
|
155
|
+
}
|
|
156
|
+
logger.error(`${accountLabel} deployment failed`, {
|
|
157
|
+
txHash: txHash.toString(),
|
|
158
|
+
receipt: JSON.stringify(receipt),
|
|
159
|
+
currentBlockNumber: blockNumber,
|
|
160
|
+
error: String(error),
|
|
161
|
+
});
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
async function deployAccountsInBatches(
|
|
167
|
+
accounts: { getDeployMethod: () => Promise<{ send: (opts: any) => any }>; address: any }[],
|
|
168
|
+
paymentMethod: SponsoredFeePaymentMethod,
|
|
169
|
+
aztecNode: AztecNode,
|
|
170
|
+
logger: Logger,
|
|
171
|
+
labelPrefix: string,
|
|
172
|
+
batchSize = 2,
|
|
173
|
+
): Promise<void> {
|
|
174
|
+
for (let i = 0; i < accounts.length; i += batchSize) {
|
|
175
|
+
const batch = accounts.slice(i, i + batchSize);
|
|
176
|
+
await Promise.all(
|
|
177
|
+
batch.map((account, idx) =>
|
|
178
|
+
deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, `${labelPrefix}${i + idx + 1}`),
|
|
179
|
+
),
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
119
184
|
export async function deploySponsoredTestAccounts(
|
|
120
185
|
wallet: TestWallet,
|
|
121
186
|
aztecNode: AztecNode,
|
|
@@ -129,15 +194,9 @@ export async function deploySponsoredTestAccounts(
|
|
|
129
194
|
await registerSponsoredFPC(wallet);
|
|
130
195
|
|
|
131
196
|
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
132
|
-
|
|
133
|
-
await
|
|
134
|
-
await
|
|
135
|
-
fundedAccounts.map(async a => {
|
|
136
|
-
const deployMethod = await a.getDeployMethod();
|
|
137
|
-
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait({ timeout: 2400 }); // increase timeout on purpose in order to account for two empty epochs
|
|
138
|
-
logger.info(`Account deployed at ${a.address}`);
|
|
139
|
-
}),
|
|
140
|
-
);
|
|
197
|
+
|
|
198
|
+
await deployAccountWithDiagnostics(recipientAccount, paymentMethod, aztecNode, logger, 'Recipient account');
|
|
199
|
+
await deployAccountsInBatches(fundedAccounts, paymentMethod, aztecNode, logger, 'Funded account ', 2);
|
|
141
200
|
|
|
142
201
|
return {
|
|
143
202
|
aztecNode,
|
|
@@ -175,7 +234,7 @@ export async function deployTestAccountsWithTokens(
|
|
|
175
234
|
fundedAccounts.map(async (a, i) => {
|
|
176
235
|
const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
|
|
177
236
|
const deployMethod = await a.getDeployMethod();
|
|
178
|
-
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } })
|
|
237
|
+
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } });
|
|
179
238
|
logger.info(`Account deployed at ${a.address}`);
|
|
180
239
|
}),
|
|
181
240
|
);
|
|
@@ -251,14 +310,19 @@ async function deployTokenAndMint(
|
|
|
251
310
|
logger: Logger,
|
|
252
311
|
) {
|
|
253
312
|
logger.verbose(`Deploying TokenContract...`);
|
|
254
|
-
const tokenContract = await TokenContract.deploy(
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
313
|
+
const { contract: tokenContract } = await TokenContract.deploy(
|
|
314
|
+
wallet,
|
|
315
|
+
admin,
|
|
316
|
+
TOKEN_NAME,
|
|
317
|
+
TOKEN_SYMBOL,
|
|
318
|
+
TOKEN_DECIMALS,
|
|
319
|
+
).send({
|
|
320
|
+
from: admin,
|
|
321
|
+
fee: {
|
|
322
|
+
paymentMethod,
|
|
323
|
+
},
|
|
324
|
+
wait: { timeout: 600, returnReceipt: true },
|
|
325
|
+
});
|
|
262
326
|
|
|
263
327
|
const tokenAddress = tokenContract.address;
|
|
264
328
|
|
|
@@ -268,8 +332,7 @@ async function deployTokenAndMint(
|
|
|
268
332
|
accounts.map(acc =>
|
|
269
333
|
TokenContract.at(tokenAddress, wallet)
|
|
270
334
|
.methods.mint_to_public(acc, mintAmount)
|
|
271
|
-
.send({ from: admin, fee: { paymentMethod } })
|
|
272
|
-
.wait({ timeout: 600 }),
|
|
335
|
+
.send({ from: admin, fee: { paymentMethod }, wait: { timeout: 600 } }),
|
|
273
336
|
),
|
|
274
337
|
);
|
|
275
338
|
|
|
@@ -309,17 +372,23 @@ export async function performTransfers({
|
|
|
309
372
|
|
|
310
373
|
const provenTxs = await Promise.all(txs);
|
|
311
374
|
|
|
312
|
-
await Promise.all(provenTxs.map(t => t.send(
|
|
375
|
+
await Promise.all(provenTxs.map(t => t.send({ wait: { timeout: 600 } })));
|
|
313
376
|
|
|
314
377
|
logger.info(`Completed round ${i + 1} / ${rounds}`);
|
|
315
378
|
}
|
|
316
379
|
}
|
|
317
380
|
|
|
381
|
+
export type WalletWrapper = {
|
|
382
|
+
wallet: TestWallet;
|
|
383
|
+
aztecNode: AztecNode;
|
|
384
|
+
cleanup: () => Promise<void>;
|
|
385
|
+
};
|
|
386
|
+
|
|
318
387
|
export async function createWalletAndAztecNodeClient(
|
|
319
388
|
nodeUrl: string,
|
|
320
389
|
proverEnabled: boolean,
|
|
321
390
|
logger: Logger,
|
|
322
|
-
): Promise<
|
|
391
|
+
): Promise<WalletWrapper> {
|
|
323
392
|
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
324
393
|
const [bbConfig, acvmConfig] = await Promise.all([getBBConfig(logger), getACVMConfig(logger)]);
|
|
325
394
|
const pxeConfig = {
|
|
@@ -341,3 +410,42 @@ export async function createWalletAndAztecNodeClient(
|
|
|
341
410
|
},
|
|
342
411
|
};
|
|
343
412
|
}
|
|
413
|
+
|
|
414
|
+
export type WorkerWalletWrapper = {
|
|
415
|
+
wallet: WorkerWallet;
|
|
416
|
+
aztecNode: AztecNode;
|
|
417
|
+
cleanup: () => Promise<void>;
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
export async function createWorkerWalletClient(
|
|
421
|
+
nodeUrl: string,
|
|
422
|
+
proverEnabled: boolean,
|
|
423
|
+
logger: Logger,
|
|
424
|
+
): Promise<WorkerWalletWrapper> {
|
|
425
|
+
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
426
|
+
const [bbConfig, acvmConfig] = await Promise.all([getBBConfig(logger), getACVMConfig(logger)]);
|
|
427
|
+
|
|
428
|
+
// Strip cleanup functions — they can't be structured-cloned for worker transfer
|
|
429
|
+
const { cleanup: bbCleanup, ...bbPaths } = bbConfig ?? {};
|
|
430
|
+
const { cleanup: acvmCleanup, ...acvmPaths } = acvmConfig ?? {};
|
|
431
|
+
|
|
432
|
+
const pxeConfig = {
|
|
433
|
+
dataDirectory: undefined,
|
|
434
|
+
dataStoreMapSizeKb: 1024 * 1024,
|
|
435
|
+
...bbPaths,
|
|
436
|
+
...acvmPaths,
|
|
437
|
+
proverEnabled,
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
const wallet = await WorkerWallet.create(nodeUrl, pxeConfig);
|
|
441
|
+
|
|
442
|
+
return {
|
|
443
|
+
wallet,
|
|
444
|
+
aztecNode,
|
|
445
|
+
async cleanup() {
|
|
446
|
+
await wallet.stop();
|
|
447
|
+
await bbCleanup?.();
|
|
448
|
+
await acvmCleanup?.();
|
|
449
|
+
},
|
|
450
|
+
};
|
|
451
|
+
}
|