@aztec/end-to-end 0.0.1-commit.c7c42ec → 0.0.1-commit.cd76b27
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 +1 -1
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +7 -4
- 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 +41 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -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 +271 -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 +6 -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 +11 -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 +122 -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 +538 -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,11 @@ 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({ from: AztecAddress.ZERO, fee: { paymentMethod }
|
|
91
|
+
await recipientDeployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod }, wait: { timeout: 2400 } });
|
|
88
92
|
await Promise.all(
|
|
89
93
|
fundedAccounts.map(async a => {
|
|
90
94
|
const deployMethod = await a.getDeployMethod();
|
|
91
|
-
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod }
|
|
95
|
+
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod }, wait: { timeout: 2400 } }); // increase timeout on purpose in order to account for two empty epochs
|
|
92
96
|
logger.info(`Account deployed at ${a.address}`);
|
|
93
97
|
}),
|
|
94
98
|
);
|
|
@@ -116,6 +120,55 @@ export async function deploySponsoredTestAccountsWithTokens(
|
|
|
116
120
|
};
|
|
117
121
|
}
|
|
118
122
|
|
|
123
|
+
async function deployAccountWithDiagnostics(
|
|
124
|
+
account: { getDeployMethod: () => Promise<{ send: (opts: any) => any }>; address: any },
|
|
125
|
+
paymentMethod: SponsoredFeePaymentMethod,
|
|
126
|
+
aztecNode: AztecNode,
|
|
127
|
+
logger: Logger,
|
|
128
|
+
accountLabel: string,
|
|
129
|
+
): Promise<void> {
|
|
130
|
+
const deployMethod = await account.getDeployMethod();
|
|
131
|
+
let txHash;
|
|
132
|
+
try {
|
|
133
|
+
txHash = await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod }, wait: NO_WAIT });
|
|
134
|
+
await waitForTx(aztecNode, txHash, { timeout: 2400 });
|
|
135
|
+
logger.info(`${accountLabel} deployed at ${account.address}`);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
const blockNumber = await aztecNode.getBlockNumber();
|
|
138
|
+
let receipt;
|
|
139
|
+
try {
|
|
140
|
+
receipt = await aztecNode.getTxReceipt(txHash);
|
|
141
|
+
} catch {
|
|
142
|
+
receipt = 'unavailable';
|
|
143
|
+
}
|
|
144
|
+
logger.error(`${accountLabel} deployment failed`, {
|
|
145
|
+
txHash: txHash.toString(),
|
|
146
|
+
receipt: JSON.stringify(receipt),
|
|
147
|
+
currentBlockNumber: blockNumber,
|
|
148
|
+
error: String(error),
|
|
149
|
+
});
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
async function deployAccountsInBatches(
|
|
155
|
+
accounts: { getDeployMethod: () => Promise<{ send: (opts: any) => any }>; address: any }[],
|
|
156
|
+
paymentMethod: SponsoredFeePaymentMethod,
|
|
157
|
+
aztecNode: AztecNode,
|
|
158
|
+
logger: Logger,
|
|
159
|
+
labelPrefix: string,
|
|
160
|
+
batchSize = 2,
|
|
161
|
+
): Promise<void> {
|
|
162
|
+
for (let i = 0; i < accounts.length; i += batchSize) {
|
|
163
|
+
const batch = accounts.slice(i, i + batchSize);
|
|
164
|
+
await Promise.all(
|
|
165
|
+
batch.map((account, idx) =>
|
|
166
|
+
deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, `${labelPrefix}${i + idx + 1}`),
|
|
167
|
+
),
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
119
172
|
export async function deploySponsoredTestAccounts(
|
|
120
173
|
wallet: TestWallet,
|
|
121
174
|
aztecNode: AztecNode,
|
|
@@ -129,15 +182,9 @@ export async function deploySponsoredTestAccounts(
|
|
|
129
182
|
await registerSponsoredFPC(wallet);
|
|
130
183
|
|
|
131
184
|
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
|
-
);
|
|
185
|
+
|
|
186
|
+
await deployAccountWithDiagnostics(recipientAccount, paymentMethod, aztecNode, logger, 'Recipient account');
|
|
187
|
+
await deployAccountsInBatches(fundedAccounts, paymentMethod, aztecNode, logger, 'Funded account ', 2);
|
|
141
188
|
|
|
142
189
|
return {
|
|
143
190
|
aztecNode,
|
|
@@ -175,7 +222,7 @@ export async function deployTestAccountsWithTokens(
|
|
|
175
222
|
fundedAccounts.map(async (a, i) => {
|
|
176
223
|
const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
|
|
177
224
|
const deployMethod = await a.getDeployMethod();
|
|
178
|
-
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } })
|
|
225
|
+
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } });
|
|
179
226
|
logger.info(`Account deployed at ${a.address}`);
|
|
180
227
|
}),
|
|
181
228
|
);
|
|
@@ -251,14 +298,19 @@ async function deployTokenAndMint(
|
|
|
251
298
|
logger: Logger,
|
|
252
299
|
) {
|
|
253
300
|
logger.verbose(`Deploying TokenContract...`);
|
|
254
|
-
const tokenContract = await TokenContract.deploy(
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
301
|
+
const { contract: tokenContract } = await TokenContract.deploy(
|
|
302
|
+
wallet,
|
|
303
|
+
admin,
|
|
304
|
+
TOKEN_NAME,
|
|
305
|
+
TOKEN_SYMBOL,
|
|
306
|
+
TOKEN_DECIMALS,
|
|
307
|
+
).send({
|
|
308
|
+
from: admin,
|
|
309
|
+
fee: {
|
|
310
|
+
paymentMethod,
|
|
311
|
+
},
|
|
312
|
+
wait: { timeout: 600, returnReceipt: true },
|
|
313
|
+
});
|
|
262
314
|
|
|
263
315
|
const tokenAddress = tokenContract.address;
|
|
264
316
|
|
|
@@ -268,8 +320,7 @@ async function deployTokenAndMint(
|
|
|
268
320
|
accounts.map(acc =>
|
|
269
321
|
TokenContract.at(tokenAddress, wallet)
|
|
270
322
|
.methods.mint_to_public(acc, mintAmount)
|
|
271
|
-
.send({ from: admin, fee: { paymentMethod } })
|
|
272
|
-
.wait({ timeout: 600 }),
|
|
323
|
+
.send({ from: admin, fee: { paymentMethod }, wait: { timeout: 600 } }),
|
|
273
324
|
),
|
|
274
325
|
);
|
|
275
326
|
|
|
@@ -309,17 +360,23 @@ export async function performTransfers({
|
|
|
309
360
|
|
|
310
361
|
const provenTxs = await Promise.all(txs);
|
|
311
362
|
|
|
312
|
-
await Promise.all(provenTxs.map(t => t.send(
|
|
363
|
+
await Promise.all(provenTxs.map(t => t.send({ wait: { timeout: 600 } })));
|
|
313
364
|
|
|
314
365
|
logger.info(`Completed round ${i + 1} / ${rounds}`);
|
|
315
366
|
}
|
|
316
367
|
}
|
|
317
368
|
|
|
369
|
+
export type WalletWrapper = {
|
|
370
|
+
wallet: TestWallet;
|
|
371
|
+
aztecNode: AztecNode;
|
|
372
|
+
cleanup: () => Promise<void>;
|
|
373
|
+
};
|
|
374
|
+
|
|
318
375
|
export async function createWalletAndAztecNodeClient(
|
|
319
376
|
nodeUrl: string,
|
|
320
377
|
proverEnabled: boolean,
|
|
321
378
|
logger: Logger,
|
|
322
|
-
): Promise<
|
|
379
|
+
): Promise<WalletWrapper> {
|
|
323
380
|
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
324
381
|
const [bbConfig, acvmConfig] = await Promise.all([getBBConfig(logger), getACVMConfig(logger)]);
|
|
325
382
|
const pxeConfig = {
|
|
@@ -341,3 +398,42 @@ export async function createWalletAndAztecNodeClient(
|
|
|
341
398
|
},
|
|
342
399
|
};
|
|
343
400
|
}
|
|
401
|
+
|
|
402
|
+
export type WorkerWalletWrapper = {
|
|
403
|
+
wallet: WorkerWallet;
|
|
404
|
+
aztecNode: AztecNode;
|
|
405
|
+
cleanup: () => Promise<void>;
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
export async function createWorkerWalletClient(
|
|
409
|
+
nodeUrl: string,
|
|
410
|
+
proverEnabled: boolean,
|
|
411
|
+
logger: Logger,
|
|
412
|
+
): Promise<WorkerWalletWrapper> {
|
|
413
|
+
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
414
|
+
const [bbConfig, acvmConfig] = await Promise.all([getBBConfig(logger), getACVMConfig(logger)]);
|
|
415
|
+
|
|
416
|
+
// Strip cleanup functions — they can't be structured-cloned for worker transfer
|
|
417
|
+
const { cleanup: bbCleanup, ...bbPaths } = bbConfig ?? {};
|
|
418
|
+
const { cleanup: acvmCleanup, ...acvmPaths } = acvmConfig ?? {};
|
|
419
|
+
|
|
420
|
+
const pxeConfig = {
|
|
421
|
+
dataDirectory: undefined,
|
|
422
|
+
dataStoreMapSizeKb: 1024 * 1024,
|
|
423
|
+
...bbPaths,
|
|
424
|
+
...acvmPaths,
|
|
425
|
+
proverEnabled,
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
const wallet = await WorkerWallet.create(nodeUrl, pxeConfig);
|
|
429
|
+
|
|
430
|
+
return {
|
|
431
|
+
wallet,
|
|
432
|
+
aztecNode,
|
|
433
|
+
async cleanup() {
|
|
434
|
+
await wallet.stop();
|
|
435
|
+
await bbCleanup?.();
|
|
436
|
+
await acvmCleanup?.();
|
|
437
|
+
},
|
|
438
|
+
};
|
|
439
|
+
}
|