@aztec/end-to-end 0.0.1-commit.1bb068fb5 → 0.0.1-commit.1dcfe2301
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +19 -26
- package/dest/bench/utils.d.ts +1 -1
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +6 -3
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +3 -2
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +15 -15
- package/dest/e2e_epochs/epochs_test.d.ts +11 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +60 -38
- package/dest/e2e_fees/fees_test.d.ts +1 -1
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +14 -7
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
- package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +8 -9
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +38 -20
- package/dest/e2e_p2p/reqresp/utils.d.ts +3 -3
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
- package/dest/e2e_p2p/reqresp/utils.js +46 -9
- package/dest/e2e_p2p/shared.d.ts +25 -7
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +49 -44
- package/dest/e2e_token_contract/token_contract_test.d.ts +1 -1
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +11 -11
- 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 +37 -49
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +5 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +6 -0
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/setup.d.ts +39 -15
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +71 -96
- package/dest/fixtures/setup_p2p_test.d.ts +10 -7
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +18 -15
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +5 -7
- package/dest/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/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/shared/cross_chain_test_harness.d.ts +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +13 -13
- package/dest/shared/gas_portal_test_harness.js +2 -2
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/submit-transactions.js +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +14 -17
- package/dest/simulators/lending_simulator.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +4 -4
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +2 -2
- package/dest/spartan/setup_test_wallets.d.ts +11 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +97 -38
- package/dest/spartan/tx_metrics.js +1 -1
- package/dest/spartan/utils/bot.d.ts +3 -2
- package/dest/spartan/utils/bot.d.ts.map +1 -1
- package/dest/spartan/utils/bot.js +2 -1
- package/dest/spartan/utils/config.d.ts +7 -1
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +3 -1
- package/dest/spartan/utils/index.d.ts +4 -2
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +5 -1
- package/dest/spartan/utils/k8s.d.ts +3 -1
- package/dest/spartan/utils/k8s.d.ts.map +1 -1
- package/dest/spartan/utils/k8s.js +6 -0
- package/dest/spartan/utils/nodes.d.ts +4 -5
- package/dest/spartan/utils/nodes.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +9 -9
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/test-wallet/test_wallet.d.ts +24 -23
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +116 -81
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +48 -0
- package/dest/test-wallet/worker_wallet.d.ts +52 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +151 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +279 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +10 -0
- package/package.json +43 -44
- package/src/bench/client_flows/client_flows_benchmark.ts +27 -10
- package/src/bench/utils.ts +7 -2
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +21 -20
- package/src/e2e_epochs/epochs_test.ts +78 -66
- package/src/e2e_fees/fees_test.ts +14 -7
- package/src/e2e_nested_contract/nested_contract_test.ts +6 -4
- package/src/e2e_p2p/inactivity_slash_test.ts +3 -3
- package/src/e2e_p2p/p2p_network.ts +53 -32
- package/src/e2e_p2p/reqresp/utils.ts +58 -9
- package/src/e2e_p2p/shared.ts +71 -59
- package/src/e2e_token_contract/token_contract_test.ts +16 -8
- package/src/fixtures/authwit_proxy.ts +4 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +43 -52
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +10 -0
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/setup.ts +103 -132
- package/src/fixtures/setup_p2p_test.ts +17 -25
- package/src/fixtures/token_utils.ts +3 -3
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +104 -0
- package/src/legacy-jest-resolver.cjs +135 -0
- package/src/shared/cross_chain_test_harness.ts +13 -9
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/submit-transactions.ts +1 -1
- package/src/shared/uniswap_l1_l2.ts +35 -28
- package/src/simulators/lending_simulator.ts +8 -4
- package/src/simulators/token_simulator.ts +6 -2
- package/src/spartan/setup_test_wallets.ts +138 -31
- package/src/spartan/tx_metrics.ts +1 -1
- package/src/spartan/utils/bot.ts +3 -0
- package/src/spartan/utils/config.ts +2 -0
- package/src/spartan/utils/index.ts +7 -0
- package/src/spartan/utils/k8s.ts +8 -0
- package/src/spartan/utils/nodes.ts +15 -10
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/test-wallet/test_wallet.ts +145 -100
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +214 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
package/dest/fixtures/setup.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
2
2
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
3
|
-
import { createArchiver } from '@aztec/archiver';
|
|
4
3
|
import { AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
5
|
-
import {
|
|
4
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
5
|
+
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
6
6
|
import { BatchCall, getContractClassFromArtifact, waitForProven } from '@aztec/aztec.js/contracts';
|
|
7
7
|
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
8
8
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
9
9
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
10
10
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
11
|
-
import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
12
11
|
import { SPONSORED_FPC_SALT } from '@aztec/constants';
|
|
13
12
|
import { isAnvilTestChain } from '@aztec/ethereum/chain';
|
|
14
13
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
@@ -16,7 +15,7 @@ import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
|
16
15
|
import { NULL_KEY } from '@aztec/ethereum/constants';
|
|
17
16
|
import { deployMulticall3 } from '@aztec/ethereum/contracts';
|
|
18
17
|
import { deployAztecL1Contracts } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
19
|
-
import {
|
|
18
|
+
import { EthCheatCodesWithState, startAnvil } from '@aztec/ethereum/test';
|
|
20
19
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
21
20
|
import { SecretValue } from '@aztec/foundation/config';
|
|
22
21
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
@@ -29,7 +28,6 @@ import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
|
29
28
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
30
29
|
import { MockGossipSubNetwork, getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
31
30
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
32
|
-
import { createProverNode } from '@aztec/prover-node';
|
|
33
31
|
import { getPXEConfig } from '@aztec/pxe/server';
|
|
34
32
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
35
33
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
@@ -117,7 +115,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
117
115
|
let anvil;
|
|
118
116
|
try {
|
|
119
117
|
opts.aztecTargetCommitteeSize ??= 0;
|
|
120
|
-
opts.
|
|
118
|
+
opts.slasherEnabled ??= false;
|
|
121
119
|
const config = {
|
|
122
120
|
...getConfigEnvVars(),
|
|
123
121
|
...opts
|
|
@@ -130,6 +128,8 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
130
128
|
config.realProofs = !!opts.realProofs;
|
|
131
129
|
// Only enforce the time table if requested
|
|
132
130
|
config.enforceTimeTable = !!opts.enforceTimeTable;
|
|
131
|
+
// Enable the tx delayer for tests (default config has it disabled, so we force-enable it here)
|
|
132
|
+
config.enableDelayer = true;
|
|
133
133
|
config.listenAddress = '127.0.0.1';
|
|
134
134
|
config.minTxPoolAgeMs = opts.minTxPoolAgeMs ?? 0;
|
|
135
135
|
const logger = getLogger();
|
|
@@ -141,6 +141,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
141
141
|
if (!config.dataDirectory) {
|
|
142
142
|
config.dataDirectory = directoryToCleanup;
|
|
143
143
|
}
|
|
144
|
+
const dateProvider = new TestDateProvider();
|
|
144
145
|
if (!config.l1RpcUrls?.length) {
|
|
145
146
|
if (!isAnvilTestChain(chain.id)) {
|
|
146
147
|
throw new Error(`No ETHEREUM_HOSTS set but non anvil chain requested`);
|
|
@@ -148,7 +149,9 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
148
149
|
const res = await startAnvil({
|
|
149
150
|
l1BlockTime: opts.ethereumSlotDuration,
|
|
150
151
|
accounts: opts.anvilAccounts,
|
|
151
|
-
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined)
|
|
152
|
+
port: opts.anvilPort ?? (process.env.ANVIL_PORT ? parseInt(process.env.ANVIL_PORT) : undefined),
|
|
153
|
+
slotsInAnEpoch: opts.anvilSlotsInAnEpoch,
|
|
154
|
+
dateProvider
|
|
152
155
|
});
|
|
153
156
|
anvil = res.anvil;
|
|
154
157
|
config.l1RpcUrls = [
|
|
@@ -161,7 +164,6 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
161
164
|
logger.info(`Logging metrics to ${filename}`);
|
|
162
165
|
setupMetricsLogger(filename);
|
|
163
166
|
}
|
|
164
|
-
const dateProvider = new TestDateProvider();
|
|
165
167
|
const ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls, dateProvider);
|
|
166
168
|
if (opts.stateLoad) {
|
|
167
169
|
await ethCheatCodes.loadChainState(opts.stateLoad);
|
|
@@ -176,8 +178,8 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
176
178
|
if (opts.l1PublisherKey && opts.l1PublisherKey.getValue() && opts.l1PublisherKey.getValue() != NULL_KEY) {
|
|
177
179
|
publisherPrivKeyHex = opts.l1PublisherKey.getValue();
|
|
178
180
|
publisherHdAccount = privateKeyToAccount(publisherPrivKeyHex);
|
|
179
|
-
} else if (config.
|
|
180
|
-
publisherPrivKeyHex = config.
|
|
181
|
+
} else if (config.sequencerPublisherPrivateKeys && config.sequencerPublisherPrivateKeys.length > 0 && config.sequencerPublisherPrivateKeys[0].getValue() != NULL_KEY) {
|
|
182
|
+
publisherPrivKeyHex = config.sequencerPublisherPrivateKeys[0].getValue();
|
|
181
183
|
publisherHdAccount = privateKeyToAccount(publisherPrivKeyHex);
|
|
182
184
|
} else if (!MNEMONIC) {
|
|
183
185
|
throw new Error(`Mnemonic not provided and no publisher private key`);
|
|
@@ -188,7 +190,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
188
190
|
const publisherPrivKeyRaw = publisherHdAccount.getHdKey().privateKey;
|
|
189
191
|
const publisherPrivKey = publisherPrivKeyRaw === null ? null : Buffer.from(publisherPrivKeyRaw);
|
|
190
192
|
publisherPrivKeyHex = `0x${publisherPrivKey.toString('hex')}`;
|
|
191
|
-
config.
|
|
193
|
+
config.sequencerPublisherPrivateKeys = [
|
|
192
194
|
new SecretValue(publisherPrivKeyHex)
|
|
193
195
|
];
|
|
194
196
|
}
|
|
@@ -203,7 +205,8 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
203
205
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
204
206
|
addressesToFund.push(sponsoredFPCAddress);
|
|
205
207
|
}
|
|
206
|
-
const
|
|
208
|
+
const genesisTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
209
|
+
const { genesisArchiveRoot, genesis, fundingNeeded } = await getGenesisValues(addressesToFund, opts.initialAccountFeeJuice, opts.genesisPublicData, genesisTimestamp);
|
|
207
210
|
const wasAutomining = await ethCheatCodes.isAutoMining();
|
|
208
211
|
const enableAutomine = opts.automineL1Setup && !wasAutomining && isAnvilTestChain(chain.id);
|
|
209
212
|
if (enableAutomine) {
|
|
@@ -234,11 +237,12 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
234
237
|
await ethCheatCodes.setAutomine(false);
|
|
235
238
|
await ethCheatCodes.setIntervalMining(config.ethereumSlotDuration);
|
|
236
239
|
}
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
|
|
240
|
+
// In compose mode (no local anvil), sync dateProvider to L1 time since it may have drifted
|
|
241
|
+
// ahead of system time due to the local-network watcher warping time forward on each filled slot.
|
|
242
|
+
// When running with a local anvil, the dateProvider is kept in sync via the stdout listener.
|
|
243
|
+
if (!anvil) {
|
|
244
|
+
dateProvider.setTime(await ethCheatCodes.lastBlockTimestamp() * 1000);
|
|
245
|
+
}
|
|
242
246
|
if (opts.l2StartTime) {
|
|
243
247
|
await ethCheatCodes.warp(opts.l2StartTime, {
|
|
244
248
|
resetBlockInterval: true
|
|
@@ -265,7 +269,7 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
265
269
|
let mockGossipSubNetwork;
|
|
266
270
|
let p2pClientDeps = undefined;
|
|
267
271
|
if (opts.mockGossipSubNetwork) {
|
|
268
|
-
mockGossipSubNetwork = new MockGossipSubNetwork();
|
|
272
|
+
mockGossipSubNetwork = new MockGossipSubNetwork(opts.mockGossipSubNetworkLatency);
|
|
269
273
|
p2pClientDeps = {
|
|
270
274
|
p2pServiceFactory: getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
271
275
|
};
|
|
@@ -299,30 +303,34 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
299
303
|
telemetry: telemetryClient,
|
|
300
304
|
p2pClientDeps
|
|
301
305
|
}, {
|
|
302
|
-
|
|
306
|
+
genesis
|
|
303
307
|
}));
|
|
304
308
|
const sequencerClient = aztecNodeService.getSequencer();
|
|
305
|
-
if (sequencerClient) {
|
|
306
|
-
const publisher = sequencerClient.sequencer.publisher;
|
|
307
|
-
publisher.l1TxUtils = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, config.ethereumSlotDuration, l1Client);
|
|
308
|
-
}
|
|
309
309
|
let proverNode = undefined;
|
|
310
310
|
if (opts.startProverNode) {
|
|
311
311
|
logger.verbose('Creating and syncing a simulated prover node...');
|
|
312
312
|
const proverNodePrivateKey = getPrivateKeyFromIndex(2);
|
|
313
313
|
const proverNodePrivateKeyHex = `0x${proverNodePrivateKey.toString('hex')}`;
|
|
314
314
|
const proverNodeDataDirectory = path.join(directoryToCleanup, randomBytes(8).toString('hex'));
|
|
315
|
-
const
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
315
|
+
const p2pClientDeps = {
|
|
316
|
+
p2pServiceFactory: mockGossipSubNetwork && getMockPubSubP2PServiceFactory(mockGossipSubNetwork),
|
|
317
|
+
rpcTxProviders: [
|
|
318
|
+
aztecNodeService
|
|
319
|
+
]
|
|
319
320
|
};
|
|
320
|
-
proverNode = await createAndSyncProverNode(proverNodePrivateKeyHex, config,
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
321
|
+
({ proverNode } = await createAndSyncProverNode(proverNodePrivateKeyHex, config, {
|
|
322
|
+
...config.proverNodeConfig,
|
|
323
|
+
dataDirectory: proverNodeDataDirectory
|
|
324
|
+
}, {
|
|
325
|
+
dateProvider,
|
|
326
|
+
p2pClientDeps,
|
|
327
|
+
telemetry: telemetryClient
|
|
328
|
+
}, {
|
|
329
|
+
genesis
|
|
330
|
+
}));
|
|
325
331
|
}
|
|
332
|
+
const sequencerDelayer = sequencerClient?.getDelayer();
|
|
333
|
+
const proverDelayer = proverNode?.getProverNode()?.getDelayer();
|
|
326
334
|
logger.verbose('Creating a pxe...');
|
|
327
335
|
const pxeConfig = {
|
|
328
336
|
...getPXEConfig(),
|
|
@@ -404,8 +412,10 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
404
412
|
initialFundedAccounts,
|
|
405
413
|
logger,
|
|
406
414
|
mockGossipSubNetwork,
|
|
407
|
-
|
|
415
|
+
genesis,
|
|
408
416
|
proverNode,
|
|
417
|
+
sequencerDelayer,
|
|
418
|
+
proverDelayer,
|
|
409
419
|
sequencer: sequencerClient,
|
|
410
420
|
teardown,
|
|
411
421
|
telemetryClient,
|
|
@@ -466,77 +476,41 @@ export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, int
|
|
|
466
476
|
targetBlock ??= await node.getBlockNumber();
|
|
467
477
|
await retryUntil(async ()=>await node.getProvenBlockNumber() >= targetBlock, 'proven chain status', timeoutSec, intervalSec);
|
|
468
478
|
}
|
|
469
|
-
|
|
479
|
+
/**
|
|
480
|
+
* Creates an AztecNodeService with the prover node enabled as a subsystem.
|
|
481
|
+
* Returns both the aztec node service (for lifecycle management) and the prover node (for test internals access).
|
|
482
|
+
*/ export function createAndSyncProverNode(proverNodePrivateKey, baseConfig, configOverrides, deps, options) {
|
|
470
483
|
return withLoggerBindings({
|
|
471
484
|
actor: 'prover-0'
|
|
472
485
|
}, async ()=>{
|
|
473
|
-
const
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
...aztecNodeConfig,
|
|
481
|
-
dataDirectory: proverNodeConfig.dataDirectory
|
|
482
|
-
};
|
|
483
|
-
const archiver = await createArchiver(archiverConfig, {
|
|
484
|
-
blobClient,
|
|
485
|
-
dateProvider: proverNodeDeps.dateProvider
|
|
486
|
-
}, {
|
|
487
|
-
blockUntilSync: true
|
|
488
|
-
});
|
|
489
|
-
const proverConfig = {
|
|
490
|
-
...aztecNodeConfig,
|
|
491
|
-
txCollectionNodeRpcUrls: [],
|
|
492
|
-
realProofs: false,
|
|
493
|
-
proverAgentCount: 2,
|
|
494
|
-
publisherPrivateKeys: [
|
|
486
|
+
const proverNode = await AztecNodeService.createAndSync({
|
|
487
|
+
...baseConfig,
|
|
488
|
+
...configOverrides,
|
|
489
|
+
p2pPort: 0,
|
|
490
|
+
enableProverNode: true,
|
|
491
|
+
disableValidator: true,
|
|
492
|
+
proverPublisherPrivateKeys: [
|
|
495
493
|
new SecretValue(proverNodePrivateKey)
|
|
496
|
-
]
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
txGatheringIntervalMs: 1000,
|
|
501
|
-
txGatheringBatchSize: 10,
|
|
502
|
-
txGatheringMaxParallelRequestsPerNode: 10,
|
|
503
|
-
txGatheringTimeoutMs: 24_000,
|
|
504
|
-
proverNodeFailedEpochStore: undefined,
|
|
505
|
-
proverId: EthAddress.fromNumber(1),
|
|
506
|
-
proverNodeEpochProvingDelayMs: undefined,
|
|
507
|
-
...proverNodeConfig
|
|
508
|
-
};
|
|
509
|
-
const l1TxUtils = createDelayedL1TxUtils(aztecNodeConfig, proverNodePrivateKey, 'prover-node', proverNodeDeps.dateProvider);
|
|
510
|
-
const proverNode = await createProverNode(proverConfig, {
|
|
511
|
-
...proverNodeDeps,
|
|
512
|
-
aztecNodeTxProvider,
|
|
513
|
-
archiver: archiver,
|
|
514
|
-
l1TxUtils
|
|
515
|
-
}, {
|
|
516
|
-
prefilledPublicData
|
|
517
|
-
});
|
|
518
|
-
getLogger().info(`Created and synced prover node`, {
|
|
519
|
-
publisherAddress: l1TxUtils.client.account.address
|
|
494
|
+
]
|
|
495
|
+
}, deps, {
|
|
496
|
+
genesis: options.genesis,
|
|
497
|
+
dontStartProverNode: options.dontStart
|
|
520
498
|
});
|
|
521
|
-
if (!
|
|
522
|
-
|
|
499
|
+
if (!proverNode.getProverNode()) {
|
|
500
|
+
throw new Error('Prover node subsystem was not created despite enableProverNode being set');
|
|
523
501
|
}
|
|
524
|
-
|
|
502
|
+
getLogger().info(`Created and synced prover node`);
|
|
503
|
+
return {
|
|
504
|
+
proverNode
|
|
505
|
+
};
|
|
525
506
|
});
|
|
526
507
|
}
|
|
527
|
-
function createDelayedL1TxUtils(aztecNodeConfig, privateKey, logName, dateProvider) {
|
|
528
|
-
const l1Client = createExtendedL1Client(aztecNodeConfig.l1RpcUrls, privateKey, foundry);
|
|
529
|
-
const log = createLogger(logName);
|
|
530
|
-
const l1TxUtils = createDelayedL1TxUtilsFromViemWallet(l1Client, log, dateProvider, aztecNodeConfig);
|
|
531
|
-
l1TxUtils.enableDelayer(aztecNodeConfig.ethereumSlotDuration);
|
|
532
|
-
return l1TxUtils;
|
|
533
|
-
}
|
|
534
508
|
export function getBalancesFn(symbol, method, logger) {
|
|
535
509
|
const balances = async (...addressLikes)=>{
|
|
536
510
|
const addresses = addressLikes.map((addressLike)=>'address' in addressLike ? addressLike.address : addressLike);
|
|
537
|
-
const b = await Promise.all(addresses.map((address)=>method(address).simulate({
|
|
511
|
+
const b = await Promise.all(addresses.map(async (address)=>(await method(address).simulate({
|
|
538
512
|
from: address
|
|
539
|
-
})));
|
|
513
|
+
})).result));
|
|
540
514
|
const debugString = `${symbol} balances: ${addresses.map((address, i)=>`${address}: ${b[i]}`).join(', ')}`;
|
|
541
515
|
logger.verbose(debugString);
|
|
542
516
|
return b;
|
|
@@ -580,7 +554,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
580
554
|
/**
|
|
581
555
|
* Helper function to deploy accounts.
|
|
582
556
|
* Returns deployed account data that can be used by tests.
|
|
583
|
-
*/ export const deployAccounts = (numberOfAccounts, logger)=>async ({ wallet, initialFundedAccounts })=>{
|
|
557
|
+
*/ export const deployAccounts = (numberOfAccounts, logger, deployOptions)=>async ({ wallet, initialFundedAccounts })=>{
|
|
584
558
|
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
585
559
|
throw new Error(`Cannot deploy more than ${initialFundedAccounts.length} initial accounts.`);
|
|
586
560
|
}
|
|
@@ -591,8 +565,9 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
591
565
|
const accountManager = await wallet.createSchnorrAccount(deployedAccounts[i].secret, deployedAccounts[i].salt, deployedAccounts[i].signingKey);
|
|
592
566
|
const deployMethod = await accountManager.getDeployMethod();
|
|
593
567
|
await deployMethod.send({
|
|
594
|
-
from:
|
|
595
|
-
skipClassPublication: i !== 0
|
|
568
|
+
from: NO_FROM,
|
|
569
|
+
skipClassPublication: i !== 0,
|
|
570
|
+
...deployOptions
|
|
596
571
|
});
|
|
597
572
|
}
|
|
598
573
|
return {
|
|
@@ -613,7 +588,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
613
588
|
...instances.map((instance)=>publishInstance(wallet, instance))
|
|
614
589
|
]);
|
|
615
590
|
const batch = new BatchCall(wallet, calls);
|
|
616
|
-
const txReceipt = await batch.send({
|
|
591
|
+
const { receipt: txReceipt } = await batch.send({
|
|
617
592
|
from: accountsToDeploy[0]
|
|
618
593
|
});
|
|
619
594
|
if (waitUntilProven) {
|
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
5
5
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
6
|
-
import type {
|
|
7
|
-
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
6
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
8
7
|
export declare const ATTESTER_PRIVATE_KEYS_START_INDEX = 3;
|
|
9
8
|
export declare function generatePrivateKeys(startIndex: number, numberOfKeys: number): `0x${string}`[];
|
|
10
9
|
export declare function createNodes(config: AztecNodeConfig & {
|
|
11
10
|
dontStartSequencer?: boolean;
|
|
12
|
-
}, dateProvider: DateProvider, bootstrapNodeEnr: string, numNodes: number, bootNodePort: number,
|
|
11
|
+
}, dateProvider: DateProvider, bootstrapNodeEnr: string, numNodes: number, bootNodePort: number, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number, indexOffset?: number, validatorsPerNode?: number): Promise<AztecNodeService[]>;
|
|
13
12
|
/** Extended config type for createNode with test-specific overrides. */
|
|
14
13
|
export type CreateNodeConfig = AztecNodeConfig & {
|
|
15
14
|
/** Whether to skip starting the sequencer. */
|
|
@@ -18,10 +17,14 @@ export type CreateNodeConfig = AztecNodeConfig & {
|
|
|
18
17
|
validatorPrivateKey?: `0x${string}`;
|
|
19
18
|
};
|
|
20
19
|
/** Creates a P2P enabled instance of Aztec Node Service with a validator. */
|
|
21
|
-
export declare function createNode(config: CreateNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number | number[],
|
|
20
|
+
export declare function createNode(config: CreateNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number | number[], genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<AztecNodeService>;
|
|
22
21
|
/** Creates a P2P enabled instance of Aztec Node Service without a validator */
|
|
23
|
-
export declare function createNonValidatorNode(baseConfig: AztecNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined,
|
|
24
|
-
export declare function createProverNode(config: AztecNodeConfig, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number,
|
|
22
|
+
export declare function createNonValidatorNode(baseConfig: AztecNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<AztecNodeService>;
|
|
23
|
+
export declare function createProverNode(config: AztecNodeConfig, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number, deps: {
|
|
24
|
+
dateProvider: DateProvider;
|
|
25
|
+
}, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<{
|
|
26
|
+
proverNode: AztecNodeService;
|
|
27
|
+
}>;
|
|
25
28
|
export declare function createP2PConfig(config: AztecNodeConfig, bootstrapNodeEnr?: string, port?: number, dataDirectory?: string): Promise<AztecNodeConfig>;
|
|
26
29
|
export declare function createValidatorConfig(config: CreateNodeConfig, bootstrapNodeEnr?: string, port?: number, addressIndex?: number | number[], dataDirectory?: string): Promise<AztecNodeConfig>;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfcDJwX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9zZXR1cF9wMnBfdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVzdELGVBQU8sTUFBTSxpQ0FBaUMsSUFBSSxDQUFDO0FBT25ELHdCQUFnQixtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsS0FBSyxNQUFNLEVBQUUsRUFBRSxDQU83RjtBQUVELHdCQUFzQixXQUFXLENBQy9CLE1BQU0sRUFBRSxlQUFlLEdBQUc7SUFBRSxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUFFLEVBQzFELFlBQVksRUFBRSxZQUFZLEVBQzFCLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsWUFBWSxFQUFFLE1BQU0sRUFDcEIsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFDcEIsV0FBVyxTQUFJLEVBQ2YsaUJBQWlCLFNBQUksR0FDcEIsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FtQzdCO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLEdBQUc7SUFDL0MsOENBQThDO0lBQzlDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzdCLHdFQUF3RTtJQUN4RSxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7Q0FDckMsQ0FBQztBQUVGLDZFQUE2RTtBQUM3RSx3QkFBc0IsVUFBVSxDQUM5QixNQUFNLEVBQUUsZ0JBQWdCLEVBQ3hCLFlBQVksRUFBRSxZQUFZLEVBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQ2pDLFlBQVksRUFBRSxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQy9CLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFDckIsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUN0QixXQUFXLENBQUMsRUFBRSxNQUFNLDZCQVlyQjtBQUVELCtFQUErRTtBQUMvRSx3QkFBc0Isc0JBQXNCLENBQzFDLFVBQVUsRUFBRSxlQUFlLEVBQzNCLFlBQVksRUFBRSxZQUFZLEVBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQ2pDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFDckIsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUN0QixXQUFXLENBQUMsRUFBRSxNQUFNLDZCQWNyQjtBQUVELHdCQUFzQixnQkFBZ0IsQ0FDcEMsTUFBTSxFQUFFLGVBQWUsRUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDakMsWUFBWSxFQUFFLE1BQU0sRUFDcEIsSUFBSSxFQUFFO0lBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQTtDQUFFLEVBQ3BDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFDckIsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUN0QixXQUFXLENBQUMsRUFBRSxNQUFNLEdBQ25CLE9BQU8sQ0FBQztJQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQTtDQUFFLENBQUMsQ0FnQjNDO0FBRUQsd0JBQXNCLGVBQWUsQ0FDbkMsTUFBTSxFQUFFLGVBQWUsRUFDdkIsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQ3pCLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFDYixhQUFhLENBQUMsRUFBRSxNQUFNLDRCQWdCdkI7QUFFRCx3QkFBc0IscUJBQXFCLENBQ3pDLE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQ3pCLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFDYixZQUFZLEdBQUUsTUFBTSxHQUFHLE1BQU0sRUFBTSxFQUNuQyxhQUFhLENBQUMsRUFBRSxNQUFNLDRCQW9CdkIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAW7D,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAOnD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,EAAE,CAO7F;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,GAAG;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1D,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,SAAI,EACf,iBAAiB,SAAI,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmC7B;AAED,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,6EAA6E;AAC7E,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAC/B,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,6BAYrB;AAED,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,6BAcrB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,YAAY,EAAE,YAAY,CAAA;CAAE,EACpC,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAgB3C;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,4BAgBvB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,GAAE,MAAM,GAAG,MAAM,EAAM,EACnC,aAAa,CAAC,EAAE,MAAM,4BAoBvB"}
|
|
@@ -25,7 +25,7 @@ export function generatePrivateKeys(startIndex, numberOfKeys) {
|
|
|
25
25
|
}
|
|
26
26
|
return privateKeys;
|
|
27
27
|
}
|
|
28
|
-
export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNodes, bootNodePort,
|
|
28
|
+
export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNodes, bootNodePort, genesis, dataDirectory, metricsPort, indexOffset = 0, validatorsPerNode = 1) {
|
|
29
29
|
const nodePromises = [];
|
|
30
30
|
for(let i = 0; i < numNodes; i++){
|
|
31
31
|
const index = indexOffset + i;
|
|
@@ -35,7 +35,7 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
|
|
|
35
35
|
const validatorIndices = validatorsPerNode === 1 ? index : range(validatorsPerNode, validatorsPerNode * index);
|
|
36
36
|
// Assign data directory
|
|
37
37
|
const dataDir = dataDirectory ? `${dataDirectory}-${index}` : undefined;
|
|
38
|
-
const nodePromise = createNode(config, dateProvider, port, bootstrapNodeEnr, validatorIndices,
|
|
38
|
+
const nodePromise = createNode(config, dateProvider, port, bootstrapNodeEnr, validatorIndices, genesis, dataDir, metricsPort);
|
|
39
39
|
nodePromises.push(nodePromise);
|
|
40
40
|
}
|
|
41
41
|
const nodes = await Promise.all(nodePromises);
|
|
@@ -46,7 +46,7 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
|
|
|
46
46
|
}
|
|
47
47
|
return nodes;
|
|
48
48
|
}
|
|
49
|
-
/** Creates a P2P enabled instance of Aztec Node Service with a validator. */ export async function createNode(config, dateProvider, tcpPort, bootstrapNode, addressIndex,
|
|
49
|
+
/** Creates a P2P enabled instance of Aztec Node Service with a validator. */ export async function createNode(config, dateProvider, tcpPort, bootstrapNode, addressIndex, genesis, dataDirectory, metricsPort) {
|
|
50
50
|
const actorIndex = validatorCounter++;
|
|
51
51
|
return await withLoggerBindings({
|
|
52
52
|
actor: `validator-${actorIndex}`
|
|
@@ -57,12 +57,12 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
|
|
|
57
57
|
telemetry,
|
|
58
58
|
dateProvider
|
|
59
59
|
}, {
|
|
60
|
-
|
|
60
|
+
genesis,
|
|
61
61
|
dontStartSequencer: config.dontStartSequencer
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
/** Creates a P2P enabled instance of Aztec Node Service without a validator */ export async function createNonValidatorNode(baseConfig, dateProvider, tcpPort, bootstrapNode,
|
|
65
|
+
/** Creates a P2P enabled instance of Aztec Node Service without a validator */ export async function createNonValidatorNode(baseConfig, dateProvider, tcpPort, bootstrapNode, genesis, dataDirectory, metricsPort) {
|
|
66
66
|
const actorIndex = nodeCounter++;
|
|
67
67
|
return await withLoggerBindings({
|
|
68
68
|
actor: `node-${actorIndex}`
|
|
@@ -72,32 +72,35 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
|
|
|
72
72
|
...p2pConfig,
|
|
73
73
|
disableValidator: true,
|
|
74
74
|
validatorPrivateKeys: undefined,
|
|
75
|
-
|
|
75
|
+
sequencerPublisherPrivateKeys: []
|
|
76
76
|
};
|
|
77
77
|
const telemetry = await getEndToEndTestTelemetryClient(metricsPort);
|
|
78
78
|
return await AztecNodeService.createAndSync(config, {
|
|
79
79
|
telemetry,
|
|
80
80
|
dateProvider
|
|
81
81
|
}, {
|
|
82
|
-
|
|
82
|
+
genesis
|
|
83
83
|
});
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
|
-
export async function createProverNode(config, tcpPort, bootstrapNode, addressIndex,
|
|
86
|
+
export async function createProverNode(config, tcpPort, bootstrapNode, addressIndex, deps, genesis, dataDirectory, metricsPort) {
|
|
87
87
|
const actorIndex = proverCounter++;
|
|
88
88
|
return await withLoggerBindings({
|
|
89
89
|
actor: `prover-${actorIndex}`
|
|
90
90
|
}, async ()=>{
|
|
91
91
|
const proverNodePrivateKey = getPrivateKeyFromIndex(ATTESTER_PRIVATE_KEYS_START_INDEX + addressIndex);
|
|
92
92
|
const telemetry = await getEndToEndTestTelemetryClient(metricsPort);
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
...
|
|
93
|
+
const p2pConfig = await createP2PConfig(config, bootstrapNode, tcpPort, dataDirectory);
|
|
94
|
+
return await createAndSyncProverNode(bufferToHex(proverNodePrivateKey), {
|
|
95
|
+
...config,
|
|
96
|
+
...p2pConfig
|
|
97
|
+
}, {
|
|
97
98
|
dataDirectory
|
|
98
|
-
},
|
|
99
|
-
...
|
|
99
|
+
}, {
|
|
100
|
+
...deps,
|
|
100
101
|
telemetry
|
|
102
|
+
}, {
|
|
103
|
+
genesis
|
|
101
104
|
});
|
|
102
105
|
});
|
|
103
106
|
}
|
|
@@ -133,7 +136,7 @@ export async function createValidatorConfig(config, bootstrapNodeEnr, port, addr
|
|
|
133
136
|
...config,
|
|
134
137
|
...p2pConfig,
|
|
135
138
|
validatorPrivateKeys: new SecretValue(attesterPrivateKeys),
|
|
136
|
-
|
|
139
|
+
sequencerPublisherPrivateKeys: [
|
|
137
140
|
new SecretValue(attesterPrivateKeys[0])
|
|
138
141
|
]
|
|
139
142
|
};
|
|
@@ -6,7 +6,7 @@ export declare function deployToken(wallet: Wallet, admin: AztecAddress, initial
|
|
|
6
6
|
contract: TokenContract;
|
|
7
7
|
instance: import("@aztec/aztec.js/contracts").ContractInstanceWithAddress;
|
|
8
8
|
}>;
|
|
9
|
-
export declare function mintTokensToPrivate(token: TokenContract, minter: AztecAddress, recipient: AztecAddress, amount: bigint): Promise<void>;
|
|
9
|
+
export declare function mintTokensToPrivate(token: TokenContract, minter: AztecAddress, recipient: AztecAddress, amount: bigint, additionalScopes?: AztecAddress[]): Promise<void>;
|
|
10
10
|
export declare function expectTokenBalance(wallet: Wallet, token: TokenContract, owner: AztecAddress, expectedBalance: bigint, logger: Logger): Promise<void>;
|
|
11
11
|
export declare function mintNotes(wallet: Wallet, minter: AztecAddress, recipient: AztecAddress, asset: TokenContract, noteAmounts: bigint[]): Promise<bigint>;
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy90b2tlbl91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0Qsd0JBQXNCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNOzs7R0Fhakg7QUFFRCx3QkFBc0IsbUJBQW1CLENBQ3ZDLEtBQUssRUFBRSxhQUFhLEVBQ3BCLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsZ0JBQWdCLENBQUMsRUFBRSxZQUFZLEVBQUUsaUJBR2xDO0FBRUQsd0JBQXNCLGtCQUFrQixDQUN0QyxNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxhQUFhLEVBQ3BCLEtBQUssRUFBRSxZQUFZLEVBQ25CLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLE1BQU0sRUFBRSxNQUFNLGlCQU9mO0FBRUQsd0JBQXNCLFNBQVMsQ0FDN0IsTUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLEVBQUUsWUFBWSxFQUNwQixTQUFTLEVBQUUsWUFBWSxFQUN2QixLQUFLLEVBQUUsYUFBYSxFQUNwQixXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FXakIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token_utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/token_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;
|
|
1
|
+
{"version":3,"file":"token_utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/token_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;GAajH;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,YAAY,EAAE,iBAGlC;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAOf;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,MAAM,CAAC,CAWjB"}
|
|
@@ -3,10 +3,7 @@ import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
|
3
3
|
export async function deployToken(wallet, admin, initialAdminBalance, logger) {
|
|
4
4
|
logger.info(`Deploying Token contract...`);
|
|
5
5
|
const { contract, instance } = await TokenContract.deploy(wallet, admin, 'TokenName', 'TokenSymbol', 18).send({
|
|
6
|
-
from: admin
|
|
7
|
-
wait: {
|
|
8
|
-
returnReceipt: true
|
|
9
|
-
}
|
|
6
|
+
from: admin
|
|
10
7
|
});
|
|
11
8
|
if (initialAdminBalance > 0n) {
|
|
12
9
|
await mintTokensToPrivate(contract, admin, admin, initialAdminBalance);
|
|
@@ -17,15 +14,16 @@ export async function deployToken(wallet, admin, initialAdminBalance, logger) {
|
|
|
17
14
|
instance
|
|
18
15
|
};
|
|
19
16
|
}
|
|
20
|
-
export async function mintTokensToPrivate(token, minter, recipient, amount) {
|
|
17
|
+
export async function mintTokensToPrivate(token, minter, recipient, amount, additionalScopes) {
|
|
21
18
|
await token.methods.mint_to_private(recipient, amount).send({
|
|
22
|
-
from: minter
|
|
19
|
+
from: minter,
|
|
20
|
+
additionalScopes
|
|
23
21
|
});
|
|
24
22
|
}
|
|
25
23
|
export async function expectTokenBalance(wallet, token, owner, expectedBalance, logger) {
|
|
26
24
|
// Then check the balance
|
|
27
25
|
const contractWithWallet = TokenContract.at(token.address, wallet);
|
|
28
|
-
const balance = await contractWithWallet.methods.balance_of_private(owner).simulate({
|
|
26
|
+
const { result: balance } = await contractWithWallet.methods.balance_of_private(owner).simulate({
|
|
29
27
|
from: owner
|
|
30
28
|
});
|
|
31
29
|
logger.info(`Account ${owner} balance: ${balance}`);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a JSON-RPC client that connects to a remote wallet service.
|
|
4
|
+
* The returned object implements the {@link Wallet} interface, proxying all calls over HTTP to the specified URL.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createWalletClient(url: string): Wallet;
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0X3JwY19jbGllbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mb3J3YXJkLWNvbXBhdGliaWxpdHkvd2FsbGV0X3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJckQ7OztHQUdHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUt0RCJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet_rpc_client.d.ts","sourceRoot":"","sources":["../../src/forward-compatibility/wallet_rpc_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKtD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { WalletSchema } from '@aztec/aztec.js/wallet';
|
|
2
|
+
import { createSafeJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a JSON-RPC client that connects to a remote wallet service.
|
|
5
|
+
* The returned object implements the {@link Wallet} interface, proxying all calls over HTTP to the specified URL.
|
|
6
|
+
*/ export function createWalletClient(url) {
|
|
7
|
+
return createSafeJsonRpcClient(url, WalletSchema, {
|
|
8
|
+
namespaceMethods: 'wallet',
|
|
9
|
+
fetch: makeFetch([
|
|
10
|
+
1,
|
|
11
|
+
2,
|
|
12
|
+
3
|
|
13
|
+
], false)
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0X3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mb3J3YXJkLWNvbXBhdGliaWxpdHkvd2FsbGV0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet_service.d.ts","sourceRoot":"","sources":["../../src/forward-compatibility/wallet_service.ts"],"names":[],"mappings":""}
|