@aztec/end-to-end 0.0.1-commit.d6f2b3f94 → 0.0.1-commit.d939eb5aa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- 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 +22 -29
- 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 +6 -3
- 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 +23 -13
- 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_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 +60 -38
- 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 +19 -12
- 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 +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +9 -10
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +38 -20
- package/dest/e2e_p2p/reqresp/utils.d.ts +3 -3
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
- package/dest/e2e_p2p/reqresp/utils.js +46 -9
- package/dest/e2e_p2p/shared.d.ts +26 -8
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +51 -45
- 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 +34 -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 +1 -1
- package/dest/fixtures/ha_setup.d.ts.map +1 -1
- package/dest/fixtures/ha_setup.js +3 -1
- package/dest/fixtures/setup.d.ts +41 -17
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +76 -95
- package/dest/fixtures/setup_p2p_test.d.ts +10 -7
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +18 -15
- 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/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- 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 +14 -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 +100 -39
- 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 +7 -1
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +3 -1
- package/dest/spartan/utils/index.d.ts +4 -2
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +5 -1
- package/dest/spartan/utils/k8s.d.ts +3 -1
- package/dest/spartan/utils/k8s.d.ts.map +1 -1
- package/dest/spartan/utils/k8s.js +6 -0
- package/dest/spartan/utils/nodes.d.ts +4 -5
- package/dest/spartan/utils/nodes.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +9 -9
- 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/test-wallet/test_wallet.d.ts +84 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +249 -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 +279 -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 +43 -43
- package/src/bench/client_flows/client_flows_benchmark.ts +26 -13
- package/src/bench/utils.ts +7 -2
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +30 -20
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +1 -1
- package/src/e2e_deploy_contract/deploy_test.ts +1 -1
- package/src/e2e_epochs/epochs_test.ts +78 -66
- package/src/e2e_fees/bridging_race.notest.ts +1 -1
- package/src/e2e_fees/fees_test.ts +15 -23
- package/src/e2e_nested_contract/nested_contract_test.ts +6 -4
- package/src/e2e_p2p/inactivity_slash_test.ts +3 -3
- package/src/e2e_p2p/p2p_network.ts +54 -33
- package/src/e2e_p2p/reqresp/utils.ts +58 -9
- package/src/e2e_p2p/shared.ts +73 -60
- package/src/e2e_token_contract/token_contract_test.ts +25 -8
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +44 -53
- 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 +3 -1
- package/src/fixtures/setup.ts +108 -130
- package/src/fixtures/setup_p2p_test.ts +17 -25
- package/src/fixtures/token_utils.ts +3 -3
- package/src/guides/up_quick_start.sh +3 -3
- package/src/legacy-jest-resolver.cjs +135 -0
- 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 +36 -29
- package/src/simulators/lending_simulator.ts +8 -4
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +141 -32
- package/src/spartan/tx_metrics.ts +1 -1
- package/src/spartan/utils/bot.ts +4 -1
- package/src/spartan/utils/config.ts +2 -0
- package/src/spartan/utils/index.ts +7 -0
- package/src/spartan/utils/k8s.ts +8 -0
- package/src/spartan/utils/nodes.ts +15 -10
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/test-wallet/test_wallet.ts +351 -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 +214 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
|
@@ -42,8 +42,10 @@ import { privateKeyToAccount } from 'viem/accounts';
|
|
|
42
42
|
try {
|
|
43
43
|
// Drop all HA tables
|
|
44
44
|
await pool.query('DROP TABLE IF EXISTS validator_duties CASCADE');
|
|
45
|
-
await pool.query('DROP TABLE IF EXISTS slashing_protection CASCADE');
|
|
46
45
|
await pool.query('DROP TABLE IF EXISTS schema_version CASCADE');
|
|
46
|
+
// Drop migration tracking table (node-pg-migrate uses 'pgmigrations' by default)
|
|
47
|
+
// This ensures migrations will run fresh on next startup
|
|
48
|
+
await pool.query('DROP TABLE IF EXISTS pgmigrations CASCADE');
|
|
47
49
|
logger?.info('HA database cleaned up successfully');
|
|
48
50
|
} catch (error) {
|
|
49
51
|
logger?.error(`Failed to cleanup HA database: ${error}`);
|
package/dest/fixtures/setup.d.ts
CHANGED
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
import { type InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
3
3
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
-
import { type ContractMethod } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import { type ContractMethod, type DeployInteractionWaitOptions, type DeployOptions } from '@aztec/aztec.js/contracts';
|
|
5
5
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
6
6
|
import { type Logger } from '@aztec/aztec.js/log';
|
|
7
7
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
8
8
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
9
9
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
10
10
|
import { type DeployAztecL1ContractsArgs, type DeployAztecL1ContractsReturnType, type Operator, type ZKPassportArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
11
|
+
import type { Delayer } from '@aztec/ethereum/l1-tx-utils';
|
|
11
12
|
import { EthCheatCodes, startAnvil } from '@aztec/ethereum/test';
|
|
13
|
+
import type { Anvil } from '@aztec/ethereum/test';
|
|
12
14
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
13
15
|
import { SecretValue } from '@aztec/foundation/config';
|
|
14
|
-
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
15
|
-
import type {
|
|
16
|
+
import { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
17
|
+
import type { P2PClientDeps } from '@aztec/p2p';
|
|
16
18
|
import { MockGossipSubNetwork } from '@aztec/p2p/test-helpers';
|
|
17
|
-
import
|
|
19
|
+
import type { ProverNodeConfig } from '@aztec/prover-node';
|
|
18
20
|
import { type PXEConfig } from '@aztec/pxe/server';
|
|
19
21
|
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
20
22
|
import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
21
|
-
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
23
|
+
import type { AztecNodeAdmin, AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
|
|
22
24
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
25
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
23
26
|
import { type TelemetryClient, type TelemetryClientConfig } from '@aztec/telemetry-client';
|
|
24
|
-
import { TestWallet } from '@aztec/test-wallet/server';
|
|
25
|
-
import type { Anvil } from '@viem/anvil';
|
|
26
27
|
import { type Chain } from 'viem/chains';
|
|
28
|
+
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
27
29
|
import { getACVMConfig } from './get_acvm_config.js';
|
|
28
30
|
import { getBBConfig } from './get_bb_config.js';
|
|
29
31
|
export { startAnvil };
|
|
@@ -81,6 +83,8 @@ export type SetupOptions = {
|
|
|
81
83
|
proverNodeConfig?: Partial<ProverNodeConfig>;
|
|
82
84
|
/** Whether to use a mock gossip sub network for p2p clients. */
|
|
83
85
|
mockGossipSubNetwork?: boolean;
|
|
86
|
+
/** Whether to add simulated latency to the mock gossipsub network (in ms) */
|
|
87
|
+
mockGossipSubNetworkLatency?: number;
|
|
84
88
|
/** Whether to disable the anvil test watcher (can still be manually started) */
|
|
85
89
|
disableAnvilTestWatcher?: boolean;
|
|
86
90
|
/** Whether to enable anvil automine during deployment of L1 contracts (consider defaulting this to true). */
|
|
@@ -89,6 +93,11 @@ export type SetupOptions = {
|
|
|
89
93
|
anvilAccounts?: number;
|
|
90
94
|
/** Port to start anvil (defaults to 8545) */
|
|
91
95
|
anvilPort?: number;
|
|
96
|
+
/**
|
|
97
|
+
* Number of slots per epoch for Anvil's finality simulation.
|
|
98
|
+
* Anvil reports `finalized = latest - slotsInAnEpoch * 2`.
|
|
99
|
+
*/
|
|
100
|
+
anvilSlotsInAnEpoch?: number;
|
|
92
101
|
/** Key to use for publishing L1 contracts */
|
|
93
102
|
l1PublisherKey?: SecretValue<`0x${string}`>;
|
|
94
103
|
/** ZkPassport configuration (domain, scope, mock verifier) */
|
|
@@ -107,13 +116,13 @@ export type EndToEndContext = {
|
|
|
107
116
|
/** The Anvil instance (only set if anvil was started locally). */
|
|
108
117
|
anvil: Anvil | undefined;
|
|
109
118
|
/** The Aztec Node service or client a connected to it. */
|
|
110
|
-
aztecNode: AztecNode;
|
|
119
|
+
aztecNode: AztecNode & AztecNodeDebug;
|
|
111
120
|
/** The Aztec Node as a service. */
|
|
112
121
|
aztecNodeService: AztecNodeService;
|
|
113
122
|
/** Client to the Aztec Node admin interface. */
|
|
114
123
|
aztecNodeAdmin: AztecNodeAdmin;
|
|
115
|
-
/** The prover node
|
|
116
|
-
proverNode:
|
|
124
|
+
/** The aztec node running the prover node subsystem (only set if startProverNode is true). */
|
|
125
|
+
proverNode: AztecNodeService | undefined;
|
|
117
126
|
/** A client to the sequencer service. */
|
|
118
127
|
sequencer: SequencerClient | undefined;
|
|
119
128
|
/** Return values from deployAztecL1Contracts function. */
|
|
@@ -142,8 +151,12 @@ export type EndToEndContext = {
|
|
|
142
151
|
telemetryClient: TelemetryClient;
|
|
143
152
|
/** Mock gossip sub network used for gossipping messages (only if mockGossipSubNetwork was set to true in opts) */
|
|
144
153
|
mockGossipSubNetwork: MockGossipSubNetwork | undefined;
|
|
145
|
-
/**
|
|
146
|
-
|
|
154
|
+
/** Delayer for sequencer L1 txs (only when enableDelayer is true). */
|
|
155
|
+
sequencerDelayer: Delayer | undefined;
|
|
156
|
+
/** Delayer for prover node L1 txs (only when enableDelayer and startProverNode are true). */
|
|
157
|
+
proverDelayer: Delayer | undefined;
|
|
158
|
+
/** Genesis data used for setting up nodes. */
|
|
159
|
+
genesis: GenesisData | undefined;
|
|
147
160
|
/** ACVM config (only set if running locally). */
|
|
148
161
|
acvmConfig: Awaited<ReturnType<typeof getACVMConfig>>;
|
|
149
162
|
/** BB config (only set if running locally). */
|
|
@@ -181,11 +194,22 @@ export declare function setupSponsoredFPC(wallet: Wallet): Promise<ContractInsta
|
|
|
181
194
|
*/
|
|
182
195
|
export declare function registerSponsoredFPC(wallet: Wallet): Promise<void>;
|
|
183
196
|
export declare function waitForProvenChain(node: AztecNode, targetBlock?: BlockNumber, timeoutSec?: number, intervalSec?: number): Promise<void>;
|
|
184
|
-
|
|
197
|
+
/**
|
|
198
|
+
* Creates an AztecNodeService with the prover node enabled as a subsystem.
|
|
199
|
+
* Returns both the aztec node service (for lifecycle management) and the prover node (for test internals access).
|
|
200
|
+
*/
|
|
201
|
+
export declare function createAndSyncProverNode(proverNodePrivateKey: `0x${string}`, baseConfig: AztecNodeConfig, configOverrides: Pick<AztecNodeConfig, 'dataDirectory'>, deps: {
|
|
202
|
+
telemetry?: TelemetryClient;
|
|
203
|
+
dateProvider: DateProvider;
|
|
204
|
+
p2pClientDeps?: P2PClientDeps;
|
|
205
|
+
}, options: {
|
|
206
|
+
genesis?: GenesisData;
|
|
185
207
|
dontStart?: boolean;
|
|
186
|
-
}
|
|
208
|
+
}): Promise<{
|
|
209
|
+
proverNode: AztecNodeService;
|
|
210
|
+
}>;
|
|
187
211
|
export type BalancesFn = ReturnType<typeof getBalancesFn>;
|
|
188
|
-
export declare function getBalancesFn(symbol: string, method: ContractMethod,
|
|
212
|
+
export declare function getBalancesFn(symbol: string, method: ContractMethod, logger: any): (...addresses: (AztecAddress | {
|
|
189
213
|
address: AztecAddress;
|
|
190
214
|
})[]) => Promise<bigint[]>;
|
|
191
215
|
export declare function expectMapping<K, V>(fn: (...k: K[]) => Promise<V[]>, inputs: K[], expectedOutputs: V[]): Promise<void>;
|
|
@@ -199,7 +223,7 @@ export declare function ensureAccountContractsPublished(wallet: Wallet, accounts
|
|
|
199
223
|
* Helper function to deploy accounts.
|
|
200
224
|
* Returns deployed account data that can be used by tests.
|
|
201
225
|
*/
|
|
202
|
-
export declare const deployAccounts: (numberOfAccounts: number, logger: Logger) => ({ wallet, initialFundedAccounts }: {
|
|
226
|
+
export declare const deployAccounts: (numberOfAccounts: number, logger: Logger, deployOptions?: Partial<DeployOptions<DeployInteractionWaitOptions>> | undefined) => ({ wallet, initialFundedAccounts }: {
|
|
203
227
|
wallet: TestWallet;
|
|
204
228
|
initialFundedAccounts: InitialAccountData[];
|
|
205
229
|
}) => Promise<{
|
|
@@ -215,4 +239,4 @@ export declare function publicDeployAccounts(wallet: Wallet, accountsToDeploy: A
|
|
|
215
239
|
*/
|
|
216
240
|
export declare function teardown(context: EndToEndContext | undefined): Promise<void>;
|
|
217
241
|
export { deployAndInitializeTokenAndBridgeContracts } from '../shared/cross_chain_test_harness.js';
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBMkIsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsZ0JBQWdCLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFN0YsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFHTCxLQUFLLGNBQWMsRUFDbkIsS0FBSyw0QkFBNEIsRUFDakMsS0FBSyxhQUFhLEVBR25CLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPcEUsT0FBTyxFQUNMLEtBQUssMEJBQTBCLEVBQy9CLEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssUUFBUSxFQUNiLEtBQUssY0FBYyxFQUVwQixNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQTBCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAA2B,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup.ts"],"names":[],"mappings":"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"}
|
package/dest/fixtures/setup.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
2
2
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
3
|
-
import { createArchiver } from '@aztec/archiver';
|
|
4
3
|
import { AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
5
|
-
import {
|
|
4
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
5
|
+
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
6
6
|
import { BatchCall, getContractClassFromArtifact, waitForProven } from '@aztec/aztec.js/contracts';
|
|
7
7
|
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
8
8
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
9
9
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
10
10
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
11
|
-
import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
12
11
|
import { SPONSORED_FPC_SALT } from '@aztec/constants';
|
|
13
12
|
import { isAnvilTestChain } from '@aztec/ethereum/chain';
|
|
14
13
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
@@ -16,7 +15,7 @@ import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
|
16
15
|
import { NULL_KEY } from '@aztec/ethereum/constants';
|
|
17
16
|
import { deployMulticall3 } from '@aztec/ethereum/contracts';
|
|
18
17
|
import { deployAztecL1Contracts } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
19
|
-
import {
|
|
18
|
+
import { EthCheatCodesWithState, startAnvil } from '@aztec/ethereum/test';
|
|
20
19
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
21
20
|
import { SecretValue } from '@aztec/foundation/config';
|
|
22
21
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
@@ -29,19 +28,19 @@ import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
|
29
28
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
30
29
|
import { MockGossipSubNetwork, getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
31
30
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
32
|
-
import { createProverNode } from '@aztec/prover-node';
|
|
33
31
|
import { getPXEConfig } from '@aztec/pxe/server';
|
|
34
32
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
35
33
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
36
34
|
import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
37
35
|
import { BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
|
|
38
|
-
import {
|
|
36
|
+
import { deployFundedSchnorrAccounts } from '@aztec/wallets/testing';
|
|
39
37
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
40
38
|
import fs from 'fs/promises';
|
|
41
39
|
import { tmpdir } from 'os';
|
|
42
40
|
import path from 'path';
|
|
43
41
|
import { generatePrivateKey, mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
44
42
|
import { foundry } from 'viem/chains';
|
|
43
|
+
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
45
44
|
import { MNEMONIC, TEST_MAX_PENDING_TX_POOL_COUNT, TEST_PEER_CHECK_INTERVAL_MS } from './fixtures.js';
|
|
46
45
|
import { getACVMConfig } from './get_acvm_config.js';
|
|
47
46
|
import { getBBConfig } from './get_bb_config.js';
|
|
@@ -116,7 +115,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
116
115
|
let anvil;
|
|
117
116
|
try {
|
|
118
117
|
opts.aztecTargetCommitteeSize ??= 0;
|
|
119
|
-
opts.
|
|
118
|
+
opts.slasherEnabled ??= false;
|
|
120
119
|
const config = {
|
|
121
120
|
...getConfigEnvVars(),
|
|
122
121
|
...opts
|
|
@@ -129,7 +128,10 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
129
128
|
config.realProofs = !!opts.realProofs;
|
|
130
129
|
// Only enforce the time table if requested
|
|
131
130
|
config.enforceTimeTable = !!opts.enforceTimeTable;
|
|
131
|
+
// Enable the tx delayer for tests (default config has it disabled, so we force-enable it here)
|
|
132
|
+
config.enableDelayer = true;
|
|
132
133
|
config.listenAddress = '127.0.0.1';
|
|
134
|
+
config.minTxPoolAgeMs = opts.minTxPoolAgeMs ?? 0;
|
|
133
135
|
const logger = getLogger();
|
|
134
136
|
// Create a temp directory for any services that need it and cleanup later
|
|
135
137
|
const directoryToCleanup = path.join(tmpdir(), randomBytes(8).toString('hex'));
|
|
@@ -139,6 +141,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
139
141
|
if (!config.dataDirectory) {
|
|
140
142
|
config.dataDirectory = directoryToCleanup;
|
|
141
143
|
}
|
|
144
|
+
const dateProvider = new TestDateProvider();
|
|
142
145
|
if (!config.l1RpcUrls?.length) {
|
|
143
146
|
if (!isAnvilTestChain(chain.id)) {
|
|
144
147
|
throw new Error(`No ETHEREUM_HOSTS set but non anvil chain requested`);
|
|
@@ -146,7 +149,9 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
146
149
|
const res = await startAnvil({
|
|
147
150
|
l1BlockTime: opts.ethereumSlotDuration,
|
|
148
151
|
accounts: opts.anvilAccounts,
|
|
149
|
-
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined)
|
|
152
|
+
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined),
|
|
153
|
+
slotsInAnEpoch: opts.anvilSlotsInAnEpoch,
|
|
154
|
+
dateProvider
|
|
150
155
|
});
|
|
151
156
|
anvil = res.anvil;
|
|
152
157
|
config.l1RpcUrls = [
|
|
@@ -159,7 +164,6 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
159
164
|
logger.info(`Logging metrics to ${filename}`);
|
|
160
165
|
setupMetricsLogger(filename);
|
|
161
166
|
}
|
|
162
|
-
const dateProvider = new TestDateProvider();
|
|
163
167
|
const ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls, dateProvider);
|
|
164
168
|
if (opts.stateLoad) {
|
|
165
169
|
await ethCheatCodes.loadChainState(opts.stateLoad);
|
|
@@ -174,8 +178,8 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
174
178
|
if (opts.l1PublisherKey && opts.l1PublisherKey.getValue() && opts.l1PublisherKey.getValue() != NULL_KEY) {
|
|
175
179
|
publisherPrivKeyHex = opts.l1PublisherKey.getValue();
|
|
176
180
|
publisherHdAccount = privateKeyToAccount(publisherPrivKeyHex);
|
|
177
|
-
} else if (config.
|
|
178
|
-
publisherPrivKeyHex = config.
|
|
181
|
+
} else if (config.sequencerPublisherPrivateKeys && config.sequencerPublisherPrivateKeys.length > 0 && config.sequencerPublisherPrivateKeys[0].getValue() != NULL_KEY) {
|
|
182
|
+
publisherPrivKeyHex = config.sequencerPublisherPrivateKeys[0].getValue();
|
|
179
183
|
publisherHdAccount = privateKeyToAccount(publisherPrivKeyHex);
|
|
180
184
|
} else if (!MNEMONIC) {
|
|
181
185
|
throw new Error(`Mnemonic not provided and no publisher private key`);
|
|
@@ -186,7 +190,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
186
190
|
const publisherPrivKeyRaw = publisherHdAccount.getHdKey().privateKey;
|
|
187
191
|
const publisherPrivKey = publisherPrivKeyRaw === null ? null : Buffer.from(publisherPrivKeyRaw);
|
|
188
192
|
publisherPrivKeyHex = `0x${publisherPrivKey.toString('hex')}`;
|
|
189
|
-
config.
|
|
193
|
+
config.sequencerPublisherPrivateKeys = [
|
|
190
194
|
new SecretValue(publisherPrivKeyHex)
|
|
191
195
|
];
|
|
192
196
|
}
|
|
@@ -201,7 +205,8 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
201
205
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
202
206
|
addressesToFund.push(sponsoredFPCAddress);
|
|
203
207
|
}
|
|
204
|
-
const
|
|
208
|
+
const genesisTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
209
|
+
const { genesisArchiveRoot, genesis, fundingNeeded } = await getGenesisValues(addressesToFund, opts.initialAccountFeeJuice, opts.genesisPublicData, genesisTimestamp);
|
|
205
210
|
const wasAutomining = await ethCheatCodes.isAutoMining();
|
|
206
211
|
const enableAutomine = opts.automineL1Setup && !wasAutomining && isAnvilTestChain(chain.id);
|
|
207
212
|
if (enableAutomine) {
|
|
@@ -231,7 +236,12 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
231
236
|
if (enableAutomine) {
|
|
232
237
|
await ethCheatCodes.setAutomine(false);
|
|
233
238
|
await ethCheatCodes.setIntervalMining(config.ethereumSlotDuration);
|
|
234
|
-
|
|
239
|
+
}
|
|
240
|
+
// In compose mode (no local anvil), sync dateProvider to L1 time since it may have drifted
|
|
241
|
+
// ahead of system time due to the local-network watcher warping time forward on each filled slot.
|
|
242
|
+
// When running with a local anvil, the dateProvider is kept in sync via the stdout listener.
|
|
243
|
+
if (!anvil) {
|
|
244
|
+
dateProvider.setTime(await ethCheatCodes.lastBlockTimestamp() * 1000);
|
|
235
245
|
}
|
|
236
246
|
if (opts.l2StartTime) {
|
|
237
247
|
await ethCheatCodes.warp(opts.l2StartTime, {
|
|
@@ -259,7 +269,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
259
269
|
let mockGossipSubNetwork;
|
|
260
270
|
let p2pClientDeps = undefined;
|
|
261
271
|
if (opts.mockGossipSubNetwork) {
|
|
262
|
-
mockGossipSubNetwork = new MockGossipSubNetwork();
|
|
272
|
+
mockGossipSubNetwork = new MockGossipSubNetwork(opts.mockGossipSubNetworkLatency);
|
|
263
273
|
p2pClientDeps = {
|
|
264
274
|
p2pServiceFactory: getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
265
275
|
};
|
|
@@ -293,30 +303,34 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
293
303
|
telemetry: telemetryClient,
|
|
294
304
|
p2pClientDeps
|
|
295
305
|
}, {
|
|
296
|
-
|
|
306
|
+
genesis
|
|
297
307
|
}));
|
|
298
308
|
const sequencerClient = aztecNodeService.getSequencer();
|
|
299
|
-
if (sequencerClient) {
|
|
300
|
-
const publisher = sequencerClient.sequencer.publisher;
|
|
301
|
-
publisher.l1TxUtils = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, config.ethereumSlotDuration, l1Client);
|
|
302
|
-
}
|
|
303
309
|
let proverNode = undefined;
|
|
304
310
|
if (opts.startProverNode) {
|
|
305
311
|
logger.verbose('Creating and syncing a simulated prover node...');
|
|
306
312
|
const proverNodePrivateKey = getPrivateKeyFromIndex(2);
|
|
307
313
|
const proverNodePrivateKeyHex = `0x${proverNodePrivateKey.toString('hex')}`;
|
|
308
314
|
const proverNodeDataDirectory = path.join(directoryToCleanup, randomBytes(8).toString('hex'));
|
|
309
|
-
const
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
315
|
+
const p2pClientDeps = {
|
|
316
|
+
p2pServiceFactory: mockGossipSubNetwork && getMockPubSubP2PServiceFactory(mockGossipSubNetwork),
|
|
317
|
+
rpcTxProviders: [
|
|
318
|
+
aztecNodeService
|
|
319
|
+
]
|
|
313
320
|
};
|
|
314
|
-
proverNode = await createAndSyncProverNode(proverNodePrivateKeyHex, config,
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
321
|
+
({ proverNode } = await createAndSyncProverNode(proverNodePrivateKeyHex, config, {
|
|
322
|
+
...config.proverNodeConfig,
|
|
323
|
+
dataDirectory: proverNodeDataDirectory
|
|
324
|
+
}, {
|
|
325
|
+
dateProvider,
|
|
326
|
+
p2pClientDeps,
|
|
327
|
+
telemetry: telemetryClient
|
|
328
|
+
}, {
|
|
329
|
+
genesis
|
|
330
|
+
}));
|
|
319
331
|
}
|
|
332
|
+
const sequencerDelayer = sequencerClient?.getDelayer();
|
|
333
|
+
const proverDelayer = proverNode?.getProverNode()?.getDelayer();
|
|
320
334
|
logger.verbose('Creating a pxe...');
|
|
321
335
|
const pxeConfig = {
|
|
322
336
|
...getPXEConfig(),
|
|
@@ -398,8 +412,10 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
398
412
|
initialFundedAccounts,
|
|
399
413
|
logger,
|
|
400
414
|
mockGossipSubNetwork,
|
|
401
|
-
|
|
415
|
+
genesis,
|
|
402
416
|
proverNode,
|
|
417
|
+
sequencerDelayer,
|
|
418
|
+
proverDelayer,
|
|
403
419
|
sequencer: sequencerClient,
|
|
404
420
|
teardown,
|
|
405
421
|
telemetryClient,
|
|
@@ -460,77 +476,41 @@ export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, int
|
|
|
460
476
|
targetBlock ??= await node.getBlockNumber();
|
|
461
477
|
await retryUntil(async ()=>await node.getProvenBlockNumber() >= targetBlock, 'proven chain status', timeoutSec, intervalSec);
|
|
462
478
|
}
|
|
463
|
-
|
|
479
|
+
/**
|
|
480
|
+
* Creates an AztecNodeService with the prover node enabled as a subsystem.
|
|
481
|
+
* Returns both the aztec node service (for lifecycle management) and the prover node (for test internals access).
|
|
482
|
+
*/ export function createAndSyncProverNode(proverNodePrivateKey, baseConfig, configOverrides, deps, options) {
|
|
464
483
|
return withLoggerBindings({
|
|
465
484
|
actor: 'prover-0'
|
|
466
485
|
}, async ()=>{
|
|
467
|
-
const
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
...aztecNodeConfig,
|
|
475
|
-
dataDirectory: proverNodeConfig.dataDirectory
|
|
476
|
-
};
|
|
477
|
-
const archiver = await createArchiver(archiverConfig, {
|
|
478
|
-
blobClient,
|
|
479
|
-
dateProvider: proverNodeDeps.dateProvider
|
|
480
|
-
}, {
|
|
481
|
-
blockUntilSync: true
|
|
482
|
-
});
|
|
483
|
-
const proverConfig = {
|
|
484
|
-
...aztecNodeConfig,
|
|
485
|
-
txCollectionNodeRpcUrls: [],
|
|
486
|
-
realProofs: false,
|
|
487
|
-
proverAgentCount: 2,
|
|
488
|
-
publisherPrivateKeys: [
|
|
486
|
+
const proverNode = await AztecNodeService.createAndSync({
|
|
487
|
+
...baseConfig,
|
|
488
|
+
...configOverrides,
|
|
489
|
+
p2pPort: 0,
|
|
490
|
+
enableProverNode: true,
|
|
491
|
+
disableValidator: true,
|
|
492
|
+
proverPublisherPrivateKeys: [
|
|
489
493
|
new SecretValue(proverNodePrivateKey)
|
|
490
|
-
]
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
txGatheringIntervalMs: 1000,
|
|
495
|
-
txGatheringBatchSize: 10,
|
|
496
|
-
txGatheringMaxParallelRequestsPerNode: 10,
|
|
497
|
-
txGatheringTimeoutMs: 24_000,
|
|
498
|
-
proverNodeFailedEpochStore: undefined,
|
|
499
|
-
proverId: EthAddress.fromNumber(1),
|
|
500
|
-
proverNodeEpochProvingDelayMs: undefined,
|
|
501
|
-
...proverNodeConfig
|
|
502
|
-
};
|
|
503
|
-
const l1TxUtils = createDelayedL1TxUtils(aztecNodeConfig, proverNodePrivateKey, 'prover-node', proverNodeDeps.dateProvider);
|
|
504
|
-
const proverNode = await createProverNode(proverConfig, {
|
|
505
|
-
...proverNodeDeps,
|
|
506
|
-
aztecNodeTxProvider,
|
|
507
|
-
archiver: archiver,
|
|
508
|
-
l1TxUtils
|
|
509
|
-
}, {
|
|
510
|
-
prefilledPublicData
|
|
511
|
-
});
|
|
512
|
-
getLogger().info(`Created and synced prover node`, {
|
|
513
|
-
publisherAddress: l1TxUtils.client.account.address
|
|
494
|
+
]
|
|
495
|
+
}, deps, {
|
|
496
|
+
genesis: options.genesis,
|
|
497
|
+
dontStartProverNode: options.dontStart
|
|
514
498
|
});
|
|
515
|
-
if (!
|
|
516
|
-
|
|
499
|
+
if (!proverNode.getProverNode()) {
|
|
500
|
+
throw new Error('Prover node subsystem was not created despite enableProverNode being set');
|
|
517
501
|
}
|
|
518
|
-
|
|
502
|
+
getLogger().info(`Created and synced prover node`);
|
|
503
|
+
return {
|
|
504
|
+
proverNode
|
|
505
|
+
};
|
|
519
506
|
});
|
|
520
507
|
}
|
|
521
|
-
function
|
|
522
|
-
const l1Client = createExtendedL1Client(aztecNodeConfig.l1RpcUrls, privateKey, foundry);
|
|
523
|
-
const log = createLogger(logName);
|
|
524
|
-
const l1TxUtils = createDelayedL1TxUtilsFromViemWallet(l1Client, log, dateProvider, aztecNodeConfig);
|
|
525
|
-
l1TxUtils.enableDelayer(aztecNodeConfig.ethereumSlotDuration);
|
|
526
|
-
return l1TxUtils;
|
|
527
|
-
}
|
|
528
|
-
export function getBalancesFn(symbol, method, from, logger) {
|
|
508
|
+
export function getBalancesFn(symbol, method, logger) {
|
|
529
509
|
const balances = async (...addressLikes)=>{
|
|
530
510
|
const addresses = addressLikes.map((addressLike)=>'address' in addressLike ? addressLike.address : addressLike);
|
|
531
|
-
const b = await Promise.all(addresses.map((address)=>method(address).simulate({
|
|
532
|
-
from
|
|
533
|
-
})));
|
|
511
|
+
const b = await Promise.all(addresses.map(async (address)=>(await method(address).simulate({
|
|
512
|
+
from: address
|
|
513
|
+
})).result));
|
|
534
514
|
const debugString = `${symbol} balances: ${addresses.map((address, i)=>`${address}: ${b[i]}`).join(', ')}`;
|
|
535
515
|
logger.verbose(debugString);
|
|
536
516
|
return b;
|
|
@@ -574,7 +554,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
574
554
|
/**
|
|
575
555
|
* Helper function to deploy accounts.
|
|
576
556
|
* Returns deployed account data that can be used by tests.
|
|
577
|
-
*/ export const deployAccounts = (numberOfAccounts, logger)=>async ({ wallet, initialFundedAccounts })=>{
|
|
557
|
+
*/ export const deployAccounts = (numberOfAccounts, logger, deployOptions)=>async ({ wallet, initialFundedAccounts })=>{
|
|
578
558
|
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
579
559
|
throw new Error(`Cannot deploy more than ${initialFundedAccounts.length} initial accounts.`);
|
|
580
560
|
}
|
|
@@ -585,8 +565,9 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
585
565
|
const accountManager = await wallet.createSchnorrAccount(deployedAccounts[i].secret, deployedAccounts[i].salt, deployedAccounts[i].signingKey);
|
|
586
566
|
const deployMethod = await accountManager.getDeployMethod();
|
|
587
567
|
await deployMethod.send({
|
|
588
|
-
from:
|
|
589
|
-
skipClassPublication: i !== 0
|
|
568
|
+
from: NO_FROM,
|
|
569
|
+
skipClassPublication: i !== 0,
|
|
570
|
+
...deployOptions
|
|
590
571
|
});
|
|
591
572
|
}
|
|
592
573
|
return {
|
|
@@ -607,7 +588,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
607
588
|
...instances.map((instance)=>publishInstance(wallet, instance))
|
|
608
589
|
]);
|
|
609
590
|
const batch = new BatchCall(wallet, calls);
|
|
610
|
-
const txReceipt = await batch.send({
|
|
591
|
+
const { receipt: txReceipt } = await batch.send({
|
|
611
592
|
from: accountsToDeploy[0]
|
|
612
593
|
});
|
|
613
594
|
if (waitUntilProven) {
|
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
5
5
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
6
|
-
import type {
|
|
7
|
-
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
6
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
8
7
|
export declare const ATTESTER_PRIVATE_KEYS_START_INDEX = 3;
|
|
9
8
|
export declare function generatePrivateKeys(startIndex: number, numberOfKeys: number): `0x${string}`[];
|
|
10
9
|
export declare function createNodes(config: AztecNodeConfig & {
|
|
11
10
|
dontStartSequencer?: boolean;
|
|
12
|
-
}, dateProvider: DateProvider, bootstrapNodeEnr: string, numNodes: number, bootNodePort: number,
|
|
11
|
+
}, dateProvider: DateProvider, bootstrapNodeEnr: string, numNodes: number, bootNodePort: number, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number, indexOffset?: number, validatorsPerNode?: number): Promise<AztecNodeService[]>;
|
|
13
12
|
/** Extended config type for createNode with test-specific overrides. */
|
|
14
13
|
export type CreateNodeConfig = AztecNodeConfig & {
|
|
15
14
|
/** Whether to skip starting the sequencer. */
|
|
@@ -18,10 +17,14 @@ export type CreateNodeConfig = AztecNodeConfig & {
|
|
|
18
17
|
validatorPrivateKey?: `0x${string}`;
|
|
19
18
|
};
|
|
20
19
|
/** Creates a P2P enabled instance of Aztec Node Service with a validator. */
|
|
21
|
-
export declare function createNode(config: CreateNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number | number[],
|
|
20
|
+
export declare function createNode(config: CreateNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number | number[], genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<AztecNodeService>;
|
|
22
21
|
/** Creates a P2P enabled instance of Aztec Node Service without a validator */
|
|
23
|
-
export declare function createNonValidatorNode(baseConfig: AztecNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined,
|
|
24
|
-
export declare function createProverNode(config: AztecNodeConfig, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number,
|
|
22
|
+
export declare function createNonValidatorNode(baseConfig: AztecNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<AztecNodeService>;
|
|
23
|
+
export declare function createProverNode(config: AztecNodeConfig, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number, deps: {
|
|
24
|
+
dateProvider: DateProvider;
|
|
25
|
+
}, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<{
|
|
26
|
+
proverNode: AztecNodeService;
|
|
27
|
+
}>;
|
|
25
28
|
export declare function createP2PConfig(config: AztecNodeConfig, bootstrapNodeEnr?: string, port?: number, dataDirectory?: string): Promise<AztecNodeConfig>;
|
|
26
29
|
export declare function createValidatorConfig(config: CreateNodeConfig, bootstrapNodeEnr?: string, port?: number, addressIndex?: number | number[], dataDirectory?: string): Promise<AztecNodeConfig>;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfcDJwX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9zZXR1cF9wMnBfdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVzdELGVBQU8sTUFBTSxpQ0FBaUMsSUFBSSxDQUFDO0FBT25ELHdCQUFnQixtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsS0FBSyxNQUFNLEVBQUUsRUFBRSxDQU83RjtBQUVELHdCQUFzQixXQUFXLENBQy9CLE1BQU0sRUFBRSxlQUFlLEdBQUc7SUFBRSxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUFFLEVBQzFELFlBQVksRUFBRSxZQUFZLEVBQzFCLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsWUFBWSxFQUFFLE1BQU0sRUFDcEIsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFDcEIsV0FBVyxTQUFJLEVBQ2YsaUJBQWlCLFNBQUksR0FDcEIsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FtQzdCO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLEdBQUc7SUFDL0MsOENBQThDO0lBQzlDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzdCLHdFQUF3RTtJQUN4RSxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7Q0FDckMsQ0FBQztBQUVGLDZFQUE2RTtBQUM3RSx3QkFBc0IsVUFBVSxDQUM5QixNQUFNLEVBQUUsZ0JBQWdCLEVBQ3hCLFlBQVksRUFBRSxZQUFZLEVBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQ2pDLFlBQVksRUFBRSxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQy9CLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFDckIsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUN0QixXQUFXLENBQUMsRUFBRSxNQUFNLDZCQVlyQjtBQUVELCtFQUErRTtBQUMvRSx3QkFBc0Isc0JBQXNCLENBQzFDLFVBQVUsRUFBRSxlQUFlLEVBQzNCLFlBQVksRUFBRSxZQUFZLEVBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQ2pDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFDckIsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUN0QixXQUFXLENBQUMsRUFBRSxNQUFNLDZCQWNyQjtBQUVELHdCQUFzQixnQkFBZ0IsQ0FDcEMsTUFBTSxFQUFFLGVBQWUsRUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDakMsWUFBWSxFQUFFLE1BQU0sRUFDcEIsSUFBSSxFQUFFO0lBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQTtDQUFFLEVBQ3BDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFDckIsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUN0QixXQUFXLENBQUMsRUFBRSxNQUFNLEdBQ25CLE9BQU8sQ0FBQztJQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQTtDQUFFLENBQUMsQ0FnQjNDO0FBRUQsd0JBQXNCLGVBQWUsQ0FDbkMsTUFBTSxFQUFFLGVBQWUsRUFDdkIsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQ3pCLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFDYixhQUFhLENBQUMsRUFBRSxNQUFNLDRCQWdCdkI7QUFFRCx3QkFBc0IscUJBQXFCLENBQ3pDLE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQ3pCLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFDYixZQUFZLEdBQUUsTUFBTSxHQUFHLE1BQU0sRUFBTSxFQUNuQyxhQUFhLENBQUMsRUFBRSxNQUFNLDRCQW9CdkIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAW7D,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAOnD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,EAAE,CAO7F;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,GAAG;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1D,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,SAAI,EACf,iBAAiB,SAAI,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmC7B;AAED,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,6EAA6E;AAC7E,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAC/B,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,6BAYrB;AAED,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,6BAcrB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,YAAY,EAAE,YAAY,CAAA;CAAE,EACpC,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAgB3C;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,4BAgBvB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,GAAE,MAAM,GAAG,MAAM,EAAM,EACnC,aAAa,CAAC,EAAE,MAAM,4BAoBvB"}
|