@aztec/end-to-end 0.0.1-commit.7b97ef96e → 0.0.1-commit.7cbc774
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/benchmark.d.ts +15 -1
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +17 -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 +33 -36
- package/dest/bench/utils.d.ts +1 -1
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +8 -3
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +5 -4
- 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 +28 -19
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +15 -4
- 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 +39 -7
- package/dest/e2e_deploy_contract/deploy_test.d.ts +3 -3
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +2 -1
- package/dest/e2e_epochs/epochs_test.d.ts +25 -2
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +88 -14
- package/dest/e2e_fees/fees_test.d.ts +5 -2
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +45 -12
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +3 -3
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +6 -7
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +5 -3
- package/dest/e2e_p2p/p2p_network.d.ts +13 -11
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +65 -43
- package/dest/e2e_p2p/reqresp/utils.d.ts +1 -1
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
- package/dest/e2e_p2p/reqresp/utils.js +42 -13
- package/dest/e2e_p2p/shared.d.ts +25 -7
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +73 -50
- package/dest/e2e_token_contract/token_contract_test.d.ts +3 -3
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +15 -13
- package/dest/fixtures/authwit_proxy.d.ts +3 -3
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -1
- package/dest/fixtures/authwit_proxy.js +4 -0
- package/dest/fixtures/e2e_prover_test.d.ts +6 -5
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +13 -17
- 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 +73 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +68 -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 +2 -2
- package/dest/fixtures/ha_setup.d.ts.map +1 -1
- package/dest/fixtures/ha_setup.js +1 -1
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
- package/dest/fixtures/setup.d.ts +45 -14
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +138 -29
- package/dest/fixtures/setup_p2p_test.d.ts +10 -6
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +8 -8
- 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 +2 -5
- package/dest/fixtures/utils.d.ts +2 -2
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +1 -1
- package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/install_legacy_contracts.d.cts +10 -0
- package/dest/install_legacy_contracts.d.cts.map +1 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/shared/cross_chain_test_harness.d.ts +4 -2
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +22 -18
- package/dest/shared/gas_portal_test_harness.d.ts +8 -5
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +19 -10
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/submit-transactions.d.ts +1 -1
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +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 +60 -39
- package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
- package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
- package/dest/simulators/lending_simulator.d.ts +10 -3
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +26 -14
- 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 -2
- package/dest/spartan/setup_test_wallets.d.ts +4 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +72 -39
- package/dest/spartan/tx_metrics.d.ts +18 -4
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +74 -21
- package/dest/spartan/utils/config.d.ts +10 -30
- 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 +3 -1
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +4 -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 +11 -11
- 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 +25 -23
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +146 -87
- package/dest/test-wallet/utils.d.ts +3 -3
- package/dest/test-wallet/utils.d.ts.map +1 -1
- package/dest/test-wallet/utils.js +2 -7
- package/dest/test-wallet/wallet_worker_script.js +42 -34
- package/dest/test-wallet/worker_wallet.d.ts +5 -4
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -1
- package/dest/test-wallet/worker_wallet.js +56 -4
- package/dest/test-wallet/worker_wallet_schema.d.ts +110 -224
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -1
- package/dest/test-wallet/worker_wallet_schema.js +14 -2
- package/package.json +49 -46
- package/src/bench/client_flows/benchmark.ts +19 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +60 -41
- package/src/bench/utils.ts +9 -3
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +42 -24
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +49 -11
- package/src/e2e_deploy_contract/deploy_test.ts +3 -2
- package/src/e2e_epochs/epochs_test.ts +99 -11
- package/src/e2e_fees/fees_test.ts +50 -10
- package/src/e2e_nested_contract/nested_contract_test.ts +9 -5
- package/src/e2e_p2p/inactivity_slash_test.ts +5 -3
- package/src/e2e_p2p/p2p_network.ts +82 -60
- package/src/e2e_p2p/reqresp/utils.ts +51 -12
- package/src/e2e_p2p/shared.ts +92 -64
- package/src/e2e_token_contract/token_contract_test.ts +28 -10
- package/src/fixtures/authwit_proxy.ts +4 -0
- package/src/fixtures/e2e_prover_test.ts +22 -19
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +86 -0
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +4 -2
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +179 -38
- package/src/fixtures/setup_p2p_test.ts +13 -9
- package/src/fixtures/token_utils.ts +1 -2
- package/src/fixtures/utils.ts +2 -0
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +104 -0
- package/src/guides/up_quick_start.sh +0 -2
- package/src/install_legacy_contracts.cjs +75 -0
- package/src/legacy-jest-resolver.cjs +112 -0
- package/src/shared/cross_chain_test_harness.ts +27 -13
- package/src/shared/gas_portal_test_harness.ts +21 -11
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/submit-transactions.ts +1 -4
- package/src/shared/uniswap_l1_l2.ts +77 -50
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +32 -14
- package/src/simulators/token_simulator.ts +6 -2
- package/src/spartan/setup_test_wallets.ts +91 -37
- package/src/spartan/tx_metrics.ts +82 -24
- package/src/spartan/utils/config.ts +2 -0
- package/src/spartan/utils/index.ts +6 -0
- package/src/spartan/utils/nodes.ts +17 -12
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/test-wallet/test_wallet.ts +174 -104
- package/src/test-wallet/utils.ts +3 -7
- package/src/test-wallet/wallet_worker_script.ts +48 -31
- package/src/test-wallet/worker_wallet.ts +60 -7
- package/src/test-wallet/worker_wallet_schema.ts +2 -2
package/dest/fixtures/setup.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
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 DeployOptions, type InteractionWaitOptions } 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
|
-
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
9
|
+
import { AnvilTestWatcher, type AnvilTestWatcherOpts, CheatCodes } from '@aztec/aztec/testing';
|
|
10
10
|
import { type DeployAztecL1ContractsArgs, type DeployAztecL1ContractsReturnType, type Operator, type ZKPassportArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
11
11
|
import type { Delayer } from '@aztec/ethereum/l1-tx-utils';
|
|
12
12
|
import { EthCheatCodes, startAnvil } from '@aztec/ethereum/test';
|
|
13
|
+
import type { Anvil } from '@aztec/ethereum/test';
|
|
13
14
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
14
15
|
import { SecretValue } from '@aztec/foundation/config';
|
|
15
16
|
import { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
16
17
|
import type { P2PClientDeps } from '@aztec/p2p';
|
|
17
18
|
import { MockGossipSubNetwork } from '@aztec/p2p/test-helpers';
|
|
18
19
|
import type { ProverNodeConfig } from '@aztec/prover-node';
|
|
19
|
-
import { type PXEConfig } from '@aztec/pxe/server';
|
|
20
|
+
import { type PXEConfig, type PXECreationOptions } from '@aztec/pxe/server';
|
|
20
21
|
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
21
22
|
import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
22
|
-
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
23
|
-
import type { P2PClientType } from '@aztec/stdlib/p2p';
|
|
23
|
+
import type { AztecNodeAdmin, AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
|
|
24
24
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
25
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
25
26
|
import { type TelemetryClient, type TelemetryClientConfig } from '@aztec/telemetry-client';
|
|
26
|
-
import type { Anvil } from '@viem/anvil';
|
|
27
27
|
import { type Chain } from 'viem/chains';
|
|
28
28
|
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
29
29
|
import { getACVMConfig } from './get_acvm_config.js';
|
|
@@ -83,14 +83,22 @@ export type SetupOptions = {
|
|
|
83
83
|
proverNodeConfig?: Partial<ProverNodeConfig>;
|
|
84
84
|
/** Whether to use a mock gossip sub network for p2p clients. */
|
|
85
85
|
mockGossipSubNetwork?: boolean;
|
|
86
|
+
/** Whether to add simulated latency to the mock gossipsub network (in ms) */
|
|
87
|
+
mockGossipSubNetworkLatency?: number;
|
|
86
88
|
/** Whether to disable the anvil test watcher (can still be manually started) */
|
|
87
89
|
disableAnvilTestWatcher?: boolean;
|
|
90
|
+
anvilTestWatcherOpts?: AnvilTestWatcherOpts;
|
|
88
91
|
/** Whether to enable anvil automine during deployment of L1 contracts (consider defaulting this to true). */
|
|
89
92
|
automineL1Setup?: boolean;
|
|
90
93
|
/** How many accounts to seed and unlock in anvil. */
|
|
91
94
|
anvilAccounts?: number;
|
|
92
95
|
/** Port to start anvil (defaults to 8545) */
|
|
93
96
|
anvilPort?: number;
|
|
97
|
+
/**
|
|
98
|
+
* Number of slots per epoch for Anvil's finality simulation.
|
|
99
|
+
* Anvil reports `finalized = latest - slotsInAnEpoch * 2`.
|
|
100
|
+
*/
|
|
101
|
+
anvilSlotsInAnEpoch?: number;
|
|
94
102
|
/** Key to use for publishing L1 contracts */
|
|
95
103
|
l1PublisherKey?: SecretValue<`0x${string}`>;
|
|
96
104
|
/** ZkPassport configuration (domain, scope, mock verifier) */
|
|
@@ -101,15 +109,23 @@ export type SetupOptions = {
|
|
|
101
109
|
skipAccountDeployment?: boolean;
|
|
102
110
|
/** L1 contracts deployment arguments. */
|
|
103
111
|
l1ContractsArgs?: Partial<DeployAztecL1ContractsArgs>;
|
|
104
|
-
/** Wallet minimum fee padding multiplier
|
|
112
|
+
/** Wallet minimum fee padding multiplier */
|
|
105
113
|
walletMinFeePadding?: number;
|
|
114
|
+
/** Whether the initial node should be a lightweight RPC-only node (no sequencer, no validator).
|
|
115
|
+
* Use for tests that create their own validator nodes and don't need the initial sequencer. */
|
|
116
|
+
skipInitialSequencer?: boolean;
|
|
117
|
+
/** Whether to swap the production Sequencer for the minimal AutomineSequencer.
|
|
118
|
+
* Use only for single-sequencer non-block-building tests. See AUTOMINE_E2E_OPTS in `fixtures.ts`. */
|
|
119
|
+
useAutomineSequencer?: boolean;
|
|
120
|
+
/** Options forwarded to PXE creation (e.g. execution hooks). */
|
|
121
|
+
pxeCreationOptions?: PXECreationOptions;
|
|
106
122
|
} & Partial<AztecNodeConfig>;
|
|
107
123
|
/** Context for an end-to-end test as returned by the `setup` function */
|
|
108
124
|
export type EndToEndContext = {
|
|
109
125
|
/** The Anvil instance (only set if anvil was started locally). */
|
|
110
126
|
anvil: Anvil | undefined;
|
|
111
127
|
/** The Aztec Node service or client a connected to it. */
|
|
112
|
-
aztecNode: AztecNode;
|
|
128
|
+
aztecNode: AztecNode & AztecNodeDebug;
|
|
113
129
|
/** The Aztec Node as a service. */
|
|
114
130
|
aztecNodeService: AztecNodeService;
|
|
115
131
|
/** Client to the Aztec Node admin interface. */
|
|
@@ -148,8 +164,8 @@ export type EndToEndContext = {
|
|
|
148
164
|
sequencerDelayer: Delayer | undefined;
|
|
149
165
|
/** Delayer for prover node L1 txs (only when enableDelayer and startProverNode are true). */
|
|
150
166
|
proverDelayer: Delayer | undefined;
|
|
151
|
-
/**
|
|
152
|
-
|
|
167
|
+
/** Genesis data used for setting up nodes. */
|
|
168
|
+
genesis: GenesisData | undefined;
|
|
153
169
|
/** ACVM config (only set if running locally). */
|
|
154
170
|
acvmConfig: Awaited<ReturnType<typeof getACVMConfig>>;
|
|
155
171
|
/** BB config (only set if running locally). */
|
|
@@ -194,9 +210,9 @@ export declare function waitForProvenChain(node: AztecNode, targetBlock?: BlockN
|
|
|
194
210
|
export declare function createAndSyncProverNode(proverNodePrivateKey: `0x${string}`, baseConfig: AztecNodeConfig, configOverrides: Pick<AztecNodeConfig, 'dataDirectory'>, deps: {
|
|
195
211
|
telemetry?: TelemetryClient;
|
|
196
212
|
dateProvider: DateProvider;
|
|
197
|
-
p2pClientDeps?: P2PClientDeps
|
|
213
|
+
p2pClientDeps?: P2PClientDeps;
|
|
198
214
|
}, options: {
|
|
199
|
-
|
|
215
|
+
genesis?: GenesisData;
|
|
200
216
|
dontStart?: boolean;
|
|
201
217
|
}): Promise<{
|
|
202
218
|
proverNode: AztecNodeService;
|
|
@@ -207,6 +223,21 @@ export declare function getBalancesFn(symbol: string, method: ContractMethod, lo
|
|
|
207
223
|
})[]) => Promise<bigint[]>;
|
|
208
224
|
export declare function expectMapping<K, V>(fn: (...k: K[]) => Promise<V[]>, inputs: K[], expectedOutputs: V[]): Promise<void>;
|
|
209
225
|
export declare function expectMappingDelta<K, V extends number | bigint>(initialValues: V[], fn: (...k: K[]) => Promise<V[]>, inputs: K[], expectedDiffs: V[]): Promise<void>;
|
|
226
|
+
/**
|
|
227
|
+
* Registers the auth_registry contract class and publishes its standard instance if not already
|
|
228
|
+
* present, and registers the artifact with PXE. Publishing is required before exercising the public
|
|
229
|
+
* authwit path (which relies on the AVM's deployment-nullifier check); the PXE-side registration is
|
|
230
|
+
* required so revert messages from AuthRegistry calls can be enriched (otherwise assertion strings
|
|
231
|
+
* surface as generic "Assertion failed:" and tests that match on the real message fail).
|
|
232
|
+
*/
|
|
233
|
+
export declare function ensureAuthRegistryPublished(wallet: Wallet, from: AztecAddress): Promise<void>;
|
|
234
|
+
/**
|
|
235
|
+
* Registers the public_checks contract class and publishes its standard instance if not already
|
|
236
|
+
* present, and registers the artifact with PXE. Required for any contract that calls
|
|
237
|
+
* `privately_check_timestamp` / `privately_check_block_number` (which dispatch into the
|
|
238
|
+
* deployed PublicChecks contract via an enqueued public call).
|
|
239
|
+
*/
|
|
240
|
+
export declare function ensurePublicChecksPublished(wallet: Wallet, from: AztecAddress): Promise<void>;
|
|
210
241
|
/**
|
|
211
242
|
* Registers the contract class used for test accounts and publicly deploys the instances requested.
|
|
212
243
|
* Use this when you need to make a public call to an account contract, such as for requesting a public authwit.
|
|
@@ -216,7 +247,7 @@ export declare function ensureAccountContractsPublished(wallet: Wallet, accounts
|
|
|
216
247
|
* Helper function to deploy accounts.
|
|
217
248
|
* Returns deployed account data that can be used by tests.
|
|
218
249
|
*/
|
|
219
|
-
export declare const deployAccounts: (numberOfAccounts: number, logger: Logger) => ({ wallet, initialFundedAccounts }: {
|
|
250
|
+
export declare const deployAccounts: (numberOfAccounts: number, logger: Logger, deployOptions?: Partial<DeployOptions<InteractionWaitOptions>> | undefined) => ({ wallet, initialFundedAccounts }: {
|
|
220
251
|
wallet: TestWallet;
|
|
221
252
|
initialFundedAccounts: InitialAccountData[];
|
|
222
253
|
}) => Promise<{
|
|
@@ -232,4 +263,4 @@ export declare function publicDeployAccounts(wallet: Wallet, accountsToDeploy: A
|
|
|
232
263
|
*/
|
|
233
264
|
export declare function teardown(context: EndToEndContext | undefined): Promise<void>;
|
|
234
265
|
export { deployAndInitializeTokenAndBridgeContracts } from '../shared/cross_chain_test_harness.js';
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBMkIsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsZ0JBQWdCLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFN0YsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFHTCxLQUFLLGNBQWMsRUFDbkIsS0FBSyxhQUFhLEVBQ2xCLEtBQUssc0JBQXNCLEVBRzVCLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU8vRixPQUFPLEVBQ0wsS0FBSywwQkFBMEIsRUFDL0IsS0FBSyxnQ0FBZ0MsRUFDckMsS0FBSyxRQUFRLEVBQ2IsS0FBSyxjQUFjLEVBRXBCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBMEIsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekYsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBZSxNQUFNLGlDQUFpQyxD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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;AAC3F,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,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,7 +1,8 @@
|
|
|
1
1
|
import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
2
2
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
3
3
|
import { AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
4
|
-
import {
|
|
4
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
5
|
+
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
5
6
|
import { BatchCall, getContractClassFromArtifact, waitForProven } from '@aztec/aztec.js/contracts';
|
|
6
7
|
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
7
8
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
@@ -28,6 +29,9 @@ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
|
28
29
|
import { MockGossipSubNetwork, getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
29
30
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
30
31
|
import { getPXEConfig } from '@aztec/pxe/server';
|
|
32
|
+
import { AuthRegistryArtifact, getStandardAuthRegistry } from '@aztec/standard-contracts/auth-registry';
|
|
33
|
+
import { PublicChecksArtifact, getStandardPublicChecks } from '@aztec/standard-contracts/public-checks';
|
|
34
|
+
import { ARTIFACT_VERSION_BEFORE_INJECTION } from '@aztec/stdlib/abi';
|
|
31
35
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
32
36
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
33
37
|
import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -105,16 +109,36 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
105
109
|
teardown
|
|
106
110
|
};
|
|
107
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* When CONTRACT_ARTIFACTS_VERSION is set (backwards compatibility testing), asserts that the loaded artifact's
|
|
114
|
+
* aztecVersion matches the expected version. This is a sanity check verifying that the legacy artifact resolver
|
|
115
|
+
* actually swapped in the correct version.
|
|
116
|
+
*/ function assertContractArtifactsVersion() {
|
|
117
|
+
const expected = process.env.CONTRACT_ARTIFACTS_VERSION;
|
|
118
|
+
if (!expected) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const { aztecVersion } = SponsoredFPCContract.artifact;
|
|
122
|
+
// TODO(F-557): Remove this bypass once pre-version artifacts are no longer tested.
|
|
123
|
+
if (aztecVersion === ARTIFACT_VERSION_BEFORE_INJECTION) {
|
|
124
|
+
createLogger('e2e:setup').info(`Skipping artifact version check: artifact predates version injection (CONTRACT_ARTIFACTS_VERSION=${expected})`);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (aztecVersion !== expected) {
|
|
128
|
+
throw new Error(`Artifact version mismatch: expected ${expected} but got ${aztecVersion}. ` + `The legacy artifact resolver may not have swapped in the correct version.`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
108
131
|
/**
|
|
109
132
|
* Sets up the environment for the end-to-end tests.
|
|
110
133
|
* @param numberOfAccounts - The number of new accounts to be created once the PXE is initiated.
|
|
111
134
|
* @param opts - Options to pass to the node initialization and to the setup script.
|
|
112
135
|
* @param pxeOpts - Options to pass to the PXE initialization.
|
|
113
136
|
*/ export async function setup(numberOfAccounts = 1, opts = {}, pxeOpts = {}, chain = foundry) {
|
|
137
|
+
assertContractArtifactsVersion();
|
|
114
138
|
let anvil;
|
|
115
139
|
try {
|
|
116
140
|
opts.aztecTargetCommitteeSize ??= 0;
|
|
117
|
-
opts.
|
|
141
|
+
opts.slasherEnabled ??= false;
|
|
118
142
|
const config = {
|
|
119
143
|
...getConfigEnvVars(),
|
|
120
144
|
...opts
|
|
@@ -140,6 +164,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
140
164
|
if (!config.dataDirectory) {
|
|
141
165
|
config.dataDirectory = directoryToCleanup;
|
|
142
166
|
}
|
|
167
|
+
const dateProvider = new TestDateProvider();
|
|
143
168
|
if (!config.l1RpcUrls?.length) {
|
|
144
169
|
if (!isAnvilTestChain(chain.id)) {
|
|
145
170
|
throw new Error(`No ETHEREUM_HOSTS set but non anvil chain requested`);
|
|
@@ -147,7 +172,9 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
147
172
|
const res = await startAnvil({
|
|
148
173
|
l1BlockTime: opts.ethereumSlotDuration,
|
|
149
174
|
accounts: opts.anvilAccounts,
|
|
150
|
-
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined)
|
|
175
|
+
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined),
|
|
176
|
+
slotsInAnEpoch: opts.anvilSlotsInAnEpoch,
|
|
177
|
+
dateProvider
|
|
151
178
|
});
|
|
152
179
|
anvil = res.anvil;
|
|
153
180
|
config.l1RpcUrls = [
|
|
@@ -160,7 +187,6 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
160
187
|
logger.info(`Logging metrics to ${filename}`);
|
|
161
188
|
setupMetricsLogger(filename);
|
|
162
189
|
}
|
|
163
|
-
const dateProvider = new TestDateProvider();
|
|
164
190
|
const ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls, dateProvider);
|
|
165
191
|
if (opts.stateLoad) {
|
|
166
192
|
await ethCheatCodes.loadChainState(opts.stateLoad);
|
|
@@ -202,7 +228,8 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
202
228
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
203
229
|
addressesToFund.push(sponsoredFPCAddress);
|
|
204
230
|
}
|
|
205
|
-
const
|
|
231
|
+
const genesisTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
232
|
+
const { genesisArchiveRoot, genesis, fundingNeeded } = await getGenesisValues(addressesToFund, opts.initialAccountFeeJuice, opts.genesisPublicData, genesisTimestamp);
|
|
206
233
|
const wasAutomining = await ethCheatCodes.isAutoMining();
|
|
207
234
|
const enableAutomine = opts.automineL1Setup && !wasAutomining && isAnvilTestChain(chain.id);
|
|
208
235
|
if (enableAutomine) {
|
|
@@ -227,23 +254,41 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
227
254
|
feeJuicePortalInitialBalance: fundingNeeded,
|
|
228
255
|
realVerifier: false
|
|
229
256
|
});
|
|
230
|
-
config
|
|
257
|
+
Object.assign(config, deployL1ContractsValues.l1ContractAddresses);
|
|
231
258
|
config.rollupVersion = deployL1ContractsValues.rollupVersion;
|
|
259
|
+
// Propagate L1-contracts-config overrides back to the node config so the archiver's
|
|
260
|
+
// `l1Constants` (and any other node-side consumer) agrees with what was actually deployed.
|
|
261
|
+
// Without this, a per-test override like `aztecEpochDuration: 4` lands on the rollup contract
|
|
262
|
+
// but the node config keeps the default (32), so `archiver.isEpochComplete(0)` computes
|
|
263
|
+
// `endSlot=31` and `EpochTestSettler`/`EpochMonitor` never fires — letting the
|
|
264
|
+
// `aztecProofSubmissionEpochs` window expire mid-test and prune the pending chain.
|
|
265
|
+
// Skip undefined values: callers (e.g. `P2PNetworkTest`) sometimes build `l1ContractsArgs`
|
|
266
|
+
// by spreading a partial `AztecNodeConfig`, which leaves unset fields (notably `dataDirectory`)
|
|
267
|
+
// as `undefined`. A blind Object.assign would then clobber the temp `dataDirectory` set earlier
|
|
268
|
+
// in this function and crash `setupSharedBlobStorage`.
|
|
269
|
+
if (opts.l1ContractsArgs) {
|
|
270
|
+
for (const [key, value] of Object.entries(opts.l1ContractsArgs)){
|
|
271
|
+
if (value !== undefined) {
|
|
272
|
+
config[key] = value;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
232
276
|
if (enableAutomine) {
|
|
233
277
|
await ethCheatCodes.setAutomine(false);
|
|
234
278
|
await ethCheatCodes.setIntervalMining(config.ethereumSlotDuration);
|
|
235
279
|
}
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
|
|
240
|
-
|
|
280
|
+
// In compose mode (no local anvil), sync dateProvider to L1 time since it may have drifted
|
|
281
|
+
// ahead of system time due to the local-network watcher warping time forward on each filled slot.
|
|
282
|
+
// When running with a local anvil, the dateProvider is kept in sync via the stdout listener.
|
|
283
|
+
if (!anvil) {
|
|
284
|
+
dateProvider.setTime(await ethCheatCodes.lastBlockTimestamp() * 1000);
|
|
285
|
+
}
|
|
241
286
|
if (opts.l2StartTime) {
|
|
242
287
|
await ethCheatCodes.warp(opts.l2StartTime, {
|
|
243
288
|
resetBlockInterval: true
|
|
244
289
|
});
|
|
245
290
|
}
|
|
246
|
-
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(config.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
|
|
291
|
+
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(config.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider, opts.anvilTestWatcherOpts);
|
|
247
292
|
if (!opts.disableAnvilTestWatcher) {
|
|
248
293
|
await watcher.start();
|
|
249
294
|
}
|
|
@@ -264,7 +309,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
264
309
|
let mockGossipSubNetwork;
|
|
265
310
|
let p2pClientDeps = undefined;
|
|
266
311
|
if (opts.mockGossipSubNetwork) {
|
|
267
|
-
mockGossipSubNetwork = new MockGossipSubNetwork();
|
|
312
|
+
mockGossipSubNetwork = new MockGossipSubNetwork(opts.mockGossipSubNetworkLatency);
|
|
268
313
|
p2pClientDeps = {
|
|
269
314
|
p2pServiceFactory: getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
270
315
|
};
|
|
@@ -281,7 +326,11 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
281
326
|
const shouldDeployAccounts = numberOfAccounts > 0 && !opts.skipAccountDeployment;
|
|
282
327
|
// Only set minTxsPerBlock=0 if we need an empty block (no accounts at all, not skipped deployment)
|
|
283
328
|
const needsEmptyBlock = numberOfAccounts === 0 && !opts.skipAccountDeployment;
|
|
284
|
-
|
|
329
|
+
// Under proposer pipelining the sequencer builds during slot N-1 for slot N. A tx submitted at
|
|
330
|
+
// slot N start is too late -- it arrives after the build. Forcing minTxsPerBlock=1 then stalls
|
|
331
|
+
// the chain on alternating slots, so allow empty checkpoints under pipelining.
|
|
332
|
+
const accountsDeployMinTxs = config.enableProposerPipelining ? 0 : 1;
|
|
333
|
+
config.minTxsPerBlock = shouldDeployAccounts ? accountsDeployMinTxs : needsEmptyBlock ? 0 : originalMinTxsPerBlock;
|
|
285
334
|
config.p2pEnabled = opts.mockGossipSubNetwork || config.p2pEnabled;
|
|
286
335
|
config.p2pIp = opts.p2pIp ?? config.p2pIp ?? '127.0.0.1';
|
|
287
336
|
if (!config.disableValidator) {
|
|
@@ -291,14 +340,26 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
291
340
|
]);
|
|
292
341
|
}
|
|
293
342
|
}
|
|
343
|
+
// When skipInitialSequencer is set, the initial node is a lightweight RPC-only node.
|
|
344
|
+
// We apply these overrides to a copy so they don't leak into the returned config.
|
|
345
|
+
// Keep P2P enabled if mockGossipSubNetwork is used (needed for tx propagation to validators).
|
|
346
|
+
const initialNodeConfig = opts.skipInitialSequencer ? {
|
|
347
|
+
...config,
|
|
348
|
+
disableValidator: true,
|
|
349
|
+
...opts.mockGossipSubNetwork ? {} : {
|
|
350
|
+
p2pEnabled: false,
|
|
351
|
+
bootstrapNodes: []
|
|
352
|
+
}
|
|
353
|
+
} : config;
|
|
294
354
|
const aztecNodeService = await withLoggerBindings({
|
|
295
355
|
actor: 'node-0'
|
|
296
|
-
}, ()=>AztecNodeService.createAndSync(
|
|
356
|
+
}, ()=>AztecNodeService.createAndSync(initialNodeConfig, {
|
|
297
357
|
dateProvider,
|
|
298
358
|
telemetry: telemetryClient,
|
|
299
359
|
p2pClientDeps
|
|
300
360
|
}, {
|
|
301
|
-
|
|
361
|
+
genesis,
|
|
362
|
+
dontStartSequencer: opts.skipInitialSequencer
|
|
302
363
|
}));
|
|
303
364
|
const sequencerClient = aztecNodeService.getSequencer();
|
|
304
365
|
let proverNode = undefined;
|
|
@@ -321,7 +382,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
321
382
|
p2pClientDeps,
|
|
322
383
|
telemetry: telemetryClient
|
|
323
384
|
}, {
|
|
324
|
-
|
|
385
|
+
genesis
|
|
325
386
|
}));
|
|
326
387
|
}
|
|
327
388
|
const sequencerDelayer = sequencerClient?.getDelayer();
|
|
@@ -335,12 +396,13 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
335
396
|
// For tests we only want proving enabled if specifically requested
|
|
336
397
|
pxeConfig.proverEnabled = !!pxeOpts.proverEnabled;
|
|
337
398
|
const wallet = await TestWallet.create(aztecNodeService, pxeConfig, {
|
|
338
|
-
loggerActorLabel: 'pxe-0'
|
|
399
|
+
loggerActorLabel: 'pxe-0',
|
|
400
|
+
...opts.pxeCreationOptions
|
|
339
401
|
});
|
|
340
402
|
if (opts.walletMinFeePadding !== undefined) {
|
|
341
403
|
wallet.setMinFeePadding(opts.walletMinFeePadding);
|
|
342
404
|
}
|
|
343
|
-
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, aztecNodeService, dateProvider);
|
|
405
|
+
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, aztecNodeService, dateProvider, aztecNodeService.getAutomineSequencer());
|
|
344
406
|
if (opts.aztecTargetCommitteeSize && opts.aztecTargetCommitteeSize > 0 || opts.initialValidators && opts.initialValidators.length > 0) {
|
|
345
407
|
// We need to advance such that the committee is set up.
|
|
346
408
|
await cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await cheatCodes.rollup.getEpoch()) + BigInt(config.lagInEpochsForValidatorSet + 1)));
|
|
@@ -348,13 +410,20 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
348
410
|
await cheatCodes.rollup.debugRollup();
|
|
349
411
|
}
|
|
350
412
|
let accounts = [];
|
|
351
|
-
if (
|
|
413
|
+
if (opts.skipInitialSequencer) {
|
|
414
|
+
logger.info('Sequencer not started on initial node, skipping block progression');
|
|
415
|
+
} else if (shouldDeployAccounts) {
|
|
352
416
|
logger.info(`${numberOfAccounts} accounts are being deployed. Reliably progressing past genesis by setting minTxsPerBlock to 1 and waiting for the accounts to be deployed`);
|
|
353
417
|
const accountsData = initialFundedAccounts.slice(0, numberOfAccounts);
|
|
354
418
|
const accountManagers = await deployFundedSchnorrAccounts(wallet, accountsData);
|
|
355
419
|
accounts = accountManagers.map((accountManager)=>accountManager.address);
|
|
356
420
|
} else if (needsEmptyBlock) {
|
|
357
421
|
logger.info('No accounts are being deployed, waiting for an empty block 1 to be mined');
|
|
422
|
+
// AutomineSequencer only builds on tx arrival; explicitly request an empty block.
|
|
423
|
+
const automine = aztecNodeService.getAutomineSequencer();
|
|
424
|
+
if (automine) {
|
|
425
|
+
await automine.buildEmptyBlock();
|
|
426
|
+
}
|
|
358
427
|
while(await aztecNodeService.getBlockNumber() === 0){
|
|
359
428
|
await sleep(2000);
|
|
360
429
|
}
|
|
@@ -407,7 +476,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
407
476
|
initialFundedAccounts,
|
|
408
477
|
logger,
|
|
409
478
|
mockGossipSubNetwork,
|
|
410
|
-
|
|
479
|
+
genesis,
|
|
411
480
|
proverNode,
|
|
412
481
|
sequencerDelayer,
|
|
413
482
|
proverDelayer,
|
|
@@ -469,7 +538,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
469
538
|
}
|
|
470
539
|
export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, intervalSec = 1) {
|
|
471
540
|
targetBlock ??= await node.getBlockNumber();
|
|
472
|
-
await retryUntil(async ()=>await node.
|
|
541
|
+
await retryUntil(async ()=>await node.getBlockNumber('proven') >= targetBlock, 'proven chain status', timeoutSec, intervalSec);
|
|
473
542
|
}
|
|
474
543
|
/**
|
|
475
544
|
* Creates an AztecNodeService with the prover node enabled as a subsystem.
|
|
@@ -488,7 +557,7 @@ export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, int
|
|
|
488
557
|
new SecretValue(proverNodePrivateKey)
|
|
489
558
|
]
|
|
490
559
|
}, deps, {
|
|
491
|
-
|
|
560
|
+
genesis: options.genesis,
|
|
492
561
|
dontStartProverNode: options.dontStart
|
|
493
562
|
});
|
|
494
563
|
if (!proverNode.getProverNode()) {
|
|
@@ -503,9 +572,9 @@ export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, int
|
|
|
503
572
|
export function getBalancesFn(symbol, method, logger) {
|
|
504
573
|
const balances = async (...addressLikes)=>{
|
|
505
574
|
const addresses = addressLikes.map((addressLike)=>'address' in addressLike ? addressLike.address : addressLike);
|
|
506
|
-
const b = await Promise.all(addresses.map((address)=>method(address).simulate({
|
|
575
|
+
const b = await Promise.all(addresses.map(async (address)=>(await method(address).simulate({
|
|
507
576
|
from: address
|
|
508
|
-
})));
|
|
577
|
+
})).result));
|
|
509
578
|
const debugString = `${symbol} balances: ${addresses.map((address, i)=>`${address}: ${b[i]}`).join(', ')}`;
|
|
510
579
|
logger.verbose(debugString);
|
|
511
580
|
return b;
|
|
@@ -523,6 +592,45 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
523
592
|
const diffs = outputs.map((output, i)=>output - initialValues[i]);
|
|
524
593
|
expect(diffs).toEqual(expectedDiffs);
|
|
525
594
|
}
|
|
595
|
+
/**
|
|
596
|
+
* Registers the auth_registry contract class and publishes its standard instance if not already
|
|
597
|
+
* present, and registers the artifact with PXE. Publishing is required before exercising the public
|
|
598
|
+
* authwit path (which relies on the AVM's deployment-nullifier check); the PXE-side registration is
|
|
599
|
+
* required so revert messages from AuthRegistry calls can be enriched (otherwise assertion strings
|
|
600
|
+
* surface as generic "Assertion failed:" and tests that match on the real message fail).
|
|
601
|
+
*/ export async function ensureAuthRegistryPublished(wallet, from) {
|
|
602
|
+
const { instance, contractClass } = await getStandardAuthRegistry();
|
|
603
|
+
if (!(await wallet.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered) {
|
|
604
|
+
await (await publishContractClass(wallet, AuthRegistryArtifact)).send({
|
|
605
|
+
from
|
|
606
|
+
});
|
|
607
|
+
}
|
|
608
|
+
if (!(await wallet.getContractMetadata(instance.address)).isContractPublished) {
|
|
609
|
+
await publishInstance(wallet, instance).send({
|
|
610
|
+
from
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
await wallet.registerContract(instance, AuthRegistryArtifact);
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Registers the public_checks contract class and publishes its standard instance if not already
|
|
617
|
+
* present, and registers the artifact with PXE. Required for any contract that calls
|
|
618
|
+
* `privately_check_timestamp` / `privately_check_block_number` (which dispatch into the
|
|
619
|
+
* deployed PublicChecks contract via an enqueued public call).
|
|
620
|
+
*/ export async function ensurePublicChecksPublished(wallet, from) {
|
|
621
|
+
const { instance, contractClass } = await getStandardPublicChecks();
|
|
622
|
+
if (!(await wallet.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered) {
|
|
623
|
+
await (await publishContractClass(wallet, PublicChecksArtifact)).send({
|
|
624
|
+
from
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
if (!(await wallet.getContractMetadata(instance.address)).isContractPublished) {
|
|
628
|
+
await publishInstance(wallet, instance).send({
|
|
629
|
+
from
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
await wallet.registerContract(instance, PublicChecksArtifact);
|
|
633
|
+
}
|
|
526
634
|
/**
|
|
527
635
|
* Registers the contract class used for test accounts and publicly deploys the instances requested.
|
|
528
636
|
* Use this when you need to make a public call to an account contract, such as for requesting a public authwit.
|
|
@@ -549,7 +657,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
549
657
|
/**
|
|
550
658
|
* Helper function to deploy accounts.
|
|
551
659
|
* Returns deployed account data that can be used by tests.
|
|
552
|
-
*/ export const deployAccounts = (numberOfAccounts, logger)=>async ({ wallet, initialFundedAccounts })=>{
|
|
660
|
+
*/ export const deployAccounts = (numberOfAccounts, logger, deployOptions)=>async ({ wallet, initialFundedAccounts })=>{
|
|
553
661
|
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
554
662
|
throw new Error(`Cannot deploy more than ${initialFundedAccounts.length} initial accounts.`);
|
|
555
663
|
}
|
|
@@ -560,8 +668,9 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
560
668
|
const accountManager = await wallet.createSchnorrAccount(deployedAccounts[i].secret, deployedAccounts[i].salt, deployedAccounts[i].signingKey);
|
|
561
669
|
const deployMethod = await accountManager.getDeployMethod();
|
|
562
670
|
await deployMethod.send({
|
|
563
|
-
from:
|
|
564
|
-
skipClassPublication: i !== 0
|
|
671
|
+
from: NO_FROM,
|
|
672
|
+
skipClassPublication: i !== 0,
|
|
673
|
+
...deployOptions
|
|
565
674
|
});
|
|
566
675
|
}
|
|
567
676
|
return {
|
|
@@ -582,7 +691,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
582
691
|
...instances.map((instance)=>publishInstance(wallet, instance))
|
|
583
692
|
]);
|
|
584
693
|
const batch = new BatchCall(wallet, calls);
|
|
585
|
-
const txReceipt = await batch.send({
|
|
694
|
+
const { receipt: txReceipt } = await batch.send({
|
|
586
695
|
from: accountsToDeploy[0]
|
|
587
696
|
});
|
|
588
697
|
if (waitUntilProven) {
|
|
@@ -3,28 +3,32 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
5
5
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
6
|
-
import type {
|
|
6
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
7
7
|
export declare const ATTESTER_PRIVATE_KEYS_START_INDEX = 3;
|
|
8
8
|
export declare function generatePrivateKeys(startIndex: number, numberOfKeys: number): `0x${string}`[];
|
|
9
9
|
export declare function createNodes(config: AztecNodeConfig & {
|
|
10
10
|
dontStartSequencer?: boolean;
|
|
11
|
-
}, 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[]>;
|
|
12
12
|
/** Extended config type for createNode with test-specific overrides. */
|
|
13
13
|
export type CreateNodeConfig = AztecNodeConfig & {
|
|
14
14
|
/** Whether to skip starting the sequencer. */
|
|
15
15
|
dontStartSequencer?: boolean;
|
|
16
16
|
/** Override the private key (instead of deriving from addressIndex). */
|
|
17
17
|
validatorPrivateKey?: `0x${string}`;
|
|
18
|
+
/** Corrupt only the block proposal at this indexWithinCheckpoint (testing only). */
|
|
19
|
+
invalidBlockProposalIndexWithinCheckpoint?: number;
|
|
20
|
+
/** Accept proposal gossip regardless of slot timing (testing only). */
|
|
21
|
+
skipProposalSlotValidation?: boolean;
|
|
18
22
|
};
|
|
19
23
|
/** Creates a P2P enabled instance of Aztec Node Service with a validator. */
|
|
20
|
-
export declare function createNode(config: CreateNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number | number[],
|
|
24
|
+
export declare function createNode(config: CreateNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number | number[], genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<AztecNodeService>;
|
|
21
25
|
/** Creates a P2P enabled instance of Aztec Node Service without a validator */
|
|
22
|
-
export declare function createNonValidatorNode(baseConfig: AztecNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined,
|
|
26
|
+
export declare function createNonValidatorNode(baseConfig: AztecNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<AztecNodeService>;
|
|
23
27
|
export declare function createProverNode(config: AztecNodeConfig, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number, deps: {
|
|
24
28
|
dateProvider: DateProvider;
|
|
25
|
-
},
|
|
29
|
+
}, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<{
|
|
26
30
|
proverNode: AztecNodeService;
|
|
27
31
|
}>;
|
|
28
32
|
export declare function createP2PConfig(config: AztecNodeConfig, bootstrapNodeEnr?: string, port?: number, dataDirectory?: string): Promise<AztecNodeConfig>;
|
|
29
33
|
export declare function createValidatorConfig(config: CreateNodeConfig, bootstrapNodeEnr?: string, port?: number, addressIndex?: number | number[], dataDirectory?: string): Promise<AztecNodeConfig>;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfcDJwX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9zZXR1cF9wMnBfdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVzdELGVBQU8sTUFBTSxpQ0FBaUMsSUFBSSxDQUFDO0FBT25ELHdCQUFnQixtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsS0FBSyxNQUFNLEVBQUUsRUFBRSxDQU83RjtBQUVELHdCQUFzQixXQUFXLENBQy9CLE1BQU0sRUFBRSxlQUFlLEdBQUc7SUFBRSxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUFFLEVBQzFELFlBQVksRUFBRSxZQUFZLEVBQzFCLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsWUFBWSxFQUFFLE1BQU0sRUFDcEIsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFDcEIsV0FBVyxTQUFJLEVBQ2YsaUJBQWlCLFNBQUksR0FDcEIsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FtQzdCO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLEdBQUc7SUFDL0MsOENBQThDO0lBQzlDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzdCLHdFQUF3RTtJQUN4RSxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7SUFDcEMsb0ZBQW9GO0lBQ3BGLHlDQUF5QyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ25ELHVFQUF1RTtJQUN2RSwwQkFBMEIsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUN0QyxDQUFDO0FBRUYsNkVBQTZFO0FBQzdFLHdCQUFzQixVQUFVLENBQzlCLE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsWUFBWSxFQUFFLFlBQVksRUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDakMsWUFBWSxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFDL0IsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sNkJBWXJCO0FBRUQsK0VBQStFO0FBQy9FLHdCQUFzQixzQkFBc0IsQ0FDMUMsVUFBVSxFQUFFLGVBQWUsRUFDM0IsWUFBWSxFQUFFLFlBQVksRUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDakMsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sNkJBY3JCO0FBRUQsd0JBQXNCLGdCQUFnQixDQUNwQyxNQUFNLEVBQUUsZUFBZSxFQUN2QixPQUFPLEVBQUUsTUFBTSxFQUNmLGFBQWEsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUNqQyxZQUFZLEVBQUUsTUFBTSxFQUNwQixJQUFJLEVBQUU7SUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFBO0NBQUUsRUFDcEMsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sR0FDbkIsT0FBTyxDQUFDO0lBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFBO0NBQUUsQ0FBQyxDQWdCM0M7QUFFRCx3QkFBc0IsZUFBZSxDQUNuQyxNQUFNLEVBQUUsZUFBZSxFQUN2QixnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFDekIsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUNiLGFBQWEsQ0FBQyxFQUFFLE1BQU0sNEJBZ0J2QjtBQUVELHdCQUFzQixxQkFBcUIsQ0FDekMsTUFBTSxFQUFFLGdCQUFnQixFQUN4QixnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFDekIsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUNiLFlBQVksR0FBRSxNQUFNLEdBQUcsTUFBTSxFQUFNLEVBQ25DLGFBQWEsQ0FBQyxFQUFFLE1BQU0sNEJBb0J2QiJ9
|