@aztec/end-to-end 0.0.1-commit.181e2d196 → 0.0.1-commit.189eedb3
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 +32 -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 +44 -11
- 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 +4 -3
- package/dest/e2e_p2p/p2p_network.d.ts +11 -10
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +49 -31
- 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 +27 -12
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +72 -59
- 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/fixtures.d.ts +70 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +65 -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 +49 -11
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +161 -31
- 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/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 +55 -40
- 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 +77 -40
- 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 +73 -20
- package/dest/spartan/utils/config.d.ts +9 -32
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +1 -0
- package/dest/spartan/utils/index.d.ts +2 -1
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +2 -0
- package/dest/spartan/utils/nodes.js +2 -2
- 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 +7 -2
- 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 +6 -2
- 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 +46 -42
- package/src/bench/client_flows/benchmark.ts +19 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +59 -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 +49 -9
- package/src/e2e_nested_contract/nested_contract_test.ts +9 -5
- package/src/e2e_p2p/inactivity_slash_test.ts +4 -3
- package/src/e2e_p2p/p2p_network.ts +61 -42
- package/src/e2e_p2p/reqresp/utils.ts +51 -12
- package/src/e2e_p2p/shared.ts +73 -74
- 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/fixtures.ts +83 -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 +196 -35
- 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/submit-transactions.ts +1 -4
- package/src/shared/uniswap_l1_l2.ts +102 -51
- 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 +95 -38
- package/src/spartan/tx_metrics.ts +81 -23
- package/src/spartan/utils/config.ts +1 -0
- package/src/spartan/utils/index.ts +3 -0
- package/src/spartan/utils/nodes.ts +2 -2
- 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 +5 -2
- package/src/test-wallet/worker_wallet.ts +10 -5
- package/src/test-wallet/worker_wallet_schema.ts +2 -2
package/dest/fixtures/setup.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
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';
|
|
@@ -17,11 +17,12 @@ import { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
|
17
17
|
import type { P2PClientDeps } from '@aztec/p2p';
|
|
18
18
|
import { MockGossipSubNetwork } from '@aztec/p2p/test-helpers';
|
|
19
19
|
import type { ProverNodeConfig } from '@aztec/prover-node';
|
|
20
|
-
import { type PXEConfig } from '@aztec/pxe/server';
|
|
20
|
+
import { type PXEConfig, type PXECreationOptions } from '@aztec/pxe/server';
|
|
21
21
|
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
22
22
|
import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
23
|
-
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
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
27
|
import { type Chain } from 'viem/chains';
|
|
27
28
|
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
@@ -82,14 +83,22 @@ export type SetupOptions = {
|
|
|
82
83
|
proverNodeConfig?: Partial<ProverNodeConfig>;
|
|
83
84
|
/** Whether to use a mock gossip sub network for p2p clients. */
|
|
84
85
|
mockGossipSubNetwork?: boolean;
|
|
86
|
+
/** Whether to add simulated latency to the mock gossipsub network (in ms) */
|
|
87
|
+
mockGossipSubNetworkLatency?: number;
|
|
85
88
|
/** Whether to disable the anvil test watcher (can still be manually started) */
|
|
86
89
|
disableAnvilTestWatcher?: boolean;
|
|
90
|
+
anvilTestWatcherOpts?: AnvilTestWatcherOpts;
|
|
87
91
|
/** Whether to enable anvil automine during deployment of L1 contracts (consider defaulting this to true). */
|
|
88
92
|
automineL1Setup?: boolean;
|
|
89
93
|
/** How many accounts to seed and unlock in anvil. */
|
|
90
94
|
anvilAccounts?: number;
|
|
91
95
|
/** Port to start anvil (defaults to 8545) */
|
|
92
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;
|
|
93
102
|
/** Key to use for publishing L1 contracts */
|
|
94
103
|
l1PublisherKey?: SecretValue<`0x${string}`>;
|
|
95
104
|
/** ZkPassport configuration (domain, scope, mock verifier) */
|
|
@@ -100,15 +109,23 @@ export type SetupOptions = {
|
|
|
100
109
|
skipAccountDeployment?: boolean;
|
|
101
110
|
/** L1 contracts deployment arguments. */
|
|
102
111
|
l1ContractsArgs?: Partial<DeployAztecL1ContractsArgs>;
|
|
103
|
-
/** Wallet minimum fee padding multiplier
|
|
112
|
+
/** Wallet minimum fee padding multiplier */
|
|
104
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;
|
|
105
122
|
} & Partial<AztecNodeConfig>;
|
|
106
123
|
/** Context for an end-to-end test as returned by the `setup` function */
|
|
107
124
|
export type EndToEndContext = {
|
|
108
125
|
/** The Anvil instance (only set if anvil was started locally). */
|
|
109
126
|
anvil: Anvil | undefined;
|
|
110
127
|
/** The Aztec Node service or client a connected to it. */
|
|
111
|
-
aztecNode: AztecNode;
|
|
128
|
+
aztecNode: AztecNode & AztecNodeDebug;
|
|
112
129
|
/** The Aztec Node as a service. */
|
|
113
130
|
aztecNodeService: AztecNodeService;
|
|
114
131
|
/** Client to the Aztec Node admin interface. */
|
|
@@ -147,8 +164,8 @@ export type EndToEndContext = {
|
|
|
147
164
|
sequencerDelayer: Delayer | undefined;
|
|
148
165
|
/** Delayer for prover node L1 txs (only when enableDelayer and startProverNode are true). */
|
|
149
166
|
proverDelayer: Delayer | undefined;
|
|
150
|
-
/**
|
|
151
|
-
|
|
167
|
+
/** Genesis data used for setting up nodes. */
|
|
168
|
+
genesis: GenesisData | undefined;
|
|
152
169
|
/** ACVM config (only set if running locally). */
|
|
153
170
|
acvmConfig: Awaited<ReturnType<typeof getACVMConfig>>;
|
|
154
171
|
/** BB config (only set if running locally). */
|
|
@@ -195,7 +212,7 @@ export declare function createAndSyncProverNode(proverNodePrivateKey: `0x${strin
|
|
|
195
212
|
dateProvider: DateProvider;
|
|
196
213
|
p2pClientDeps?: P2PClientDeps;
|
|
197
214
|
}, options: {
|
|
198
|
-
|
|
215
|
+
genesis?: GenesisData;
|
|
199
216
|
dontStart?: boolean;
|
|
200
217
|
}): Promise<{
|
|
201
218
|
proverNode: AztecNodeService;
|
|
@@ -206,6 +223,27 @@ export declare function getBalancesFn(symbol: string, method: ContractMethod, lo
|
|
|
206
223
|
})[]) => Promise<bigint[]>;
|
|
207
224
|
export declare function expectMapping<K, V>(fn: (...k: K[]) => Promise<V[]>, inputs: K[], expectedOutputs: V[]): Promise<void>;
|
|
208
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>;
|
|
241
|
+
/**
|
|
242
|
+
* Registers the handshake_registry contract class and publishes its standard instance if not
|
|
243
|
+
* already present, and registers the artifact with PXE. Required for constrained-delivery flows
|
|
244
|
+
* that call into the HandshakeRegistry at its well-known address.
|
|
245
|
+
*/
|
|
246
|
+
export declare function ensureHandshakeRegistryPublished(wallet: Wallet, from: AztecAddress): Promise<void>;
|
|
209
247
|
/**
|
|
210
248
|
* Registers the contract class used for test accounts and publicly deploys the instances requested.
|
|
211
249
|
* Use this when you need to make a public call to an account contract, such as for requesting a public authwit.
|
|
@@ -215,7 +253,7 @@ export declare function ensureAccountContractsPublished(wallet: Wallet, accounts
|
|
|
215
253
|
* Helper function to deploy accounts.
|
|
216
254
|
* Returns deployed account data that can be used by tests.
|
|
217
255
|
*/
|
|
218
|
-
export declare const deployAccounts: (numberOfAccounts: number, logger: Logger) => ({ wallet, initialFundedAccounts }: {
|
|
256
|
+
export declare const deployAccounts: (numberOfAccounts: number, logger: Logger, deployOptions?: Partial<DeployOptions<InteractionWaitOptions>> | undefined) => ({ wallet, initialFundedAccounts }: {
|
|
219
257
|
wallet: TestWallet;
|
|
220
258
|
initialFundedAccounts: InitialAccountData[];
|
|
221
259
|
}) => Promise<{
|
|
@@ -231,4 +269,4 @@ export declare function publicDeployAccounts(wallet: Wallet, accountsToDeploy: A
|
|
|
231
269
|
*/
|
|
232
270
|
export declare function teardown(context: EndToEndContext | undefined): Promise<void>;
|
|
233
271
|
export { deployAndInitializeTokenAndBridgeContracts } from '../shared/cross_chain_test_harness.js';
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
272
|
+
//# 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,10 @@ 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 { HandshakeRegistryArtifact, getStandardHandshakeRegistry } from '@aztec/standard-contracts/handshake-registry';
|
|
34
|
+
import { PublicChecksArtifact, getStandardPublicChecks } from '@aztec/standard-contracts/public-checks';
|
|
35
|
+
import { ARTIFACT_VERSION_BEFORE_INJECTION } from '@aztec/stdlib/abi';
|
|
31
36
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
32
37
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
33
38
|
import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -105,16 +110,36 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
105
110
|
teardown
|
|
106
111
|
};
|
|
107
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* When CONTRACT_ARTIFACTS_VERSION is set (backwards compatibility testing), asserts that the loaded artifact's
|
|
115
|
+
* aztecVersion matches the expected version. This is a sanity check verifying that the legacy artifact resolver
|
|
116
|
+
* actually swapped in the correct version.
|
|
117
|
+
*/ function assertContractArtifactsVersion() {
|
|
118
|
+
const expected = process.env.CONTRACT_ARTIFACTS_VERSION;
|
|
119
|
+
if (!expected) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const { aztecVersion } = SponsoredFPCContract.artifact;
|
|
123
|
+
// TODO(F-557): Remove this bypass once pre-version artifacts are no longer tested.
|
|
124
|
+
if (aztecVersion === ARTIFACT_VERSION_BEFORE_INJECTION) {
|
|
125
|
+
createLogger('e2e:setup').info(`Skipping artifact version check: artifact predates version injection (CONTRACT_ARTIFACTS_VERSION=${expected})`);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (aztecVersion !== expected) {
|
|
129
|
+
throw new Error(`Artifact version mismatch: expected ${expected} but got ${aztecVersion}. ` + `The legacy artifact resolver may not have swapped in the correct version.`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
108
132
|
/**
|
|
109
133
|
* Sets up the environment for the end-to-end tests.
|
|
110
134
|
* @param numberOfAccounts - The number of new accounts to be created once the PXE is initiated.
|
|
111
135
|
* @param opts - Options to pass to the node initialization and to the setup script.
|
|
112
136
|
* @param pxeOpts - Options to pass to the PXE initialization.
|
|
113
137
|
*/ export async function setup(numberOfAccounts = 1, opts = {}, pxeOpts = {}, chain = foundry) {
|
|
138
|
+
assertContractArtifactsVersion();
|
|
114
139
|
let anvil;
|
|
115
140
|
try {
|
|
116
141
|
opts.aztecTargetCommitteeSize ??= 0;
|
|
117
|
-
opts.
|
|
142
|
+
opts.slasherEnabled ??= false;
|
|
118
143
|
const config = {
|
|
119
144
|
...getConfigEnvVars(),
|
|
120
145
|
...opts
|
|
@@ -140,6 +165,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
140
165
|
if (!config.dataDirectory) {
|
|
141
166
|
config.dataDirectory = directoryToCleanup;
|
|
142
167
|
}
|
|
168
|
+
const dateProvider = new TestDateProvider();
|
|
143
169
|
if (!config.l1RpcUrls?.length) {
|
|
144
170
|
if (!isAnvilTestChain(chain.id)) {
|
|
145
171
|
throw new Error(`No ETHEREUM_HOSTS set but non anvil chain requested`);
|
|
@@ -147,7 +173,9 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
147
173
|
const res = await startAnvil({
|
|
148
174
|
l1BlockTime: opts.ethereumSlotDuration,
|
|
149
175
|
accounts: opts.anvilAccounts,
|
|
150
|
-
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined)
|
|
176
|
+
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined),
|
|
177
|
+
slotsInAnEpoch: opts.anvilSlotsInAnEpoch,
|
|
178
|
+
dateProvider
|
|
151
179
|
});
|
|
152
180
|
anvil = res.anvil;
|
|
153
181
|
config.l1RpcUrls = [
|
|
@@ -160,7 +188,6 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
160
188
|
logger.info(`Logging metrics to ${filename}`);
|
|
161
189
|
setupMetricsLogger(filename);
|
|
162
190
|
}
|
|
163
|
-
const dateProvider = new TestDateProvider();
|
|
164
191
|
const ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls, dateProvider);
|
|
165
192
|
if (opts.stateLoad) {
|
|
166
193
|
await ethCheatCodes.loadChainState(opts.stateLoad);
|
|
@@ -202,7 +229,8 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
202
229
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
203
230
|
addressesToFund.push(sponsoredFPCAddress);
|
|
204
231
|
}
|
|
205
|
-
const
|
|
232
|
+
const genesisTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
233
|
+
const { genesisArchiveRoot, genesis, fundingNeeded } = await getGenesisValues(addressesToFund, opts.initialAccountFeeJuice, opts.genesisPublicData, genesisTimestamp);
|
|
206
234
|
const wasAutomining = await ethCheatCodes.isAutoMining();
|
|
207
235
|
const enableAutomine = opts.automineL1Setup && !wasAutomining && isAnvilTestChain(chain.id);
|
|
208
236
|
if (enableAutomine) {
|
|
@@ -227,23 +255,41 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
227
255
|
feeJuicePortalInitialBalance: fundingNeeded,
|
|
228
256
|
realVerifier: false
|
|
229
257
|
});
|
|
230
|
-
config
|
|
258
|
+
Object.assign(config, deployL1ContractsValues.l1ContractAddresses);
|
|
231
259
|
config.rollupVersion = deployL1ContractsValues.rollupVersion;
|
|
260
|
+
// Propagate L1-contracts-config overrides back to the node config so the archiver's
|
|
261
|
+
// `l1Constants` (and any other node-side consumer) agrees with what was actually deployed.
|
|
262
|
+
// Without this, a per-test override like `aztecEpochDuration: 4` lands on the rollup contract
|
|
263
|
+
// but the node config keeps the default (32), so `archiver.isEpochComplete(0)` computes
|
|
264
|
+
// `endSlot=31` and `EpochTestSettler`/`EpochMonitor` never fires — letting the
|
|
265
|
+
// `aztecProofSubmissionEpochs` window expire mid-test and prune the pending chain.
|
|
266
|
+
// Skip undefined values: callers (e.g. `P2PNetworkTest`) sometimes build `l1ContractsArgs`
|
|
267
|
+
// by spreading a partial `AztecNodeConfig`, which leaves unset fields (notably `dataDirectory`)
|
|
268
|
+
// as `undefined`. A blind Object.assign would then clobber the temp `dataDirectory` set earlier
|
|
269
|
+
// in this function and crash `setupSharedBlobStorage`.
|
|
270
|
+
if (opts.l1ContractsArgs) {
|
|
271
|
+
for (const [key, value] of Object.entries(opts.l1ContractsArgs)){
|
|
272
|
+
if (value !== undefined) {
|
|
273
|
+
config[key] = value;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
232
277
|
if (enableAutomine) {
|
|
233
278
|
await ethCheatCodes.setAutomine(false);
|
|
234
279
|
await ethCheatCodes.setIntervalMining(config.ethereumSlotDuration);
|
|
235
280
|
}
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
|
|
240
|
-
|
|
281
|
+
// In compose mode (no local anvil), sync dateProvider to L1 time since it may have drifted
|
|
282
|
+
// ahead of system time due to the local-network watcher warping time forward on each filled slot.
|
|
283
|
+
// When running with a local anvil, the dateProvider is kept in sync via the stdout listener.
|
|
284
|
+
if (!anvil) {
|
|
285
|
+
dateProvider.setTime(await ethCheatCodes.lastBlockTimestamp() * 1000);
|
|
286
|
+
}
|
|
241
287
|
if (opts.l2StartTime) {
|
|
242
288
|
await ethCheatCodes.warp(opts.l2StartTime, {
|
|
243
289
|
resetBlockInterval: true
|
|
244
290
|
});
|
|
245
291
|
}
|
|
246
|
-
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(config.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
|
|
292
|
+
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(config.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider, opts.anvilTestWatcherOpts);
|
|
247
293
|
if (!opts.disableAnvilTestWatcher) {
|
|
248
294
|
await watcher.start();
|
|
249
295
|
}
|
|
@@ -264,7 +310,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
264
310
|
let mockGossipSubNetwork;
|
|
265
311
|
let p2pClientDeps = undefined;
|
|
266
312
|
if (opts.mockGossipSubNetwork) {
|
|
267
|
-
mockGossipSubNetwork = new MockGossipSubNetwork();
|
|
313
|
+
mockGossipSubNetwork = new MockGossipSubNetwork(opts.mockGossipSubNetworkLatency);
|
|
268
314
|
p2pClientDeps = {
|
|
269
315
|
p2pServiceFactory: getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
270
316
|
};
|
|
@@ -277,11 +323,17 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
277
323
|
if (originalMinTxsPerBlock === undefined) {
|
|
278
324
|
throw new Error('minTxsPerBlock is undefined in e2e test setup');
|
|
279
325
|
}
|
|
280
|
-
//
|
|
326
|
+
// Whether we're deploying accounts (and therefore need reliable block inclusion past genesis)
|
|
281
327
|
const shouldDeployAccounts = numberOfAccounts > 0 && !opts.skipAccountDeployment;
|
|
282
328
|
// Only set minTxsPerBlock=0 if we need an empty block (no accounts at all, not skipped deployment)
|
|
283
329
|
const needsEmptyBlock = numberOfAccounts === 0 && !opts.skipAccountDeployment;
|
|
284
|
-
|
|
330
|
+
// Pipelining is always on: the proposer builds during slot N-1 for slot N. A tx submitted at
|
|
331
|
+
// slot N start arrives after that build, so forcing minTxsPerBlock=1 would stall the chain on
|
|
332
|
+
// alternating slots -- hence empty checkpoints are allowed (minTxsPerBlock=0) for account
|
|
333
|
+
// deployment. Automine is unaffected: its runBuild clamps mempool builds to
|
|
334
|
+
// Math.max(minTxsPerBlock ?? 1, 1) and still requires minValidTxs: 1.
|
|
335
|
+
const accountsDeployMinTxs = 0;
|
|
336
|
+
config.minTxsPerBlock = shouldDeployAccounts ? accountsDeployMinTxs : needsEmptyBlock ? 0 : originalMinTxsPerBlock;
|
|
285
337
|
config.p2pEnabled = opts.mockGossipSubNetwork || config.p2pEnabled;
|
|
286
338
|
config.p2pIp = opts.p2pIp ?? config.p2pIp ?? '127.0.0.1';
|
|
287
339
|
if (!config.disableValidator) {
|
|
@@ -291,14 +343,26 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
291
343
|
]);
|
|
292
344
|
}
|
|
293
345
|
}
|
|
346
|
+
// When skipInitialSequencer is set, the initial node is a lightweight RPC-only node.
|
|
347
|
+
// We apply these overrides to a copy so they don't leak into the returned config.
|
|
348
|
+
// Keep P2P enabled if mockGossipSubNetwork is used (needed for tx propagation to validators).
|
|
349
|
+
const initialNodeConfig = opts.skipInitialSequencer ? {
|
|
350
|
+
...config,
|
|
351
|
+
disableValidator: true,
|
|
352
|
+
...opts.mockGossipSubNetwork ? {} : {
|
|
353
|
+
p2pEnabled: false,
|
|
354
|
+
bootstrapNodes: []
|
|
355
|
+
}
|
|
356
|
+
} : config;
|
|
294
357
|
const aztecNodeService = await withLoggerBindings({
|
|
295
358
|
actor: 'node-0'
|
|
296
|
-
}, ()=>AztecNodeService.createAndSync(
|
|
359
|
+
}, ()=>AztecNodeService.createAndSync(initialNodeConfig, {
|
|
297
360
|
dateProvider,
|
|
298
361
|
telemetry: telemetryClient,
|
|
299
362
|
p2pClientDeps
|
|
300
363
|
}, {
|
|
301
|
-
|
|
364
|
+
genesis,
|
|
365
|
+
dontStartSequencer: opts.skipInitialSequencer
|
|
302
366
|
}));
|
|
303
367
|
const sequencerClient = aztecNodeService.getSequencer();
|
|
304
368
|
let proverNode = undefined;
|
|
@@ -321,7 +385,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
321
385
|
p2pClientDeps,
|
|
322
386
|
telemetry: telemetryClient
|
|
323
387
|
}, {
|
|
324
|
-
|
|
388
|
+
genesis
|
|
325
389
|
}));
|
|
326
390
|
}
|
|
327
391
|
const sequencerDelayer = sequencerClient?.getDelayer();
|
|
@@ -335,12 +399,13 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
335
399
|
// For tests we only want proving enabled if specifically requested
|
|
336
400
|
pxeConfig.proverEnabled = !!pxeOpts.proverEnabled;
|
|
337
401
|
const wallet = await TestWallet.create(aztecNodeService, pxeConfig, {
|
|
338
|
-
loggerActorLabel: 'pxe-0'
|
|
402
|
+
loggerActorLabel: 'pxe-0',
|
|
403
|
+
...opts.pxeCreationOptions
|
|
339
404
|
});
|
|
340
405
|
if (opts.walletMinFeePadding !== undefined) {
|
|
341
406
|
wallet.setMinFeePadding(opts.walletMinFeePadding);
|
|
342
407
|
}
|
|
343
|
-
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, aztecNodeService, dateProvider);
|
|
408
|
+
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, aztecNodeService, dateProvider, aztecNodeService.getAutomineSequencer());
|
|
344
409
|
if (opts.aztecTargetCommitteeSize && opts.aztecTargetCommitteeSize > 0 || opts.initialValidators && opts.initialValidators.length > 0) {
|
|
345
410
|
// We need to advance such that the committee is set up.
|
|
346
411
|
await cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await cheatCodes.rollup.getEpoch()) + BigInt(config.lagInEpochsForValidatorSet + 1)));
|
|
@@ -348,13 +413,20 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
348
413
|
await cheatCodes.rollup.debugRollup();
|
|
349
414
|
}
|
|
350
415
|
let accounts = [];
|
|
351
|
-
if (
|
|
352
|
-
logger.info(
|
|
416
|
+
if (opts.skipInitialSequencer) {
|
|
417
|
+
logger.info('Sequencer not started on initial node, skipping block progression');
|
|
418
|
+
} else if (shouldDeployAccounts) {
|
|
419
|
+
logger.info(`${numberOfAccounts} accounts are being deployed. Reliably progressing past genesis by waiting for the accounts to be deployed`);
|
|
353
420
|
const accountsData = initialFundedAccounts.slice(0, numberOfAccounts);
|
|
354
421
|
const accountManagers = await deployFundedSchnorrAccounts(wallet, accountsData);
|
|
355
422
|
accounts = accountManagers.map((accountManager)=>accountManager.address);
|
|
356
423
|
} else if (needsEmptyBlock) {
|
|
357
424
|
logger.info('No accounts are being deployed, waiting for an empty block 1 to be mined');
|
|
425
|
+
// AutomineSequencer only builds on tx arrival; explicitly request an empty block.
|
|
426
|
+
const automine = aztecNodeService.getAutomineSequencer();
|
|
427
|
+
if (automine) {
|
|
428
|
+
await automine.buildEmptyBlock();
|
|
429
|
+
}
|
|
358
430
|
while(await aztecNodeService.getBlockNumber() === 0){
|
|
359
431
|
await sleep(2000);
|
|
360
432
|
}
|
|
@@ -407,7 +479,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
407
479
|
initialFundedAccounts,
|
|
408
480
|
logger,
|
|
409
481
|
mockGossipSubNetwork,
|
|
410
|
-
|
|
482
|
+
genesis,
|
|
411
483
|
proverNode,
|
|
412
484
|
sequencerDelayer,
|
|
413
485
|
proverDelayer,
|
|
@@ -469,7 +541,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
469
541
|
}
|
|
470
542
|
export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, intervalSec = 1) {
|
|
471
543
|
targetBlock ??= await node.getBlockNumber();
|
|
472
|
-
await retryUntil(async ()=>await node.
|
|
544
|
+
await retryUntil(async ()=>await node.getBlockNumber('proven') >= targetBlock, 'proven chain status', timeoutSec, intervalSec);
|
|
473
545
|
}
|
|
474
546
|
/**
|
|
475
547
|
* Creates an AztecNodeService with the prover node enabled as a subsystem.
|
|
@@ -488,7 +560,7 @@ export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, int
|
|
|
488
560
|
new SecretValue(proverNodePrivateKey)
|
|
489
561
|
]
|
|
490
562
|
}, deps, {
|
|
491
|
-
|
|
563
|
+
genesis: options.genesis,
|
|
492
564
|
dontStartProverNode: options.dontStart
|
|
493
565
|
});
|
|
494
566
|
if (!proverNode.getProverNode()) {
|
|
@@ -503,9 +575,9 @@ export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, int
|
|
|
503
575
|
export function getBalancesFn(symbol, method, logger) {
|
|
504
576
|
const balances = async (...addressLikes)=>{
|
|
505
577
|
const addresses = addressLikes.map((addressLike)=>'address' in addressLike ? addressLike.address : addressLike);
|
|
506
|
-
const b = await Promise.all(addresses.map((address)=>method(address).simulate({
|
|
578
|
+
const b = await Promise.all(addresses.map(async (address)=>(await method(address).simulate({
|
|
507
579
|
from: address
|
|
508
|
-
})));
|
|
580
|
+
})).result));
|
|
509
581
|
const debugString = `${symbol} balances: ${addresses.map((address, i)=>`${address}: ${b[i]}`).join(', ')}`;
|
|
510
582
|
logger.verbose(debugString);
|
|
511
583
|
return b;
|
|
@@ -523,6 +595,63 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
523
595
|
const diffs = outputs.map((output, i)=>output - initialValues[i]);
|
|
524
596
|
expect(diffs).toEqual(expectedDiffs);
|
|
525
597
|
}
|
|
598
|
+
/**
|
|
599
|
+
* Registers the auth_registry contract class and publishes its standard instance if not already
|
|
600
|
+
* present, and registers the artifact with PXE. Publishing is required before exercising the public
|
|
601
|
+
* authwit path (which relies on the AVM's deployment-nullifier check); the PXE-side registration is
|
|
602
|
+
* required so revert messages from AuthRegistry calls can be enriched (otherwise assertion strings
|
|
603
|
+
* surface as generic "Assertion failed:" and tests that match on the real message fail).
|
|
604
|
+
*/ export async function ensureAuthRegistryPublished(wallet, from) {
|
|
605
|
+
const { instance, contractClass } = await getStandardAuthRegistry();
|
|
606
|
+
if (!(await wallet.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered) {
|
|
607
|
+
await (await publishContractClass(wallet, AuthRegistryArtifact)).send({
|
|
608
|
+
from
|
|
609
|
+
});
|
|
610
|
+
}
|
|
611
|
+
if (!(await wallet.getContractMetadata(instance.address)).isContractPublished) {
|
|
612
|
+
await publishInstance(wallet, instance).send({
|
|
613
|
+
from
|
|
614
|
+
});
|
|
615
|
+
}
|
|
616
|
+
await wallet.registerContract(instance, AuthRegistryArtifact);
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Registers the public_checks contract class and publishes its standard instance if not already
|
|
620
|
+
* present, and registers the artifact with PXE. Required for any contract that calls
|
|
621
|
+
* `privately_check_timestamp` / `privately_check_block_number` (which dispatch into the
|
|
622
|
+
* deployed PublicChecks contract via an enqueued public call).
|
|
623
|
+
*/ export async function ensurePublicChecksPublished(wallet, from) {
|
|
624
|
+
const { instance, contractClass } = await getStandardPublicChecks();
|
|
625
|
+
if (!(await wallet.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered) {
|
|
626
|
+
await (await publishContractClass(wallet, PublicChecksArtifact)).send({
|
|
627
|
+
from
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
if (!(await wallet.getContractMetadata(instance.address)).isContractPublished) {
|
|
631
|
+
await publishInstance(wallet, instance).send({
|
|
632
|
+
from
|
|
633
|
+
});
|
|
634
|
+
}
|
|
635
|
+
await wallet.registerContract(instance, PublicChecksArtifact);
|
|
636
|
+
}
|
|
637
|
+
/**
|
|
638
|
+
* Registers the handshake_registry contract class and publishes its standard instance if not
|
|
639
|
+
* already present, and registers the artifact with PXE. Required for constrained-delivery flows
|
|
640
|
+
* that call into the HandshakeRegistry at its well-known address.
|
|
641
|
+
*/ export async function ensureHandshakeRegistryPublished(wallet, from) {
|
|
642
|
+
const { instance, contractClass } = await getStandardHandshakeRegistry();
|
|
643
|
+
if (!(await wallet.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered) {
|
|
644
|
+
await (await publishContractClass(wallet, HandshakeRegistryArtifact)).send({
|
|
645
|
+
from
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
if (!(await wallet.getContractMetadata(instance.address)).isContractPublished) {
|
|
649
|
+
await publishInstance(wallet, instance).send({
|
|
650
|
+
from
|
|
651
|
+
});
|
|
652
|
+
}
|
|
653
|
+
await wallet.registerContract(instance, HandshakeRegistryArtifact);
|
|
654
|
+
}
|
|
526
655
|
/**
|
|
527
656
|
* Registers the contract class used for test accounts and publicly deploys the instances requested.
|
|
528
657
|
* Use this when you need to make a public call to an account contract, such as for requesting a public authwit.
|
|
@@ -549,7 +678,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
549
678
|
/**
|
|
550
679
|
* Helper function to deploy accounts.
|
|
551
680
|
* Returns deployed account data that can be used by tests.
|
|
552
|
-
*/ export const deployAccounts = (numberOfAccounts, logger)=>async ({ wallet, initialFundedAccounts })=>{
|
|
681
|
+
*/ export const deployAccounts = (numberOfAccounts, logger, deployOptions)=>async ({ wallet, initialFundedAccounts })=>{
|
|
553
682
|
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
554
683
|
throw new Error(`Cannot deploy more than ${initialFundedAccounts.length} initial accounts.`);
|
|
555
684
|
}
|
|
@@ -560,8 +689,9 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
560
689
|
const accountManager = await wallet.createSchnorrAccount(deployedAccounts[i].secret, deployedAccounts[i].salt, deployedAccounts[i].signingKey);
|
|
561
690
|
const deployMethod = await accountManager.getDeployMethod();
|
|
562
691
|
await deployMethod.send({
|
|
563
|
-
from:
|
|
564
|
-
skipClassPublication: i !== 0
|
|
692
|
+
from: NO_FROM,
|
|
693
|
+
skipClassPublication: i !== 0,
|
|
694
|
+
...deployOptions
|
|
565
695
|
});
|
|
566
696
|
}
|
|
567
697
|
return {
|
|
@@ -582,7 +712,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
582
712
|
...instances.map((instance)=>publishInstance(wallet, instance))
|
|
583
713
|
]);
|
|
584
714
|
const batch = new BatchCall(wallet, calls);
|
|
585
|
-
const txReceipt = await batch.send({
|
|
715
|
+
const { receipt: txReceipt } = await batch.send({
|
|
586
716
|
from: accountsToDeploy[0]
|
|
587
717
|
});
|
|
588
718
|
if (waitUntilProven) {
|