@aztec/end-to-end 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2d9cb6034
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/client_flows_benchmark.d.ts +2 -2
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +21 -28
- 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/utils.d.ts +1 -1
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +6 -3
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +4 -2
- 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 +22 -12
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +2 -2
- 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 +3 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts +2 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.d.ts +11 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +72 -39
- package/dest/e2e_fees/fees_test.d.ts +2 -2
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +18 -11
- package/dest/e2e_l1_publisher/write_json.d.ts +3 -2
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +1 -7
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
- package/dest/e2e_p2p/inactivity_slash_test.js +1 -1
- package/dest/e2e_p2p/p2p_network.d.ts +5 -4
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +24 -7
- 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 +190 -0
- package/dest/e2e_p2p/shared.d.ts +22 -2
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +40 -5
- 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 +4 -2
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +19 -9
- 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 +7 -6
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +37 -49
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +5 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +6 -0
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +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 +46 -25
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +89 -170
- 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 +5 -7
- package/dest/shared/cross_chain_test_harness.d.ts +1 -1
- 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.js +2 -2
- package/dest/shared/index.d.ts +2 -1
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +2 -2
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +1 -1
- 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 +16 -17
- package/dest/simulators/lending_simulator.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +4 -4
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +3 -24
- package/dest/spartan/setup_test_wallets.d.ts +12 -3
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +110 -17
- package/dest/spartan/tx_metrics.js +1 -1
- package/dest/spartan/utils/bot.d.ts +3 -2
- package/dest/spartan/utils/bot.d.ts.map +1 -1
- package/dest/spartan/utils/bot.js +2 -1
- package/dest/spartan/utils/config.d.ts +10 -1
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +4 -1
- package/dest/spartan/utils/index.d.ts +6 -4
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +6 -2
- package/dest/spartan/utils/k8s.d.ts +31 -1
- package/dest/spartan/utils/k8s.d.ts.map +1 -1
- package/dest/spartan/utils/k8s.js +124 -0
- package/dest/spartan/utils/nodes.d.ts +14 -5
- package/dest/spartan/utils/nodes.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +204 -33
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/spartan/utils/scripts.d.ts +18 -4
- package/dest/spartan/utils/scripts.d.ts.map +1 -1
- package/dest/spartan/utils/scripts.js +19 -4
- package/dest/test-wallet/test_wallet.d.ts +76 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +213 -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 +48 -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 +151 -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 +45 -43
- package/src/bench/client_flows/client_flows_benchmark.ts +30 -17
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/utils.ts +8 -3
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +28 -15
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +7 -8
- package/src/e2e_deploy_contract/deploy_test.ts +3 -3
- package/src/e2e_epochs/epochs_test.ts +89 -66
- package/src/e2e_fees/bridging_race.notest.ts +1 -1
- package/src/e2e_fees/fees_test.ts +20 -28
- package/src/e2e_l1_publisher/write_json.ts +1 -6
- package/src/e2e_nested_contract/nested_contract_test.ts +7 -5
- package/src/e2e_p2p/inactivity_slash_test.ts +5 -5
- package/src/e2e_p2p/p2p_network.ts +36 -10
- package/src/e2e_p2p/reqresp/utils.ts +256 -0
- package/src/e2e_p2p/shared.ts +68 -5
- 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 +26 -9
- 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 +43 -55
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +10 -0
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/setup.ts +118 -229
- package/src/fixtures/setup_p2p_test.ts +40 -44
- package/src/fixtures/token_utils.ts +3 -3
- package/src/guides/up_quick_start.sh +3 -3
- package/src/shared/cross_chain_test_harness.ts +13 -9
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/index.ts +1 -0
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +3 -2
- package/src/shared/uniswap_l1_l2.ts +38 -33
- package/src/simulators/lending_simulator.ts +8 -4
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +148 -13
- package/src/spartan/tx_metrics.ts +1 -1
- package/src/spartan/utils/bot.ts +4 -1
- package/src/spartan/utils/config.ts +3 -0
- package/src/spartan/utils/index.ts +10 -1
- package/src/spartan/utils/k8s.ts +160 -0
- package/src/spartan/utils/nodes.ts +251 -31
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +43 -7
- package/src/test-wallet/test_wallet.ts +301 -0
- package/src/test-wallet/utils.ts +112 -0
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +213 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
package/src/fixtures/setup.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
2
|
-
import { type InitialAccountData, generateSchnorrAccounts
|
|
3
|
-
import { type Archiver, createArchiver } from '@aztec/archiver';
|
|
2
|
+
import { type InitialAccountData, generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
4
3
|
import { type AztecNodeConfig, AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
4
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
5
5
|
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
6
6
|
import {
|
|
7
7
|
BatchCall,
|
|
@@ -13,10 +13,9 @@ import {
|
|
|
13
13
|
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
14
14
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
15
15
|
import { type Logger, createLogger } from '@aztec/aztec.js/log';
|
|
16
|
-
import {
|
|
16
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
17
17
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
18
18
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
19
|
-
import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
20
19
|
import { SPONSORED_FPC_SALT } from '@aztec/constants';
|
|
21
20
|
import { isAnvilTestChain } from '@aztec/ethereum/chain';
|
|
22
21
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
@@ -30,35 +29,28 @@ import {
|
|
|
30
29
|
type ZKPassportArgs,
|
|
31
30
|
deployAztecL1Contracts,
|
|
32
31
|
} from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
33
|
-
import {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
EthCheatCodesWithState,
|
|
37
|
-
createDelayedL1TxUtilsFromViemWallet,
|
|
38
|
-
startAnvil,
|
|
39
|
-
} from '@aztec/ethereum/test';
|
|
32
|
+
import type { Delayer } from '@aztec/ethereum/l1-tx-utils';
|
|
33
|
+
import { EthCheatCodes, EthCheatCodesWithState, startAnvil } from '@aztec/ethereum/test';
|
|
34
|
+
import type { Anvil } from '@aztec/ethereum/test';
|
|
40
35
|
import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
41
36
|
import { SecretValue } from '@aztec/foundation/config';
|
|
42
37
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
43
38
|
import { tryRmDir } from '@aztec/foundation/fs';
|
|
44
|
-
import {
|
|
39
|
+
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
45
40
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
46
41
|
import { sleep } from '@aztec/foundation/sleep';
|
|
47
42
|
import { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
48
|
-
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
49
43
|
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
50
44
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
51
45
|
import type { P2PClientDeps } from '@aztec/p2p';
|
|
52
46
|
import { MockGossipSubNetwork, getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
53
47
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
54
|
-
import
|
|
48
|
+
import type { ProverNodeConfig } from '@aztec/prover-node';
|
|
55
49
|
import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
|
|
56
50
|
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
57
|
-
import type { TestSequencerClient } from '@aztec/sequencer-client/test';
|
|
58
51
|
import { type ContractInstanceWithAddress, getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
59
52
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
60
53
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
61
|
-
import type { P2PClientType } from '@aztec/stdlib/p2p';
|
|
62
54
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
63
55
|
import {
|
|
64
56
|
type TelemetryClient,
|
|
@@ -67,10 +59,9 @@ import {
|
|
|
67
59
|
initTelemetryClient,
|
|
68
60
|
} from '@aztec/telemetry-client';
|
|
69
61
|
import { BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
|
|
70
|
-
import {
|
|
62
|
+
import { deployFundedSchnorrAccounts } from '@aztec/wallets/testing';
|
|
71
63
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
72
64
|
|
|
73
|
-
import type { Anvil } from '@viem/anvil';
|
|
74
65
|
import fs from 'fs/promises';
|
|
75
66
|
import { tmpdir } from 'os';
|
|
76
67
|
import path from 'path';
|
|
@@ -84,6 +75,7 @@ import {
|
|
|
84
75
|
} from 'viem/accounts';
|
|
85
76
|
import { type Chain, foundry } from 'viem/chains';
|
|
86
77
|
|
|
78
|
+
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
87
79
|
import { MNEMONIC, TEST_MAX_PENDING_TX_POOL_COUNT, TEST_PEER_CHECK_INTERVAL_MS } from './fixtures.js';
|
|
88
80
|
import { getACVMConfig } from './get_acvm_config.js';
|
|
89
81
|
import { getBBConfig } from './get_bb_config.js';
|
|
@@ -92,9 +84,6 @@ import { getEndToEndTestTelemetryClient } from './with_telemetry_utils.js';
|
|
|
92
84
|
|
|
93
85
|
export { startAnvil };
|
|
94
86
|
|
|
95
|
-
const { AZTEC_NODE_URL = '' } = process.env;
|
|
96
|
-
const getAztecUrl = () => AZTEC_NODE_URL;
|
|
97
|
-
|
|
98
87
|
let telemetry: TelemetryClient | undefined = undefined;
|
|
99
88
|
async function getTelemetryClient(partialConfig: Partial<TelemetryClientConfig> & { benchmark?: boolean } = {}) {
|
|
100
89
|
if (!telemetry) {
|
|
@@ -125,14 +114,14 @@ export async function setupSharedBlobStorage(config: { dataDirectory?: string }
|
|
|
125
114
|
* @param aztecNode - An instance of Aztec Node.
|
|
126
115
|
* @param opts - Partial configuration for the PXE.
|
|
127
116
|
* @param logger - The logger to be used.
|
|
128
|
-
* @param
|
|
117
|
+
* @param actor - Actor label to include in log output (e.g., 'pxe-test').
|
|
129
118
|
* @returns A test wallet, logger and teardown function.
|
|
130
119
|
*/
|
|
131
120
|
export async function setupPXEAndGetWallet(
|
|
132
121
|
aztecNode: AztecNode,
|
|
133
122
|
opts: Partial<PXEConfig> = {},
|
|
134
123
|
logger = getLogger(),
|
|
135
|
-
|
|
124
|
+
actor?: string,
|
|
136
125
|
): Promise<{
|
|
137
126
|
wallet: TestWallet;
|
|
138
127
|
logger: Logger;
|
|
@@ -150,9 +139,7 @@ export async function setupPXEAndGetWallet(
|
|
|
150
139
|
|
|
151
140
|
const teardown = configuredDataDirectory ? () => Promise.resolve() : () => tryRmDir(PXEConfig.dataDirectory!);
|
|
152
141
|
|
|
153
|
-
const wallet = await TestWallet.create(aztecNode, PXEConfig, {
|
|
154
|
-
useLogSuffix,
|
|
155
|
-
});
|
|
142
|
+
const wallet = await TestWallet.create(aztecNode, PXEConfig, { loggerActorLabel: actor });
|
|
156
143
|
|
|
157
144
|
return {
|
|
158
145
|
wallet,
|
|
@@ -199,6 +186,11 @@ export type SetupOptions = {
|
|
|
199
186
|
anvilAccounts?: number;
|
|
200
187
|
/** Port to start anvil (defaults to 8545) */
|
|
201
188
|
anvilPort?: number;
|
|
189
|
+
/**
|
|
190
|
+
* Number of slots per epoch for Anvil's finality simulation.
|
|
191
|
+
* Anvil reports `finalized = latest - slotsInAnEpoch * 2`.
|
|
192
|
+
*/
|
|
193
|
+
anvilSlotsInAnEpoch?: number;
|
|
202
194
|
/** Key to use for publishing L1 contracts */
|
|
203
195
|
l1PublisherKey?: SecretValue<`0x${string}`>;
|
|
204
196
|
/** ZkPassport configuration (domain, scope, mock verifier) */
|
|
@@ -219,13 +211,13 @@ export type EndToEndContext = {
|
|
|
219
211
|
anvil: Anvil | undefined;
|
|
220
212
|
/** The Aztec Node service or client a connected to it. */
|
|
221
213
|
aztecNode: AztecNode;
|
|
222
|
-
/** The Aztec Node as a service
|
|
223
|
-
aztecNodeService: AztecNodeService
|
|
224
|
-
/** Client to the Aztec Node admin interface
|
|
225
|
-
aztecNodeAdmin: AztecNodeAdmin
|
|
226
|
-
/** The prover node
|
|
227
|
-
proverNode:
|
|
228
|
-
/** A client to the sequencer service
|
|
214
|
+
/** The Aztec Node as a service. */
|
|
215
|
+
aztecNodeService: AztecNodeService;
|
|
216
|
+
/** Client to the Aztec Node admin interface. */
|
|
217
|
+
aztecNodeAdmin: AztecNodeAdmin;
|
|
218
|
+
/** The aztec node running the prover node subsystem (only set if startProverNode is true). */
|
|
219
|
+
proverNode: AztecNodeService | undefined;
|
|
220
|
+
/** A client to the sequencer service. */
|
|
229
221
|
sequencer: SequencerClient | undefined;
|
|
230
222
|
/** Return values from deployAztecL1Contracts function. */
|
|
231
223
|
deployL1ContractsValues: DeployAztecL1ContractsReturnType;
|
|
@@ -245,14 +237,18 @@ export type EndToEndContext = {
|
|
|
245
237
|
cheatCodes: CheatCodes;
|
|
246
238
|
/** The cheat codes for L1 */
|
|
247
239
|
ethCheatCodes: EthCheatCodes;
|
|
248
|
-
/** The anvil test watcher
|
|
249
|
-
watcher: AnvilTestWatcher
|
|
250
|
-
/** Allows tweaking current system time, used by the epoch cache only
|
|
251
|
-
dateProvider: TestDateProvider
|
|
240
|
+
/** The anvil test watcher. */
|
|
241
|
+
watcher: AnvilTestWatcher;
|
|
242
|
+
/** Allows tweaking current system time, used by the epoch cache only. */
|
|
243
|
+
dateProvider: TestDateProvider;
|
|
252
244
|
/** Telemetry client */
|
|
253
|
-
telemetryClient: TelemetryClient
|
|
245
|
+
telemetryClient: TelemetryClient;
|
|
254
246
|
/** Mock gossip sub network used for gossipping messages (only if mockGossipSubNetwork was set to true in opts) */
|
|
255
247
|
mockGossipSubNetwork: MockGossipSubNetwork | undefined;
|
|
248
|
+
/** Delayer for sequencer L1 txs (only when enableDelayer is true). */
|
|
249
|
+
sequencerDelayer: Delayer | undefined;
|
|
250
|
+
/** Delayer for prover node L1 txs (only when enableDelayer and startProverNode are true). */
|
|
251
|
+
proverDelayer: Delayer | undefined;
|
|
256
252
|
/** Prefilled public data used for setting up nodes. */
|
|
257
253
|
prefilledPublicData: PublicDataTreeLeaf[] | undefined;
|
|
258
254
|
/** ACVM config (only set if running locally). */
|
|
@@ -260,87 +256,11 @@ export type EndToEndContext = {
|
|
|
260
256
|
/** BB config (only set if running locally). */
|
|
261
257
|
bbConfig: Awaited<ReturnType<typeof getBBConfig>>;
|
|
262
258
|
/** Directory to cleanup on teardown. */
|
|
263
|
-
directoryToCleanup: string
|
|
259
|
+
directoryToCleanup: string;
|
|
264
260
|
/** Function to stop the started services. */
|
|
265
261
|
teardown: () => Promise<void>;
|
|
266
262
|
};
|
|
267
263
|
|
|
268
|
-
/**
|
|
269
|
-
* Function to setup the test against a remote deployment. It is assumed that L1 contract are already deployed
|
|
270
|
-
*/
|
|
271
|
-
async function setupWithRemoteEnvironment(
|
|
272
|
-
account: HDAccount | PrivateKeyAccount,
|
|
273
|
-
config: AztecNodeConfig & SetupOptions,
|
|
274
|
-
logger: Logger,
|
|
275
|
-
numberOfAccounts: number,
|
|
276
|
-
): Promise<EndToEndContext> {
|
|
277
|
-
const aztecNodeUrl = getAztecUrl();
|
|
278
|
-
logger.verbose(`Creating Aztec Node client to remote host ${aztecNodeUrl}`);
|
|
279
|
-
const aztecNode = createAztecNodeClient(aztecNodeUrl);
|
|
280
|
-
await waitForNode(aztecNode, logger);
|
|
281
|
-
logger.verbose('JSON RPC client connected to Aztec Node');
|
|
282
|
-
logger.verbose(`Retrieving contract addresses from ${aztecNodeUrl}`);
|
|
283
|
-
const { l1ContractAddresses, rollupVersion } = await aztecNode.getNodeInfo();
|
|
284
|
-
|
|
285
|
-
const l1Client = createExtendedL1Client(config.l1RpcUrls, account, foundry);
|
|
286
|
-
|
|
287
|
-
const deployL1ContractsValues: DeployAztecL1ContractsReturnType = {
|
|
288
|
-
l1ContractAddresses,
|
|
289
|
-
l1Client,
|
|
290
|
-
rollupVersion,
|
|
291
|
-
};
|
|
292
|
-
const ethCheatCodes = new EthCheatCodes(config.l1RpcUrls, new DateProvider());
|
|
293
|
-
const wallet = await TestWallet.create(aztecNode);
|
|
294
|
-
|
|
295
|
-
if (config.walletMinFeePadding !== undefined) {
|
|
296
|
-
wallet.setMinFeePadding(config.walletMinFeePadding);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, aztecNode, new DateProvider());
|
|
300
|
-
const teardown = () => Promise.resolve();
|
|
301
|
-
|
|
302
|
-
logger.verbose('Populating wallet from already registered accounts...');
|
|
303
|
-
const initialFundedAccounts = await getInitialTestAccountsData();
|
|
304
|
-
|
|
305
|
-
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
306
|
-
throw new Error(`Required ${numberOfAccounts} accounts. Found ${initialFundedAccounts.length}.`);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
const testAccounts = await Promise.all(
|
|
310
|
-
initialFundedAccounts.slice(0, numberOfAccounts).map(async account => {
|
|
311
|
-
const accountManager = await wallet.createSchnorrAccount(account.secret, account.salt, account.signingKey);
|
|
312
|
-
return accountManager.address;
|
|
313
|
-
}),
|
|
314
|
-
);
|
|
315
|
-
|
|
316
|
-
return {
|
|
317
|
-
anvil: undefined,
|
|
318
|
-
aztecNode,
|
|
319
|
-
aztecNodeService: undefined,
|
|
320
|
-
aztecNodeAdmin: undefined,
|
|
321
|
-
sequencer: undefined,
|
|
322
|
-
proverNode: undefined,
|
|
323
|
-
deployL1ContractsValues,
|
|
324
|
-
config,
|
|
325
|
-
aztecNodeConfig: config,
|
|
326
|
-
initialFundedAccounts,
|
|
327
|
-
wallet,
|
|
328
|
-
accounts: testAccounts,
|
|
329
|
-
logger,
|
|
330
|
-
cheatCodes,
|
|
331
|
-
ethCheatCodes,
|
|
332
|
-
prefilledPublicData: undefined,
|
|
333
|
-
mockGossipSubNetwork: undefined,
|
|
334
|
-
watcher: undefined,
|
|
335
|
-
dateProvider: undefined,
|
|
336
|
-
telemetryClient: undefined,
|
|
337
|
-
acvmConfig: undefined,
|
|
338
|
-
bbConfig: undefined,
|
|
339
|
-
directoryToCleanup: undefined,
|
|
340
|
-
teardown,
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
|
|
344
264
|
/**
|
|
345
265
|
* Sets up the environment for the end-to-end tests.
|
|
346
266
|
* @param numberOfAccounts - The number of new accounts to be created once the PXE is initiated.
|
|
@@ -368,8 +288,12 @@ export async function setup(
|
|
|
368
288
|
config.realProofs = !!opts.realProofs;
|
|
369
289
|
// Only enforce the time table if requested
|
|
370
290
|
config.enforceTimeTable = !!opts.enforceTimeTable;
|
|
291
|
+
// Enable the tx delayer for tests (default config has it disabled, so we force-enable it here)
|
|
292
|
+
config.enableDelayer = true;
|
|
371
293
|
config.listenAddress = '127.0.0.1';
|
|
372
294
|
|
|
295
|
+
config.minTxPoolAgeMs = opts.minTxPoolAgeMs ?? 0;
|
|
296
|
+
|
|
373
297
|
const logger = getLogger();
|
|
374
298
|
|
|
375
299
|
// Create a temp directory for any services that need it and cleanup later
|
|
@@ -379,20 +303,18 @@ export async function setup(
|
|
|
379
303
|
config.dataDirectory = directoryToCleanup;
|
|
380
304
|
}
|
|
381
305
|
|
|
306
|
+
const dateProvider = new TestDateProvider();
|
|
307
|
+
|
|
382
308
|
if (!config.l1RpcUrls?.length) {
|
|
383
309
|
if (!isAnvilTestChain(chain.id)) {
|
|
384
310
|
throw new Error(`No ETHEREUM_HOSTS set but non anvil chain requested`);
|
|
385
311
|
}
|
|
386
|
-
if (AZTEC_NODE_URL) {
|
|
387
|
-
throw new Error(
|
|
388
|
-
`AZTEC_NODE_URL provided but no ETHEREUM_HOSTS set. Refusing to run, please set both variables so tests can deploy L1 contracts to the same Anvil instance`,
|
|
389
|
-
);
|
|
390
|
-
}
|
|
391
|
-
|
|
392
312
|
const res = await startAnvil({
|
|
393
313
|
l1BlockTime: opts.ethereumSlotDuration,
|
|
394
314
|
accounts: opts.anvilAccounts,
|
|
395
315
|
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined),
|
|
316
|
+
slotsInAnEpoch: opts.anvilSlotsInAnEpoch,
|
|
317
|
+
dateProvider,
|
|
396
318
|
});
|
|
397
319
|
anvil = res.anvil;
|
|
398
320
|
config.l1RpcUrls = [res.rpcUrl];
|
|
@@ -404,8 +326,6 @@ export async function setup(
|
|
|
404
326
|
logger.info(`Logging metrics to ${filename}`);
|
|
405
327
|
setupMetricsLogger(filename);
|
|
406
328
|
}
|
|
407
|
-
|
|
408
|
-
const dateProvider = new TestDateProvider();
|
|
409
329
|
const ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls, dateProvider);
|
|
410
330
|
|
|
411
331
|
if (opts.stateLoad) {
|
|
@@ -423,11 +343,11 @@ export async function setup(
|
|
|
423
343
|
publisherPrivKeyHex = opts.l1PublisherKey.getValue();
|
|
424
344
|
publisherHdAccount = privateKeyToAccount(publisherPrivKeyHex);
|
|
425
345
|
} else if (
|
|
426
|
-
config.
|
|
427
|
-
config.
|
|
428
|
-
config.
|
|
346
|
+
config.sequencerPublisherPrivateKeys &&
|
|
347
|
+
config.sequencerPublisherPrivateKeys.length > 0 &&
|
|
348
|
+
config.sequencerPublisherPrivateKeys[0].getValue() != NULL_KEY
|
|
429
349
|
) {
|
|
430
|
-
publisherPrivKeyHex = config.
|
|
350
|
+
publisherPrivKeyHex = config.sequencerPublisherPrivateKeys[0].getValue();
|
|
431
351
|
publisherHdAccount = privateKeyToAccount(publisherPrivKeyHex);
|
|
432
352
|
} else if (!MNEMONIC) {
|
|
433
353
|
throw new Error(`Mnemonic not provided and no publisher private key`);
|
|
@@ -436,18 +356,13 @@ export async function setup(
|
|
|
436
356
|
const publisherPrivKeyRaw = publisherHdAccount.getHdKey().privateKey;
|
|
437
357
|
const publisherPrivKey = publisherPrivKeyRaw === null ? null : Buffer.from(publisherPrivKeyRaw);
|
|
438
358
|
publisherPrivKeyHex = `0x${publisherPrivKey!.toString('hex')}` as const;
|
|
439
|
-
config.
|
|
359
|
+
config.sequencerPublisherPrivateKeys = [new SecretValue(publisherPrivKeyHex)];
|
|
440
360
|
}
|
|
441
361
|
|
|
442
362
|
if (config.coinbase === undefined) {
|
|
443
363
|
config.coinbase = EthAddress.fromString(publisherHdAccount.address);
|
|
444
364
|
}
|
|
445
365
|
|
|
446
|
-
if (AZTEC_NODE_URL) {
|
|
447
|
-
// we are setting up against a remote environment, l1 contracts are assumed to already be deployed
|
|
448
|
-
return await setupWithRemoteEnvironment(publisherHdAccount!, config, logger, numberOfAccounts);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
366
|
// Determine which addresses to fund in genesis
|
|
452
367
|
const initialFundedAccounts =
|
|
453
368
|
opts.initialFundedAccounts ??
|
|
@@ -504,7 +419,13 @@ export async function setup(
|
|
|
504
419
|
if (enableAutomine) {
|
|
505
420
|
await ethCheatCodes.setAutomine(false);
|
|
506
421
|
await ethCheatCodes.setIntervalMining(config.ethereumSlotDuration);
|
|
507
|
-
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// In compose mode (no local anvil), sync dateProvider to L1 time since it may have drifted
|
|
425
|
+
// ahead of system time due to the local-network watcher warping time forward on each filled slot.
|
|
426
|
+
// When running with a local anvil, the dateProvider is kept in sync via the stdout listener.
|
|
427
|
+
if (!anvil) {
|
|
428
|
+
dateProvider.setTime((await ethCheatCodes.lastBlockTimestamp()) * 1000);
|
|
508
429
|
}
|
|
509
430
|
|
|
510
431
|
if (opts.l2StartTime) {
|
|
@@ -543,7 +464,7 @@ export async function setup(
|
|
|
543
464
|
}
|
|
544
465
|
|
|
545
466
|
let mockGossipSubNetwork: MockGossipSubNetwork | undefined;
|
|
546
|
-
let p2pClientDeps: P2PClientDeps
|
|
467
|
+
let p2pClientDeps: P2PClientDeps | undefined = undefined;
|
|
547
468
|
|
|
548
469
|
if (opts.mockGossipSubNetwork) {
|
|
549
470
|
mockGossipSubNetwork = new MockGossipSubNetwork();
|
|
@@ -574,44 +495,48 @@ export async function setup(
|
|
|
574
495
|
}
|
|
575
496
|
}
|
|
576
497
|
|
|
577
|
-
const aztecNodeService = await
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
498
|
+
const aztecNodeService = await withLoggerBindings({ actor: 'node-0' }, () =>
|
|
499
|
+
AztecNodeService.createAndSync(
|
|
500
|
+
config,
|
|
501
|
+
{ dateProvider, telemetry: telemetryClient, p2pClientDeps },
|
|
502
|
+
{ prefilledPublicData },
|
|
503
|
+
),
|
|
581
504
|
);
|
|
582
505
|
const sequencerClient = aztecNodeService.getSequencer();
|
|
583
506
|
|
|
584
|
-
|
|
585
|
-
const publisher = (sequencerClient as TestSequencerClient).sequencer.publisher;
|
|
586
|
-
publisher.l1TxUtils = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, config.ethereumSlotDuration, l1Client);
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
let proverNode: ProverNode | undefined = undefined;
|
|
507
|
+
let proverNode: AztecNodeService | undefined = undefined;
|
|
590
508
|
if (opts.startProverNode) {
|
|
591
509
|
logger.verbose('Creating and syncing a simulated prover node...');
|
|
592
510
|
const proverNodePrivateKey = getPrivateKeyFromIndex(2);
|
|
593
511
|
const proverNodePrivateKeyHex: Hex = `0x${proverNodePrivateKey!.toString('hex')}`;
|
|
594
512
|
const proverNodeDataDirectory = path.join(directoryToCleanup, randomBytes(8).toString('hex'));
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
513
|
+
|
|
514
|
+
const p2pClientDeps: Partial<P2PClientDeps> = {
|
|
515
|
+
p2pServiceFactory: mockGossipSubNetwork && getMockPubSubP2PServiceFactory(mockGossipSubNetwork!),
|
|
516
|
+
rpcTxProviders: [aztecNodeService],
|
|
599
517
|
};
|
|
600
|
-
|
|
518
|
+
|
|
519
|
+
({ proverNode } = await createAndSyncProverNode(
|
|
601
520
|
proverNodePrivateKeyHex,
|
|
602
521
|
config,
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
522
|
+
{
|
|
523
|
+
...config.proverNodeConfig,
|
|
524
|
+
dataDirectory: proverNodeDataDirectory,
|
|
525
|
+
},
|
|
526
|
+
{ dateProvider, p2pClientDeps, telemetry: telemetryClient },
|
|
527
|
+
{ prefilledPublicData },
|
|
528
|
+
));
|
|
607
529
|
}
|
|
608
530
|
|
|
531
|
+
const sequencerDelayer = sequencerClient?.getDelayer();
|
|
532
|
+
const proverDelayer = proverNode?.getProverNode()?.getDelayer();
|
|
533
|
+
|
|
609
534
|
logger.verbose('Creating a pxe...');
|
|
610
535
|
const pxeConfig = { ...getPXEConfig(), ...pxeOpts };
|
|
611
536
|
pxeConfig.dataDirectory = path.join(directoryToCleanup, randomBytes(8).toString('hex'));
|
|
612
537
|
// For tests we only want proving enabled if specifically requested
|
|
613
538
|
pxeConfig.proverEnabled = !!pxeOpts.proverEnabled;
|
|
614
|
-
const wallet = await TestWallet.create(aztecNodeService, pxeConfig);
|
|
539
|
+
const wallet = await TestWallet.create(aztecNodeService, pxeConfig, { loggerActorLabel: 'pxe-0' });
|
|
615
540
|
|
|
616
541
|
if (opts.walletMinFeePadding !== undefined) {
|
|
617
542
|
wallet.setMinFeePadding(opts.walletMinFeePadding);
|
|
@@ -683,7 +608,7 @@ export async function setup(
|
|
|
683
608
|
logger.error(`Error during e2e test teardown`, err);
|
|
684
609
|
} finally {
|
|
685
610
|
try {
|
|
686
|
-
await telemetryClient
|
|
611
|
+
await telemetryClient.stop();
|
|
687
612
|
} catch (err) {
|
|
688
613
|
logger.error(`Error during telemetry client stop`, err);
|
|
689
614
|
}
|
|
@@ -706,6 +631,8 @@ export async function setup(
|
|
|
706
631
|
mockGossipSubNetwork,
|
|
707
632
|
prefilledPublicData,
|
|
708
633
|
proverNode,
|
|
634
|
+
sequencerDelayer,
|
|
635
|
+
proverDelayer,
|
|
709
636
|
sequencer: sequencerClient,
|
|
710
637
|
teardown,
|
|
711
638
|
telemetryClient,
|
|
@@ -789,93 +716,55 @@ export async function waitForProvenChain(node: AztecNode, targetBlock?: BlockNum
|
|
|
789
716
|
);
|
|
790
717
|
}
|
|
791
718
|
|
|
719
|
+
/**
|
|
720
|
+
* Creates an AztecNodeService with the prover node enabled as a subsystem.
|
|
721
|
+
* Returns both the aztec node service (for lifecycle management) and the prover node (for test internals access).
|
|
722
|
+
*/
|
|
792
723
|
export function createAndSyncProverNode(
|
|
793
724
|
proverNodePrivateKey: `0x${string}`,
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
const proverConfig: ProverNodeConfig = {
|
|
817
|
-
...aztecNodeConfig,
|
|
818
|
-
txCollectionNodeRpcUrls: [],
|
|
819
|
-
realProofs: false,
|
|
820
|
-
proverAgentCount: 2,
|
|
821
|
-
publisherPrivateKeys: [new SecretValue(proverNodePrivateKey)],
|
|
822
|
-
proverNodeMaxPendingJobs: 10,
|
|
823
|
-
proverNodeMaxParallelBlocksPerEpoch: 32,
|
|
824
|
-
proverNodePollingIntervalMs: 200,
|
|
825
|
-
txGatheringIntervalMs: 1000,
|
|
826
|
-
txGatheringBatchSize: 10,
|
|
827
|
-
txGatheringMaxParallelRequestsPerNode: 10,
|
|
828
|
-
txGatheringTimeoutMs: 24_000,
|
|
829
|
-
proverNodeFailedEpochStore: undefined,
|
|
830
|
-
proverId: EthAddress.fromNumber(1),
|
|
831
|
-
proverNodeEpochProvingDelayMs: undefined,
|
|
832
|
-
...proverNodeConfig,
|
|
833
|
-
};
|
|
834
|
-
|
|
835
|
-
const l1TxUtils = createDelayedL1TxUtils(
|
|
836
|
-
aztecNodeConfig,
|
|
837
|
-
proverNodePrivateKey,
|
|
838
|
-
'prover-node',
|
|
839
|
-
proverNodeDeps.dateProvider,
|
|
725
|
+
baseConfig: AztecNodeConfig,
|
|
726
|
+
configOverrides: Pick<AztecNodeConfig, 'dataDirectory'>,
|
|
727
|
+
deps: {
|
|
728
|
+
telemetry?: TelemetryClient;
|
|
729
|
+
dateProvider: DateProvider;
|
|
730
|
+
p2pClientDeps?: P2PClientDeps;
|
|
731
|
+
},
|
|
732
|
+
options: { prefilledPublicData: PublicDataTreeLeaf[]; dontStart?: boolean },
|
|
733
|
+
): Promise<{ proverNode: AztecNodeService }> {
|
|
734
|
+
return withLoggerBindings({ actor: 'prover-0' }, async () => {
|
|
735
|
+
const proverNode = await AztecNodeService.createAndSync(
|
|
736
|
+
{
|
|
737
|
+
...baseConfig,
|
|
738
|
+
...configOverrides,
|
|
739
|
+
p2pPort: 0,
|
|
740
|
+
enableProverNode: true,
|
|
741
|
+
disableValidator: true,
|
|
742
|
+
proverPublisherPrivateKeys: [new SecretValue(proverNodePrivateKey)],
|
|
743
|
+
},
|
|
744
|
+
deps,
|
|
745
|
+
{ ...options, dontStartProverNode: options.dontStart },
|
|
840
746
|
);
|
|
841
747
|
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
{ ...proverNodeDeps, aztecNodeTxProvider, archiver: archiver as Archiver, l1TxUtils },
|
|
845
|
-
{ prefilledPublicData },
|
|
846
|
-
);
|
|
847
|
-
getLogger().info(`Created and synced prover node`, { publisherAddress: l1TxUtils.client.account!.address });
|
|
848
|
-
if (!proverNodeConfig.dontStart) {
|
|
849
|
-
await proverNode.start();
|
|
748
|
+
if (!proverNode.getProverNode()) {
|
|
749
|
+
throw new Error('Prover node subsystem was not created despite enableProverNode being set');
|
|
850
750
|
}
|
|
851
|
-
return proverNode;
|
|
852
|
-
});
|
|
853
|
-
}
|
|
854
751
|
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
logName: string,
|
|
859
|
-
dateProvider?: DateProvider,
|
|
860
|
-
) {
|
|
861
|
-
const l1Client = createExtendedL1Client(aztecNodeConfig.l1RpcUrls, privateKey, foundry);
|
|
862
|
-
|
|
863
|
-
const log = createLogger(logName);
|
|
864
|
-
const l1TxUtils = createDelayedL1TxUtilsFromViemWallet(l1Client, log, dateProvider, aztecNodeConfig);
|
|
865
|
-
l1TxUtils.enableDelayer(aztecNodeConfig.ethereumSlotDuration);
|
|
866
|
-
return l1TxUtils;
|
|
752
|
+
getLogger().info(`Created and synced prover node`);
|
|
753
|
+
return { proverNode };
|
|
754
|
+
});
|
|
867
755
|
}
|
|
868
756
|
|
|
869
757
|
export type BalancesFn = ReturnType<typeof getBalancesFn>;
|
|
870
758
|
export function getBalancesFn(
|
|
871
759
|
symbol: string,
|
|
872
760
|
method: ContractMethod,
|
|
873
|
-
from: AztecAddress,
|
|
874
761
|
logger: any,
|
|
875
762
|
): (...addresses: (AztecAddress | { address: AztecAddress })[]) => Promise<bigint[]> {
|
|
876
763
|
const balances = async (...addressLikes: (AztecAddress | { address: AztecAddress })[]) => {
|
|
877
764
|
const addresses = addressLikes.map(addressLike => ('address' in addressLike ? addressLike.address : addressLike));
|
|
878
|
-
const b = await Promise.all(
|
|
765
|
+
const b = await Promise.all(
|
|
766
|
+
addresses.map(async address => (await method(address).simulate({ from: address })).result),
|
|
767
|
+
);
|
|
879
768
|
const debugString = `${symbol} balances: ${addresses.map((address, i) => `${address}: ${b[i]}`).join(', ')}`;
|
|
880
769
|
logger.verbose(debugString);
|
|
881
770
|
return b;
|
|
@@ -961,7 +850,7 @@ export const deployAccounts =
|
|
|
961
850
|
);
|
|
962
851
|
const deployMethod = await accountManager.getDeployMethod();
|
|
963
852
|
await deployMethod.send({
|
|
964
|
-
from:
|
|
853
|
+
from: NO_FROM,
|
|
965
854
|
skipClassPublication: i !== 0, // Publish the contract class at most once.
|
|
966
855
|
});
|
|
967
856
|
}
|
|
@@ -993,7 +882,7 @@ export async function publicDeployAccounts(
|
|
|
993
882
|
|
|
994
883
|
const batch = new BatchCall(wallet, calls);
|
|
995
884
|
|
|
996
|
-
const txReceipt = await batch.send({ from: accountsToDeploy[0] });
|
|
885
|
+
const { receipt: txReceipt } = await batch.send({ from: accountsToDeploy[0] });
|
|
997
886
|
if (waitUntilProven) {
|
|
998
887
|
if (!node) {
|
|
999
888
|
throw new Error('Need to provide an AztecNode to wait for proven.');
|